Fixes code according to modern code style. Fixes a few expression bugs.
This commit is contained in:
parent
89eea25e5f
commit
970fd563b2
3324 changed files with 441118 additions and 433755 deletions
|
|
@ -2,69 +2,69 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[TypeAlias( "Server.Mobiles.ArticOgreLord" )]
|
||||
public class ArcticOgreLord : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a frozen ogre lord's corpse";
|
||||
public override string DefaultName => "an arctic ogre lord";
|
||||
[TypeAlias("Server.Mobiles.ArticOgreLord")]
|
||||
public class ArcticOgreLord : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public ArcticOgreLord() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 135;
|
||||
BaseSoundID = 427;
|
||||
|
||||
[Constructible]
|
||||
public ArcticOgreLord() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 135;
|
||||
BaseSoundID = 427;
|
||||
SetStr(767, 945);
|
||||
SetDex(66, 75);
|
||||
SetInt(46, 70);
|
||||
|
||||
SetStr( 767, 945 );
|
||||
SetDex( 66, 75 );
|
||||
SetInt( 46, 70 );
|
||||
SetHits(476, 552);
|
||||
|
||||
SetHits( 476, 552 );
|
||||
SetDamage(20, 25);
|
||||
|
||||
SetDamage( 20, 25 );
|
||||
SetDamageType(ResistanceType.Physical, 30);
|
||||
SetDamageType(ResistanceType.Cold, 70);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 30 );
|
||||
SetDamageType( ResistanceType.Cold, 70 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 100);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 100 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
SetSkill(SkillName.MagicResist, 125.1, 140.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 125.1, 140.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
VirtualArmor = 50;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem(new Club());
|
||||
}
|
||||
|
||||
PackItem( new Club() );
|
||||
}
|
||||
public ArcticOgreLord(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
public override string CorpseName => "a frozen ogre lord's corpse";
|
||||
public override string DefaultName => "an arctic ogre lord";
|
||||
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 3;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 3;
|
||||
|
||||
public ArcticOgreLord( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Rich);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,82 +2,94 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class BoneKnight : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a bone knight";
|
||||
public class BoneKnight : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public BoneKnight() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 57;
|
||||
BaseSoundID = 451;
|
||||
|
||||
[Constructible]
|
||||
public BoneKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 57;
|
||||
BaseSoundID = 451;
|
||||
SetStr(196, 250);
|
||||
SetDex(76, 95);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 196, 250 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(118, 150);
|
||||
|
||||
SetHits( 118, 150 );
|
||||
SetDamage(8, 18);
|
||||
|
||||
SetDamage( 8, 18 );
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.MagicResist, 65.1, 80.0);
|
||||
SetSkill(SkillName.Tactics, 85.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 85.1, 95.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 85.1, 95.0 );
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
VirtualArmor = 40;
|
||||
|
||||
VirtualArmor = 40;
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new PlateArms());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new PlateChest());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new PlateGloves());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new PlateGorget());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new PlateLegs());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new PlateHelm());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 6 ) )
|
||||
{
|
||||
case 0: PackItem( new PlateArms() ); break;
|
||||
case 1: PackItem( new PlateChest() ); break;
|
||||
case 2: PackItem( new PlateGloves() ); break;
|
||||
case 3: PackItem( new PlateGorget() ); break;
|
||||
case 4: PackItem( new PlateLegs() ); break;
|
||||
case 5: PackItem( new PlateHelm() ); break;
|
||||
}
|
||||
PackSlayer();
|
||||
PackItem(new Scimitar());
|
||||
PackItem(new WoodenShield());
|
||||
}
|
||||
|
||||
PackSlayer();
|
||||
PackItem( new Scimitar() );
|
||||
PackItem( new WoodenShield() );
|
||||
}
|
||||
public BoneKnight(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a bone knight";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public BoneKnight( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,95 +2,109 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Brigand : BaseCreature
|
||||
{
|
||||
public override bool ClickTitle => false;
|
||||
public class Brigand : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Brigand() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Title = "the brigand";
|
||||
Hue = Utility.RandomSkinHue();
|
||||
|
||||
[Constructible]
|
||||
public Brigand() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Title = "the brigand";
|
||||
Hue = Utility.RandomSkinHue();
|
||||
if (Female = Utility.RandomBool())
|
||||
{
|
||||
Body = 0x191;
|
||||
Name = NameList.RandomName("female");
|
||||
AddItem(new Skirt(Utility.RandomNeutralHue()));
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName("male");
|
||||
AddItem(new ShortPants(Utility.RandomNeutralHue()));
|
||||
}
|
||||
|
||||
if ( Female = Utility.RandomBool() )
|
||||
{
|
||||
Body = 0x191;
|
||||
Name = NameList.RandomName( "female" );
|
||||
AddItem( new Skirt( Utility.RandomNeutralHue() ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName( "male" );
|
||||
AddItem( new ShortPants( Utility.RandomNeutralHue() ) );
|
||||
}
|
||||
SetStr(86, 100);
|
||||
SetDex(81, 95);
|
||||
SetInt(61, 75);
|
||||
|
||||
SetStr( 86, 100 );
|
||||
SetDex( 81, 95 );
|
||||
SetInt( 61, 75 );
|
||||
SetDamage(10, 23);
|
||||
|
||||
SetDamage( 10, 23 );
|
||||
SetSkill(SkillName.Fencing, 66.0, 97.5);
|
||||
SetSkill(SkillName.Macing, 65.0, 87.5);
|
||||
SetSkill(SkillName.MagicResist, 25.0, 47.5);
|
||||
SetSkill(SkillName.Swords, 65.0, 87.5);
|
||||
SetSkill(SkillName.Tactics, 65.0, 87.5);
|
||||
SetSkill(SkillName.Wrestling, 15.0, 37.5);
|
||||
|
||||
SetSkill( SkillName.Fencing, 66.0, 97.5 );
|
||||
SetSkill( SkillName.Macing, 65.0, 87.5 );
|
||||
SetSkill( SkillName.MagicResist, 25.0, 47.5 );
|
||||
SetSkill( SkillName.Swords, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 15.0, 37.5 );
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
AddItem(new Boots(Utility.RandomNeutralHue()));
|
||||
AddItem(new FancyShirt());
|
||||
AddItem(new Bandana());
|
||||
|
||||
AddItem( new Boots( Utility.RandomNeutralHue() ) );
|
||||
AddItem( new FancyShirt());
|
||||
AddItem( new Bandana());
|
||||
switch (Utility.Random(7))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Longsword());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Cutlass());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Broadsword());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Axe());
|
||||
break;
|
||||
case 4:
|
||||
AddItem(new Club());
|
||||
break;
|
||||
case 5:
|
||||
AddItem(new Dagger());
|
||||
break;
|
||||
case 6:
|
||||
AddItem(new Spear());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 7 ))
|
||||
{
|
||||
case 0: AddItem( new Longsword() ); break;
|
||||
case 1: AddItem( new Cutlass() ); break;
|
||||
case 2: AddItem( new Broadsword() ); break;
|
||||
case 3: AddItem( new Axe() ); break;
|
||||
case 4: AddItem( new Club() ); break;
|
||||
case 5: AddItem( new Dagger() ); break;
|
||||
case 6: AddItem( new Spear() ); break;
|
||||
}
|
||||
Utility.AssignRandomHair(this);
|
||||
}
|
||||
|
||||
Utility.AssignRandomHair( this );
|
||||
}
|
||||
public Brigand(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
public override bool ClickTitle => false;
|
||||
|
||||
if ( Utility.RandomDouble() < 0.9 )
|
||||
c.DropItem( new SeveredHumanEars() );
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
if (Utility.RandomDouble() < 0.9)
|
||||
c.DropItem(new SeveredHumanEars());
|
||||
}
|
||||
|
||||
public Brigand( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,66 +2,70 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class ChaosDaemon : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a chaos daemon corpse";
|
||||
public override WeaponAbility GetWeaponAbility() => WeaponAbility.CrushingBlow;
|
||||
public class ChaosDaemon : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public ChaosDaemon() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 792;
|
||||
BaseSoundID = 0x3E9;
|
||||
|
||||
public override string DefaultName => "a chaos daemon";
|
||||
SetStr(106, 130);
|
||||
SetDex(171, 200);
|
||||
SetInt(56, 80);
|
||||
|
||||
[Constructible]
|
||||
public ChaosDaemon() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 792;
|
||||
BaseSoundID = 0x3E9;
|
||||
SetHits(91, 110);
|
||||
|
||||
SetStr( 106, 130 );
|
||||
SetDex( 171, 200 );
|
||||
SetInt( 56, 80 );
|
||||
SetDamage(12, 17);
|
||||
|
||||
SetHits( 91, 110 );
|
||||
SetDamageType(ResistanceType.Physical, 85);
|
||||
SetDamageType(ResistanceType.Fire, 15);
|
||||
|
||||
SetDamage( 12, 17 );
|
||||
SetResistance(ResistanceType.Physical, 50, 60);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 85 );
|
||||
SetDamageType( ResistanceType.Fire, 15 );
|
||||
SetSkill(SkillName.MagicResist, 85.1, 95.0);
|
||||
SetSkill(SkillName.Tactics, 70.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 95.1, 100.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 50, 60 );
|
||||
SetResistance( ResistanceType.Fire, 60, 70 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
Fame = 3000;
|
||||
Karma = -4000;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 95.1, 100.0 );
|
||||
VirtualArmor = 15;
|
||||
}
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -4000;
|
||||
public ChaosDaemon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
VirtualArmor = 15;
|
||||
}
|
||||
public override string CorpseName => "a chaos daemon corpse";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string DefaultName => "a chaos daemon";
|
||||
|
||||
public ChaosDaemon( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.CrushingBlow;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,83 +2,83 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Cursed : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an inhuman corpse";
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
public class Cursed : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Cursed() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Title = "the Cursed";
|
||||
|
||||
[Constructible]
|
||||
public Cursed() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Title = "the Cursed";
|
||||
Hue = Utility.RandomMinMax(0x8596, 0x8599);
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName("male");
|
||||
BaseSoundID = 471;
|
||||
|
||||
Hue = Utility.RandomMinMax( 0x8596, 0x8599 );
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName( "male" );
|
||||
BaseSoundID = 471;
|
||||
AddItem(new ShortPants(Utility.RandomNeutralHue()));
|
||||
AddItem(new Shirt(Utility.RandomNeutralHue()));
|
||||
|
||||
AddItem( new ShortPants( Utility.RandomNeutralHue() ) );
|
||||
AddItem( new Shirt( Utility.RandomNeutralHue() ) );
|
||||
BaseWeapon weapon = Loot.RandomWeapon();
|
||||
weapon.Movable = false;
|
||||
AddItem(weapon);
|
||||
|
||||
BaseWeapon weapon = Loot.RandomWeapon();
|
||||
weapon.Movable = false;
|
||||
AddItem( weapon );
|
||||
SetStr(91, 100);
|
||||
SetDex(86, 95);
|
||||
SetInt(61, 70);
|
||||
|
||||
SetStr( 91, 100 );
|
||||
SetDex( 86, 95 );
|
||||
SetInt( 61, 70 );
|
||||
SetHits(91, 120);
|
||||
|
||||
SetHits( 91, 120 );
|
||||
SetDamage(5, 13);
|
||||
|
||||
SetDamage( 5, 13 );
|
||||
SetResistance(ResistanceType.Physical, 15, 25);
|
||||
SetResistance(ResistanceType.Fire, 5, 10);
|
||||
SetResistance(ResistanceType.Cold, 25, 35);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
SetResistance(ResistanceType.Energy, 5, 10);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 25 );
|
||||
SetResistance( ResistanceType.Fire, 5, 10 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 5, 10 );
|
||||
SetSkill(SkillName.Fencing, 46.0, 77.5);
|
||||
SetSkill(SkillName.Macing, 35.0, 57.5);
|
||||
SetSkill(SkillName.MagicResist, 53.5, 62.5);
|
||||
SetSkill(SkillName.Swords, 55.0, 77.5);
|
||||
SetSkill(SkillName.Tactics, 60.0, 82.5);
|
||||
SetSkill(SkillName.Poisoning, 60.0, 82.5);
|
||||
|
||||
SetSkill( SkillName.Fencing, 46.0, 77.5 );
|
||||
SetSkill( SkillName.Macing, 35.0, 57.5 );
|
||||
SetSkill( SkillName.MagicResist, 53.5, 62.5 );
|
||||
SetSkill( SkillName.Swords, 55.0, 77.5 );
|
||||
SetSkill( SkillName.Tactics, 60.0, 82.5 );
|
||||
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
|
||||
Fame = 1000;
|
||||
Karma = -2000;
|
||||
}
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -2000;
|
||||
}
|
||||
public Cursed(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
public override string CorpseName => "an inhuman corpse";
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
//AddLoot( LootPack.Miscellaneous );
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
|
||||
public Cursed( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
//AddLoot( LootPack.Miscellaneous );
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +1,66 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Cyclops : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a cyclopean corpse";
|
||||
public override string DefaultName => "a cyclopean warrior";
|
||||
public class Cyclops : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Cyclops() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 75;
|
||||
BaseSoundID = 604;
|
||||
|
||||
[Constructible]
|
||||
public Cyclops() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 75;
|
||||
BaseSoundID = 604;
|
||||
SetStr(336, 385);
|
||||
SetDex(96, 115);
|
||||
SetInt(31, 55);
|
||||
|
||||
SetStr( 336, 385 );
|
||||
SetDex( 96, 115 );
|
||||
SetInt( 31, 55 );
|
||||
SetHits(202, 231);
|
||||
SetMana(0);
|
||||
|
||||
SetHits( 202, 231 );
|
||||
SetMana( 0 );
|
||||
SetDamage(7, 23);
|
||||
|
||||
SetDamage( 7, 23 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 45, 50);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 25, 35);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 50 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.MagicResist, 60.3, 105.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 90.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 60.3, 105.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
|
||||
Fame = 4500;
|
||||
Karma = -4500;
|
||||
VirtualArmor = 48;
|
||||
}
|
||||
|
||||
VirtualArmor = 48;
|
||||
}
|
||||
public Cyclops(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
public override string CorpseName => "a cyclopean corpse";
|
||||
public override string DefaultName => "a cyclopean warrior";
|
||||
|
||||
public override int Meat => 4;
|
||||
public override int TreasureMapLevel => 3;
|
||||
public override int Meat => 4;
|
||||
public override int TreasureMapLevel => 3;
|
||||
|
||||
public Cyclops( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,62 +1,62 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Doppleganger : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a doppleganger corpse";
|
||||
public override string DefaultName => "a doppleganger";
|
||||
public class Doppleganger : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Doppleganger() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x309;
|
||||
BaseSoundID = 0x451;
|
||||
|
||||
[Constructible]
|
||||
public Doppleganger() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x309;
|
||||
BaseSoundID = 0x451;
|
||||
SetStr(81, 110);
|
||||
SetDex(56, 75);
|
||||
SetInt(81, 105);
|
||||
|
||||
SetStr( 81, 110 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 81, 105 );
|
||||
SetHits(101, 120);
|
||||
|
||||
SetHits( 101, 120 );
|
||||
SetDamage(8, 12);
|
||||
|
||||
SetDamage( 8, 12 );
|
||||
SetResistance(ResistanceType.Physical, 50, 60);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 50, 60 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.MagicResist, 75.1, 85.0);
|
||||
SetSkill(SkillName.Tactics, 70.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 90.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 75.1, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
VirtualArmor = 55;
|
||||
}
|
||||
|
||||
VirtualArmor = 55;
|
||||
}
|
||||
public Doppleganger(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
public override string CorpseName => "a doppleganger corpse";
|
||||
public override string DefaultName => "a doppleganger";
|
||||
|
||||
public override int Hides => 6;
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override int Meat => 1;
|
||||
|
||||
public Doppleganger( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,108 +2,134 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
// TODO: Needs some Spellweaving abilities
|
||||
public class ElfBrigand : BaseCreature
|
||||
{
|
||||
public override bool ClickTitle => false;
|
||||
// TODO: Needs some Spellweaving abilities
|
||||
public class ElfBrigand : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public ElfBrigand() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Title = "the brigand";
|
||||
Race = Race.Elf;
|
||||
Hue = Race.RandomSkinHue();
|
||||
|
||||
[Constructible]
|
||||
public ElfBrigand() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Title = "the brigand";
|
||||
Race = Race.Elf;
|
||||
Hue = Race.RandomSkinHue();
|
||||
if (Female = Utility.RandomBool())
|
||||
{
|
||||
Body = 0x25E;
|
||||
Name = NameList.RandomName("female elf brigand");
|
||||
|
||||
if ( Female = Utility.RandomBool() )
|
||||
{
|
||||
Body = 0x25E;
|
||||
Name = NameList.RandomName( "female elf brigand" );
|
||||
switch (Utility.Random(2))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Skirt(Utility.RandomNondyedHue()));
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Kilt(Utility.RandomNondyedHue()));
|
||||
break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x25D;
|
||||
Name = NameList.RandomName("male elf brigand");
|
||||
AddItem(new ShortPants(Utility.RandomNondyedHue()));
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 2 ) )
|
||||
{
|
||||
case 0: AddItem( new Skirt( Utility.RandomNondyedHue() ) ); break;
|
||||
case 1: AddItem( new Kilt( Utility.RandomNondyedHue() ) ); break;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x25D;
|
||||
Name = NameList.RandomName( "male elf brigand" );
|
||||
AddItem( new ShortPants( Utility.RandomNondyedHue() ) );
|
||||
}
|
||||
SetStr(86, 100);
|
||||
SetDex(81, 95);
|
||||
SetInt(61, 75);
|
||||
|
||||
SetStr( 86, 100 );
|
||||
SetDex( 81, 95 );
|
||||
SetInt( 61, 75 );
|
||||
SetDamage(10, 23);
|
||||
|
||||
SetDamage( 10, 23 );
|
||||
SetSkill(SkillName.Fencing, 66.0, 97.5);
|
||||
SetSkill(SkillName.Macing, 65.0, 87.5);
|
||||
SetSkill(SkillName.MagicResist, 25.0, 47.5);
|
||||
SetSkill(SkillName.Swords, 65.0, 87.5);
|
||||
SetSkill(SkillName.Tactics, 65.0, 87.5);
|
||||
SetSkill(SkillName.Wrestling, 15.0, 37.5);
|
||||
|
||||
SetSkill( SkillName.Fencing, 66.0, 97.5 );
|
||||
SetSkill( SkillName.Macing, 65.0, 87.5 );
|
||||
SetSkill( SkillName.MagicResist, 25.0, 47.5 );
|
||||
SetSkill( SkillName.Swords, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 15.0, 37.5 );
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
switch (Utility.Random(4))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Boots());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new ThighBoots());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Sandals());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Shoes());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 4 ) )
|
||||
{
|
||||
case 0: AddItem( new Boots() ); break;
|
||||
case 1: AddItem( new ThighBoots() ); break;
|
||||
case 2: AddItem( new Sandals() ); break;
|
||||
case 3: AddItem( new Shoes() ); break;
|
||||
}
|
||||
AddItem(new Shirt(Utility.RandomNondyedHue()));
|
||||
|
||||
AddItem( new Shirt( Utility.RandomNondyedHue() ) );
|
||||
switch (Utility.Random(7))
|
||||
{
|
||||
case 0:
|
||||
AddItem(new Longsword());
|
||||
break;
|
||||
case 1:
|
||||
AddItem(new Cutlass());
|
||||
break;
|
||||
case 2:
|
||||
AddItem(new Broadsword());
|
||||
break;
|
||||
case 3:
|
||||
AddItem(new Axe());
|
||||
break;
|
||||
case 4:
|
||||
AddItem(new Club());
|
||||
break;
|
||||
case 5:
|
||||
AddItem(new Dagger());
|
||||
break;
|
||||
case 6:
|
||||
AddItem(new Spear());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 7 ) )
|
||||
{
|
||||
case 0: AddItem( new Longsword() ); break;
|
||||
case 1: AddItem( new Cutlass() ); break;
|
||||
case 2: AddItem( new Broadsword() ); break;
|
||||
case 3: AddItem( new Axe() ); break;
|
||||
case 4: AddItem( new Club() ); break;
|
||||
case 5: AddItem( new Dagger() ); break;
|
||||
case 6: AddItem( new Spear() ); break;
|
||||
}
|
||||
Utility.AssignRandomHair(this, true);
|
||||
}
|
||||
|
||||
Utility.AssignRandomHair( this, true );
|
||||
}
|
||||
public ElfBrigand(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
public override bool ClickTitle => false;
|
||||
|
||||
if ( Utility.RandomDouble() < 0.9 )
|
||||
c.DropItem( new SeveredElfEars() );
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
if (Utility.RandomDouble() < 0.9)
|
||||
c.DropItem(new SeveredElfEars());
|
||||
}
|
||||
|
||||
public ElfBrigand( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,67 +2,67 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class EnslavedGargoyle : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an enslaved gargoyle corpse";
|
||||
public override string DefaultName => "an enslaved gargoyle";
|
||||
public class EnslavedGargoyle : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public EnslavedGargoyle() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x2F1;
|
||||
BaseSoundID = 0x174;
|
||||
|
||||
[Constructible]
|
||||
public EnslavedGargoyle() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x2F1;
|
||||
BaseSoundID = 0x174;
|
||||
SetStr(302, 360);
|
||||
SetDex(76, 95);
|
||||
SetInt(81, 105);
|
||||
|
||||
SetStr( 302, 360 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 81, 105 );
|
||||
SetHits(186, 212);
|
||||
|
||||
SetHits( 186,212 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetResistance(ResistanceType.Physical, 30, 40);
|
||||
SetResistance(ResistanceType.Fire, 50, 70);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 25, 30);
|
||||
SetResistance(ResistanceType.Energy, 25, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 50, 70 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 25, 30 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
SetSkill(SkillName.MagicResist, 70.1, 85.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 40.1, 80.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 40.1, 80.0 );
|
||||
Fame = 3500;
|
||||
Karma = 0;
|
||||
|
||||
Fame = 3500;
|
||||
Karma = 0;
|
||||
VirtualArmor = 35;
|
||||
|
||||
VirtualArmor = 35;
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new GargoylesPickaxe());
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new GargoylesPickaxe() );
|
||||
}
|
||||
public EnslavedGargoyle(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
public override string CorpseName => "an enslaved gargoyle corpse";
|
||||
public override string DefaultName => "an enslaved gargoyle";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 1;
|
||||
|
||||
public EnslavedGargoyle( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average, 2);
|
||||
AddLoot(LootPack.Gems);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,67 +1,67 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Ettin : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an ettins corpse";
|
||||
public override string DefaultName => "an ettin";
|
||||
public class Ettin : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Ettin() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 18;
|
||||
BaseSoundID = 367;
|
||||
|
||||
[Constructible]
|
||||
public Ettin() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 18;
|
||||
BaseSoundID = 367;
|
||||
SetStr(136, 165);
|
||||
SetDex(56, 75);
|
||||
SetInt(31, 55);
|
||||
|
||||
SetStr( 136, 165 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 31, 55 );
|
||||
SetHits(82, 99);
|
||||
|
||||
SetHits( 82, 99 );
|
||||
SetDamage(7, 17);
|
||||
|
||||
SetDamage( 7, 17 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 35, 40);
|
||||
SetResistance(ResistanceType.Fire, 15, 25);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 15, 25);
|
||||
SetResistance(ResistanceType.Energy, 15, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 15, 25 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 15, 25 );
|
||||
SetSkill(SkillName.MagicResist, 40.1, 55.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 60.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 40.1, 55.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 60.0 );
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
VirtualArmor = 38;
|
||||
}
|
||||
|
||||
VirtualArmor = 38;
|
||||
}
|
||||
public Ettin(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "an ettins corpse";
|
||||
public override string DefaultName => "an ettin";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 4;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 4;
|
||||
|
||||
public Ettin( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Potions);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,87 +2,87 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Executioner : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Executioner() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Title = "the executioner";
|
||||
Hue = Utility.RandomSkinHue();
|
||||
public class Executioner : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Executioner() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
Title = "the executioner";
|
||||
Hue = Utility.RandomSkinHue();
|
||||
|
||||
if ( Female = Utility.RandomBool() )
|
||||
{
|
||||
Body = 0x191;
|
||||
Name = NameList.RandomName( "female" );
|
||||
AddItem( new Skirt( Utility.RandomRedHue() ) );
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName( "male" );
|
||||
AddItem( new ShortPants( Utility.RandomRedHue() ) );
|
||||
}
|
||||
if (Female = Utility.RandomBool())
|
||||
{
|
||||
Body = 0x191;
|
||||
Name = NameList.RandomName("female");
|
||||
AddItem(new Skirt(Utility.RandomRedHue()));
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName("male");
|
||||
AddItem(new ShortPants(Utility.RandomRedHue()));
|
||||
}
|
||||
|
||||
SetStr( 386, 400 );
|
||||
SetDex( 151, 165 );
|
||||
SetInt( 161, 175 );
|
||||
SetStr(386, 400);
|
||||
SetDex(151, 165);
|
||||
SetInt(161, 175);
|
||||
|
||||
SetDamage( 8, 10 );
|
||||
SetDamage(8, 10);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 25, 30 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 25, 30);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 125.0 );
|
||||
SetSkill( SkillName.Fencing, 46.0, 77.5 );
|
||||
SetSkill( SkillName.Macing, 35.0, 57.5 );
|
||||
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
|
||||
SetSkill( SkillName.MagicResist, 83.5, 92.5 );
|
||||
SetSkill( SkillName.Swords, 125.0 );
|
||||
SetSkill( SkillName.Tactics, 125.0 );
|
||||
SetSkill( SkillName.Lumberjacking, 125.0 );
|
||||
SetSkill(SkillName.Anatomy, 125.0);
|
||||
SetSkill(SkillName.Fencing, 46.0, 77.5);
|
||||
SetSkill(SkillName.Macing, 35.0, 57.5);
|
||||
SetSkill(SkillName.Poisoning, 60.0, 82.5);
|
||||
SetSkill(SkillName.MagicResist, 83.5, 92.5);
|
||||
SetSkill(SkillName.Swords, 125.0);
|
||||
SetSkill(SkillName.Tactics, 125.0);
|
||||
SetSkill(SkillName.Lumberjacking, 125.0);
|
||||
|
||||
Fame = 5000;
|
||||
Karma = -5000;
|
||||
Fame = 5000;
|
||||
Karma = -5000;
|
||||
|
||||
VirtualArmor = 40;
|
||||
VirtualArmor = 40;
|
||||
|
||||
AddItem( new ThighBoots( Utility.RandomRedHue() ) );
|
||||
AddItem( new Surcoat( Utility.RandomRedHue() ) );
|
||||
AddItem( new ExecutionersAxe());
|
||||
AddItem(new ThighBoots(Utility.RandomRedHue()));
|
||||
AddItem(new Surcoat(Utility.RandomRedHue()));
|
||||
AddItem(new ExecutionersAxe());
|
||||
|
||||
Utility.AssignRandomHair( this );
|
||||
}
|
||||
Utility.AssignRandomHair(this);
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public Executioner(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool AlwaysMurderer => true;
|
||||
|
||||
public Executioner( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,68 +2,68 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class FrostTroll : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a frost troll corpse";
|
||||
public override string DefaultName => "a frost troll";
|
||||
public class FrostTroll : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public FrostTroll() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 55;
|
||||
BaseSoundID = 461;
|
||||
|
||||
[Constructible]
|
||||
public FrostTroll() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 55;
|
||||
BaseSoundID = 461;
|
||||
SetStr(227, 265);
|
||||
SetDex(66, 85);
|
||||
SetInt(46, 70);
|
||||
|
||||
SetStr( 227, 265 );
|
||||
SetDex( 66, 85 );
|
||||
SetInt( 46, 70 );
|
||||
SetHits(140, 156);
|
||||
|
||||
SetHits( 140, 156 );
|
||||
SetDamage(14, 20);
|
||||
|
||||
SetDamage( 14, 20 );
|
||||
SetDamageType(ResistanceType.Physical, 75);
|
||||
SetDamageType(ResistanceType.Cold, 25);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 75 );
|
||||
SetDamageType( ResistanceType.Cold, 25 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
SetResistance(ResistanceType.Energy, 5, 10);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 5, 10 );
|
||||
SetSkill(SkillName.MagicResist, 65.1, 80.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 100.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 50;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem(new DoubleAxe()); // TODO: Weapon??
|
||||
}
|
||||
|
||||
PackItem( new DoubleAxe() ); // TODO: Weapon??
|
||||
}
|
||||
public FrostTroll(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
public override string CorpseName => "a frost troll corpse";
|
||||
public override string DefaultName => "a frost troll";
|
||||
|
||||
public override int Meat => 2;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 2;
|
||||
public override int TreasureMapLevel => 1;
|
||||
|
||||
public FrostTroll( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Gems);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,62 +2,62 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class GazerLarva : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a gazer larva corpse";
|
||||
public override string DefaultName => "a gazer larva";
|
||||
public class GazerLarva : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public GazerLarva() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 778;
|
||||
BaseSoundID = 377;
|
||||
|
||||
[Constructible]
|
||||
public GazerLarva () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 778;
|
||||
BaseSoundID = 377;
|
||||
SetStr(76, 100);
|
||||
SetDex(51, 75);
|
||||
SetInt(56, 80);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 51, 75 );
|
||||
SetInt( 56, 80 );
|
||||
SetHits(36, 47);
|
||||
|
||||
SetHits( 36, 47 );
|
||||
SetDamage(2, 9);
|
||||
|
||||
SetDamage( 2, 9 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 25 );
|
||||
SetSkill(SkillName.MagicResist, 70.0);
|
||||
SetSkill(SkillName.Tactics, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 70.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.0 );
|
||||
Fame = 900;
|
||||
Karma = -900;
|
||||
|
||||
Fame = 900;
|
||||
Karma = -900;
|
||||
VirtualArmor = 25;
|
||||
|
||||
VirtualArmor = 25;
|
||||
PackItem(new Nightshade(Utility.RandomMinMax(2, 3)));
|
||||
}
|
||||
|
||||
PackItem( new Nightshade( Utility.RandomMinMax( 2, 3 ) ) );
|
||||
}
|
||||
public GazerLarva(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
public override string CorpseName => "a gazer larva corpse";
|
||||
public override string DefaultName => "a gazer larva";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
public GazerLarva( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,68 +1,68 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Ghoul : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a ghoul";
|
||||
public class Ghoul : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Ghoul() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 153;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
[Constructible]
|
||||
public Ghoul() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 153;
|
||||
BaseSoundID = 0x482;
|
||||
SetStr(76, 100);
|
||||
SetDex(76, 95);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(46, 60);
|
||||
SetMana(0);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetMana( 0 );
|
||||
SetDamage(7, 9);
|
||||
|
||||
SetDamage( 7, 9 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetSkill(SkillName.MagicResist, 45.1, 60.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
VirtualArmor = 28;
|
||||
|
||||
VirtualArmor = 28;
|
||||
PackItem(Loot.RandomWeapon());
|
||||
}
|
||||
|
||||
PackItem( Loot.RandomWeapon() );
|
||||
}
|
||||
public Ghoul(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a ghoul";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
|
||||
public Ghoul( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,67 +1,67 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class GreaterMongbat : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a mongbat corpse";
|
||||
public override string DefaultName => "a greater mongbat";
|
||||
public class GreaterMongbat : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public GreaterMongbat() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 39;
|
||||
BaseSoundID = 422;
|
||||
|
||||
[Constructible]
|
||||
public GreaterMongbat() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 39;
|
||||
BaseSoundID = 422;
|
||||
SetStr(56, 80);
|
||||
SetDex(61, 80);
|
||||
SetInt(26, 50);
|
||||
|
||||
SetStr( 56, 80 );
|
||||
SetDex( 61, 80 );
|
||||
SetInt( 26, 50 );
|
||||
SetHits(34, 48);
|
||||
SetStam(61, 80);
|
||||
SetMana(26, 50);
|
||||
|
||||
SetHits( 34, 48 );
|
||||
SetStam( 61, 80);
|
||||
SetMana( 26, 50 );
|
||||
SetDamage(5, 7);
|
||||
|
||||
SetDamage( 5, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 25 );
|
||||
SetSkill(SkillName.MagicResist, 15.1, 30.0);
|
||||
SetSkill(SkillName.Tactics, 35.1, 50.0);
|
||||
SetSkill(SkillName.Wrestling, 20.1, 35.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 30.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 20.1, 35.0 );
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
VirtualArmor = 10;
|
||||
|
||||
VirtualArmor = 10;
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 71.1;
|
||||
}
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 71.1;
|
||||
}
|
||||
public GreaterMongbat(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
public override string CorpseName => "a mongbat corpse";
|
||||
public override string DefaultName => "a greater mongbat";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
|
||||
public GreaterMongbat( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,87 +1,86 @@
|
|||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Guardian : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Guardian() : base( AIType.AI_Archer, FightMode.Aggressor, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
InitStats( 100, 125, 25 );
|
||||
Title = "the guardian";
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Guardian : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Guardian() : base(AIType.AI_Archer, FightMode.Aggressor, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
InitStats(100, 125, 25);
|
||||
Title = "the guardian";
|
||||
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
|
||||
Hue = Utility.RandomSkinHue();
|
||||
Hue = Utility.RandomSkinHue();
|
||||
|
||||
if ( Female = Utility.RandomBool() )
|
||||
{
|
||||
Body = 0x191;
|
||||
Name = NameList.RandomName( "female" );
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName( "male" );
|
||||
}
|
||||
if (Female = Utility.RandomBool())
|
||||
{
|
||||
Body = 0x191;
|
||||
Name = NameList.RandomName("female");
|
||||
}
|
||||
else
|
||||
{
|
||||
Body = 0x190;
|
||||
Name = NameList.RandomName("male");
|
||||
}
|
||||
|
||||
new ForestOstard().Rider = this;
|
||||
new ForestOstard().Rider = this;
|
||||
|
||||
PlateChest chest = new PlateChest();
|
||||
chest.Hue = 0x966;
|
||||
AddItem( chest );
|
||||
PlateArms arms = new PlateArms();
|
||||
arms.Hue = 0x966;
|
||||
AddItem( arms );
|
||||
PlateGloves gloves = new PlateGloves();
|
||||
gloves.Hue = 0x966;
|
||||
AddItem( gloves );
|
||||
PlateGorget gorget = new PlateGorget();
|
||||
gorget.Hue = 0x966;
|
||||
AddItem( gorget );
|
||||
PlateLegs legs = new PlateLegs();
|
||||
legs.Hue = 0x966;
|
||||
AddItem( legs );
|
||||
PlateHelm helm = new PlateHelm();
|
||||
helm.Hue = 0x966;
|
||||
AddItem( helm );
|
||||
PlateChest chest = new PlateChest();
|
||||
chest.Hue = 0x966;
|
||||
AddItem(chest);
|
||||
PlateArms arms = new PlateArms();
|
||||
arms.Hue = 0x966;
|
||||
AddItem(arms);
|
||||
PlateGloves gloves = new PlateGloves();
|
||||
gloves.Hue = 0x966;
|
||||
AddItem(gloves);
|
||||
PlateGorget gorget = new PlateGorget();
|
||||
gorget.Hue = 0x966;
|
||||
AddItem(gorget);
|
||||
PlateLegs legs = new PlateLegs();
|
||||
legs.Hue = 0x966;
|
||||
AddItem(legs);
|
||||
PlateHelm helm = new PlateHelm();
|
||||
helm.Hue = 0x966;
|
||||
AddItem(helm);
|
||||
|
||||
|
||||
Bow bow = new Bow();
|
||||
Bow bow = new Bow();
|
||||
|
||||
bow.Movable = false;
|
||||
bow.Crafter = this;
|
||||
bow.Quality = WeaponQuality.Exceptional;
|
||||
bow.Movable = false;
|
||||
bow.Crafter = this;
|
||||
bow.Quality = WeaponQuality.Exceptional;
|
||||
|
||||
AddItem( bow );
|
||||
AddItem(bow);
|
||||
|
||||
PackItem( new Arrow( 250 ) );
|
||||
PackGold( 250, 500 );
|
||||
PackItem(new Arrow(250));
|
||||
PackGold(250, 500);
|
||||
|
||||
Skills[SkillName.Anatomy].Base = 120.0;
|
||||
Skills[SkillName.Tactics].Base = 120.0;
|
||||
Skills[SkillName.Archery].Base = 120.0;
|
||||
Skills[SkillName.MagicResist].Base = 120.0;
|
||||
Skills[SkillName.DetectHidden].Base = 100.0;
|
||||
Skills[SkillName.Anatomy].Base = 120.0;
|
||||
Skills[SkillName.Tactics].Base = 120.0;
|
||||
Skills[SkillName.Archery].Base = 120.0;
|
||||
Skills[SkillName.MagicResist].Base = 120.0;
|
||||
Skills[SkillName.DetectHidden].Base = 100.0;
|
||||
}
|
||||
|
||||
}
|
||||
public Guardian(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public Guardian( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,62 +1,62 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class HeadlessOne : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a headless corpse";
|
||||
public override string DefaultName => "a headless one";
|
||||
public class HeadlessOne : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public HeadlessOne() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 31;
|
||||
Hue = Utility.RandomSkinHue() & 0x7FFF;
|
||||
BaseSoundID = 0x39D;
|
||||
|
||||
[Constructible]
|
||||
public HeadlessOne() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 31;
|
||||
Hue = Utility.RandomSkinHue() & 0x7FFF;
|
||||
BaseSoundID = 0x39D;
|
||||
SetStr(26, 50);
|
||||
SetDex(36, 55);
|
||||
SetInt(16, 30);
|
||||
|
||||
SetStr( 26, 50 );
|
||||
SetDex( 36, 55 );
|
||||
SetInt( 16, 30 );
|
||||
SetHits(16, 30);
|
||||
|
||||
SetHits( 16, 30 );
|
||||
SetDamage(5, 10);
|
||||
|
||||
SetDamage( 5, 10 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetSkill(SkillName.MagicResist, 15.1, 20.0);
|
||||
SetSkill(SkillName.Tactics, 25.1, 40.0);
|
||||
SetSkill(SkillName.Wrestling, 25.1, 40.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 20.0 );
|
||||
SetSkill( SkillName.Tactics, 25.1, 40.0 );
|
||||
SetSkill( SkillName.Wrestling, 25.1, 40.0 );
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
VirtualArmor = 18;
|
||||
}
|
||||
|
||||
VirtualArmor = 18;
|
||||
}
|
||||
public HeadlessOne(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
// TODO: body parts
|
||||
}
|
||||
public override string CorpseName => "a headless corpse";
|
||||
public override string DefaultName => "a headless one";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Meat => 1;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Meat => 1;
|
||||
|
||||
public HeadlessOne( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
// TODO: body parts
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,84 +2,84 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class HordeMinion : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a horde minion corpse";
|
||||
public override string DefaultName => "a horde minion";
|
||||
public class HordeMinion : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public HordeMinion() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 776;
|
||||
BaseSoundID = 357;
|
||||
|
||||
[Constructible]
|
||||
public HordeMinion () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 776;
|
||||
BaseSoundID = 357;
|
||||
SetStr(16, 40);
|
||||
SetDex(31, 60);
|
||||
SetInt(11, 25);
|
||||
|
||||
SetStr( 16, 40 );
|
||||
SetDex( 31, 60 );
|
||||
SetInt( 11, 25 );
|
||||
SetHits(10, 24);
|
||||
|
||||
SetHits( 10, 24 );
|
||||
SetDamage(5, 10);
|
||||
|
||||
SetDamage( 5, 10 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 20);
|
||||
SetResistance(ResistanceType.Fire, 5, 10);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetResistance( ResistanceType.Fire, 5, 10 );
|
||||
SetSkill(SkillName.MagicResist, 10.0);
|
||||
SetSkill(SkillName.Tactics, 0.1, 15.0);
|
||||
SetSkill(SkillName.Wrestling, 25.1, 40.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 10.0 );
|
||||
SetSkill( SkillName.Tactics, 0.1, 15.0 );
|
||||
SetSkill( SkillName.Wrestling, 25.1, 40.0 );
|
||||
Fame = 500;
|
||||
Karma = -500;
|
||||
|
||||
Fame = 500;
|
||||
Karma = -500;
|
||||
VirtualArmor = 18;
|
||||
|
||||
VirtualArmor = 18;
|
||||
AddItem(new LightSource());
|
||||
|
||||
AddItem( new LightSource() );
|
||||
PackItem(new Bone(3));
|
||||
// TODO: Body parts
|
||||
}
|
||||
|
||||
PackItem( new Bone( 3 ) );
|
||||
// TODO: Body parts
|
||||
}
|
||||
public HordeMinion(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
public override string CorpseName => "a horde minion corpse";
|
||||
public override string DefaultName => "a horde minion";
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 406;
|
||||
}
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 338;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 194;
|
||||
}
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 406;
|
||||
}
|
||||
|
||||
public HordeMinion( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 194;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,151 +4,155 @@ using Server.Network;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Juggernaut : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a juggernaut corpse";
|
||||
private bool m_Stunning;
|
||||
public class Juggernaut : BaseCreature
|
||||
{
|
||||
private bool m_Stunning;
|
||||
|
||||
public override string DefaultName => "a blackthorn juggernaut";
|
||||
|
||||
[Constructible]
|
||||
public Juggernaut() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.3, 0.6 )
|
||||
{
|
||||
Body = 768;
|
||||
[Constructible]
|
||||
public Juggernaut() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.3, 0.6)
|
||||
{
|
||||
Body = 768;
|
||||
|
||||
|
||||
SetStr( 301, 400 );
|
||||
SetDex( 51, 70 );
|
||||
SetInt( 51, 100 );
|
||||
SetStr(301, 400);
|
||||
SetDex(51, 70);
|
||||
SetInt(51, 100);
|
||||
|
||||
SetHits( 181, 240 );
|
||||
SetHits(181, 240);
|
||||
|
||||
SetDamage( 12, 19 );
|
||||
SetDamage(12, 19);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Fire, 25 );
|
||||
SetDamageType( ResistanceType.Energy, 25 );
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Fire, 25);
|
||||
SetDamageType(ResistanceType.Energy, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 65, 75 );
|
||||
SetResistance( ResistanceType.Fire, 35, 45 );
|
||||
SetResistance( ResistanceType.Cold, 35, 45 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetResistance(ResistanceType.Physical, 65, 75);
|
||||
SetResistance(ResistanceType.Fire, 35, 45);
|
||||
SetResistance(ResistanceType.Cold, 35, 45);
|
||||
SetResistance(ResistanceType.Poison, 15, 25);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 140.1, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
SetSkill(SkillName.Anatomy, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 140.1, 150.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
Fame = 12000;
|
||||
Karma = -12000;
|
||||
Fame = 12000;
|
||||
Karma = -12000;
|
||||
|
||||
VirtualArmor = 70;
|
||||
VirtualArmor = 70;
|
||||
|
||||
if ( 0.1 > Utility.RandomDouble() )
|
||||
PackItem( new PowerCrystal() );
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
PackItem(new PowerCrystal());
|
||||
|
||||
if ( 0.4 > Utility.RandomDouble() )
|
||||
PackItem( new ClockworkAssembly() );
|
||||
}
|
||||
if (0.4 > Utility.RandomDouble())
|
||||
PackItem(new ClockworkAssembly());
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
public Juggernaut(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
if ( 0.05 > Utility.RandomDouble() )
|
||||
{
|
||||
if ( !IsParagon )
|
||||
{
|
||||
if ( 0.75 > Utility.RandomDouble() )
|
||||
c.DropItem( DawnsMusicGear.RandomCommon );
|
||||
else
|
||||
c.DropItem( DawnsMusicGear.RandomUncommon );
|
||||
}
|
||||
else
|
||||
c.DropItem( DawnsMusicGear.RandomRare );
|
||||
}
|
||||
}
|
||||
public override string CorpseName => "a juggernaut corpse";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems, 1 );
|
||||
}
|
||||
public override string DefaultName => "a blackthorn juggernaut";
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x423;
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x23B;
|
||||
}
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x140;
|
||||
}
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
{
|
||||
if (!IsParagon)
|
||||
{
|
||||
if (0.75 > Utility.RandomDouble())
|
||||
c.DropItem(DawnsMusicGear.RandomCommon);
|
||||
else
|
||||
c.DropItem(DawnsMusicGear.RandomUncommon);
|
||||
}
|
||||
else
|
||||
{
|
||||
c.DropItem(DawnsMusicGear.RandomRare);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.Gems, 1);
|
||||
}
|
||||
|
||||
public override void OnGaveMeleeAttack( Mobile defender )
|
||||
{
|
||||
base.OnGaveMeleeAttack( defender );
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x423;
|
||||
}
|
||||
|
||||
if ( !m_Stunning && 0.3 > Utility.RandomDouble() )
|
||||
{
|
||||
m_Stunning = true;
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x23B;
|
||||
}
|
||||
|
||||
defender.Animate( 21, 6, 1, true, false, 0 );
|
||||
PlaySound( 0xEE );
|
||||
defender.LocalOverheadMessage( MessageType.Regular, 0x3B2, false, "You have been stunned by a colossal blow!" );
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x140;
|
||||
}
|
||||
|
||||
if ( Weapon is BaseWeapon weapon )
|
||||
weapon.OnHit( this, defender );
|
||||
public override void OnGaveMeleeAttack(Mobile defender)
|
||||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if ( defender.Alive )
|
||||
{
|
||||
defender.Frozen = true;
|
||||
Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( Recover_Callback ), defender );
|
||||
}
|
||||
}
|
||||
}
|
||||
if (!m_Stunning && 0.3 > Utility.RandomDouble())
|
||||
{
|
||||
m_Stunning = true;
|
||||
|
||||
private void Recover_Callback( object state )
|
||||
{
|
||||
if ( state is Mobile defender )
|
||||
{
|
||||
defender.Frozen = false;
|
||||
defender.Combatant = null;
|
||||
defender.LocalOverheadMessage( MessageType.Regular, 0x3B2, false, "You recover your senses." );
|
||||
}
|
||||
defender.Animate(21, 6, 1, true, false, 0);
|
||||
PlaySound(0xEE);
|
||||
defender.LocalOverheadMessage(MessageType.Regular, 0x3B2, false,
|
||||
"You have been stunned by a colossal blow!");
|
||||
|
||||
m_Stunning = false;
|
||||
}
|
||||
if (Weapon is BaseWeapon weapon)
|
||||
weapon.OnHit(this, defender);
|
||||
|
||||
public Juggernaut( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (defender.Alive)
|
||||
{
|
||||
defender.Frozen = true;
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerStateCallback(Recover_Callback), defender);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
private void Recover_Callback(object state)
|
||||
{
|
||||
if (state is Mobile defender)
|
||||
{
|
||||
defender.Frozen = false;
|
||||
defender.Combatant = null;
|
||||
defender.LocalOverheadMessage(MessageType.Regular, 0x3B2, false, "You recover your senses.");
|
||||
}
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
m_Stunning = false;
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,177 +4,173 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class KhaldunRevenant : BaseCreature
|
||||
{
|
||||
private static Hashtable m_Table = new Hashtable();
|
||||
public class KhaldunRevenant : BaseCreature
|
||||
{
|
||||
private static Hashtable m_Table = new Hashtable();
|
||||
private DateTime m_ExpireTime;
|
||||
|
||||
public static void Initialize()
|
||||
{
|
||||
EventSink.PlayerDeath += EventSink_PlayerDeath;
|
||||
}
|
||||
private Mobile m_Target;
|
||||
|
||||
public static void EventSink_PlayerDeath( PlayerDeathEventArgs e )
|
||||
{
|
||||
Mobile m = e.Mobile;
|
||||
Mobile lastKiller = m.LastKiller;
|
||||
public KhaldunRevenant(Mobile target) : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.18, 0.36)
|
||||
{
|
||||
Body = 0x3CA;
|
||||
Hue = 0x41CE;
|
||||
|
||||
if ( lastKiller is BaseCreature )
|
||||
lastKiller = ((BaseCreature)lastKiller).GetMaster();
|
||||
m_Target = target;
|
||||
m_ExpireTime = DateTime.UtcNow + TimeSpan.FromMinutes(10.0);
|
||||
|
||||
if ( IsInsideKhaldun( m ) && IsInsideKhaldun( lastKiller ) && lastKiller.Player && !m_Table.Contains( lastKiller ) )
|
||||
{
|
||||
foreach ( AggressorInfo ai in m.Aggressors )
|
||||
{
|
||||
if ( ai.Attacker == lastKiller && ai.CanReportMurder )
|
||||
{
|
||||
SummonRevenant( m, lastKiller );
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
SetStr(401, 500);
|
||||
SetDex(296, 315);
|
||||
SetInt(101, 200);
|
||||
|
||||
public static void SummonRevenant( Mobile victim, Mobile killer )
|
||||
{
|
||||
KhaldunRevenant revenant = new KhaldunRevenant( killer );
|
||||
SetHits(241, 300);
|
||||
SetStam(242, 280);
|
||||
|
||||
revenant.MoveToWorld( victim.Location, victim.Map );
|
||||
revenant.Combatant = killer;
|
||||
revenant.FixedParticles( 0, 0, 0, 0x13A7, EffectLayer.Waist );
|
||||
Effects.PlaySound( revenant.Location, revenant.Map, 0x29 );
|
||||
SetDamage(20, 30);
|
||||
|
||||
m_Table.Add( killer, null );
|
||||
}
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Cold, 50);
|
||||
|
||||
public static bool IsInsideKhaldun( Mobile from )
|
||||
{
|
||||
return from?.Region != null && from.Region.IsPartOf( "Khaldun" );
|
||||
}
|
||||
SetSkill(SkillName.MagicResist, 100.1, 150.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Swords, 140.1, 150.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
private Mobile m_Target;
|
||||
private DateTime m_ExpireTime;
|
||||
SetResistance(ResistanceType.Physical, 55, 65);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
public override bool DeleteCorpseOnDeath => true;
|
||||
Fame = 0;
|
||||
Karma = 0;
|
||||
|
||||
public override void DisplayPaperdollTo( Mobile to )
|
||||
{
|
||||
}
|
||||
VirtualArmor = 60;
|
||||
|
||||
public override Mobile ConstantFocus => m_Target;
|
||||
public override bool AlwaysAttackable => true;
|
||||
Halberd weapon = new Halberd();
|
||||
weapon.Hue = 0x41CE;
|
||||
weapon.Movable = false;
|
||||
|
||||
public override string DefaultName => "a revenant";
|
||||
AddItem(weapon);
|
||||
}
|
||||
|
||||
public KhaldunRevenant( Mobile target ) : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.18, 0.36 )
|
||||
{
|
||||
Body = 0x3CA;
|
||||
Hue = 0x41CE;
|
||||
public KhaldunRevenant(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
m_Target = target;
|
||||
m_ExpireTime = DateTime.UtcNow + TimeSpan.FromMinutes( 10.0 );
|
||||
public override bool DeleteCorpseOnDeath => true;
|
||||
|
||||
SetStr( 401, 500 );
|
||||
SetDex( 296, 315 );
|
||||
SetInt( 101, 200 );
|
||||
public override Mobile ConstantFocus => m_Target;
|
||||
public override bool AlwaysAttackable => true;
|
||||
|
||||
SetHits( 241, 300 );
|
||||
SetStam( 242, 280 );
|
||||
public override string DefaultName => "a revenant";
|
||||
|
||||
SetDamage( 20, 30 );
|
||||
public override bool BardImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
public static void Initialize()
|
||||
{
|
||||
EventSink.PlayerDeath += EventSink_PlayerDeath;
|
||||
}
|
||||
|
||||
SetSkill( SkillName.MagicResist, 100.1, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Swords, 140.1, 150.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
public static void EventSink_PlayerDeath(PlayerDeathEventArgs e)
|
||||
{
|
||||
Mobile m = e.Mobile;
|
||||
Mobile lastKiller = m.LastKiller;
|
||||
|
||||
SetResistance( ResistanceType.Physical, 55, 65 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
if (lastKiller is BaseCreature)
|
||||
lastKiller = ((BaseCreature)lastKiller).GetMaster();
|
||||
|
||||
Fame = 0;
|
||||
Karma = 0;
|
||||
if (IsInsideKhaldun(m) && IsInsideKhaldun(lastKiller) && lastKiller.Player && !m_Table.Contains(lastKiller))
|
||||
foreach (AggressorInfo ai in m.Aggressors)
|
||||
if (ai.Attacker == lastKiller && ai.CanReportMurder)
|
||||
{
|
||||
SummonRevenant(m, lastKiller);
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
VirtualArmor = 60;
|
||||
public static void SummonRevenant(Mobile victim, Mobile killer)
|
||||
{
|
||||
KhaldunRevenant revenant = new KhaldunRevenant(killer);
|
||||
|
||||
Halberd weapon = new Halberd();
|
||||
weapon.Hue = 0x41CE;
|
||||
weapon.Movable = false;
|
||||
revenant.MoveToWorld(victim.Location, victim.Map);
|
||||
revenant.Combatant = killer;
|
||||
revenant.FixedParticles(0, 0, 0, 0x13A7, EffectLayer.Waist);
|
||||
Effects.PlaySound(revenant.Location, revenant.Map, 0x29);
|
||||
|
||||
AddItem( weapon );
|
||||
}
|
||||
m_Table.Add(killer, null);
|
||||
}
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x1BF;
|
||||
}
|
||||
public static bool IsInsideKhaldun(Mobile from)
|
||||
{
|
||||
return from?.Region != null && from.Region.IsPartOf("Khaldun");
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x107;
|
||||
}
|
||||
public override void DisplayPaperdollTo(Mobile to)
|
||||
{
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xFD;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x1BF;
|
||||
}
|
||||
|
||||
public override bool BardImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x107;
|
||||
}
|
||||
|
||||
public override void OnThink()
|
||||
{
|
||||
if ( !m_Target.Alive || DateTime.UtcNow > m_ExpireTime )
|
||||
{
|
||||
Delete();
|
||||
return;
|
||||
}
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xFD;
|
||||
}
|
||||
|
||||
//Combatant = m_Target;
|
||||
//FocusMob = m_Target;
|
||||
public override void OnThink()
|
||||
{
|
||||
if (!m_Target.Alive || DateTime.UtcNow > m_ExpireTime)
|
||||
{
|
||||
Delete();
|
||||
return;
|
||||
}
|
||||
|
||||
if ( AIObject != null )
|
||||
AIObject.Action = ActionType.Combat;
|
||||
//Combatant = m_Target;
|
||||
//FocusMob = m_Target;
|
||||
|
||||
base.OnThink();
|
||||
}
|
||||
if (AIObject != null)
|
||||
AIObject.Action = ActionType.Combat;
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
Effects.SendLocationEffect( Location, Map, 0x376A, 10, 1 );
|
||||
return true;
|
||||
}
|
||||
base.OnThink();
|
||||
}
|
||||
|
||||
public override void OnDelete()
|
||||
{
|
||||
if ( m_Target != null )
|
||||
m_Table.Remove( m_Target );
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
Effects.SendLocationEffect(Location, Map, 0x376A, 10, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
base.OnDelete();
|
||||
}
|
||||
public override void OnDelete()
|
||||
{
|
||||
if (m_Target != null)
|
||||
m_Table.Remove(m_Target);
|
||||
|
||||
public KhaldunRevenant( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
base.OnDelete();
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
int version = reader.ReadInt();
|
||||
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,139 +2,139 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class KhaldunSummoner : BaseCreature
|
||||
{
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
public class KhaldunSummoner : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public KhaldunSummoner() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x190;
|
||||
Title = "the Summoner";
|
||||
|
||||
public override string DefaultName => "Zealot of Khaldun";
|
||||
SetStr(351, 400);
|
||||
SetDex(101, 150);
|
||||
SetInt(502, 700);
|
||||
|
||||
[Constructible]
|
||||
public KhaldunSummoner():base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x190;
|
||||
Title = "the Summoner";
|
||||
SetHits(421, 480);
|
||||
|
||||
SetStr( 351, 400 );
|
||||
SetDex( 101, 150 );
|
||||
SetInt( 502, 700 );
|
||||
SetDamage(5, 15);
|
||||
|
||||
SetHits( 421, 480 );
|
||||
SetDamageType(ResistanceType.Physical, 75);
|
||||
SetDamageType(ResistanceType.Cold, 25);
|
||||
|
||||
SetDamage( 5, 15 );
|
||||
SetResistance(ResistanceType.Physical, 35, 40);
|
||||
SetResistance(ResistanceType.Fire, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 25, 35);
|
||||
SetResistance(ResistanceType.Energy, 25, 35);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 75 );
|
||||
SetDamageType( ResistanceType.Cold, 25 );
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 90.1, 100.0);
|
||||
SetSkill(SkillName.EvalInt, 100.0);
|
||||
SetSkill(SkillName.Meditation, 120.1, 130.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 25, 35 );
|
||||
VirtualArmor = 36;
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.EvalInt, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 120.1, 130.0 );
|
||||
LeatherGloves gloves = new LeatherGloves();
|
||||
gloves.Hue = 0x66D;
|
||||
AddItem(gloves);
|
||||
|
||||
VirtualArmor = 36;
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
BoneHelm helm = new BoneHelm();
|
||||
helm.Hue = 0x835;
|
||||
AddItem(helm);
|
||||
|
||||
LeatherGloves gloves = new LeatherGloves();
|
||||
gloves.Hue = 0x66D;
|
||||
AddItem( gloves );
|
||||
Necklace necklace = new Necklace();
|
||||
necklace.Hue = 0x66D;
|
||||
AddItem(necklace);
|
||||
|
||||
BoneHelm helm = new BoneHelm();
|
||||
helm.Hue = 0x835;
|
||||
AddItem( helm );
|
||||
Cloak cloak = new Cloak();
|
||||
cloak.Hue = 0x66D;
|
||||
AddItem(cloak);
|
||||
|
||||
Necklace necklace = new Necklace();
|
||||
necklace.Hue = 0x66D;
|
||||
AddItem( necklace );
|
||||
Kilt kilt = new Kilt();
|
||||
kilt.Hue = 0x66D;
|
||||
AddItem(kilt);
|
||||
|
||||
Cloak cloak = new Cloak();
|
||||
cloak.Hue = 0x66D;
|
||||
AddItem( cloak );
|
||||
Sandals sandals = new Sandals();
|
||||
sandals.Hue = 0x66D;
|
||||
AddItem(sandals);
|
||||
}
|
||||
|
||||
Kilt kilt = new Kilt();
|
||||
kilt.Hue = 0x66D;
|
||||
AddItem( kilt );
|
||||
public KhaldunSummoner(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
Sandals sandals = new Sandals();
|
||||
sandals.Hue = 0x66D;
|
||||
AddItem( sandals );
|
||||
}
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x184;
|
||||
}
|
||||
public override string DefaultName => "Zealot of Khaldun";
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x286;
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool Unprovokable => true;
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x288;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x184;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x19F;
|
||||
}
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x286;
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool Unprovokable => true;
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x288;
|
||||
}
|
||||
|
||||
public KhaldunSummoner( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x19F;
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
BoneMagi rm = new BoneMagi();
|
||||
rm.Team = Team;
|
||||
rm.Combatant = Combatant;
|
||||
rm.NoKillAwards = true;
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
BoneMagi rm = new BoneMagi();
|
||||
rm.Team = Team;
|
||||
rm.Combatant = Combatant;
|
||||
rm.NoKillAwards = true;
|
||||
|
||||
if ( rm.Backpack == null )
|
||||
{
|
||||
Backpack pack = new Backpack();
|
||||
pack.Movable = false;
|
||||
rm.AddItem( pack );
|
||||
}
|
||||
if (rm.Backpack == null)
|
||||
{
|
||||
Backpack pack = new Backpack();
|
||||
pack.Movable = false;
|
||||
rm.AddItem(pack);
|
||||
}
|
||||
|
||||
for ( int i = 0; i < 2; i++ )
|
||||
{
|
||||
LootPack.FilthyRich.Generate( this, rm.Backpack, true, LootPack.GetLuckChanceForKiller( this ) );
|
||||
LootPack.FilthyRich.Generate( this, rm.Backpack, false, LootPack.GetLuckChanceForKiller( this ) );
|
||||
}
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
LootPack.FilthyRich.Generate(this, rm.Backpack, true, LootPack.GetLuckChanceForKiller(this));
|
||||
LootPack.FilthyRich.Generate(this, rm.Backpack, false, LootPack.GetLuckChanceForKiller(this));
|
||||
}
|
||||
|
||||
Effects.PlaySound(this, Map, GetDeathSound());
|
||||
Effects.SendLocationEffect( Location, Map, 0x3709, 30, 10, 0x835, 0 );
|
||||
rm.MoveToWorld( Location, Map );
|
||||
Effects.PlaySound(this, Map, GetDeathSound());
|
||||
Effects.SendLocationEffect(Location, Map, 0x3709, 30, 10, 0x835, 0);
|
||||
rm.MoveToWorld(Location, Map);
|
||||
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,148 +2,148 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class KhaldunZealot : BaseCreature
|
||||
{
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
public class KhaldunZealot : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public KhaldunZealot() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x190;
|
||||
Title = "the Knight";
|
||||
Hue = 0;
|
||||
|
||||
public override string DefaultName => "Zealot of Khaldun";
|
||||
SetStr(351, 400);
|
||||
SetDex(151, 165);
|
||||
SetInt(76, 100);
|
||||
|
||||
[Constructible]
|
||||
public KhaldunZealot(): base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x190;
|
||||
Title = "the Knight";
|
||||
Hue = 0;
|
||||
SetHits(448, 470);
|
||||
|
||||
SetStr( 351, 400 );
|
||||
SetDex( 151, 165 );
|
||||
SetInt( 76, 100 );
|
||||
SetDamage(15, 25);
|
||||
|
||||
SetHits( 448, 470 );
|
||||
SetDamageType(ResistanceType.Physical, 75);
|
||||
SetDamageType(ResistanceType.Cold, 25);
|
||||
|
||||
SetDamage( 15, 25 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 25, 35);
|
||||
SetResistance(ResistanceType.Energy, 25, 35);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 75 );
|
||||
SetDamageType( ResistanceType.Cold, 25 );
|
||||
SetSkill(SkillName.Wrestling, 70.1, 80.0);
|
||||
SetSkill(SkillName.Swords, 120.1, 130.0);
|
||||
SetSkill(SkillName.Anatomy, 120.1, 130.0);
|
||||
SetSkill(SkillName.MagicResist, 90.1, 100.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 25, 35 );
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
VirtualArmor = 40;
|
||||
|
||||
SetSkill( SkillName.Wrestling, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Swords, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Anatomy, 120.1, 130.0 );
|
||||
SetSkill( SkillName.MagicResist, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
VikingSword weapon = new VikingSword();
|
||||
weapon.Hue = 0x835;
|
||||
weapon.Movable = false;
|
||||
AddItem(weapon);
|
||||
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
VirtualArmor = 40;
|
||||
MetalShield shield = new MetalShield();
|
||||
shield.Hue = 0x835;
|
||||
shield.Movable = false;
|
||||
AddItem(shield);
|
||||
|
||||
VikingSword weapon = new VikingSword();
|
||||
weapon.Hue = 0x835;
|
||||
weapon.Movable = false;
|
||||
AddItem( weapon );
|
||||
BoneHelm helm = new BoneHelm();
|
||||
helm.Hue = 0x835;
|
||||
AddItem(helm);
|
||||
|
||||
MetalShield shield = new MetalShield();
|
||||
shield.Hue = 0x835;
|
||||
shield.Movable = false;
|
||||
AddItem( shield );
|
||||
BoneArms arms = new BoneArms();
|
||||
arms.Hue = 0x835;
|
||||
AddItem(arms);
|
||||
|
||||
BoneHelm helm = new BoneHelm();
|
||||
helm.Hue = 0x835;
|
||||
AddItem( helm );
|
||||
BoneGloves gloves = new BoneGloves();
|
||||
gloves.Hue = 0x835;
|
||||
AddItem(gloves);
|
||||
|
||||
BoneArms arms = new BoneArms();
|
||||
arms.Hue = 0x835;
|
||||
AddItem( arms );
|
||||
BoneChest tunic = new BoneChest();
|
||||
tunic.Hue = 0x835;
|
||||
AddItem(tunic);
|
||||
|
||||
BoneGloves gloves = new BoneGloves();
|
||||
gloves.Hue = 0x835;
|
||||
AddItem( gloves );
|
||||
BoneLegs legs = new BoneLegs();
|
||||
legs.Hue = 0x835;
|
||||
AddItem(legs);
|
||||
|
||||
BoneChest tunic = new BoneChest();
|
||||
tunic.Hue = 0x835;
|
||||
AddItem( tunic );
|
||||
AddItem(new Boots());
|
||||
}
|
||||
|
||||
BoneLegs legs = new BoneLegs();
|
||||
legs.Hue = 0x835;
|
||||
AddItem( legs );
|
||||
public KhaldunZealot(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
AddItem( new Boots() );
|
||||
}
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x184;
|
||||
}
|
||||
public override string DefaultName => "Zealot of Khaldun";
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x286;
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool Unprovokable => true;
|
||||
public override Poison PoisonImmune => Poison.Deadly;
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x288;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x184;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x19F;
|
||||
}
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x286;
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool Unprovokable => true;
|
||||
public override Poison PoisonImmune => Poison.Deadly;
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x288;
|
||||
}
|
||||
|
||||
public KhaldunZealot( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x19F;
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
BoneKnight rm = new BoneKnight();
|
||||
rm.Team = Team;
|
||||
rm.Combatant = Combatant;
|
||||
rm.NoKillAwards = true;
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
BoneKnight rm = new BoneKnight();
|
||||
rm.Team = Team;
|
||||
rm.Combatant = Combatant;
|
||||
rm.NoKillAwards = true;
|
||||
|
||||
if ( rm.Backpack == null )
|
||||
{
|
||||
Backpack pack = new Backpack();
|
||||
pack.Movable = false;
|
||||
rm.AddItem( pack );
|
||||
}
|
||||
if (rm.Backpack == null)
|
||||
{
|
||||
Backpack pack = new Backpack();
|
||||
pack.Movable = false;
|
||||
rm.AddItem(pack);
|
||||
}
|
||||
|
||||
for ( int i = 0; i < 2; i++ )
|
||||
{
|
||||
LootPack.FilthyRich.Generate( this, rm.Backpack, true, LootPack.GetLuckChanceForKiller( this ) );
|
||||
LootPack.FilthyRich.Generate( this, rm.Backpack, false, LootPack.GetLuckChanceForKiller( this ) );
|
||||
}
|
||||
for (int i = 0; i < 2; i++)
|
||||
{
|
||||
LootPack.FilthyRich.Generate(this, rm.Backpack, true, LootPack.GetLuckChanceForKiller(this));
|
||||
LootPack.FilthyRich.Generate(this, rm.Backpack, false, LootPack.GetLuckChanceForKiller(this));
|
||||
}
|
||||
|
||||
Effects.PlaySound(this, Map, GetDeathSound());
|
||||
Effects.SendLocationEffect( Location, Map, 0x3709, 30, 10, 0x835, 0 );
|
||||
rm.MoveToWorld( Location, Map );
|
||||
Effects.PlaySound(this, Map, GetDeathSound());
|
||||
Effects.SendLocationEffect(Location, Map, 0x3709, 30, 10, 0x835, 0);
|
||||
rm.MoveToWorld(Location, Map);
|
||||
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
Delete();
|
||||
return false;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
|
||||
writer.Write( (int) 0 ); // version
|
||||
}
|
||||
writer.Write(0); // version
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,64 +2,68 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Moloch : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a moloch corpse";
|
||||
public override WeaponAbility GetWeaponAbility() => WeaponAbility.ConcussionBlow;
|
||||
public class Moloch : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Moloch() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x311;
|
||||
BaseSoundID = 0x300;
|
||||
|
||||
public override string DefaultName => "a moloch";
|
||||
SetStr(331, 360);
|
||||
SetDex(66, 85);
|
||||
SetInt(41, 65);
|
||||
|
||||
[Constructible]
|
||||
public Moloch() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x311;
|
||||
BaseSoundID = 0x300;
|
||||
SetHits(171, 200);
|
||||
|
||||
SetStr( 331, 360 );
|
||||
SetDex( 66, 85 );
|
||||
SetInt( 41, 65 );
|
||||
SetDamage(15, 23);
|
||||
|
||||
SetHits( 171, 200 );
|
||||
SetResistance(ResistanceType.Physical, 60, 70);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetDamage( 15, 23 );
|
||||
SetSkill(SkillName.MagicResist, 65.1, 75.0);
|
||||
SetSkill(SkillName.Tactics, 75.1, 90.0);
|
||||
SetSkill(SkillName.Wrestling, 70.1, 90.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 60, 70 );
|
||||
SetResistance( ResistanceType.Fire, 60, 70 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
Fame = 7500;
|
||||
Karma = -7500;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 90.0 );
|
||||
VirtualArmor = 32;
|
||||
}
|
||||
|
||||
Fame = 7500;
|
||||
Karma = -7500;
|
||||
public Moloch(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
VirtualArmor = 32;
|
||||
}
|
||||
public override string CorpseName => "a moloch corpse";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
public override string DefaultName => "a moloch";
|
||||
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
|
||||
public Moloch( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.ConcussionBlow;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,67 +1,67 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Mongbat : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a mongbat corpse";
|
||||
public override string DefaultName => "a mongbat";
|
||||
public class Mongbat : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Mongbat() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 39;
|
||||
BaseSoundID = 422;
|
||||
|
||||
[Constructible]
|
||||
public Mongbat() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 39;
|
||||
BaseSoundID = 422;
|
||||
SetStr(6, 10);
|
||||
SetDex(26, 38);
|
||||
SetInt(6, 14);
|
||||
|
||||
SetStr( 6, 10 );
|
||||
SetDex( 26, 38 );
|
||||
SetInt( 6, 14 );
|
||||
SetHits(4, 6);
|
||||
SetMana(0);
|
||||
|
||||
SetHits( 4, 6 );
|
||||
SetMana( 0 );
|
||||
SetDamage(1, 2);
|
||||
|
||||
SetDamage( 1, 2 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 5, 10);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 5, 10 );
|
||||
SetSkill(SkillName.MagicResist, 5.1, 14.0);
|
||||
SetSkill(SkillName.Tactics, 5.1, 10.0);
|
||||
SetSkill(SkillName.Wrestling, 5.1, 10.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 5.1, 14.0 );
|
||||
SetSkill( SkillName.Tactics, 5.1, 10.0 );
|
||||
SetSkill( SkillName.Wrestling, 5.1, 10.0 );
|
||||
Fame = 150;
|
||||
Karma = -150;
|
||||
|
||||
Fame = 150;
|
||||
Karma = -150;
|
||||
VirtualArmor = 10;
|
||||
|
||||
VirtualArmor = 10;
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = -18.9;
|
||||
}
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = -18.9;
|
||||
}
|
||||
public Mongbat(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanFly => true;
|
||||
public override string CorpseName => "a mongbat corpse";
|
||||
public override string DefaultName => "a mongbat";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
public override bool CanFly => true;
|
||||
|
||||
public override int Meat => 1;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
public override int Meat => 1;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
|
||||
public Mongbat( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,77 +1,78 @@
|
|||
using Server.Engines.Plants;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Mummy : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a mummy corpse";
|
||||
public override string DefaultName => "a mummy";
|
||||
public class Mummy : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Mummy() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8)
|
||||
{
|
||||
Body = 154;
|
||||
BaseSoundID = 471;
|
||||
|
||||
[Constructible]
|
||||
public Mummy() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8 )
|
||||
{
|
||||
Body = 154;
|
||||
BaseSoundID = 471;
|
||||
SetStr(346, 370);
|
||||
SetDex(71, 90);
|
||||
SetInt(26, 40);
|
||||
|
||||
SetStr( 346, 370 );
|
||||
SetDex( 71, 90 );
|
||||
SetInt( 26, 40 );
|
||||
SetHits(208, 222);
|
||||
|
||||
SetHits( 208, 222 );
|
||||
SetDamage(13, 23);
|
||||
|
||||
SetDamage( 13, 23 );
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
SetSkill(SkillName.MagicResist, 15.1, 40.0);
|
||||
SetSkill(SkillName.Tactics, 35.1, 50.0);
|
||||
SetSkill(SkillName.Wrestling, 35.1, 50.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 50;
|
||||
|
||||
VirtualArmor = 50;
|
||||
if (Core.ML && Utility.RandomDouble() < .33)
|
||||
PackItem(Seed.RandomPeculiarSeed(2));
|
||||
|
||||
if ( Core.ML && Utility.RandomDouble() < .33 )
|
||||
PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
|
||||
PackItem(new Garlic(5));
|
||||
PackItem(new Bandage(10));
|
||||
}
|
||||
|
||||
PackItem( new Garlic( 5 ) );
|
||||
PackItem( new Bandage( 10 ) );
|
||||
}
|
||||
public Mummy(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "a mummy corpse";
|
||||
public override string DefaultName => "a mummy";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lesser;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lesser;
|
||||
|
||||
public Mummy( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.Gems);
|
||||
AddLoot(LootPack.Potions);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,70 +2,70 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Ogre : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an ogre corpse";
|
||||
public override string DefaultName => "an ogre";
|
||||
public class Ogre : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Ogre() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 1;
|
||||
BaseSoundID = 427;
|
||||
|
||||
[Constructible]
|
||||
public Ogre () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 1;
|
||||
BaseSoundID = 427;
|
||||
SetStr(166, 195);
|
||||
SetDex(46, 65);
|
||||
SetInt(46, 70);
|
||||
|
||||
SetStr( 166, 195 );
|
||||
SetDex( 46, 65 );
|
||||
SetInt( 46, 70 );
|
||||
SetHits(100, 117);
|
||||
SetMana(0);
|
||||
|
||||
SetHits( 100, 117 );
|
||||
SetMana( 0 );
|
||||
SetDamage(9, 11);
|
||||
|
||||
SetDamage( 9, 11 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 30, 35);
|
||||
SetResistance(ResistanceType.Fire, 15, 25);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 15, 25);
|
||||
SetResistance(ResistanceType.Energy, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 35 );
|
||||
SetResistance( ResistanceType.Fire, 15, 25 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 25 );
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 60.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 70.1, 80.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 70.1, 80.0 );
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
VirtualArmor = 32;
|
||||
|
||||
VirtualArmor = 32;
|
||||
PackItem(new Club());
|
||||
}
|
||||
|
||||
PackItem( new Club() );
|
||||
}
|
||||
public Ogre(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "an ogre corpse";
|
||||
public override string DefaultName => "an ogre";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 2;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 2;
|
||||
|
||||
public Ogre( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Potions);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,74 +1,75 @@
|
|||
using Server.Items;
|
||||
using Server.Ethics;
|
||||
using Server.Factions;
|
||||
using Server.Items;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class OgreLord : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an ogre lords corpse";
|
||||
public override Faction FactionAllegiance => Minax.Instance;
|
||||
public override Ethics.Ethic EthicAllegiance => Ethics.Ethic.Evil;
|
||||
public class OgreLord : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public OgreLord() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 83;
|
||||
BaseSoundID = 427;
|
||||
|
||||
public override string DefaultName => "an ogre lord";
|
||||
SetStr(767, 945);
|
||||
SetDex(66, 75);
|
||||
SetInt(46, 70);
|
||||
|
||||
[Constructible]
|
||||
public OgreLord () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 83;
|
||||
BaseSoundID = 427;
|
||||
SetHits(476, 552);
|
||||
|
||||
SetStr( 767, 945 );
|
||||
SetDex( 66, 75 );
|
||||
SetInt( 46, 70 );
|
||||
SetDamage(20, 25);
|
||||
|
||||
SetHits( 476, 552 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamage( 20, 25 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 30, 40);
|
||||
SetResistance(ResistanceType.Poison, 40, 50);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetSkill(SkillName.MagicResist, 125.1, 140.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 40, 50 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 125.1, 140.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
VirtualArmor = 50;
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
PackItem(new Club());
|
||||
}
|
||||
|
||||
VirtualArmor = 50;
|
||||
public OgreLord(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
PackItem( new Club() );
|
||||
}
|
||||
public override string CorpseName => "an ogre lords corpse";
|
||||
public override Faction FactionAllegiance => Minax.Instance;
|
||||
public override Ethic EthicAllegiance => Ethic.Evil;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich, 2 );
|
||||
}
|
||||
public override string DefaultName => "an ogre lord";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 3;
|
||||
public override int Meat => 2;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 3;
|
||||
public override int Meat => 2;
|
||||
|
||||
public OgreLord( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich, 2);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,114 +3,132 @@ using Server.Misc;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Orc : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
public class Orc : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Orc() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("orc");
|
||||
Body = 17;
|
||||
BaseSoundID = 0x45A;
|
||||
|
||||
[Constructible]
|
||||
public Orc() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "orc" );
|
||||
Body = 17;
|
||||
BaseSoundID = 0x45A;
|
||||
SetStr(96, 120);
|
||||
SetDex(81, 105);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 96, 120 );
|
||||
SetDex( 81, 105 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(58, 72);
|
||||
|
||||
SetHits( 58, 72 );
|
||||
SetDamage(5, 7);
|
||||
|
||||
SetDamage( 5, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 25, 30);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 10, 20);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
SetSkill(SkillName.MagicResist, 50.1, 75.0);
|
||||
SetSkill(SkillName.Tactics, 55.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 70.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 55.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 70.0 );
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
VirtualArmor = 28;
|
||||
|
||||
VirtualArmor = 28;
|
||||
switch (Utility.Random(20))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Scimitar());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Katana());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new WarMace());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new WarHammer());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Kryss());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new Pitchfork());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 20 ) )
|
||||
{
|
||||
case 0: PackItem( new Scimitar() ); break;
|
||||
case 1: PackItem( new Katana() ); break;
|
||||
case 2: PackItem( new WarMace() ); break;
|
||||
case 3: PackItem( new WarHammer() ); break;
|
||||
case 4: PackItem( new Kryss() ); break;
|
||||
case 5: PackItem( new Pitchfork() ); break;
|
||||
}
|
||||
PackItem(new ThighBoots());
|
||||
|
||||
PackItem( new ThighBoots() );
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Ribs());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Shaft());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Candle());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 3 ) )
|
||||
{
|
||||
case 0: PackItem( new Ribs() ); break;
|
||||
case 1: PackItem( new Shaft() ); break;
|
||||
case 2: PackItem( new Candle() ); break;
|
||||
}
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new BolaBall());
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new BolaBall() );
|
||||
}
|
||||
public Orc(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
|
||||
return false;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.Player && m.FindItemOnLayer(Layer.Helm) is OrcishKinMask)
|
||||
return false;
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
Item item = aggressor.FindItemOnLayer( Layer.Helm );
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
if ( item is OrcishKinMask )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
item.Delete();
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
}
|
||||
}
|
||||
Item item = aggressor.FindItemOnLayer(Layer.Helm);
|
||||
|
||||
public Orc( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (item is OrcishKinMask)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
item.Delete();
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,153 +4,154 @@ using Server.Misc;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class OrcBomber : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
public class OrcBomber : BaseCreature
|
||||
{
|
||||
private DateTime m_NextBomb;
|
||||
private int m_Thrown;
|
||||
|
||||
public override string DefaultName => "an orc bomber";
|
||||
[Constructible]
|
||||
public OrcBomber() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 182;
|
||||
BaseSoundID = 0x45A;
|
||||
|
||||
[Constructible]
|
||||
public OrcBomber() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 182;
|
||||
BaseSoundID = 0x45A;
|
||||
SetStr(147, 215);
|
||||
SetDex(91, 115);
|
||||
SetInt(61, 85);
|
||||
|
||||
SetStr( 147, 215 );
|
||||
SetDex( 91, 115 );
|
||||
SetInt( 61, 85 );
|
||||
SetHits(95, 123);
|
||||
|
||||
SetHits( 95, 123 );
|
||||
SetDamage(1, 8);
|
||||
|
||||
SetDamage( 1, 8 );
|
||||
SetDamageType(ResistanceType.Physical, 75);
|
||||
SetDamageType(ResistanceType.Fire, 25);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 75 );
|
||||
SetDamageType( ResistanceType.Fire, 25 );
|
||||
SetResistance(ResistanceType.Physical, 25, 35);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 15, 20);
|
||||
SetResistance(ResistanceType.Energy, 25, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 35 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 15, 20 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
SetSkill(SkillName.MagicResist, 70.1, 85.0);
|
||||
SetSkill(SkillName.Swords, 60.1, 85.0);
|
||||
SetSkill(SkillName.Tactics, 75.1, 90.0);
|
||||
SetSkill(SkillName.Wrestling, 60.1, 85.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Swords, 60.1, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 85.0 );
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
VirtualArmor = 30;
|
||||
|
||||
VirtualArmor = 30;
|
||||
PackItem(new SulfurousAsh(Utility.RandomMinMax(6, 10)));
|
||||
PackItem(new MandrakeRoot(Utility.RandomMinMax(6, 10)));
|
||||
PackItem(new BlackPearl(Utility.RandomMinMax(6, 10)));
|
||||
PackItem(new MortarPestle());
|
||||
PackItem(new LesserExplosionPotion());
|
||||
|
||||
PackItem( new SulfurousAsh( Utility.RandomMinMax( 6, 10 ) ) );
|
||||
PackItem( new MandrakeRoot( Utility.RandomMinMax( 6, 10 ) ) );
|
||||
PackItem( new BlackPearl( Utility.RandomMinMax( 6, 10 ) ) );
|
||||
PackItem( new MortarPestle() );
|
||||
PackItem( new LesserExplosionPotion() );
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new BolaBall());
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new BolaBall() );
|
||||
}
|
||||
public OrcBomber(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override string DefaultName => "an orc bomber";
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override bool CanRummageCorpses => true;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
|
||||
return false;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.Player && m.FindItemOnLayer(Layer.Helm) is OrcishKinMask)
|
||||
return false;
|
||||
|
||||
Item item = aggressor.FindItemOnLayer( Layer.Helm );
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
if ( item is OrcishKinMask )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
item.Delete();
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
}
|
||||
}
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
private DateTime m_NextBomb;
|
||||
private int m_Thrown;
|
||||
Item item = aggressor.FindItemOnLayer(Layer.Helm);
|
||||
|
||||
public override void OnActionCombat()
|
||||
{
|
||||
Mobile combatant = Combatant;
|
||||
if (item is OrcishKinMask)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
item.Delete();
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
}
|
||||
}
|
||||
|
||||
if ( combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 12 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
|
||||
return;
|
||||
public override void OnActionCombat()
|
||||
{
|
||||
Mobile combatant = Combatant;
|
||||
|
||||
if ( DateTime.UtcNow >= m_NextBomb )
|
||||
{
|
||||
ThrowBomb( combatant );
|
||||
if (combatant == null || combatant.Deleted || combatant.Map != Map || !InRange(combatant, 12) ||
|
||||
!CanBeHarmful(combatant) || !InLOS(combatant))
|
||||
return;
|
||||
|
||||
m_Thrown++;
|
||||
if (DateTime.UtcNow >= m_NextBomb)
|
||||
{
|
||||
ThrowBomb(combatant);
|
||||
|
||||
if ( 0.75 >= Utility.RandomDouble() && (m_Thrown % 2) == 1 ) // 75% chance to quickly throw another bomb
|
||||
m_NextBomb = DateTime.UtcNow + TimeSpan.FromSeconds( 3.0 );
|
||||
else
|
||||
m_NextBomb = DateTime.UtcNow + TimeSpan.FromSeconds( 5.0 + (10.0 * Utility.RandomDouble()) ); // 5-15 seconds
|
||||
}
|
||||
}
|
||||
m_Thrown++;
|
||||
|
||||
public void ThrowBomb( Mobile m )
|
||||
{
|
||||
DoHarmful( m );
|
||||
if (0.75 >= Utility.RandomDouble() && m_Thrown % 2 == 1) // 75% chance to quickly throw another bomb
|
||||
m_NextBomb = DateTime.UtcNow + TimeSpan.FromSeconds(3.0);
|
||||
else
|
||||
m_NextBomb = DateTime.UtcNow + TimeSpan.FromSeconds(5.0 + 10.0 * Utility.RandomDouble()); // 5-15 seconds
|
||||
}
|
||||
}
|
||||
|
||||
MovingParticles( m, 0x1C19, 1, 0, false, true, 0, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0 );
|
||||
public void ThrowBomb(Mobile m)
|
||||
{
|
||||
DoHarmful(m);
|
||||
|
||||
new InternalTimer( m, this ).Start();
|
||||
}
|
||||
MovingParticles(m, 0x1C19, 1, 0, false, true, 0, 0, 9502, 6014, 0x11D, EffectLayer.Waist, 0);
|
||||
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private Mobile m_Mobile, m_From;
|
||||
new InternalTimer(m, this).Start();
|
||||
}
|
||||
|
||||
public InternalTimer( Mobile m, Mobile from ) : base( TimeSpan.FromSeconds( 1.0 ) )
|
||||
{
|
||||
m_Mobile = m;
|
||||
m_From = from;
|
||||
Priority = TimerPriority.TwoFiftyMS;
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_Mobile.PlaySound( 0x11D );
|
||||
AOS.Damage( m_Mobile, m_From, Utility.RandomMinMax( 10, 20 ), 0, 100, 0, 0, 0 );
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
|
||||
public OrcBomber( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
private class InternalTimer : Timer
|
||||
{
|
||||
private Mobile m_Mobile, m_From;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public InternalTimer(Mobile m, Mobile from) : base(TimeSpan.FromSeconds(1.0))
|
||||
{
|
||||
m_Mobile = m;
|
||||
m_From = from;
|
||||
Priority = TimerPriority.TwoFiftyMS;
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
protected override void OnTick()
|
||||
{
|
||||
m_Mobile.PlaySound(0x11D);
|
||||
AOS.Damage(m_Mobile, m_From, Utility.RandomMinMax(10, 20), 0, 100, 0, 0, 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,157 +2,155 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class OrcBrute : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override string DefaultName => "an orc brute";
|
||||
public class OrcBrute : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public OrcBrute() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 189;
|
||||
BaseSoundID = 0x45A;
|
||||
|
||||
[Constructible]
|
||||
public OrcBrute() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 189;
|
||||
BaseSoundID = 0x45A;
|
||||
SetStr(767, 945);
|
||||
SetDex(66, 75);
|
||||
SetInt(46, 70);
|
||||
|
||||
SetStr( 767, 945 );
|
||||
SetDex( 66, 75 );
|
||||
SetInt( 46, 70 );
|
||||
SetHits(476, 552);
|
||||
|
||||
SetHits( 476, 552 );
|
||||
SetDamage(20, 25);
|
||||
|
||||
SetDamage( 20, 25 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Fire, 40, 50);
|
||||
SetResistance(ResistanceType.Cold, 25, 35);
|
||||
SetResistance(ResistanceType.Poison, 25, 35);
|
||||
SetResistance(ResistanceType.Energy, 25, 35);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 40, 50 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 25, 35 );
|
||||
SetSkill(SkillName.Macing, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 125.1, 140.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.Macing, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 125.1, 140.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
VirtualArmor = 50;
|
||||
|
||||
VirtualArmor = 50;
|
||||
Item ore = new ShadowIronOre(25);
|
||||
ore.ItemID = 0x19B9;
|
||||
PackItem(ore);
|
||||
PackItem(new IronIngot(10));
|
||||
|
||||
Item ore = new ShadowIronOre( 25 );
|
||||
ore.ItemID = 0x19B9;
|
||||
PackItem( ore );
|
||||
PackItem( new IronIngot( 10 ) );
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
PackItem(new OrcishKinMask());
|
||||
|
||||
if ( 0.05 > Utility.RandomDouble() )
|
||||
PackItem( new OrcishKinMask() );
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new BolaBall());
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new BolaBall() );
|
||||
}
|
||||
public OrcBrute(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override string DefaultName => "an orc brute";
|
||||
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int Meat => 2;
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int Meat => 2;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
|
||||
return false;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool AutoDispel => true;
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Rich);
|
||||
}
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.Player && m.FindItemOnLayer(Layer.Helm) is OrcishKinMask)
|
||||
return false;
|
||||
|
||||
Item item = aggressor.FindItemOnLayer( Layer.Helm );
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
if ( item is OrcishKinMask )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
item.Delete();
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
}
|
||||
}
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool AutoDispel => true;
|
||||
Item item = aggressor.FindItemOnLayer(Layer.Helm);
|
||||
|
||||
public override void OnDamagedBySpell( Mobile caster )
|
||||
{
|
||||
if ( caster == this )
|
||||
return;
|
||||
if (item is OrcishKinMask)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
item.Delete();
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
}
|
||||
}
|
||||
|
||||
SpawnOrcLord( caster );
|
||||
}
|
||||
public override void OnDamagedBySpell(Mobile caster)
|
||||
{
|
||||
if (caster == this)
|
||||
return;
|
||||
|
||||
public void SpawnOrcLord( Mobile target )
|
||||
{
|
||||
Map map = target.Map;
|
||||
SpawnOrcLord(caster);
|
||||
}
|
||||
|
||||
if ( map == null )
|
||||
return;
|
||||
public void SpawnOrcLord(Mobile target)
|
||||
{
|
||||
Map map = target.Map;
|
||||
|
||||
int orcs = 0;
|
||||
if (map == null)
|
||||
return;
|
||||
|
||||
foreach ( Mobile m in GetMobilesInRange( 10 ) )
|
||||
{
|
||||
if ( m is OrcishLord )
|
||||
++orcs;
|
||||
}
|
||||
int orcs = 0;
|
||||
|
||||
if ( orcs < 10 )
|
||||
{
|
||||
BaseCreature orc = new SpawnedOrcishLord();
|
||||
foreach (Mobile m in GetMobilesInRange(10))
|
||||
if (m is OrcishLord)
|
||||
++orcs;
|
||||
|
||||
orc.Team = Team;
|
||||
if (orcs < 10)
|
||||
{
|
||||
BaseCreature orc = new SpawnedOrcishLord();
|
||||
|
||||
Point3D loc = target.Location;
|
||||
bool validLocation = false;
|
||||
orc.Team = Team;
|
||||
|
||||
for ( int j = 0; !validLocation && j < 10; ++j )
|
||||
{
|
||||
int x = target.X + Utility.Random( 3 ) - 1;
|
||||
int y = target.Y + Utility.Random( 3 ) - 1;
|
||||
int z = map.GetAverageZ( x, y );
|
||||
Point3D loc = target.Location;
|
||||
bool validLocation = false;
|
||||
|
||||
if ( validLocation = map.CanFit( x, y, Z, 16, false, false ) )
|
||||
loc = new Point3D( x, y, Z );
|
||||
else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) )
|
||||
loc = new Point3D( x, y, z );
|
||||
}
|
||||
for (int j = 0; !validLocation && j < 10; ++j)
|
||||
{
|
||||
int x = target.X + Utility.Random(3) - 1;
|
||||
int y = target.Y + Utility.Random(3) - 1;
|
||||
int z = map.GetAverageZ(x, y);
|
||||
|
||||
orc.MoveToWorld( loc, map );
|
||||
if (validLocation = map.CanFit(x, y, Z, 16, false, false))
|
||||
loc = new Point3D(x, y, Z);
|
||||
else if (validLocation = map.CanFit(x, y, z, 16, false, false))
|
||||
loc = new Point3D(x, y, z);
|
||||
}
|
||||
|
||||
orc.Combatant = target;
|
||||
}
|
||||
}
|
||||
orc.MoveToWorld(loc, map);
|
||||
|
||||
public OrcBrute( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
orc.Combatant = target;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,117 +1,131 @@
|
|||
using Server.Misc;
|
||||
using Server.Items;
|
||||
using Server.Misc;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class OrcCaptain : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
public class OrcCaptain : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public OrcCaptain() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("orc");
|
||||
Body = 7;
|
||||
BaseSoundID = 0x45A;
|
||||
|
||||
[Constructible]
|
||||
public OrcCaptain() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "orc" );
|
||||
Body = 7;
|
||||
BaseSoundID = 0x45A;
|
||||
SetStr(111, 145);
|
||||
SetDex(101, 135);
|
||||
SetInt(86, 110);
|
||||
|
||||
SetStr( 111, 145 );
|
||||
SetDex( 101, 135 );
|
||||
SetInt( 86, 110 );
|
||||
SetHits(67, 87);
|
||||
|
||||
SetHits( 67, 87 );
|
||||
SetDamage(5, 15);
|
||||
|
||||
SetDamage( 5, 15 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 30, 35);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
SetResistance(ResistanceType.Energy, 5, 10);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 35 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 5, 10 );
|
||||
SetSkill(SkillName.MagicResist, 70.1, 85.0);
|
||||
SetSkill(SkillName.Swords, 70.1, 95.0);
|
||||
SetSkill(SkillName.Tactics, 85.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Swords, 70.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 100.0 );
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
VirtualArmor = 34;
|
||||
|
||||
VirtualArmor = 34;
|
||||
// TODO: Skull?
|
||||
switch (Utility.Random(7))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Arrow());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new Lockpick());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Shaft());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Ribs());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Bandage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new BeverageBottle(BeverageType.Wine));
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new Jug(BeverageType.Cider));
|
||||
break;
|
||||
}
|
||||
|
||||
// TODO: Skull?
|
||||
switch ( Utility.Random( 7 ) )
|
||||
{
|
||||
case 0: PackItem( new Arrow() ); break;
|
||||
case 1: PackItem( new Lockpick() ); break;
|
||||
case 2: PackItem( new Shaft() ); break;
|
||||
case 3: PackItem( new Ribs() ); break;
|
||||
case 4: PackItem( new Bandage() ); break;
|
||||
case 5: PackItem( new BeverageBottle( BeverageType.Wine ) ); break;
|
||||
case 6: PackItem( new Jug( BeverageType.Cider ) ); break;
|
||||
}
|
||||
if (Core.AOS)
|
||||
PackItem(Loot.RandomNecromancyReagent());
|
||||
}
|
||||
|
||||
if ( Core.AOS )
|
||||
PackItem( Loot.RandomNecromancyReagent() );
|
||||
}
|
||||
public OrcCaptain(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
|
||||
// TODO: Check drop rate
|
||||
if ( Utility.RandomDouble() < 0.05 )
|
||||
c.DropItem( new StoutWhip() );
|
||||
}
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Meat => 1;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager, 2 );
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Meat => 1;
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
// TODO: Check drop rate
|
||||
if (Utility.RandomDouble() < 0.05)
|
||||
c.DropItem(new StoutWhip());
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
|
||||
return false;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager, 2);
|
||||
}
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.Player && m.FindItemOnLayer(Layer.Helm) is OrcishKinMask)
|
||||
return false;
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
Item item = aggressor.FindItemOnLayer( Layer.Helm );
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
if ( item is OrcishKinMask )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
item.Delete();
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
}
|
||||
}
|
||||
Item item = aggressor.FindItemOnLayer(Layer.Helm);
|
||||
|
||||
public OrcCaptain( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (item is OrcishKinMask)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
item.Delete();
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,113 +1,123 @@
|
|||
using Server.Misc;
|
||||
using Server.Items;
|
||||
using Server.Misc;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class OrcishLord : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
public class OrcishLord : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public OrcishLord() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 138;
|
||||
BaseSoundID = 0x45A;
|
||||
|
||||
public override string DefaultName => "an orcish lord";
|
||||
SetStr(147, 215);
|
||||
SetDex(91, 115);
|
||||
SetInt(61, 85);
|
||||
|
||||
[Constructible]
|
||||
public OrcishLord() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 138;
|
||||
BaseSoundID = 0x45A;
|
||||
SetHits(95, 123);
|
||||
|
||||
SetStr( 147, 215 );
|
||||
SetDex( 91, 115 );
|
||||
SetInt( 61, 85 );
|
||||
SetDamage(4, 14);
|
||||
|
||||
SetHits( 95, 123 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamage( 4, 14 );
|
||||
SetResistance(ResistanceType.Physical, 25, 35);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetSkill(SkillName.MagicResist, 70.1, 85.0);
|
||||
SetSkill(SkillName.Swords, 60.1, 85.0);
|
||||
SetSkill(SkillName.Tactics, 75.1, 90.0);
|
||||
SetSkill(SkillName.Wrestling, 60.1, 85.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 35 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Swords, 60.1, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 75.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 85.0 );
|
||||
switch (Utility.Random(5))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new Lockpick());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new MortarPestle());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Bottle());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new RawRibs());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new Shovel());
|
||||
break;
|
||||
}
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
PackItem(new RingmailChest());
|
||||
|
||||
switch ( Utility.Random( 5 ) )
|
||||
{
|
||||
case 0: PackItem( new Lockpick() ); break;
|
||||
case 1: PackItem( new MortarPestle() ); break;
|
||||
case 2: PackItem( new Bottle() ); break;
|
||||
case 3: PackItem( new RawRibs() ); break;
|
||||
case 4: PackItem( new Shovel() ); break;
|
||||
}
|
||||
if (0.3 > Utility.RandomDouble())
|
||||
PackItem(Loot.RandomPossibleReagent());
|
||||
|
||||
PackItem( new RingmailChest() );
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new BolaBall());
|
||||
}
|
||||
|
||||
if ( 0.3 > Utility.RandomDouble() )
|
||||
PackItem( Loot.RandomPossibleReagent() );
|
||||
public OrcishLord(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new BolaBall() );
|
||||
}
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.Average );
|
||||
// TODO: evil orc helm
|
||||
}
|
||||
public override string DefaultName => "an orcish lord";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
|
||||
return false;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
AddLoot(LootPack.Average);
|
||||
// TODO: evil orc helm
|
||||
}
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.Player && m.FindItemOnLayer(Layer.Helm) is OrcishKinMask)
|
||||
return false;
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
Item item = aggressor.FindItemOnLayer( Layer.Helm );
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
if ( item is OrcishKinMask )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
item.Delete();
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
}
|
||||
}
|
||||
Item item = aggressor.FindItemOnLayer(Layer.Helm);
|
||||
|
||||
public OrcishLord( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (item is OrcishKinMask)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
item.Delete();
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,68 +2,68 @@ using Server.Misc;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Ratman : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ratman's corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Ratman;
|
||||
public class Ratman : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Ratman() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("ratman");
|
||||
Body = 42;
|
||||
BaseSoundID = 437;
|
||||
|
||||
[Constructible]
|
||||
public Ratman() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "ratman" );
|
||||
Body = 42;
|
||||
BaseSoundID = 437;
|
||||
SetStr(96, 120);
|
||||
SetDex(81, 100);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 96, 120 );
|
||||
SetDex( 81, 100 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(58, 72);
|
||||
|
||||
SetHits( 58, 72 );
|
||||
SetDamage(4, 5);
|
||||
|
||||
SetDamage( 4, 5 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 25, 30);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 10, 20);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetSkill(SkillName.MagicResist, 35.1, 60.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 75.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 75.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 35.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 75.0 );
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
|
||||
Fame = 1500;
|
||||
Karma = -1500;
|
||||
VirtualArmor = 28;
|
||||
}
|
||||
|
||||
VirtualArmor = 28;
|
||||
}
|
||||
public Ratman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
// TODO: weapon, misc
|
||||
}
|
||||
public override string CorpseName => "a ratman's corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Ratman;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Hides => 8;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Hides => 8;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
|
||||
public Ratman( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
// TODO: weapon, misc
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,80 +1,80 @@
|
|||
using Server.Misc;
|
||||
using Server.Items;
|
||||
using Server.Misc;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class RatmanArcher : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ratman archer corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Ratman;
|
||||
public class RatmanArcher : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public RatmanArcher() : base(AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("ratman");
|
||||
Body = 0x8E;
|
||||
BaseSoundID = 437;
|
||||
|
||||
[Constructible]
|
||||
public RatmanArcher() : base( AIType.AI_Archer, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "ratman" );
|
||||
Body = 0x8E;
|
||||
BaseSoundID = 437;
|
||||
SetStr(146, 180);
|
||||
SetDex(101, 130);
|
||||
SetInt(116, 140);
|
||||
|
||||
SetStr( 146, 180 );
|
||||
SetDex( 101, 130 );
|
||||
SetInt( 116, 140 );
|
||||
SetHits(88, 108);
|
||||
|
||||
SetHits( 88, 108 );
|
||||
SetDamage(4, 10);
|
||||
|
||||
SetDamage( 4, 10 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 40, 55);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 10, 20);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 55 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetSkill(SkillName.Anatomy, 60.2, 100.0);
|
||||
SetSkill(SkillName.Archery, 80.1, 90.0);
|
||||
SetSkill(SkillName.MagicResist, 65.1, 90.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 75.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 75.0);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 60.2, 100.0 );
|
||||
SetSkill( SkillName.Archery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 75.0 );
|
||||
Fame = 6500;
|
||||
Karma = -6500;
|
||||
|
||||
Fame = 6500;
|
||||
Karma = -6500;
|
||||
VirtualArmor = 56;
|
||||
|
||||
VirtualArmor = 56;
|
||||
AddItem(new Bow());
|
||||
PackItem(new Arrow(Utility.RandomMinMax(50, 70)));
|
||||
}
|
||||
|
||||
AddItem( new Bow() );
|
||||
PackItem( new Arrow( Utility.RandomMinMax( 50, 70 ) ) );
|
||||
}
|
||||
public RatmanArcher(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
public override string CorpseName => "a ratman archer corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Ratman;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Hides => 8;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Hides => 8;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
|
||||
public RatmanArcher( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
if ( Body == 42 )
|
||||
{
|
||||
Body = 0x8E;
|
||||
Hue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Body == 42)
|
||||
{
|
||||
Body = 0x8E;
|
||||
Hue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,115 +1,111 @@
|
|||
using System.Collections.Generic;
|
||||
using Server.ContextMenus;
|
||||
using Server.Engines.Quests;
|
||||
using Server.Engines.Quests.Haven;
|
||||
using Server.ContextMenus;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class RestlessSoul : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a restless soul";
|
||||
public class RestlessSoul : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public RestlessSoul() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8)
|
||||
{
|
||||
Body = 0x3CA;
|
||||
Hue = 0x453;
|
||||
|
||||
[Constructible]
|
||||
public RestlessSoul() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8 )
|
||||
{
|
||||
Body = 0x3CA;
|
||||
Hue = 0x453;
|
||||
SetStr(26, 40);
|
||||
SetDex(26, 40);
|
||||
SetInt(26, 40);
|
||||
|
||||
SetStr( 26, 40 );
|
||||
SetDex( 26, 40 );
|
||||
SetInt( 26, 40 );
|
||||
SetHits(16, 24);
|
||||
|
||||
SetHits( 16, 24 );
|
||||
SetDamage(1, 10);
|
||||
|
||||
SetDamage( 1, 10 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 25);
|
||||
SetResistance(ResistanceType.Fire, 5, 15);
|
||||
SetResistance(ResistanceType.Cold, 25, 40);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 25 );
|
||||
SetResistance( ResistanceType.Fire, 5, 15 );
|
||||
SetResistance( ResistanceType.Cold, 25, 40 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetSkill(SkillName.MagicResist, 20.1, 30.0);
|
||||
SetSkill(SkillName.Swords, 20.1, 30.0);
|
||||
SetSkill(SkillName.Tactics, 20.1, 30.0);
|
||||
SetSkill(SkillName.Wrestling, 20.1, 30.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Swords, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Tactics, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Wrestling, 20.1, 30.0 );
|
||||
Fame = 500;
|
||||
Karma = -500;
|
||||
|
||||
Fame = 500;
|
||||
Karma = -500;
|
||||
VirtualArmor = 6;
|
||||
}
|
||||
|
||||
VirtualArmor = 6;
|
||||
}
|
||||
public RestlessSoul(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a restless soul";
|
||||
|
||||
public override bool AlwaysAttackable => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override bool AlwaysAttackable => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public override void DisplayPaperdollTo(Mobile to)
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
}
|
||||
|
||||
public override void GetContextMenuEntries( Mobile from, List<ContextMenuEntry> list )
|
||||
{
|
||||
base.GetContextMenuEntries( from, list );
|
||||
public override void DisplayPaperdollTo(Mobile to)
|
||||
{
|
||||
}
|
||||
|
||||
for ( int i = 0; i < list.Count; ++i )
|
||||
{
|
||||
if ( list[i] is PaperdollEntry )
|
||||
list.RemoveAt( i-- );
|
||||
}
|
||||
}
|
||||
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
|
||||
{
|
||||
base.GetContextMenuEntries(from, list);
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x107;
|
||||
}
|
||||
for (int i = 0; i < list.Count; ++i)
|
||||
if (list[i] is PaperdollEntry)
|
||||
list.RemoveAt(i--);
|
||||
}
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x1BF;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x107;
|
||||
}
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xFD;
|
||||
}
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x1BF;
|
||||
}
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m is PlayerMobile player && Map == Map.Trammel && X >= 5199 && X <= 5271 && Y >= 1812 && Y <= 1865 ) // Schmendrick's cave
|
||||
{
|
||||
QuestSystem qs = player.Quest;
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0xFD;
|
||||
}
|
||||
|
||||
if ( qs is UzeraanTurmoilQuest && qs.IsObjectiveInProgress( typeof( FindSchmendrickObjective ) ) )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m is PlayerMobile player && Map == Map.Trammel && X >= 5199 && X <= 5271 && Y >= 1812 && Y <= 1865
|
||||
) // Schmendrick's cave
|
||||
{
|
||||
QuestSystem qs = player.Quest;
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
if (qs is UzeraanTurmoilQuest && qs.IsObjectiveInProgress(typeof(FindSchmendrickObjective))) return false;
|
||||
}
|
||||
|
||||
public RestlessSoul( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,73 +1,73 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class RottingCorpse : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a rotting corpse";
|
||||
public override string DefaultName => "a rotting corpse";
|
||||
public class RottingCorpse : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public RottingCorpse() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 155;
|
||||
BaseSoundID = 471;
|
||||
|
||||
[Constructible]
|
||||
public RottingCorpse() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 155;
|
||||
BaseSoundID = 471;
|
||||
SetStr(301, 350);
|
||||
SetDex(75);
|
||||
SetInt(151, 200);
|
||||
|
||||
SetStr( 301, 350 );
|
||||
SetDex( 75 );
|
||||
SetInt( 151, 200 );
|
||||
SetHits(1200);
|
||||
SetStam(150);
|
||||
SetMana(0);
|
||||
|
||||
SetHits( 1200 );
|
||||
SetStam( 150 );
|
||||
SetMana( 0 );
|
||||
SetDamage(8, 10);
|
||||
|
||||
SetDamage( 8, 10 );
|
||||
SetDamageType(ResistanceType.Physical, 0);
|
||||
SetDamageType(ResistanceType.Cold, 50);
|
||||
SetDamageType(ResistanceType.Poison, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 0 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
SetDamageType( ResistanceType.Poison, 50 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 70);
|
||||
SetResistance(ResistanceType.Poison, 40, 50);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 70 );
|
||||
SetResistance( ResistanceType.Poison, 40, 50 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
SetSkill(SkillName.Poisoning, 120.0);
|
||||
SetSkill(SkillName.MagicResist, 250.0);
|
||||
SetSkill(SkillName.Tactics, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.Poisoning, 120.0 );
|
||||
SetSkill( SkillName.MagicResist, 250.0 );
|
||||
SetSkill( SkillName.Tactics, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
Fame = 6000;
|
||||
Karma = -6000;
|
||||
|
||||
Fame = 6000;
|
||||
Karma = -6000;
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
public RottingCorpse(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 2 );
|
||||
}
|
||||
public override string CorpseName => "a rotting corpse";
|
||||
public override string DefaultName => "a rotting corpse";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override Poison HitPoison => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override Poison HitPoison => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public RottingCorpse( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich, 2);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,111 +3,113 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Savage : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a savage corpse";
|
||||
[Constructible]
|
||||
public Savage() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "savage" );
|
||||
public class Savage : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Savage() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("savage");
|
||||
|
||||
if ( Female = Utility.RandomBool() )
|
||||
Body = 184;
|
||||
else
|
||||
Body = 183;
|
||||
if (Female = Utility.RandomBool())
|
||||
Body = 184;
|
||||
else
|
||||
Body = 183;
|
||||
|
||||
SetStr( 96, 115 );
|
||||
SetDex( 86, 105 );
|
||||
SetInt( 51, 65 );
|
||||
SetStr(96, 115);
|
||||
SetDex(86, 105);
|
||||
SetInt(51, 65);
|
||||
|
||||
SetDamage( 23, 27 );
|
||||
SetDamage(23, 27);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetSkill( SkillName.Fencing, 60.0, 82.5 );
|
||||
SetSkill( SkillName.Macing, 60.0, 82.5 );
|
||||
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
|
||||
SetSkill( SkillName.MagicResist, 57.5, 80.0 );
|
||||
SetSkill( SkillName.Swords, 60.0, 82.5 );
|
||||
SetSkill( SkillName.Tactics, 60.0, 82.5 );
|
||||
SetSkill(SkillName.Fencing, 60.0, 82.5);
|
||||
SetSkill(SkillName.Macing, 60.0, 82.5);
|
||||
SetSkill(SkillName.Poisoning, 60.0, 82.5);
|
||||
SetSkill(SkillName.MagicResist, 57.5, 80.0);
|
||||
SetSkill(SkillName.Swords, 60.0, 82.5);
|
||||
SetSkill(SkillName.Tactics, 60.0, 82.5);
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
PackItem( new Bandage( Utility.RandomMinMax( 1, 15 ) ) );
|
||||
PackItem(new Bandage(Utility.RandomMinMax(1, 15)));
|
||||
|
||||
if ( Female && 0.1 > Utility.RandomDouble() )
|
||||
PackItem( new TribalBerry() );
|
||||
else if ( !Female && 0.1 > Utility.RandomDouble() )
|
||||
PackItem( new BolaBall() );
|
||||
if (Female && 0.1 > Utility.RandomDouble())
|
||||
PackItem(new TribalBerry());
|
||||
else if (!Female && 0.1 > Utility.RandomDouble())
|
||||
PackItem(new BolaBall());
|
||||
|
||||
AddItem( new Spear() );
|
||||
AddItem( new BoneArms() );
|
||||
AddItem( new BoneLegs() );
|
||||
AddItem(new Spear());
|
||||
AddItem(new BoneArms());
|
||||
AddItem(new BoneLegs());
|
||||
|
||||
if ( 0.5 > Utility.RandomDouble() )
|
||||
AddItem( new SavageMask() );
|
||||
else if ( 0.1 > Utility.RandomDouble() )
|
||||
AddItem( new OrcishKinMask() );
|
||||
}
|
||||
if (0.5 > Utility.RandomDouble())
|
||||
AddItem(new SavageMask());
|
||||
else if (0.1 > Utility.RandomDouble())
|
||||
AddItem(new OrcishKinMask());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public Savage(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int Meat => 1;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool ShowFameTitle => false;
|
||||
public override string CorpseName => "a savage corpse";
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override int Meat => 1;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.BodyMod == 183 || m.BodyMod == 184 )
|
||||
return false;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.BodyMod == 183 || m.BodyMod == 184)
|
||||
return false;
|
||||
|
||||
if ( aggressor.BodyMod == 183 || aggressor.BodyMod == 184 )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
aggressor.BodyMod = 0;
|
||||
aggressor.HueMod = -1;
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
aggressor.SendLocalizedMessage( 1040008 ); // Your skin is scorched as the tribal paint burns away!
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
if ( aggressor is PlayerMobile mobile )
|
||||
mobile.SavagePaintExpiration = TimeSpan.Zero;
|
||||
}
|
||||
}
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
public override void AlterMeleeDamageTo( Mobile to, ref int damage )
|
||||
{
|
||||
if ( to is Dragon || to is WhiteWyrm || to is SwampDragon || to is Drake || to is Nightmare || to is Hiryu || to is LesserHiryu || to is Daemon )
|
||||
damage *= 3;
|
||||
}
|
||||
if (aggressor.BodyMod == 183 || aggressor.BodyMod == 184)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
aggressor.BodyMod = 0;
|
||||
aggressor.HueMod = -1;
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
aggressor.SendLocalizedMessage(1040008); // Your skin is scorched as the tribal paint burns away!
|
||||
|
||||
public Savage( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (aggressor is PlayerMobile mobile)
|
||||
mobile.SavagePaintExpiration = TimeSpan.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void AlterMeleeDamageTo(Mobile to, ref int damage)
|
||||
{
|
||||
if (to is Dragon || to is WhiteWyrm || to is SwampDragon || to is Drake || to is Nightmare || to is Hiryu ||
|
||||
to is LesserHiryu || to is Daemon)
|
||||
damage *= 3;
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,121 +3,123 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SavageRider : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a savage corpse";
|
||||
[Constructible]
|
||||
public SavageRider() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.15, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "savage rider" );
|
||||
public class SavageRider : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public SavageRider() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.15, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("savage rider");
|
||||
|
||||
if ( Female = Utility.RandomBool() )
|
||||
Body = 186;
|
||||
else
|
||||
Body = 185;
|
||||
if (Female = Utility.RandomBool())
|
||||
Body = 186;
|
||||
else
|
||||
Body = 185;
|
||||
|
||||
SetStr( 151, 170 );
|
||||
SetDex( 92, 130 );
|
||||
SetInt( 51, 65 );
|
||||
SetStr(151, 170);
|
||||
SetDex(92, 130);
|
||||
SetInt(51, 65);
|
||||
|
||||
SetDamage( 29, 34 );
|
||||
SetDamage(29, 34);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetSkill( SkillName.Fencing, 72.5, 95.0 );
|
||||
SetSkill( SkillName.Healing, 60.3, 90.0 );
|
||||
SetSkill( SkillName.Macing, 72.5, 95.0 );
|
||||
SetSkill( SkillName.Poisoning, 60.0, 82.5 );
|
||||
SetSkill( SkillName.MagicResist, 72.5, 95.0 );
|
||||
SetSkill( SkillName.Swords, 72.5, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 72.5, 95.0 );
|
||||
SetSkill(SkillName.Fencing, 72.5, 95.0);
|
||||
SetSkill(SkillName.Healing, 60.3, 90.0);
|
||||
SetSkill(SkillName.Macing, 72.5, 95.0);
|
||||
SetSkill(SkillName.Poisoning, 60.0, 82.5);
|
||||
SetSkill(SkillName.MagicResist, 72.5, 95.0);
|
||||
SetSkill(SkillName.Swords, 72.5, 95.0);
|
||||
SetSkill(SkillName.Tactics, 72.5, 95.0);
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
PackItem( new Bandage( Utility.RandomMinMax( 1, 15 ) ) );
|
||||
PackItem(new Bandage(Utility.RandomMinMax(1, 15)));
|
||||
|
||||
if ( 0.1 > Utility.RandomDouble() )
|
||||
PackItem( new BolaBall() );
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
PackItem(new BolaBall());
|
||||
|
||||
AddItem( new TribalSpear() );
|
||||
AddItem( new BoneArms() );
|
||||
AddItem( new BoneLegs() );
|
||||
// TODO: BEAR MASK
|
||||
AddItem(new TribalSpear());
|
||||
AddItem(new BoneArms());
|
||||
AddItem(new BoneLegs());
|
||||
// TODO: BEAR MASK
|
||||
|
||||
new SavageRidgeback().Rider = this;
|
||||
}
|
||||
new SavageRidgeback().Rider = this;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
public SavageRider(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int Meat => 1;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool ShowFameTitle => false;
|
||||
public override string CorpseName => "a savage corpse";
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override int Meat => 1;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
IMount mount = Mount;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
if ( mount != null )
|
||||
mount.Rider = null;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
if ( mount is Mobile mobile )
|
||||
mobile.Delete();
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
IMount mount = Mount;
|
||||
|
||||
return base.OnBeforeDeath();
|
||||
}
|
||||
if (mount != null)
|
||||
mount.Rider = null;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.BodyMod == 183 || m.BodyMod == 184 )
|
||||
return false;
|
||||
if (mount is Mobile mobile)
|
||||
mobile.Delete();
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
return base.OnBeforeDeath();
|
||||
}
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.BodyMod == 183 || m.BodyMod == 184)
|
||||
return false;
|
||||
|
||||
if ( aggressor.BodyMod == 183 || aggressor.BodyMod == 184 )
|
||||
{
|
||||
AOS.Damage( aggressor, 50, 0, 100, 0, 0, 0 );
|
||||
aggressor.BodyMod = 0;
|
||||
aggressor.HueMod = -1;
|
||||
aggressor.FixedParticles( 0x36BD, 20, 10, 5044, EffectLayer.Head );
|
||||
aggressor.PlaySound( 0x307 );
|
||||
aggressor.SendLocalizedMessage( 1040008 ); // Your skin is scorched as the tribal paint burns away!
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
if ( aggressor is PlayerMobile mobile )
|
||||
mobile.SavagePaintExpiration = TimeSpan.Zero;
|
||||
}
|
||||
}
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
public override void AlterMeleeDamageTo( Mobile to, ref int damage )
|
||||
{
|
||||
if ( to is Dragon || to is WhiteWyrm || to is SwampDragon || to is Drake || to is Nightmare || to is Hiryu || to is LesserHiryu || to is Daemon )
|
||||
damage *= 3;
|
||||
}
|
||||
if (aggressor.BodyMod == 183 || aggressor.BodyMod == 184)
|
||||
{
|
||||
AOS.Damage(aggressor, 50, 0, 100, 0, 0, 0);
|
||||
aggressor.BodyMod = 0;
|
||||
aggressor.HueMod = -1;
|
||||
aggressor.FixedParticles(0x36BD, 20, 10, 5044, EffectLayer.Head);
|
||||
aggressor.PlaySound(0x307);
|
||||
aggressor.SendLocalizedMessage(1040008); // Your skin is scorched as the tribal paint burns away!
|
||||
|
||||
public SavageRider( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (aggressor is PlayerMobile mobile)
|
||||
mobile.SavagePaintExpiration = TimeSpan.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void AlterMeleeDamageTo(Mobile to, ref int damage)
|
||||
{
|
||||
if (to is Dragon || to is WhiteWyrm || to is SwampDragon || to is Drake || to is Nightmare || to is Hiryu ||
|
||||
to is LesserHiryu || to is Daemon)
|
||||
damage *= 3;
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,140 +3,139 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class ShadowFiend : BaseCreature
|
||||
{
|
||||
public override bool DeleteCorpseOnDeath => true;
|
||||
public class ShadowFiend : BaseCreature
|
||||
{
|
||||
private UnhideTimer m_Timer;
|
||||
|
||||
private UnhideTimer m_Timer;
|
||||
[Constructible]
|
||||
public ShadowFiend() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0xA8;
|
||||
|
||||
public override string DefaultName => "a shadow fiend";
|
||||
// this to allow shadow fiend to loot from corpses
|
||||
Backpack backpack = new Backpack();
|
||||
backpack.Movable = false;
|
||||
AddItem(backpack);
|
||||
|
||||
[Constructible]
|
||||
public ShadowFiend() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0xA8;
|
||||
SetStr(46, 55);
|
||||
SetDex(121, 130);
|
||||
SetInt(46, 55);
|
||||
|
||||
// this to allow shadow fiend to loot from corpses
|
||||
Backpack backpack = new Backpack();
|
||||
backpack.Movable = false;
|
||||
AddItem( backpack );
|
||||
SetHits(28, 33);
|
||||
SetStam(46, 55);
|
||||
|
||||
SetStr( 46, 55 );
|
||||
SetDex( 121, 130 );
|
||||
SetInt( 46, 55 );
|
||||
SetDamage(10, 22);
|
||||
|
||||
SetHits( 28, 33 );
|
||||
SetStam( 46, 55 );
|
||||
SetDamageType(ResistanceType.Physical, 20);
|
||||
SetDamageType(ResistanceType.Cold, 80);
|
||||
|
||||
SetDamage( 10, 22 );
|
||||
SetResistance(ResistanceType.Physical, 20, 25);
|
||||
SetResistance(ResistanceType.Fire, 20, 25);
|
||||
SetResistance(ResistanceType.Cold, 40, 45);
|
||||
SetResistance(ResistanceType.Poison, 60, 70);
|
||||
SetResistance(ResistanceType.Energy, 5, 10);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Cold, 80 );
|
||||
SetSkill(SkillName.MagicResist, 20.1, 30.0);
|
||||
SetSkill(SkillName.Tactics, 20.1, 30.0);
|
||||
SetSkill(SkillName.Wrestling, 20.1, 30.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 20, 25 );
|
||||
SetResistance( ResistanceType.Fire, 20, 25 );
|
||||
SetResistance( ResistanceType.Cold, 40, 45 );
|
||||
SetResistance( ResistanceType.Poison, 60, 70 );
|
||||
SetResistance( ResistanceType.Energy, 5, 10 );
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Tactics, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Wrestling, 20.1, 30.0 );
|
||||
m_Timer = new UnhideTimer(this);
|
||||
m_Timer.Start();
|
||||
}
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
public ShadowFiend(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
m_Timer = new UnhideTimer( this );
|
||||
m_Timer.Start();
|
||||
}
|
||||
public override bool DeleteCorpseOnDeath => true;
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x37A;
|
||||
}
|
||||
public override string DefaultName => "a shadow fiend";
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x379;
|
||||
}
|
||||
public override bool CanRummageCorpses => true;
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x381;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x37A;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x37F;
|
||||
}
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x379;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x380;
|
||||
}
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x381;
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0x37F;
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
Backpack?.Destroy();
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x380;
|
||||
}
|
||||
|
||||
Effects.SendLocationEffect( Location, Map, 0x376A, 10, 1 );
|
||||
return true;
|
||||
}
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
Backpack?.Destroy();
|
||||
|
||||
public ShadowFiend( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
Effects.SendLocationEffect(Location, Map, 0x376A, 10, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
|
||||
m_Timer = new UnhideTimer( this );
|
||||
m_Timer.Start();
|
||||
}
|
||||
m_Timer = new UnhideTimer(this);
|
||||
m_Timer.Start();
|
||||
}
|
||||
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
m_Timer?.Stop();
|
||||
public override void OnAfterDelete()
|
||||
{
|
||||
m_Timer?.Stop();
|
||||
|
||||
m_Timer = null;
|
||||
m_Timer = null;
|
||||
|
||||
base.OnAfterDelete();
|
||||
}
|
||||
base.OnAfterDelete();
|
||||
}
|
||||
|
||||
private class UnhideTimer : Timer
|
||||
{
|
||||
private ShadowFiend m_Owner;
|
||||
private class UnhideTimer : Timer
|
||||
{
|
||||
private ShadowFiend m_Owner;
|
||||
|
||||
public UnhideTimer( ShadowFiend owner ) : base( TimeSpan.FromSeconds( 30.0 ) )
|
||||
{
|
||||
m_Owner = owner;
|
||||
Priority = TimerPriority.OneSecond;
|
||||
}
|
||||
public UnhideTimer(ShadowFiend owner) : base(TimeSpan.FromSeconds(30.0))
|
||||
{
|
||||
m_Owner = owner;
|
||||
Priority = TimerPriority.OneSecond;
|
||||
}
|
||||
|
||||
protected override void OnTick()
|
||||
{
|
||||
if ( m_Owner.Deleted )
|
||||
{
|
||||
Stop();
|
||||
return;
|
||||
}
|
||||
protected override void OnTick()
|
||||
{
|
||||
if (m_Owner.Deleted)
|
||||
{
|
||||
Stop();
|
||||
return;
|
||||
}
|
||||
|
||||
foreach ( Mobile m in m_Owner.GetMobilesInRange( 3 ) )
|
||||
{
|
||||
if ( m != m_Owner && m.Player && m.Hidden && m_Owner.CanBeHarmful( m ) && m.AccessLevel == AccessLevel.Player )
|
||||
m.Hidden = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
foreach (Mobile m in m_Owner.GetMobilesInRange(3))
|
||||
if (m != m_Owner && m.Player && m.Hidden && m_Owner.CanBeHarmful(m) &&
|
||||
m.AccessLevel == AccessLevel.Player)
|
||||
m.Hidden = false;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,81 +2,93 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SkeletalKnight : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a skeletal knight";
|
||||
public class SkeletalKnight : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public SkeletalKnight() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 147;
|
||||
BaseSoundID = 451;
|
||||
|
||||
[Constructible]
|
||||
public SkeletalKnight() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 147;
|
||||
BaseSoundID = 451;
|
||||
SetStr(196, 250);
|
||||
SetDex(76, 95);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 196, 250 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(118, 150);
|
||||
|
||||
SetHits( 118, 150 );
|
||||
SetDamage(8, 18);
|
||||
|
||||
SetDamage( 8, 18 );
|
||||
SetDamageType(ResistanceType.Physical, 40);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 40 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.MagicResist, 65.1, 80.0);
|
||||
SetSkill(SkillName.Tactics, 85.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 85.1, 95.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 65.1, 80.0 );
|
||||
SetSkill( SkillName.Tactics, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 85.1, 95.0 );
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
VirtualArmor = 40;
|
||||
|
||||
VirtualArmor = 40;
|
||||
switch (Utility.Random(6))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new PlateArms());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new PlateChest());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new PlateGloves());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new PlateGorget());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new PlateLegs());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new PlateHelm());
|
||||
break;
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 6 ) )
|
||||
{
|
||||
case 0: PackItem( new PlateArms() ); break;
|
||||
case 1: PackItem( new PlateChest() ); break;
|
||||
case 2: PackItem( new PlateGloves() ); break;
|
||||
case 3: PackItem( new PlateGorget() ); break;
|
||||
case 4: PackItem( new PlateLegs() ); break;
|
||||
case 5: PackItem( new PlateHelm() ); break;
|
||||
}
|
||||
PackItem(new Scimitar());
|
||||
PackItem(new WoodenShield());
|
||||
}
|
||||
|
||||
PackItem( new Scimitar() );
|
||||
PackItem( new WoodenShield() );
|
||||
}
|
||||
public SkeletalKnight(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a skeletal knight";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public SkeletalKnight( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,76 +2,86 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Skeleton : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a skeleton";
|
||||
public class Skeleton : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Skeleton() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = Utility.RandomList(50, 56);
|
||||
BaseSoundID = 0x48D;
|
||||
|
||||
[Constructible]
|
||||
public Skeleton() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = Utility.RandomList( 50, 56 );
|
||||
BaseSoundID = 0x48D;
|
||||
SetStr(56, 80);
|
||||
SetDex(56, 75);
|
||||
SetInt(16, 40);
|
||||
|
||||
SetStr( 56, 80 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 16, 40 );
|
||||
SetHits(34, 48);
|
||||
|
||||
SetHits( 34, 48 );
|
||||
SetDamage(3, 7);
|
||||
|
||||
SetDamage( 3, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 20);
|
||||
SetResistance(ResistanceType.Fire, 5, 10);
|
||||
SetResistance(ResistanceType.Cold, 25, 40);
|
||||
SetResistance(ResistanceType.Poison, 25, 35);
|
||||
SetResistance(ResistanceType.Energy, 5, 15);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetResistance( ResistanceType.Fire, 5, 10 );
|
||||
SetResistance( ResistanceType.Cold, 25, 40 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 5, 15 );
|
||||
SetSkill(SkillName.MagicResist, 45.1, 60.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
|
||||
Fame = 450;
|
||||
Karma = -450;
|
||||
VirtualArmor = 16;
|
||||
|
||||
VirtualArmor = 16;
|
||||
switch (Utility.Random(5))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new BoneArms());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new BoneChest());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new BoneGloves());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new BoneLegs());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new BoneHelm());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 5 ))
|
||||
{
|
||||
case 0: PackItem( new BoneArms() ); break;
|
||||
case 1: PackItem( new BoneChest() ); break;
|
||||
case 2: PackItem( new BoneGloves() ); break;
|
||||
case 3: PackItem( new BoneLegs() ); break;
|
||||
case 4: PackItem( new BoneHelm() ); break;
|
||||
}
|
||||
}
|
||||
public Skeleton(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a skeleton";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lesser;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lesser;
|
||||
|
||||
public Skeleton( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,41 +2,42 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SpawnedOrcishLord : OrcishLord
|
||||
{
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
[Constructible]
|
||||
public SpawnedOrcishLord()
|
||||
{
|
||||
Container pack = Backpack;
|
||||
public class SpawnedOrcishLord : OrcishLord
|
||||
{
|
||||
[Constructible]
|
||||
public SpawnedOrcishLord()
|
||||
{
|
||||
Container pack = Backpack;
|
||||
|
||||
pack?.Delete();
|
||||
pack?.Delete();
|
||||
|
||||
NoKillAwards = true;
|
||||
}
|
||||
NoKillAwards = true;
|
||||
}
|
||||
|
||||
public SpawnedOrcishLord( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public SpawnedOrcishLord(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
public override string CorpseName => "an orcish corpse";
|
||||
|
||||
c.Delete();
|
||||
}
|
||||
public override void OnDeath(Container c)
|
||||
{
|
||||
base.OnDeath(c);
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
c.Delete();
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
NoKillAwards = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
NoKillAwards = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,96 +2,96 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SpectralArmour : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public SpectralArmour() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 637;
|
||||
Hue = 0x8026;
|
||||
|
||||
public class SpectralArmour : BaseCreature
|
||||
{
|
||||
public override bool DeleteCorpseOnDeath => true;
|
||||
Buckler buckler = new Buckler();
|
||||
ChainCoif coif = new ChainCoif();
|
||||
PlateGloves gloves = new PlateGloves();
|
||||
|
||||
public override string DefaultName => "a spectral armour";
|
||||
buckler.Hue = 0x835;
|
||||
buckler.Movable = false;
|
||||
coif.Hue = 0x835;
|
||||
gloves.Hue = 0x835;
|
||||
|
||||
[Constructible]
|
||||
public SpectralArmour() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 637;
|
||||
Hue = 0x8026;
|
||||
AddItem(buckler);
|
||||
AddItem(coif);
|
||||
AddItem(gloves);
|
||||
|
||||
Buckler buckler = new Buckler();
|
||||
ChainCoif coif = new ChainCoif ();
|
||||
PlateGloves gloves = new PlateGloves();
|
||||
SetStr(101, 110);
|
||||
SetDex(101, 110);
|
||||
SetInt(101, 110);
|
||||
|
||||
buckler.Hue = 0x835; buckler.Movable = false;
|
||||
coif.Hue = 0x835;
|
||||
gloves.Hue = 0x835;
|
||||
SetHits(178, 201);
|
||||
SetStam(191, 200);
|
||||
|
||||
AddItem( buckler );
|
||||
AddItem( coif );
|
||||
AddItem( gloves );
|
||||
SetDamage(10, 22);
|
||||
|
||||
SetStr( 101, 110 );
|
||||
SetDex( 101, 110 );
|
||||
SetInt( 101, 110 );
|
||||
SetDamageType(ResistanceType.Physical, 75);
|
||||
SetDamageType(ResistanceType.Cold, 25);
|
||||
|
||||
SetHits( 178, 201 );
|
||||
SetStam( 191, 200 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 30, 40);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetDamage( 10, 22 );
|
||||
SetSkill(SkillName.Wrestling, 75.1, 100.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 90.1, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 75 );
|
||||
SetDamageType( ResistanceType.Cold, 25 );
|
||||
VirtualArmor = 40;
|
||||
Fame = 7000;
|
||||
Karma = -7000;
|
||||
}
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
public SpectralArmour(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
SetSkill( SkillName.Wrestling, 75.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 90.1, 100 );
|
||||
public override bool DeleteCorpseOnDeath => true;
|
||||
|
||||
VirtualArmor = 40;
|
||||
Fame = 7000;
|
||||
Karma = -7000;
|
||||
}
|
||||
public override string DefaultName => "a spectral armour";
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x200;
|
||||
}
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x56;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x200;
|
||||
}
|
||||
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
if ( !base.OnBeforeDeath() )
|
||||
return false;
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x56;
|
||||
}
|
||||
|
||||
Gold gold = new Gold( Utility.RandomMinMax( 240, 375 ) );
|
||||
gold.MoveToWorld( Location, Map );
|
||||
public override bool OnBeforeDeath()
|
||||
{
|
||||
if (!base.OnBeforeDeath())
|
||||
return false;
|
||||
|
||||
Effects.SendLocationEffect( Location, Map, 0x376A, 10, 1 );
|
||||
return true;
|
||||
}
|
||||
Gold gold = new Gold(Utility.RandomMinMax(240, 375));
|
||||
gold.MoveToWorld(Location, Map);
|
||||
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
Effects.SendLocationEffect(Location, Map, 0x376A, 10, 1);
|
||||
return true;
|
||||
}
|
||||
|
||||
public SpectralArmour( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,71 +2,71 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class StoneGargoyle : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override string DefaultName => "a stone gargoyle";
|
||||
public class StoneGargoyle : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public StoneGargoyle() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 67;
|
||||
BaseSoundID = 0x174;
|
||||
|
||||
[Constructible]
|
||||
public StoneGargoyle() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 67;
|
||||
BaseSoundID = 0x174;
|
||||
SetStr(246, 275);
|
||||
SetDex(76, 95);
|
||||
SetInt(81, 105);
|
||||
|
||||
SetStr( 246, 275 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 81, 105 );
|
||||
SetHits(148, 165);
|
||||
|
||||
SetHits( 148, 165 );
|
||||
SetDamage(11, 17);
|
||||
|
||||
SetDamage( 11, 17 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 10, 20);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.MagicResist, 85.1, 100.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 60.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 100.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 50;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem(new IronIngot(12));
|
||||
|
||||
PackItem( new IronIngot( 12 ) );
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
PackItem(new GargoylesPickaxe());
|
||||
}
|
||||
|
||||
if ( 0.05 > Utility.RandomDouble() )
|
||||
PackItem( new GargoylesPickaxe() );
|
||||
}
|
||||
public StoneGargoyle(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.Gems, 1 );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override string DefaultName => "a stone gargoyle";
|
||||
|
||||
public override int TreasureMapLevel => 2;
|
||||
public override int TreasureMapLevel => 2;
|
||||
|
||||
public StoneGargoyle( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average, 2);
|
||||
AddLoot(LootPack.Gems, 1);
|
||||
AddLoot(LootPack.Potions);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +1,66 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class StrongMongbat : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a mongbat corpse";
|
||||
public override string DefaultName => "a mongbat";
|
||||
public class StrongMongbat : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public StrongMongbat() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 39;
|
||||
BaseSoundID = 422;
|
||||
|
||||
[Constructible]
|
||||
public StrongMongbat() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 39;
|
||||
BaseSoundID = 422;
|
||||
SetStr(6, 10);
|
||||
SetDex(26, 38);
|
||||
SetInt(6, 14);
|
||||
|
||||
SetStr( 6, 10 );
|
||||
SetDex( 26, 38 );
|
||||
SetInt( 6, 14 );
|
||||
SetHits(4, 6);
|
||||
SetMana(0);
|
||||
|
||||
SetHits( 4, 6 );
|
||||
SetMana( 0 );
|
||||
SetDamage(5, 7);
|
||||
|
||||
SetDamage( 5, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 25 );
|
||||
SetSkill(SkillName.MagicResist, 15.1, 30.0);
|
||||
SetSkill(SkillName.Tactics, 35.1, 50.0);
|
||||
SetSkill(SkillName.Wrestling, 20.1, 35.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 30.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 20.1, 35.0 );
|
||||
Fame = 150;
|
||||
Karma = -150;
|
||||
|
||||
Fame = 150;
|
||||
Karma = -150;
|
||||
VirtualArmor = 10;
|
||||
|
||||
VirtualArmor = 10;
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 71.1;
|
||||
}
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 1;
|
||||
MinTameSkill = 71.1;
|
||||
}
|
||||
public StrongMongbat(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Poor );
|
||||
}
|
||||
public override string CorpseName => "a mongbat corpse";
|
||||
public override string DefaultName => "a mongbat";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
|
||||
public StrongMongbat( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Poor);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,65 +1,65 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Troll : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a troll corpse";
|
||||
public override string DefaultName => "a troll";
|
||||
public class Troll : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Troll() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = Utility.RandomList(53, 54);
|
||||
BaseSoundID = 461;
|
||||
|
||||
[Constructible]
|
||||
public Troll () : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = Utility.RandomList( 53, 54 );
|
||||
BaseSoundID = 461;
|
||||
SetStr(176, 205);
|
||||
SetDex(46, 65);
|
||||
SetInt(46, 70);
|
||||
|
||||
SetStr( 176, 205 );
|
||||
SetDex( 46, 65 );
|
||||
SetInt( 46, 70 );
|
||||
SetHits(106, 123);
|
||||
|
||||
SetHits( 106, 123 );
|
||||
SetDamage(8, 14);
|
||||
|
||||
SetDamage( 8, 14 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 25, 35);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 5, 15);
|
||||
SetResistance(ResistanceType.Energy, 5, 15);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 5, 15 );
|
||||
SetResistance( ResistanceType.Energy, 5, 15 );
|
||||
SetSkill(SkillName.MagicResist, 45.1, 60.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 70.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 70.0 );
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
|
||||
VirtualArmor = 40;
|
||||
}
|
||||
public Troll(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
}
|
||||
public override string CorpseName => "a troll corpse";
|
||||
public override string DefaultName => "a troll";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 2;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 2;
|
||||
|
||||
public Troll( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,79 +2,99 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Zombie : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a rotting corpse";
|
||||
public override string DefaultName => "a zombie";
|
||||
public class Zombie : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Zombie() : base(AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
|
||||
[Constructible]
|
||||
public Zombie() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 3;
|
||||
BaseSoundID = 471;
|
||||
SetStr(46, 70);
|
||||
SetDex(31, 50);
|
||||
SetInt(26, 40);
|
||||
|
||||
SetStr( 46, 70 );
|
||||
SetDex( 31, 50 );
|
||||
SetInt( 26, 40 );
|
||||
SetHits(28, 42);
|
||||
|
||||
SetHits( 28, 42 );
|
||||
SetDamage(3, 7);
|
||||
|
||||
SetDamage( 3, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 15, 20);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 15, 20 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 5, 10 );
|
||||
SetSkill(SkillName.MagicResist, 15.1, 40.0);
|
||||
SetSkill(SkillName.Tactics, 35.1, 50.0);
|
||||
SetSkill(SkillName.Wrestling, 35.1, 50.0);
|
||||
|
||||
SetSkill( SkillName.MagicResist, 15.1, 40.0 );
|
||||
SetSkill( SkillName.Tactics, 35.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 35.1, 50.0 );
|
||||
Fame = 600;
|
||||
Karma = -600;
|
||||
|
||||
Fame = 600;
|
||||
Karma = -600;
|
||||
VirtualArmor = 18;
|
||||
|
||||
VirtualArmor = 18;
|
||||
switch (Utility.Random(10))
|
||||
{
|
||||
case 0:
|
||||
PackItem(new LeftArm());
|
||||
break;
|
||||
case 1:
|
||||
PackItem(new RightArm());
|
||||
break;
|
||||
case 2:
|
||||
PackItem(new Torso());
|
||||
break;
|
||||
case 3:
|
||||
PackItem(new Bone());
|
||||
break;
|
||||
case 4:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 5:
|
||||
PackItem(new RibCage());
|
||||
break;
|
||||
case 6:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 7:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 8:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
case 9:
|
||||
PackItem(new BonePile());
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
switch ( Utility.Random( 10 ))
|
||||
{
|
||||
case 0: PackItem( new LeftArm() ); break;
|
||||
case 1: PackItem( new RightArm() ); break;
|
||||
case 2: PackItem( new Torso() ); break;
|
||||
case 3: PackItem( new Bone() ); break;
|
||||
case 4: PackItem( new RibCage() ); break;
|
||||
case 5: PackItem( new RibCage() ); break;
|
||||
case 6: PackItem( new BonePile() ); break;
|
||||
case 7: PackItem( new BonePile() ); break;
|
||||
case 8: PackItem( new BonePile() ); break;
|
||||
case 9: PackItem( new BonePile() ); break;
|
||||
}
|
||||
}
|
||||
public Zombie(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a rotting corpse";
|
||||
public override string DefaultName => "a zombie";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
|
||||
public Zombie( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void Serialize(GenericWriter writer)
|
||||
{
|
||||
base.Serialize(writer);
|
||||
writer.Write(0);
|
||||
}
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue