ML quest system; first SVN release.
Secondary changes: - Region fixes, mainly for New Haven. - Recipe system changes. - Enabled ML craftables. - Dyeing/cutting restrictions for quest items. - Moved IsInvulnerable from BaseVendor to BaseCreature. - Moved RandomBrightHue to Utility. - Items no longer decay when attached to a spawner. - Quest item hue is now faked through packets, instead of overriding Hue. - Re-enabled item drag effects for SA clients. - Fixed AssignRandomFacialHair bug in Utility. - Added random hue comments to Utility.
This commit is contained in:
parent
5c7af18dfb
commit
35fbffdb51
167 changed files with 23218 additions and 234 deletions
|
|
@ -65,6 +65,14 @@ namespace Server.Mobiles
|
|||
Utility.AssignRandomHair( this );
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.9 )
|
||||
c.DropItem( new SeveredHumanEars() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
|
|
|
|||
|
|
@ -59,6 +59,15 @@ namespace Server.Mobiles
|
|||
PackItem( Loot.RandomNecromancyReagent() );
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
// TODO: Check drop rate
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
c.DropItem( new StoutWhip() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager, 2 );
|
||||
|
|
|
|||
79
Scripts/Mobiles/Monsters/ML/Blighted Grove/Abscess.cs
Normal file
79
Scripts/Mobiles/Monsters/ML/Blighted Grove/Abscess.cs
Normal file
|
|
@ -0,0 +1,79 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an Abscess corpse" )]
|
||||
public class Abscess : Hydra
|
||||
{
|
||||
[Constructable]
|
||||
public Abscess()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Name = "Abscess";
|
||||
Hue = 0x8FD;
|
||||
|
||||
SetStr( 845, 871 );
|
||||
SetDex( 121, 134 );
|
||||
SetInt( 124, 142 );
|
||||
|
||||
SetHits( 7470, 7540 );
|
||||
|
||||
SetDamage( 26, 31 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 60 );
|
||||
SetDamageType( ResistanceType.Fire, 10 );
|
||||
SetDamageType( ResistanceType.Cold, 10 );
|
||||
SetDamageType( ResistanceType.Poison, 10 );
|
||||
SetDamageType( ResistanceType.Energy, 10 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 75 );
|
||||
SetResistance( ResistanceType.Fire, 70, 80 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 35, 45 );
|
||||
SetResistance( ResistanceType.Energy, 35, 45 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 132.3, 143.8 );
|
||||
SetSkill( SkillName.Tactics, 121.0, 130.5 );
|
||||
SetSkill( SkillName.MagicResist, 102.9, 119.0 );
|
||||
SetSkill( SkillName.Anatomy, 91.8, 94.3 );
|
||||
|
||||
// TODO: Fame/Karma
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.UltraRich, 4 );
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
c.DropItem( new AbscessTail() );
|
||||
}
|
||||
|
||||
public override bool GivesMLMinorArtifact { get { return true; } }
|
||||
|
||||
public Abscess( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
106
Scripts/Mobiles/Monsters/ML/Blighted Grove/Coil.cs
Normal file
106
Scripts/Mobiles/Monsters/ML/Blighted Grove/Coil.cs
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a Coil corpse" )]
|
||||
public class Coil : SilverSerpent
|
||||
{
|
||||
// TODO: Check faction allegiance
|
||||
|
||||
[Constructable]
|
||||
public Coil()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Name = "Coil";
|
||||
Hue = 0x3F;
|
||||
|
||||
SetStr( 205, 343 );
|
||||
SetDex( 202, 283 );
|
||||
SetInt( 88, 142 );
|
||||
|
||||
SetHits( 628, 1291 );
|
||||
|
||||
SetDamage( 19, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Poison, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 56, 62 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 25, 30 );
|
||||
SetResistance( ResistanceType.Poison, 100 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 124.5, 141.3 );
|
||||
SetSkill( SkillName.Tactics, 130.2, 142.0 );
|
||||
SetSkill( SkillName.MagicResist, 102.3, 113.0 );
|
||||
SetSkill( SkillName.Anatomy, 120.8, 138.1 );
|
||||
SetSkill( SkillName.Poisoning, 110.1, 133.4 );
|
||||
|
||||
// TODO: Fame/Karma
|
||||
|
||||
PackGem( 2 );
|
||||
PackItem( new Bone() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.UltraRich, 3 );
|
||||
}
|
||||
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.MortalStrike;
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
c.DropItem( new CoilsFang() );
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
if ( Utility.RandomDouble() < 0.025 )
|
||||
{
|
||||
switch ( Utility.Random( 5 ) )
|
||||
{
|
||||
case 0: c.DropItem( new AssassinChest() ); break;
|
||||
case 1: c.DropItem( new DeathGloves() ); break;
|
||||
case 2: c.DropItem( new LeafweaveLegs() ); break;
|
||||
case 3: c.DropItem( new HunterLegs() ); break;
|
||||
case 4: c.DropItem( new MyrmidonLegs() ); break;
|
||||
}
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
public override Poison HitPoison { get { return Poison.Lethal; } }
|
||||
public override Poison PoisonImmune { get { return Poison.Lethal; } }
|
||||
public override bool GivesMLMinorArtifact { get { return true; } }
|
||||
public override int Hides { get { return 48; } }
|
||||
public override int Meat { get { return 1; } }
|
||||
|
||||
public Coil( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
46
Scripts/Mobiles/Monsters/ML/Blighted Grove/EnslavedSatyr.cs
Normal file
46
Scripts/Mobiles/Monsters/ML/Blighted Grove/EnslavedSatyr.cs
Normal file
|
|
@ -0,0 +1,46 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an enslaved satyr corpse" )]
|
||||
public class EnslavedSatyr : Satyr
|
||||
{
|
||||
[Constructable]
|
||||
public EnslavedSatyr()
|
||||
{
|
||||
Name = "an enslaved satyr";
|
||||
}
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.1 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
}
|
||||
*/
|
||||
|
||||
public EnslavedSatyr( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
91
Scripts/Mobiles/Monsters/ML/Blighted Grove/Hydra.cs
Normal file
91
Scripts/Mobiles/Monsters/ML/Blighted Grove/Hydra.cs
Normal file
|
|
@ -0,0 +1,91 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a hydra corpse" )]
|
||||
public class Hydra : BaseCreature
|
||||
{
|
||||
[Constructable]
|
||||
public Hydra()
|
||||
: base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = "a hydra";
|
||||
Body = 0x109;
|
||||
BaseSoundID = 0x16A;
|
||||
|
||||
SetStr( 801, 828 );
|
||||
SetDex( 102, 118 );
|
||||
SetInt( 102, 120 );
|
||||
|
||||
SetHits( 1480, 1500 );
|
||||
|
||||
SetDamage( 21, 26 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 60 );
|
||||
SetDamageType( ResistanceType.Fire, 10 );
|
||||
SetDamageType( ResistanceType.Cold, 10 );
|
||||
SetDamageType( ResistanceType.Poison, 10 );
|
||||
SetDamageType( ResistanceType.Energy, 10 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 75 );
|
||||
SetResistance( ResistanceType.Fire, 70, 85 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 35, 43 );
|
||||
SetResistance( ResistanceType.Energy, 36, 45 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 103.5, 117.4 );
|
||||
SetSkill( SkillName.Tactics, 100.1, 109.8 );
|
||||
SetSkill( SkillName.MagicResist, 85.5, 98.5 );
|
||||
SetSkill( SkillName.Anatomy, 75.4, 79.8 );
|
||||
|
||||
// TODO: Fame/Karma
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.UltraRich, 3 );
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
c.DropItem( new HydraScale() );
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
if ( Utility.RandomDouble() < 0.2 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
c.DropItem( new ThorvaldsMedallion() );
|
||||
*/
|
||||
}
|
||||
|
||||
public override bool HasBreath { get { return true; } }
|
||||
public override int Hides { get { return 40; } }
|
||||
public override int Meat { get { return 19; } }
|
||||
public override int TreasureMapLevel { get { return 5; } }
|
||||
|
||||
public Hydra( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
50
Scripts/Mobiles/Monsters/ML/Blighted Grove/InsaneDryad.cs
Normal file
50
Scripts/Mobiles/Monsters/ML/Blighted Grove/InsaneDryad.cs
Normal file
|
|
@ -0,0 +1,50 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "an insane dryad corpse" )]
|
||||
public class InsaneDryad : MLDryad
|
||||
{
|
||||
public override bool InitialInnocent { get { return false; } }
|
||||
|
||||
[Constructable]
|
||||
public InsaneDryad()
|
||||
{
|
||||
Name = "an insane dryad";
|
||||
|
||||
// TODO: Perhaps these should have negative karma?
|
||||
}
|
||||
|
||||
/*
|
||||
// TODO: uncomment once added
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.1 )
|
||||
c.DropItem( new ParrotItem() );
|
||||
}
|
||||
*/
|
||||
|
||||
public InsaneDryad( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
77
Scripts/Mobiles/Monsters/ML/Blighted Grove/Saliva.cs
Normal file
77
Scripts/Mobiles/Monsters/ML/Blighted Grove/Saliva.cs
Normal file
|
|
@ -0,0 +1,77 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a Saliva corpse" )]
|
||||
public class Saliva : Harpy
|
||||
{
|
||||
[Constructable]
|
||||
public Saliva()
|
||||
{
|
||||
// TODO: Not a paragon? No ML arties?
|
||||
// It moves like a paragon on OSI...
|
||||
|
||||
Name = "Saliva";
|
||||
Hue = 0x11E;
|
||||
|
||||
SetStr( 110, 206 );
|
||||
SetDex( 123, 222 );
|
||||
SetInt( 80, 127 );
|
||||
|
||||
SetHits( 409, 842 );
|
||||
|
||||
SetDamage( 20, 22 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 46, 48 );
|
||||
SetResistance( ResistanceType.Fire, 32, 40 );
|
||||
SetResistance( ResistanceType.Cold, 34, 49 );
|
||||
SetResistance( ResistanceType.Poison, 40, 48 );
|
||||
SetResistance( ResistanceType.Energy, 35, 39 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 106.4, 128.8 );
|
||||
SetSkill( SkillName.Tactics, 129.9, 141.0 );
|
||||
SetSkill( SkillName.MagicResist, 84.3, 105.0 );
|
||||
|
||||
// TODO: Fame/Karma?
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.UltraRich, 2 );
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
c.DropItem( new SalivasFeather() );
|
||||
|
||||
// TODO: uncomment once added
|
||||
//if ( Utility.RandomDouble() < 0.1 )
|
||||
// c.DropItem( new ParrotItem() );
|
||||
}
|
||||
|
||||
public Saliva( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
78
Scripts/Mobiles/Monsters/ML/Blighted Grove/Tangle.cs
Normal file
78
Scripts/Mobiles/Monsters/ML/Blighted Grove/Tangle.cs
Normal file
|
|
@ -0,0 +1,78 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a Tangle corpse" )]
|
||||
public class Tangle : BogThing
|
||||
{
|
||||
[Constructable]
|
||||
public Tangle()
|
||||
{
|
||||
// TODO: Not a paragon? No ML arties?
|
||||
// It moves like a paragon on OSI...
|
||||
|
||||
Name = "Tangle";
|
||||
Hue = 0x21;
|
||||
|
||||
SetStr( 870, 940 );
|
||||
SetDex( 58, 74 );
|
||||
SetInt( 46, 58 );
|
||||
|
||||
SetHits( 2468, 2733 );
|
||||
SetMana( 8, 12 );
|
||||
|
||||
SetDamage( 15, 28 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 60 );
|
||||
SetDamageType( ResistanceType.Poison, 40 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 50, 57 );
|
||||
SetResistance( ResistanceType.Fire, 40, 43 );
|
||||
SetResistance( ResistanceType.Cold, 30, 35 );
|
||||
SetResistance( ResistanceType.Poison, 61, 69 );
|
||||
SetResistance( ResistanceType.Energy, 41, 45 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 77.8, 94.6 );
|
||||
SetSkill( SkillName.Tactics, 90.6, 100.4 );
|
||||
SetSkill( SkillName.MagicResist, 108.4, 114.0 );
|
||||
|
||||
// TODO: Fame/Karma?
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.UltraRich, 3 );
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.3 )
|
||||
c.DropItem( new TaintedSeeds() );
|
||||
}
|
||||
|
||||
public override Poison PoisonImmune { get { return Poison.Lethal; } }
|
||||
|
||||
public Tangle( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
81
Scripts/Mobiles/Monsters/ML/Blighted Grove/Thrasher.cs
Normal file
81
Scripts/Mobiles/Monsters/ML/Blighted Grove/Thrasher.cs
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
using System;
|
||||
using Server;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[CorpseName( "a Thrasher corpse" )]
|
||||
public class Thrasher : Alligator
|
||||
{
|
||||
[Constructable]
|
||||
public Thrasher()
|
||||
{
|
||||
IsParagon = true;
|
||||
|
||||
Name = "Thrasher";
|
||||
Hue = 0x497;
|
||||
|
||||
SetStr( 93, 327 );
|
||||
SetDex( 7, 201 );
|
||||
SetInt( 15, 67 );
|
||||
|
||||
SetHits( 260, 984 );
|
||||
SetStam( 56, 75 );
|
||||
SetMana( 25, 30 );
|
||||
|
||||
SetDamage( 20, 30 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 50, 55 );
|
||||
SetResistance( ResistanceType.Fire, 25, 29 );
|
||||
SetResistance( ResistanceType.Poison, 25, 28 );
|
||||
|
||||
SetSkill( SkillName.Wrestling, 101.2, 118.3 );
|
||||
SetSkill( SkillName.Tactics, 96.3, 117.3 );
|
||||
SetSkill( SkillName.MagicResist, 102.4, 118.6 );
|
||||
|
||||
// TODO: Fame/Karma
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 4 );
|
||||
}
|
||||
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.ArmorIgnore;
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
c.DropItem( new ThrashersTail() );
|
||||
}
|
||||
|
||||
public override bool GivesMLMinorArtifact { get { return true; } }
|
||||
public override int Hides { get { return 48; } }
|
||||
public override int Meat { get { return 1; } }
|
||||
|
||||
public Thrasher( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -54,6 +54,14 @@ namespace Server.Mobiles
|
|||
AddLoot( LootPack.Rich ); // Need to verify
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
|
||||
if ( Utility.RandomDouble() < 0.1 )
|
||||
c.DropItem( new PrimitiveFetish() );
|
||||
}
|
||||
|
||||
public Troglodyte( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue