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
|
|
@ -1,103 +1,103 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class AncientLich : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an ancient lich's corpse";
|
||||
[Constructible]
|
||||
public AncientLich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "ancient lich" );
|
||||
Body = 78;
|
||||
BaseSoundID = 412;
|
||||
public class AncientLich : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public AncientLich() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("ancient lich");
|
||||
Body = 78;
|
||||
BaseSoundID = 412;
|
||||
|
||||
SetStr( 216, 305 );
|
||||
SetDex( 96, 115 );
|
||||
SetInt( 966, 1045 );
|
||||
SetStr(216, 305);
|
||||
SetDex(96, 115);
|
||||
SetInt(966, 1045);
|
||||
|
||||
SetHits( 560, 595 );
|
||||
SetHits(560, 595);
|
||||
|
||||
SetDamage( 15, 27 );
|
||||
SetDamage(15, 27);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Cold, 40 );
|
||||
SetDamageType( ResistanceType.Energy, 40 );
|
||||
SetDamageType(ResistanceType.Physical, 20);
|
||||
SetDamageType(ResistanceType.Cold, 40);
|
||||
SetDamageType(ResistanceType.Energy, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 55, 65 );
|
||||
SetResistance( ResistanceType.Fire, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 25, 30 );
|
||||
SetResistance(ResistanceType.Physical, 55, 65);
|
||||
SetResistance(ResistanceType.Fire, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 25, 30);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Magery, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Meditation, 100.1, 101.0 );
|
||||
SetSkill( SkillName.Poisoning, 100.1, 101.0 );
|
||||
SetSkill( SkillName.MagicResist, 175.2, 200.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 75.1, 100.0 );
|
||||
SetSkill( SkillName.Necromancy, 120.1, 130.0 );
|
||||
SetSkill( SkillName.SpiritSpeak, 120.1, 130.0 );
|
||||
SetSkill(SkillName.EvalInt, 120.1, 130.0);
|
||||
SetSkill(SkillName.Magery, 120.1, 130.0);
|
||||
SetSkill(SkillName.Meditation, 100.1, 101.0);
|
||||
SetSkill(SkillName.Poisoning, 100.1, 101.0);
|
||||
SetSkill(SkillName.MagicResist, 175.2, 200.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 75.1, 100.0);
|
||||
SetSkill(SkillName.Necromancy, 120.1, 130.0);
|
||||
SetSkill(SkillName.SpiritSpeak, 120.1, 130.0);
|
||||
|
||||
Fame = 23000;
|
||||
Karma = -23000;
|
||||
Fame = 23000;
|
||||
Karma = -23000;
|
||||
|
||||
VirtualArmor = 60;
|
||||
PackNecroReg( 30, 275 );
|
||||
VirtualArmor = 60;
|
||||
PackNecroReg(30, 275);
|
||||
}
|
||||
|
||||
}
|
||||
public AncientLich(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override string CorpseName => "an ancient lich's corpse";
|
||||
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x19D;
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x175;
|
||||
}
|
||||
public override bool Unprovokable => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x108;
|
||||
}
|
||||
public override int GetIdleSound()
|
||||
{
|
||||
return 0x19D;
|
||||
}
|
||||
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0xE2;
|
||||
}
|
||||
public override int GetAngerSound()
|
||||
{
|
||||
return 0x175;
|
||||
}
|
||||
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x28B;
|
||||
}
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x108;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 3 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public override int GetAttackSound()
|
||||
{
|
||||
return 0xE2;
|
||||
}
|
||||
|
||||
public override bool Unprovokable => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x28B;
|
||||
}
|
||||
|
||||
public AncientLich( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich, 3);
|
||||
AddLoot(LootPack.MedScrolls, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,70 +2,74 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class ArcaneDaemon : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an arcane daemon corpse";
|
||||
public override WeaponAbility GetWeaponAbility() => WeaponAbility.ConcussionBlow;
|
||||
public class ArcaneDaemon : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public ArcaneDaemon() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x310;
|
||||
BaseSoundID = 0x47D;
|
||||
|
||||
public override string DefaultName => "an arcane daemon";
|
||||
SetStr(131, 150);
|
||||
SetDex(126, 145);
|
||||
SetInt(301, 350);
|
||||
|
||||
[Constructible]
|
||||
public ArcaneDaemon() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x310;
|
||||
BaseSoundID = 0x47D;
|
||||
SetHits(101, 115);
|
||||
|
||||
SetStr( 131, 150 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 301, 350 );
|
||||
SetDamage(12, 16);
|
||||
|
||||
SetHits( 101, 115 );
|
||||
SetDamageType(ResistanceType.Physical, 80);
|
||||
SetDamageType(ResistanceType.Fire, 20);
|
||||
|
||||
SetDamage( 12, 16 );
|
||||
SetResistance(ResistanceType.Physical, 50, 60);
|
||||
SetResistance(ResistanceType.Fire, 70, 80);
|
||||
SetResistance(ResistanceType.Cold, 10, 20);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 80 );
|
||||
SetDamageType( ResistanceType.Fire, 20 );
|
||||
SetSkill(SkillName.MagicResist, 85.1, 95.0);
|
||||
SetSkill(SkillName.Tactics, 70.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 60.1, 80.0);
|
||||
SetSkill(SkillName.Magery, 80.1, 90.0);
|
||||
SetSkill(SkillName.EvalInt, 70.1, 80.0);
|
||||
SetSkill(SkillName.Meditation, 70.1, 80.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 50, 60 );
|
||||
SetResistance( ResistanceType.Fire, 70, 80 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
Fame = 7000;
|
||||
Karma = -10000;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.EvalInt, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Meditation, 70.1, 80.0 );
|
||||
VirtualArmor = 55;
|
||||
}
|
||||
|
||||
Fame = 7000;
|
||||
Karma = -10000;
|
||||
public ArcaneDaemon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
VirtualArmor = 55;
|
||||
}
|
||||
public override string CorpseName => "an arcane daemon corpse";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
}
|
||||
public override string DefaultName => "an arcane daemon";
|
||||
|
||||
public override Poison PoisonImmune => Poison.Deadly;
|
||||
public override Poison PoisonImmune => Poison.Deadly;
|
||||
|
||||
public ArcaneDaemon( 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.Average, 2);
|
||||
}
|
||||
|
||||
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,76 +2,77 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Balron : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a balron corpse";
|
||||
[Constructible]
|
||||
public Balron () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "balron" );
|
||||
Body = 40;
|
||||
BaseSoundID = 357;
|
||||
public class Balron : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Balron() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("balron");
|
||||
Body = 40;
|
||||
BaseSoundID = 357;
|
||||
|
||||
SetStr( 986, 1185 );
|
||||
SetDex( 177, 255 );
|
||||
SetInt( 151, 250 );
|
||||
SetStr(986, 1185);
|
||||
SetDex(177, 255);
|
||||
SetInt(151, 250);
|
||||
|
||||
SetHits( 592, 711 );
|
||||
SetHits(592, 711);
|
||||
|
||||
SetDamage( 22, 29 );
|
||||
SetDamage(22, 29);
|
||||
|
||||
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, 80 );
|
||||
SetResistance( ResistanceType.Fire, 60, 80 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 100 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
SetResistance(ResistanceType.Physical, 65, 80);
|
||||
SetResistance(ResistanceType.Fire, 60, 80);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 100);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 25.1, 50.0 );
|
||||
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 95.5, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 25.1, 50.0 );
|
||||
SetSkill( SkillName.MagicResist, 100.5, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
SetSkill(SkillName.Anatomy, 25.1, 50.0);
|
||||
SetSkill(SkillName.EvalInt, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 95.5, 100.0);
|
||||
SetSkill(SkillName.Meditation, 25.1, 50.0);
|
||||
SetSkill(SkillName.MagicResist, 100.5, 150.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
Fame = 24000;
|
||||
Karma = -24000;
|
||||
Fame = 24000;
|
||||
Karma = -24000;
|
||||
|
||||
VirtualArmor = 90;
|
||||
VirtualArmor = 90;
|
||||
|
||||
PackItem( new Longsword() );
|
||||
}
|
||||
PackItem(new Longsword());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 2 );
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public Balron(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override Poison PoisonImmune => Poison.Deadly;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override int Meat => 1;
|
||||
public override string CorpseName => "a balron corpse";
|
||||
|
||||
public Balron( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override Poison PoisonImmune => Poison.Deadly;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override int Meat => 1;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich, 2);
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.MedScrolls, 2);
|
||||
}
|
||||
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -4,180 +4,180 @@ using Server.Network;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Betrayer : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a betrayer corpse";
|
||||
private bool m_Stunning;
|
||||
public class Betrayer : BaseCreature
|
||||
{
|
||||
private DateTime m_NextAbilityTime;
|
||||
private bool m_Stunning;
|
||||
|
||||
public override string DefaultName => "a betrayer";
|
||||
[Constructible]
|
||||
public Betrayer() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 767;
|
||||
|
||||
[Constructible]
|
||||
public Betrayer() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 767;
|
||||
SetStr(401, 500);
|
||||
SetDex(81, 100);
|
||||
SetInt(151, 200);
|
||||
|
||||
SetStr( 401, 500 );
|
||||
SetDex( 81, 100 );
|
||||
SetInt( 151, 200 );
|
||||
SetHits(241, 300);
|
||||
|
||||
SetHits( 241, 300 );
|
||||
SetDamage(16, 22);
|
||||
|
||||
SetDamage( 16, 22 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 60, 70);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 60, 70 );
|
||||
SetResistance( ResistanceType.Fire, 60, 70 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
SetSkill(SkillName.Anatomy, 90.1, 100.0);
|
||||
SetSkill(SkillName.EvalInt, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 50.1, 100.0);
|
||||
SetSkill(SkillName.Meditation, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 120.1, 130.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 90.1, 100.0 );
|
||||
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 50.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
VirtualArmor = 65;
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
|
||||
VirtualArmor = 65;
|
||||
SpeechHue = Utility.RandomDyedHue();
|
||||
PackItem(new PowerCrystal());
|
||||
|
||||
PackItem( new PowerCrystal() );
|
||||
if (0.02 > Utility.RandomDouble())
|
||||
PackItem(new BlackthornWelcomeBook());
|
||||
|
||||
if ( 0.02 > Utility.RandomDouble() )
|
||||
PackItem( new BlackthornWelcomeBook() );
|
||||
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(5, 30));
|
||||
}
|
||||
|
||||
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 30 ) );
|
||||
}
|
||||
public Betrayer(Serial serial)
|
||||
: base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void OnDeath( Container c )
|
||||
{
|
||||
base.OnDeath( c );
|
||||
public override string CorpseName => "a betrayer corpse";
|
||||
|
||||
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 DefaultName => "a betrayer";
|
||||
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x423;
|
||||
}
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
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 void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems, 1 );
|
||||
}
|
||||
public override int GetDeathSound()
|
||||
{
|
||||
return 0x423;
|
||||
}
|
||||
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
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 OnGaveMeleeAttack( Mobile defender )
|
||||
{
|
||||
base.OnGaveMeleeAttack( defender );
|
||||
public override int GetHurtSound()
|
||||
{
|
||||
return 0x140;
|
||||
}
|
||||
|
||||
if ( !m_Stunning && 0.3 > Utility.RandomDouble() )
|
||||
{
|
||||
m_Stunning = true;
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.Gems, 1);
|
||||
}
|
||||
|
||||
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 void OnGaveMeleeAttack(Mobile defender)
|
||||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
if ( Weapon is BaseWeapon weapon )
|
||||
weapon.OnHit( this, defender );
|
||||
if (!m_Stunning && 0.3 > Utility.RandomDouble())
|
||||
{
|
||||
m_Stunning = true;
|
||||
|
||||
if ( defender.Alive )
|
||||
{
|
||||
defender.Frozen = true;
|
||||
Timer.DelayCall( TimeSpan.FromSeconds( 5.0 ), new TimerStateCallback( Recover_Callback ), defender );
|
||||
}
|
||||
}
|
||||
}
|
||||
defender.Animate(21, 6, 1, true, false, 0);
|
||||
PlaySound(0xEE);
|
||||
defender.LocalOverheadMessage(MessageType.Regular, 0x3B2, false,
|
||||
"You have been stunned by a colossal blow!");
|
||||
|
||||
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." );
|
||||
}
|
||||
if (Weapon is BaseWeapon weapon)
|
||||
weapon.OnHit(this, defender);
|
||||
|
||||
m_Stunning = false;
|
||||
}
|
||||
if (defender.Alive)
|
||||
{
|
||||
defender.Frozen = true;
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(5.0), new TimerStateCallback(Recover_Callback), defender);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private DateTime m_NextAbilityTime;
|
||||
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.");
|
||||
}
|
||||
|
||||
public override void OnActionCombat()
|
||||
{
|
||||
Mobile combatant = Combatant;
|
||||
m_Stunning = false;
|
||||
}
|
||||
|
||||
if ( DateTime.UtcNow < m_NextAbilityTime || combatant == null || combatant.Deleted || combatant.Map != Map || !InRange( combatant, 3 ) || !CanBeHarmful( combatant ) || !InLOS( combatant ) )
|
||||
return;
|
||||
public override void OnActionCombat()
|
||||
{
|
||||
Mobile combatant = Combatant;
|
||||
|
||||
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds( Utility.RandomMinMax( 5, 30 ) );
|
||||
if (DateTime.UtcNow < m_NextAbilityTime || combatant == null || combatant.Deleted || combatant.Map != Map ||
|
||||
!InRange(combatant, 3) || !CanBeHarmful(combatant) || !InLOS(combatant))
|
||||
return;
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
{
|
||||
FixedParticles( 0x376A, 9, 32, 0x2539, EffectLayer.LeftHand );
|
||||
PlaySound( 0x1DE );
|
||||
m_NextAbilityTime = DateTime.UtcNow + TimeSpan.FromSeconds(Utility.RandomMinMax(5, 30));
|
||||
|
||||
foreach ( Mobile m in GetMobilesInRange( 2 ) )
|
||||
{
|
||||
if ( m != this && IsEnemy( m ) )
|
||||
{
|
||||
m.ApplyPoison( this, Poison.Deadly );
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Utility.RandomBool())
|
||||
{
|
||||
FixedParticles(0x376A, 9, 32, 0x2539, EffectLayer.LeftHand);
|
||||
PlaySound(0x1DE);
|
||||
|
||||
public Betrayer( Serial serial )
|
||||
: base( serial )
|
||||
{
|
||||
}
|
||||
foreach (Mobile m in GetMobilesInRange(2))
|
||||
if (m != this && IsEnemy(m))
|
||||
m.ApplyPoison(this, Poison.Deadly);
|
||||
}
|
||||
}
|
||||
|
||||
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,63 +2,63 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Bogle : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a bogle";
|
||||
public class Bogle : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Bogle() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 153;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
[Constructible]
|
||||
public Bogle() : base( AIType.AI_Mage, 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);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetDamage(7, 11);
|
||||
|
||||
SetDamage( 7, 11 );
|
||||
SetSkill(SkillName.EvalInt, 55.1, 70.0);
|
||||
SetSkill(SkillName.Magery, 55.1, 70.0);
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 28;
|
||||
PackItem(Loot.RandomWeapon());
|
||||
PackItem(new Bone());
|
||||
}
|
||||
|
||||
VirtualArmor = 28;
|
||||
PackItem( Loot.RandomWeapon() );
|
||||
PackItem( new Bone() );
|
||||
}
|
||||
public Bogle(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a bogle";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
|
||||
public Bogle( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,79 +2,79 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
[TypeAlias("Server.Mobiles.BoneMage")]
|
||||
public class BoneMagi : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a bone mage";
|
||||
[TypeAlias("Server.Mobiles.BoneMage")]
|
||||
public class BoneMagi : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public BoneMagi() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 148;
|
||||
BaseSoundID = 451;
|
||||
|
||||
[Constructible]
|
||||
public BoneMagi() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 148;
|
||||
BaseSoundID = 451;
|
||||
SetStr(76, 100);
|
||||
SetDex(56, 75);
|
||||
SetInt(186, 210);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 186, 210 );
|
||||
SetHits(46, 60);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetDamage(3, 7);
|
||||
|
||||
SetDamage( 3, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 35, 40);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.EvalInt, 60.1, 70.0);
|
||||
SetSkill(SkillName.Magery, 60.1, 70.0);
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
SetSkill(SkillName.Necromancy, 89, 99.1);
|
||||
SetSkill(SkillName.SpiritSpeak, 90.0, 99.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 60.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 60.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
SetSkill( SkillName.Necromancy, 89, 99.1 );
|
||||
SetSkill( SkillName.SpiritSpeak, 90.0, 99.0 );
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
VirtualArmor = 38;
|
||||
|
||||
VirtualArmor = 38;
|
||||
PackReg(3);
|
||||
PackNecroReg(3, 10);
|
||||
PackItem(new Bone());
|
||||
}
|
||||
|
||||
PackReg( 3 );
|
||||
PackNecroReg( 3, 10 );
|
||||
PackItem( new Bone() );
|
||||
}
|
||||
public BoneMagi(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.LowScrolls );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a bone mage";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
|
||||
public BoneMagi( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.LowScrolls);
|
||||
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,79 +1,80 @@
|
|||
using Server.Ethics;
|
||||
using Server.Factions;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Daemon : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a daemon corpse";
|
||||
public override double DispelDifficulty => 125.0;
|
||||
public override double DispelFocus => 45.0;
|
||||
public class Daemon : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Daemon() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("daemon");
|
||||
Body = 9;
|
||||
BaseSoundID = 357;
|
||||
|
||||
public override Faction FactionAllegiance => Shadowlords.Instance;
|
||||
public override Ethics.Ethic EthicAllegiance => Ethics.Ethic.Evil;
|
||||
SetStr(476, 505);
|
||||
SetDex(76, 95);
|
||||
SetInt(301, 325);
|
||||
|
||||
[Constructible]
|
||||
public Daemon () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "daemon" );
|
||||
Body = 9;
|
||||
BaseSoundID = 357;
|
||||
SetHits(286, 303);
|
||||
|
||||
SetStr( 476, 505 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 301, 325 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetHits( 286, 303 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetResistance(ResistanceType.Physical, 45, 60);
|
||||
SetResistance(ResistanceType.Fire, 50, 60);
|
||||
SetResistance(ResistanceType.Cold, 30, 40);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetSkill(SkillName.EvalInt, 70.1, 80.0);
|
||||
SetSkill(SkillName.Magery, 70.1, 80.0);
|
||||
SetSkill(SkillName.MagicResist, 85.1, 95.0);
|
||||
SetSkill(SkillName.Tactics, 70.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 60.1, 80.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 60 );
|
||||
SetResistance( ResistanceType.Fire, 50, 60 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
|
||||
SetSkill( SkillName.EvalInt, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 85.1, 95.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
|
||||
VirtualArmor = 58;
|
||||
ControlSlots = Core.SE ? 4 : 5;
|
||||
}
|
||||
|
||||
Fame = 15000;
|
||||
Karma = -15000;
|
||||
public Daemon(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
VirtualArmor = 58;
|
||||
ControlSlots = Core.SE ? 4 : 5;
|
||||
}
|
||||
public override string CorpseName => "a daemon corpse";
|
||||
public override double DispelDifficulty => 125.0;
|
||||
public override double DispelFocus => 45.0;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Average, 2 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public override Faction FactionAllegiance => Shadowlords.Instance;
|
||||
public override Ethic EthicAllegiance => Ethic.Evil;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 4;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 4;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
|
||||
public Daemon( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.Average, 2);
|
||||
AddLoot(LootPack.MedScrolls, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,67 +1,67 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class ElderGazer : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an elder gazer corpse";
|
||||
public override string DefaultName => "an elder gazer";
|
||||
public class ElderGazer : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public ElderGazer() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 22;
|
||||
BaseSoundID = 377;
|
||||
|
||||
[Constructible]
|
||||
public ElderGazer () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 22;
|
||||
BaseSoundID = 377;
|
||||
SetStr(296, 325);
|
||||
SetDex(86, 105);
|
||||
SetInt(291, 385);
|
||||
|
||||
SetStr( 296, 325 );
|
||||
SetDex( 86, 105 );
|
||||
SetInt( 291, 385 );
|
||||
SetHits(178, 195);
|
||||
|
||||
SetHits( 178, 195 );
|
||||
SetDamage(8, 19);
|
||||
|
||||
SetDamage( 8, 19 );
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Energy, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Energy, 50 );
|
||||
SetResistance(ResistanceType.Physical, 45, 55);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 40, 50);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 45, 55 );
|
||||
SetResistance( ResistanceType.Fire, 60, 70 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 40, 50 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
SetSkill(SkillName.Anatomy, 62.0, 100.0);
|
||||
SetSkill(SkillName.EvalInt, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 115.1, 130.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 62.0, 100.0 );
|
||||
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 115.1, 130.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 100.0 );
|
||||
Fame = 12500;
|
||||
Karma = -12500;
|
||||
|
||||
Fame = 12500;
|
||||
Karma = -12500;
|
||||
VirtualArmor = 50;
|
||||
}
|
||||
|
||||
VirtualArmor = 50;
|
||||
}
|
||||
public ElderGazer(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override int TreasureMapLevel => Core.AOS ? 4 : 0;
|
||||
public override string CorpseName => "an elder gazer corpse";
|
||||
public override string DefaultName => "an elder gazer";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
}
|
||||
public override int TreasureMapLevel => Core.AOS ? 4 : 0;
|
||||
|
||||
public ElderGazer( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
}
|
||||
|
||||
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,71 +2,72 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class EvilMage : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an evil mage corpse";
|
||||
[Constructible]
|
||||
public EvilMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "evil mage" );
|
||||
Title = "the evil mage";
|
||||
Body = 124;
|
||||
public class EvilMage : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public EvilMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("evil mage");
|
||||
Title = "the evil mage";
|
||||
Body = 124;
|
||||
|
||||
SetStr( 81, 105 );
|
||||
SetDex( 91, 115 );
|
||||
SetInt( 96, 120 );
|
||||
SetStr(81, 105);
|
||||
SetDex(91, 115);
|
||||
SetInt(96, 120);
|
||||
|
||||
SetHits( 49, 63 );
|
||||
SetHits(49, 63);
|
||||
|
||||
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.Poison, 5, 10 );
|
||||
SetResistance( ResistanceType.Energy, 5, 10 );
|
||||
SetResistance(ResistanceType.Physical, 15, 20);
|
||||
SetResistance(ResistanceType.Fire, 5, 10);
|
||||
SetResistance(ResistanceType.Poison, 5, 10);
|
||||
SetResistance(ResistanceType.Energy, 5, 10);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 75.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 75.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 75.0, 97.5 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 20.2, 60.0 );
|
||||
SetSkill(SkillName.EvalInt, 75.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 75.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 75.0, 97.5);
|
||||
SetSkill(SkillName.Tactics, 65.0, 87.5);
|
||||
SetSkill(SkillName.Wrestling, 20.2, 60.0);
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
VirtualArmor = 16;
|
||||
PackReg( 6 );
|
||||
PackItem( new Robe( Utility.RandomNeutralHue() ) ); // TODO: Proper hue
|
||||
PackItem( new Sandals() );
|
||||
}
|
||||
VirtualArmor = 16;
|
||||
PackReg(6);
|
||||
PackItem(new Robe(Utility.RandomNeutralHue())); // TODO: Proper hue
|
||||
PackItem(new Sandals());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
}
|
||||
public EvilMage(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => Core.AOS ? 1 : 0;
|
||||
public override string CorpseName => "an evil mage corpse";
|
||||
|
||||
public EvilMage( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => Core.AOS ? 1 : 0;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.MedScrolls);
|
||||
}
|
||||
|
||||
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,78 +2,79 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class EvilMageLord : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an evil mage lord corpse";
|
||||
[Constructible]
|
||||
public EvilMageLord() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "evil mage lord" );
|
||||
Body = Utility.RandomList( 125, 126 );
|
||||
public class EvilMageLord : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public EvilMageLord() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("evil mage lord");
|
||||
Body = Utility.RandomList(125, 126);
|
||||
|
||||
PackItem( new Robe( Utility.RandomMetalHue() ) );
|
||||
PackItem( new WizardsHat( Utility.RandomMetalHue() ) );
|
||||
PackItem(new Robe(Utility.RandomMetalHue()));
|
||||
PackItem(new WizardsHat(Utility.RandomMetalHue()));
|
||||
|
||||
SetStr( 81, 105 );
|
||||
SetDex( 191, 215 );
|
||||
SetInt( 126, 150 );
|
||||
SetStr(81, 105);
|
||||
SetDex(191, 215);
|
||||
SetInt(126, 150);
|
||||
|
||||
SetHits( 49, 63 );
|
||||
SetHits(49, 63);
|
||||
|
||||
SetDamage( 5, 10 );
|
||||
SetDamage(5, 10);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 30, 40 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetResistance(ResistanceType.Physical, 35, 40);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 30, 40);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 80.2, 100.0 );
|
||||
SetSkill( SkillName.Magery, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 27.5, 50.0 );
|
||||
SetSkill( SkillName.MagicResist, 77.5, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 20.3, 80.0 );
|
||||
SetSkill(SkillName.EvalInt, 80.2, 100.0);
|
||||
SetSkill(SkillName.Magery, 95.1, 100.0);
|
||||
SetSkill(SkillName.Meditation, 27.5, 50.0);
|
||||
SetSkill(SkillName.MagicResist, 77.5, 100.0);
|
||||
SetSkill(SkillName.Tactics, 65.0, 87.5);
|
||||
SetSkill(SkillName.Wrestling, 20.3, 80.0);
|
||||
|
||||
Fame = 10500;
|
||||
Karma = -10500;
|
||||
Fame = 10500;
|
||||
Karma = -10500;
|
||||
|
||||
VirtualArmor = 16;
|
||||
PackReg( 23 );
|
||||
if ( Utility.RandomBool() )
|
||||
PackItem( new Shoes() );
|
||||
else
|
||||
PackItem( new Sandals() );
|
||||
}
|
||||
VirtualArmor = 16;
|
||||
PackReg(23);
|
||||
if (Utility.RandomBool())
|
||||
PackItem(new Shoes());
|
||||
else
|
||||
PackItem(new Sandals());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public EvilMageLord(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => Core.AOS ? 2 : 0;
|
||||
public override string CorpseName => "an evil mage lord corpse";
|
||||
|
||||
public EvilMageLord( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => Core.AOS ? 2 : 0;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.Meager);
|
||||
AddLoot(LootPack.MedScrolls, 2);
|
||||
}
|
||||
|
||||
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,70 +1,71 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class FireGargoyle : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a charred corpse";
|
||||
[Constructible]
|
||||
public FireGargoyle() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "fire gargoyle" );
|
||||
Body = 130;
|
||||
BaseSoundID = 0x174;
|
||||
public class FireGargoyle : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public FireGargoyle() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("fire gargoyle");
|
||||
Body = 130;
|
||||
BaseSoundID = 0x174;
|
||||
|
||||
SetStr( 351, 400 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 226, 250 );
|
||||
SetStr(351, 400);
|
||||
SetDex(126, 145);
|
||||
SetInt(226, 250);
|
||||
|
||||
SetHits( 211, 240 );
|
||||
SetHits(211, 240);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 20 );
|
||||
SetDamageType( ResistanceType.Fire, 80 );
|
||||
SetDamageType(ResistanceType.Physical, 20);
|
||||
SetDamageType(ResistanceType.Fire, 80);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 35 );
|
||||
SetResistance( ResistanceType.Fire, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
SetResistance(ResistanceType.Physical, 30, 35);
|
||||
SetResistance(ResistanceType.Fire, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetSkill( SkillName.Anatomy, 75.1, 85.0 );
|
||||
SetSkill( SkillName.EvalInt, 90.1, 105.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 105.0 );
|
||||
SetSkill( SkillName.Meditation, 90.1, 105.0 );
|
||||
SetSkill( SkillName.MagicResist, 90.1, 105.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Wrestling, 40.1, 80.0 );
|
||||
SetSkill(SkillName.Anatomy, 75.1, 85.0);
|
||||
SetSkill(SkillName.EvalInt, 90.1, 105.0);
|
||||
SetSkill(SkillName.Magery, 90.1, 105.0);
|
||||
SetSkill(SkillName.Meditation, 90.1, 105.0);
|
||||
SetSkill(SkillName.MagicResist, 90.1, 105.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 100.0);
|
||||
SetSkill(SkillName.Wrestling, 40.1, 80.0);
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
|
||||
VirtualArmor = 32;
|
||||
}
|
||||
VirtualArmor = 32;
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.Gems );
|
||||
}
|
||||
public FireGargoyle(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool HasBreath => true; // fire breath enabled
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
public override string CorpseName => "a charred corpse";
|
||||
|
||||
public FireGargoyle( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override bool HasBreath => true; // fire breath enabled
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.Gems);
|
||||
}
|
||||
|
||||
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,73 +2,73 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Gargoyle : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override string DefaultName => "a gargoyle";
|
||||
public class Gargoyle : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Gargoyle() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 4;
|
||||
BaseSoundID = 372;
|
||||
|
||||
[Constructible]
|
||||
public Gargoyle() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 4;
|
||||
BaseSoundID = 372;
|
||||
SetStr(146, 175);
|
||||
SetDex(76, 95);
|
||||
SetInt(81, 105);
|
||||
|
||||
SetStr( 146, 175 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 81, 105 );
|
||||
SetHits(88, 105);
|
||||
|
||||
SetHits( 88, 105 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 30, 35);
|
||||
SetResistance(ResistanceType.Fire, 25, 35);
|
||||
SetResistance(ResistanceType.Cold, 5, 10);
|
||||
SetResistance(ResistanceType.Poison, 15, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 35 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 5, 10 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetSkill(SkillName.EvalInt, 70.1, 85.0);
|
||||
SetSkill(SkillName.Magery, 70.1, 85.0);
|
||||
SetSkill(SkillName.MagicResist, 70.1, 85.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 40.1, 80.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 70.1, 85.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 85.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 = -3500;
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
VirtualArmor = 32;
|
||||
|
||||
VirtualArmor = 32;
|
||||
if (0.025 > Utility.RandomDouble())
|
||||
PackItem(new GargoylesPickaxe());
|
||||
}
|
||||
|
||||
if ( 0.025 > Utility.RandomDouble() )
|
||||
PackItem( new GargoylesPickaxe() );
|
||||
}
|
||||
public Gargoyle(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanFly => true;
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override string DefaultName => "a gargoyle";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
AddLoot( LootPack.Gems, Utility.RandomMinMax( 1, 4 ) );
|
||||
}
|
||||
public override bool CanFly => true;
|
||||
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
public Gargoyle( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.MedScrolls);
|
||||
AddLoot(LootPack.Gems, Utility.RandomMinMax(1, 4));
|
||||
}
|
||||
|
||||
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,103 +2,98 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class GargoyleDestroyer : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override string DefaultName => "a gargoyle destroyer";
|
||||
public class GargoyleDestroyer : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public GargoyleDestroyer() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x2F3;
|
||||
BaseSoundID = 0x174;
|
||||
|
||||
[Constructible]
|
||||
public GargoyleDestroyer() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x2F3;
|
||||
BaseSoundID = 0x174;
|
||||
SetStr(760, 850);
|
||||
SetDex(102, 150);
|
||||
SetInt(152, 200);
|
||||
|
||||
SetStr( 760, 850 );
|
||||
SetDex( 102, 150 );
|
||||
SetInt( 152, 200 );
|
||||
SetHits(482, 485);
|
||||
|
||||
SetHits( 482, 485 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetResistance(ResistanceType.Physical, 40, 60);
|
||||
SetResistance(ResistanceType.Fire, 60, 70);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 15, 25);
|
||||
SetResistance(ResistanceType.Energy, 15, 25);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 60, 70 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 15, 25 );
|
||||
SetResistance( ResistanceType.Energy, 15, 25 );
|
||||
SetSkill(SkillName.Wrestling, 90.1, 100.0);
|
||||
SetSkill(SkillName.Tactics, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 120.4, 160.0);
|
||||
SetSkill(SkillName.Anatomy, 50.5, 100.0);
|
||||
SetSkill(SkillName.Swords, 90.1, 100.0);
|
||||
SetSkill(SkillName.Macing, 90.1, 100.0);
|
||||
SetSkill(SkillName.Fencing, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 90.1, 100.0);
|
||||
SetSkill(SkillName.EvalInt, 90.1, 100.0);
|
||||
SetSkill(SkillName.Meditation, 90.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 120.4, 160.0 );
|
||||
SetSkill( SkillName.Anatomy, 50.5, 100.0 );
|
||||
SetSkill( SkillName.Swords, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Macing, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Fencing, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 90.1, 100.0 );
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
|
||||
Fame = 10000;
|
||||
Karma = -10000;
|
||||
VirtualArmor = 50;
|
||||
|
||||
VirtualArmor = 50;
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new GargoylesPickaxe());
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new GargoylesPickaxe() );
|
||||
}
|
||||
public GargoyleDestroyer(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
AddLoot( LootPack.Gems, 2 );
|
||||
}
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override string DefaultName => "a gargoyle destroyer";
|
||||
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
public override bool BardImmune => !Core.AOS;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
|
||||
public override void OnDamagedBySpell( Mobile from )
|
||||
{
|
||||
if ( from != null && from.Alive && 0.4 > Utility.RandomDouble() )
|
||||
{
|
||||
ThrowHatchet( from );
|
||||
}
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.MedScrolls);
|
||||
AddLoot(LootPack.Gems, 2);
|
||||
}
|
||||
|
||||
public override void OnGotMeleeAttack( Mobile attacker )
|
||||
{
|
||||
base.OnGotMeleeAttack( attacker );
|
||||
public override void OnDamagedBySpell(Mobile from)
|
||||
{
|
||||
if (from != null && from.Alive && 0.4 > Utility.RandomDouble()) ThrowHatchet(from);
|
||||
}
|
||||
|
||||
if ( attacker != null && attacker.Alive && attacker.Weapon is BaseRanged && 0.4 > Utility.RandomDouble() )
|
||||
{
|
||||
ThrowHatchet( attacker );
|
||||
}
|
||||
}
|
||||
public override void OnGotMeleeAttack(Mobile attacker)
|
||||
{
|
||||
base.OnGotMeleeAttack(attacker);
|
||||
|
||||
public void ThrowHatchet( Mobile to )
|
||||
{
|
||||
int damage = 50;
|
||||
MovingEffect( to, 0xF43, 10, 0, false, false );
|
||||
DoHarmful( to );
|
||||
AOS.Damage( to, this, damage, 100, 0, 0, 0, 0 );
|
||||
}
|
||||
if (attacker != null && attacker.Alive && attacker.Weapon is BaseRanged && 0.4 > Utility.RandomDouble())
|
||||
ThrowHatchet(attacker);
|
||||
}
|
||||
|
||||
public GargoyleDestroyer( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public void ThrowHatchet(Mobile to)
|
||||
{
|
||||
int damage = 50;
|
||||
MovingEffect(to, 0xF43, 10, 0, false, false);
|
||||
DoHarmful(to);
|
||||
AOS.Damage(to, this, damage, 100, 0, 0, 0, 0);
|
||||
}
|
||||
|
||||
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,75 +2,79 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class GargoyleEnforcer : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
public override WeaponAbility GetWeaponAbility() => WeaponAbility.WhirlwindAttack;
|
||||
public class GargoyleEnforcer : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public GargoyleEnforcer() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 0x2F2;
|
||||
BaseSoundID = 0x174;
|
||||
|
||||
public override string DefaultName => "a gargoyle enforcer";
|
||||
SetStr(760, 850);
|
||||
SetDex(102, 150);
|
||||
SetInt(152, 200);
|
||||
|
||||
[Constructible]
|
||||
public GargoyleEnforcer() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 0x2F2;
|
||||
BaseSoundID = 0x174;
|
||||
SetHits(482, 485);
|
||||
|
||||
SetStr( 760, 850 );
|
||||
SetDex( 102, 150 );
|
||||
SetInt( 152, 200 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetHits( 482, 485 );
|
||||
SetResistance(ResistanceType.Physical, 40, 60);
|
||||
SetResistance(ResistanceType.Fire, 50, 60);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 25, 35);
|
||||
SetResistance(ResistanceType.Energy, 15, 25);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetSkill(SkillName.MagicResist, 120.1, 130.0);
|
||||
SetSkill(SkillName.Tactics, 70.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 90.0);
|
||||
SetSkill(SkillName.Swords, 80.1, 90.0);
|
||||
SetSkill(SkillName.Anatomy, 70.1, 80.0);
|
||||
SetSkill(SkillName.Magery, 80.1, 90.0);
|
||||
SetSkill(SkillName.EvalInt, 70.3, 100.0);
|
||||
SetSkill(SkillName.Meditation, 70.3, 100.0);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 50, 60 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 25, 35 );
|
||||
SetResistance( ResistanceType.Energy, 15, 25 );
|
||||
Fame = 5000;
|
||||
Karma = -5000;
|
||||
|
||||
SetSkill( SkillName.MagicResist, 120.1, 130.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Swords, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Anatomy, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.EvalInt, 70.3, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 70.3, 100.0 );
|
||||
VirtualArmor = 50;
|
||||
|
||||
Fame = 5000;
|
||||
Karma = -5000;
|
||||
if (0.2 > Utility.RandomDouble())
|
||||
PackItem(new GargoylesPickaxe());
|
||||
}
|
||||
|
||||
VirtualArmor = 50;
|
||||
public GargoyleEnforcer(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
if ( 0.2 > Utility.RandomDouble() )
|
||||
PackItem( new GargoylesPickaxe() );
|
||||
}
|
||||
public override string CorpseName => "a gargoyle corpse";
|
||||
|
||||
public override bool CanFly => true;
|
||||
public override string DefaultName => "a gargoyle enforcer";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
}
|
||||
public override bool CanFly => true;
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
public GargoyleEnforcer( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override WeaponAbility GetWeaponAbility()
|
||||
{
|
||||
return WeaponAbility.WhirlwindAttack;
|
||||
}
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.MedScrolls);
|
||||
}
|
||||
|
||||
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,70 +2,70 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Gazer : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a gazer corpse";
|
||||
public override string DefaultName => "a gazer";
|
||||
public class Gazer : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Gazer() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 22;
|
||||
BaseSoundID = 377;
|
||||
|
||||
[Constructible]
|
||||
public Gazer () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 22;
|
||||
BaseSoundID = 377;
|
||||
SetStr(96, 125);
|
||||
SetDex(86, 105);
|
||||
SetInt(141, 165);
|
||||
|
||||
SetStr( 96, 125 );
|
||||
SetDex( 86, 105 );
|
||||
SetInt( 141, 165 );
|
||||
SetHits(58, 75);
|
||||
|
||||
SetHits( 58, 75 );
|
||||
SetDamage(5, 10);
|
||||
|
||||
SetDamage( 5, 10 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 35, 40);
|
||||
SetResistance(ResistanceType.Fire, 40, 50);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
SetResistance(ResistanceType.Energy, 20, 30);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 40, 50 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 20, 30 );
|
||||
SetSkill(SkillName.EvalInt, 50.1, 65.0);
|
||||
SetSkill(SkillName.Magery, 50.1, 65.0);
|
||||
SetSkill(SkillName.MagicResist, 60.1, 75.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 70.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 50.1, 65.0 );
|
||||
SetSkill( SkillName.Magery, 50.1, 65.0 );
|
||||
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 70.0 );
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
|
||||
Fame = 3500;
|
||||
Karma = -3500;
|
||||
VirtualArmor = 36;
|
||||
|
||||
VirtualArmor = 36;
|
||||
PackItem(new Nightshade(4));
|
||||
}
|
||||
|
||||
PackItem( new Nightshade( 4 ) );
|
||||
}
|
||||
public Gazer(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "a gazer corpse";
|
||||
public override string DefaultName => "a gazer";
|
||||
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
public Gazer( 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,91 +2,89 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class GolemController : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a golem controller corpse";
|
||||
[Constructible]
|
||||
public GolemController() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "golem controller" );
|
||||
Title = "the controller";
|
||||
public class GolemController : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public GolemController() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("golem controller");
|
||||
Title = "the controller";
|
||||
|
||||
Body = 400;
|
||||
Hue = 0x455;
|
||||
Body = 400;
|
||||
Hue = 0x455;
|
||||
|
||||
AddArcane( new Robe() );
|
||||
AddArcane( new ThighBoots() );
|
||||
AddArcane( new LeatherGloves() );
|
||||
AddArcane( new Cloak() );
|
||||
AddArcane(new Robe());
|
||||
AddArcane(new ThighBoots());
|
||||
AddArcane(new LeatherGloves());
|
||||
AddArcane(new Cloak());
|
||||
|
||||
SetStr( 126, 150 );
|
||||
SetDex( 96, 120 );
|
||||
SetInt( 151, 175 );
|
||||
SetStr(126, 150);
|
||||
SetDex(96, 120);
|
||||
SetInt(151, 175);
|
||||
|
||||
SetHits( 76, 90 );
|
||||
SetHits(76, 90);
|
||||
|
||||
SetDamage( 6, 12 );
|
||||
SetDamage(6, 12);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 25, 35 );
|
||||
SetResistance( ResistanceType.Cold, 35, 45 );
|
||||
SetResistance( ResistanceType.Poison, 5, 15 );
|
||||
SetResistance( ResistanceType.Energy, 15, 25 );
|
||||
SetResistance(ResistanceType.Physical, 30, 40);
|
||||
SetResistance(ResistanceType.Fire, 25, 35);
|
||||
SetResistance(ResistanceType.Cold, 35, 45);
|
||||
SetResistance(ResistanceType.Poison, 5, 15);
|
||||
SetResistance(ResistanceType.Energy, 15, 25);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 95.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 95.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 102.5, 125.0 );
|
||||
SetSkill( SkillName.Tactics, 65.0, 87.5 );
|
||||
SetSkill( SkillName.Wrestling, 65.0, 87.5 );
|
||||
SetSkill(SkillName.EvalInt, 95.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 95.1, 100.0);
|
||||
SetSkill(SkillName.Meditation, 95.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 102.5, 125.0);
|
||||
SetSkill(SkillName.Tactics, 65.0, 87.5);
|
||||
SetSkill(SkillName.Wrestling, 65.0, 87.5);
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
VirtualArmor = 16;
|
||||
VirtualArmor = 16;
|
||||
|
||||
if ( 0.7 > Utility.RandomDouble() )
|
||||
PackItem( new ArcaneGem() );
|
||||
}
|
||||
if (0.7 > Utility.RandomDouble())
|
||||
PackItem(new ArcaneGem());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
}
|
||||
public GolemController(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public void AddArcane( Item item )
|
||||
{
|
||||
if ( item is IArcaneEquip eq )
|
||||
{
|
||||
eq.CurArcaneCharges = eq.MaxArcaneCharges = 20;
|
||||
}
|
||||
public override string CorpseName => "a golem controller corpse";
|
||||
|
||||
item.Hue = ArcaneGem.DefaultArcaneHue;
|
||||
item.LootType = LootType.Newbied;
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
public override bool AlwaysMurderer => true;
|
||||
|
||||
AddItem( item );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
}
|
||||
|
||||
public override bool ClickTitle => false;
|
||||
public override bool ShowFameTitle => false;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public void AddArcane(Item item)
|
||||
{
|
||||
if (item is IArcaneEquip eq) eq.CurArcaneCharges = eq.MaxArcaneCharges = 20;
|
||||
|
||||
public GolemController( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
item.Hue = ArcaneGem.DefaultArcaneHue;
|
||||
item.LootType = LootType.Newbied;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
AddItem(item);
|
||||
}
|
||||
|
||||
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 IceFiend : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an ice fiend corpse";
|
||||
public override string DefaultName => "an ice fiend";
|
||||
public class IceFiend : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public IceFiend() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 43;
|
||||
BaseSoundID = 357;
|
||||
|
||||
[Constructible]
|
||||
public IceFiend () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 43;
|
||||
BaseSoundID = 357;
|
||||
SetStr(376, 405);
|
||||
SetDex(176, 195);
|
||||
SetInt(201, 225);
|
||||
|
||||
SetStr( 376, 405 );
|
||||
SetDex( 176, 195 );
|
||||
SetInt( 201, 225 );
|
||||
SetHits(226, 243);
|
||||
|
||||
SetHits( 226, 243 );
|
||||
SetDamage(8, 19);
|
||||
|
||||
SetDamage( 8, 19 );
|
||||
SetSkill(SkillName.EvalInt, 80.1, 90.0);
|
||||
SetSkill(SkillName.Magery, 80.1, 90.0);
|
||||
SetSkill(SkillName.MagicResist, 75.1, 85.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 90.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 100.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Magery, 80.1, 90.0 );
|
||||
SetSkill( SkillName.MagicResist, 75.1, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 100.0 );
|
||||
SetResistance(ResistanceType.Physical, 55, 65);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 60, 70);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 55, 65 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 60, 70 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
VirtualArmor = 60;
|
||||
}
|
||||
|
||||
VirtualArmor = 60;
|
||||
}
|
||||
public IceFiend(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public override string CorpseName => "an ice fiend corpse";
|
||||
public override string DefaultName => "an ice fiend";
|
||||
|
||||
public override int TreasureMapLevel => 4;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
public override int TreasureMapLevel => 4;
|
||||
public override int Meat => 1;
|
||||
public override bool CanFly => true;
|
||||
|
||||
public IceFiend( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.MedScrolls, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,77 +1,77 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Imp : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "an imp corpse";
|
||||
public override string DefaultName => "an imp";
|
||||
public class Imp : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Imp() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 74;
|
||||
BaseSoundID = 422;
|
||||
|
||||
[Constructible]
|
||||
public Imp() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 74;
|
||||
BaseSoundID = 422;
|
||||
SetStr(91, 115);
|
||||
SetDex(61, 80);
|
||||
SetInt(86, 105);
|
||||
|
||||
SetStr( 91, 115 );
|
||||
SetDex( 61, 80 );
|
||||
SetInt( 86, 105 );
|
||||
SetHits(55, 70);
|
||||
|
||||
SetHits( 55, 70 );
|
||||
SetDamage(10, 14);
|
||||
|
||||
SetDamage( 10, 14 );
|
||||
SetDamageType(ResistanceType.Physical, 0);
|
||||
SetDamageType(ResistanceType.Fire, 50);
|
||||
SetDamageType(ResistanceType.Poison, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 0 );
|
||||
SetDamageType( ResistanceType.Fire, 50 );
|
||||
SetDamageType( ResistanceType.Poison, 50 );
|
||||
SetResistance(ResistanceType.Physical, 25, 35);
|
||||
SetResistance(ResistanceType.Fire, 40, 50);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 35 );
|
||||
SetResistance( ResistanceType.Fire, 40, 50 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.EvalInt, 20.1, 30.0);
|
||||
SetSkill(SkillName.Magery, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 30.1, 50.0);
|
||||
SetSkill(SkillName.Tactics, 42.1, 50.0);
|
||||
SetSkill(SkillName.Wrestling, 40.1, 44.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 20.1, 30.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 30.1, 50.0 );
|
||||
SetSkill( SkillName.Tactics, 42.1, 50.0 );
|
||||
SetSkill( SkillName.Wrestling, 40.1, 44.0 );
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
|
||||
Fame = 2500;
|
||||
Karma = -2500;
|
||||
VirtualArmor = 30;
|
||||
|
||||
VirtualArmor = 30;
|
||||
Tamable = true;
|
||||
ControlSlots = 2;
|
||||
MinTameSkill = 83.1;
|
||||
}
|
||||
|
||||
Tamable = true;
|
||||
ControlSlots = 2;
|
||||
MinTameSkill = 83.1;
|
||||
}
|
||||
public Imp(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public override string CorpseName => "an imp corpse";
|
||||
public override string DefaultName => "an imp";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Daemon;
|
||||
public override bool CanFly => true;
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 6;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override FoodType FavoriteFood => FoodType.Meat;
|
||||
public override PackInstinct PackInstinct => PackInstinct.Daemon;
|
||||
public override bool CanFly => true;
|
||||
|
||||
public Imp( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Meager);
|
||||
AddLoot(LootPack.MedScrolls, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,80 +2,80 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Lich : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a lich's corpse";
|
||||
public override string DefaultName => "a lich";
|
||||
public class Lich : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Lich() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 24;
|
||||
BaseSoundID = 0x3E9;
|
||||
|
||||
[Constructible]
|
||||
public Lich() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 24;
|
||||
BaseSoundID = 0x3E9;
|
||||
SetStr(171, 200);
|
||||
SetDex(126, 145);
|
||||
SetInt(276, 305);
|
||||
|
||||
SetStr( 171, 200 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 276, 305 );
|
||||
SetHits(103, 120);
|
||||
|
||||
SetHits( 103, 120 );
|
||||
SetDamage(24, 26);
|
||||
|
||||
SetDamage( 24, 26 );
|
||||
SetDamageType(ResistanceType.Physical, 10);
|
||||
SetDamageType(ResistanceType.Cold, 40);
|
||||
SetDamageType(ResistanceType.Energy, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 10 );
|
||||
SetDamageType( ResistanceType.Cold, 40 );
|
||||
SetDamageType( ResistanceType.Energy, 50 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 60 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 55, 65 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
SetResistance(ResistanceType.Physical, 40, 60);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 55, 65);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
|
||||
SetSkill( SkillName.Necromancy, 89, 99.1 );
|
||||
SetSkill( SkillName.SpiritSpeak, 90.0, 99.0 );
|
||||
SetSkill(SkillName.Necromancy, 89, 99.1);
|
||||
SetSkill(SkillName.SpiritSpeak, 90.0, 99.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 100.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Meditation, 85.1, 95.0 );
|
||||
SetSkill( SkillName.MagicResist, 80.1, 100.0 );
|
||||
SetSkill( SkillName.Tactics, 70.1, 90.0 );
|
||||
SetSkill(SkillName.EvalInt, 100.0);
|
||||
SetSkill(SkillName.Magery, 70.1, 80.0);
|
||||
SetSkill(SkillName.Meditation, 85.1, 95.0);
|
||||
SetSkill(SkillName.MagicResist, 80.1, 100.0);
|
||||
SetSkill(SkillName.Tactics, 70.1, 90.0);
|
||||
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
Fame = 8000;
|
||||
Karma = -8000;
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 17, 24 );
|
||||
}
|
||||
VirtualArmor = 50;
|
||||
PackItem(new GnarledStaff());
|
||||
PackNecroReg(17, 24);
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public Lich(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override string CorpseName => "a lich's corpse";
|
||||
public override string DefaultName => "a lich";
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 3;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public Lich( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 3;
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.MedScrolls, 2);
|
||||
}
|
||||
|
||||
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,79 +2,79 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class LichLord : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a lich's corpse";
|
||||
public override string DefaultName => "a lich lord";
|
||||
public class LichLord : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public LichLord() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 79;
|
||||
BaseSoundID = 412;
|
||||
|
||||
[Constructible]
|
||||
public LichLord() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 79;
|
||||
BaseSoundID = 412;
|
||||
SetStr(416, 505);
|
||||
SetDex(146, 165);
|
||||
SetInt(566, 655);
|
||||
|
||||
SetStr( 416, 505 );
|
||||
SetDex( 146, 165 );
|
||||
SetInt( 566, 655 );
|
||||
SetHits(250, 303);
|
||||
|
||||
SetHits( 250, 303 );
|
||||
SetDamage(11, 13);
|
||||
|
||||
SetDamage( 11, 13 );
|
||||
SetDamageType(ResistanceType.Physical, 0);
|
||||
SetDamageType(ResistanceType.Cold, 60);
|
||||
SetDamageType(ResistanceType.Energy, 40);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 0 );
|
||||
SetDamageType( ResistanceType.Cold, 60 );
|
||||
SetDamageType( ResistanceType.Energy, 40 );
|
||||
SetResistance(ResistanceType.Physical, 40, 50);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 50 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
SetSkill(SkillName.Necromancy, 90, 110.0);
|
||||
SetSkill(SkillName.SpiritSpeak, 90.0, 110.0);
|
||||
|
||||
SetSkill( SkillName.Necromancy, 90, 110.0 );
|
||||
SetSkill( SkillName.SpiritSpeak, 90.0, 110.0 );
|
||||
SetSkill(SkillName.EvalInt, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 150.5, 200.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 70.0);
|
||||
SetSkill(SkillName.Wrestling, 60.1, 80.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 150.5, 200.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 70.0 );
|
||||
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
|
||||
Fame = 18000;
|
||||
Karma = -18000;
|
||||
VirtualArmor = 50;
|
||||
PackItem(new GnarledStaff());
|
||||
PackNecroReg(12, 40);
|
||||
}
|
||||
|
||||
VirtualArmor = 50;
|
||||
PackItem( new GnarledStaff() );
|
||||
PackNecroReg( 12, 40 );
|
||||
}
|
||||
public LichLord(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override string CorpseName => "a lich's corpse";
|
||||
public override string DefaultName => "a lich lord";
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 4;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override bool BleedImmune => true;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override int TreasureMapLevel => 4;
|
||||
|
||||
public LichLord( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.MedScrolls, 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,104 +1,104 @@
|
|||
using Server.Misc;
|
||||
using Server.Items;
|
||||
using Server.Misc;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class OrcishMage : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a glowing orc corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
public class OrcishMage : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public OrcishMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 140;
|
||||
BaseSoundID = 0x45A;
|
||||
|
||||
public override string DefaultName => "an orcish mage";
|
||||
SetStr(116, 150);
|
||||
SetDex(91, 115);
|
||||
SetInt(161, 185);
|
||||
|
||||
[Constructible]
|
||||
public OrcishMage () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 140;
|
||||
BaseSoundID = 0x45A;
|
||||
SetHits(70, 90);
|
||||
|
||||
SetStr( 116, 150 );
|
||||
SetDex( 91, 115 );
|
||||
SetInt( 161, 185 );
|
||||
SetDamage(4, 14);
|
||||
|
||||
SetHits( 70, 90 );
|
||||
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.EvalInt, 60.1, 72.5);
|
||||
SetSkill(SkillName.Magery, 60.1, 72.5);
|
||||
SetSkill(SkillName.MagicResist, 60.1, 75.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 65.0);
|
||||
SetSkill(SkillName.Wrestling, 40.1, 50.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 = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
SetSkill( SkillName.EvalInt, 60.1, 72.5 );
|
||||
SetSkill( SkillName.Magery, 60.1, 72.5 );
|
||||
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 65.0 );
|
||||
SetSkill( SkillName.Wrestling, 40.1, 50.0 );
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
VirtualArmor = 30;
|
||||
VirtualArmor = 30;
|
||||
|
||||
|
||||
PackReg( 6 );
|
||||
PackReg(6);
|
||||
|
||||
if ( 0.05 > Utility.RandomDouble() )
|
||||
PackItem( new OrcishKinMask() );
|
||||
}
|
||||
if (0.05 > Utility.RandomDouble())
|
||||
PackItem(new OrcishKinMask());
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.LowScrolls );
|
||||
}
|
||||
public OrcishMage(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
public override string CorpseName => "a glowing orc corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Orc;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
public override string DefaultName => "an orcish mage";
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.Player && m.FindItemOnLayer( Layer.Helm ) is OrcishKinMask )
|
||||
return false;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int TreasureMapLevel => 1;
|
||||
public override int Meat => 1;
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.LowScrolls);
|
||||
}
|
||||
|
||||
Item item = aggressor.FindItemOnLayer( Layer.Helm );
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.Player && m.FindItemOnLayer(Layer.Helm) is OrcishKinMask)
|
||||
return false;
|
||||
|
||||
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 );
|
||||
}
|
||||
}
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
public OrcishMage( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
public override void Serialize( GenericWriter writer )
|
||||
{
|
||||
base.Serialize( writer );
|
||||
writer.Write( (int) 0 );
|
||||
}
|
||||
Item item = aggressor.FindItemOnLayer(Layer.Helm);
|
||||
|
||||
public override void Deserialize( GenericReader reader )
|
||||
{
|
||||
base.Deserialize( reader );
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
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(0);
|
||||
}
|
||||
|
||||
public override void Deserialize(GenericReader reader)
|
||||
{
|
||||
base.Deserialize(reader);
|
||||
int version = reader.ReadInt();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,82 +2,82 @@ using Server.Misc;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class RatmanMage : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a glowing ratman corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Ratman;
|
||||
public class RatmanMage : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public RatmanMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("ratman");
|
||||
Body = 0x8F;
|
||||
BaseSoundID = 437;
|
||||
|
||||
[Constructible]
|
||||
public RatmanMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "ratman" );
|
||||
Body = 0x8F;
|
||||
BaseSoundID = 437;
|
||||
SetStr(146, 180);
|
||||
SetDex(101, 130);
|
||||
SetInt(186, 210);
|
||||
|
||||
SetStr( 146, 180 );
|
||||
SetDex( 101, 130 );
|
||||
SetInt( 186, 210 );
|
||||
SetHits(88, 108);
|
||||
|
||||
SetHits( 88, 108 );
|
||||
SetDamage(7, 14);
|
||||
|
||||
SetDamage( 7, 14 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 40, 45);
|
||||
SetResistance(ResistanceType.Fire, 10, 20);
|
||||
SetResistance(ResistanceType.Cold, 10, 20);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
SetResistance(ResistanceType.Energy, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 40, 45 );
|
||||
SetResistance( ResistanceType.Fire, 10, 20 );
|
||||
SetResistance( ResistanceType.Cold, 10, 20 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetResistance( ResistanceType.Energy, 10, 20 );
|
||||
SetSkill(SkillName.EvalInt, 70.1, 80.0);
|
||||
SetSkill(SkillName.Magery, 70.1, 80.0);
|
||||
SetSkill(SkillName.MagicResist, 65.1, 90.0);
|
||||
SetSkill(SkillName.Tactics, 50.1, 75.0);
|
||||
SetSkill(SkillName.Wrestling, 50.1, 75.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 70.1, 80.0 );
|
||||
SetSkill( SkillName.Magery, 70.1, 80.0 );
|
||||
SetSkill( SkillName.MagicResist, 65.1, 90.0 );
|
||||
SetSkill( SkillName.Tactics, 50.1, 75.0 );
|
||||
SetSkill( SkillName.Wrestling, 50.1, 75.0 );
|
||||
Fame = 7500;
|
||||
Karma = -7500;
|
||||
|
||||
Fame = 7500;
|
||||
Karma = -7500;
|
||||
VirtualArmor = 44;
|
||||
|
||||
VirtualArmor = 44;
|
||||
PackReg(6);
|
||||
|
||||
PackReg( 6 );
|
||||
if (0.02 > Utility.RandomDouble())
|
||||
PackStatue();
|
||||
}
|
||||
|
||||
if ( 0.02 > Utility.RandomDouble() )
|
||||
PackStatue();
|
||||
}
|
||||
public RatmanMage(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Rich );
|
||||
AddLoot( LootPack.LowScrolls );
|
||||
}
|
||||
public override string CorpseName => "a glowing ratman corpse";
|
||||
public override InhumanSpeech SpeechType => InhumanSpeech.Ratman;
|
||||
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 8;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
public override bool CanRummageCorpses => true;
|
||||
public override int Meat => 1;
|
||||
public override int Hides => 8;
|
||||
public override HideType HideType => HideType.Spined;
|
||||
|
||||
public RatmanMage( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Rich);
|
||||
AddLoot(LootPack.LowScrolls);
|
||||
}
|
||||
|
||||
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 = 0x8F;
|
||||
Hue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Body == 42)
|
||||
{
|
||||
Body = 0x8F;
|
||||
Hue = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -5,280 +5,277 @@ using Server.Spells;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SavageShaman : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a savage corpse";
|
||||
[Constructible]
|
||||
public SavageShaman() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Name = NameList.RandomName( "savage shaman" );
|
||||
|
||||
if ( Utility.RandomBool() )
|
||||
Body = 184;
|
||||
else
|
||||
Body = 183;
|
||||
|
||||
SetStr( 126, 145 );
|
||||
SetDex( 91, 110 );
|
||||
SetInt( 161, 185 );
|
||||
|
||||
SetDamage( 4, 10 );
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
|
||||
SetResistance( ResistanceType.Physical, 30, 40 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 20, 30 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 40, 50 );
|
||||
|
||||
SetSkill( SkillName.EvalInt, 77.5, 100.0 );
|
||||
SetSkill( SkillName.Fencing, 62.5, 85.0 );
|
||||
SetSkill( SkillName.Macing, 62.5, 85.0 );
|
||||
SetSkill( SkillName.Magery, 72.5, 95.0 );
|
||||
SetSkill( SkillName.Meditation, 77.5, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 77.5, 100.0 );
|
||||
SetSkill( SkillName.Swords, 62.5, 85.0 );
|
||||
SetSkill( SkillName.Tactics, 62.5, 85.0 );
|
||||
SetSkill( SkillName.Wrestling, 62.5, 85.0 );
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
PackReg( 10, 15 );
|
||||
PackItem( new Bandage( Utility.RandomMinMax( 1, 15 ) ) );
|
||||
|
||||
if ( 0.1 > Utility.RandomDouble() )
|
||||
PackItem( new TribalBerry() );
|
||||
|
||||
AddItem( new BoneArms() );
|
||||
AddItem( new BoneLegs() );
|
||||
AddItem( new DeerMask() );
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
|
||||
}
|
||||
|
||||
public override int Meat => 1;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override bool IsEnemy( Mobile m )
|
||||
{
|
||||
if ( m.BodyMod == 183 || m.BodyMod == 184 )
|
||||
return false;
|
||||
|
||||
return base.IsEnemy( m );
|
||||
}
|
||||
|
||||
public override void AggressiveAction( Mobile aggressor, bool criminal )
|
||||
{
|
||||
base.AggressiveAction( aggressor, criminal );
|
||||
|
||||
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!
|
||||
|
||||
if ( aggressor is PlayerMobile mobile )
|
||||
mobile.SavagePaintExpiration = TimeSpan.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
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 class SavageShaman : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public SavageShaman() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Name = NameList.RandomName("savage shaman");
|
||||
|
||||
if (Utility.RandomBool())
|
||||
Body = 184;
|
||||
else
|
||||
Body = 183;
|
||||
|
||||
SetStr(126, 145);
|
||||
SetDex(91, 110);
|
||||
SetInt(161, 185);
|
||||
|
||||
SetDamage(4, 10);
|
||||
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetResistance(ResistanceType.Physical, 30, 40);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 20, 30);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 40, 50);
|
||||
|
||||
SetSkill(SkillName.EvalInt, 77.5, 100.0);
|
||||
SetSkill(SkillName.Fencing, 62.5, 85.0);
|
||||
SetSkill(SkillName.Macing, 62.5, 85.0);
|
||||
SetSkill(SkillName.Magery, 72.5, 95.0);
|
||||
SetSkill(SkillName.Meditation, 77.5, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 77.5, 100.0);
|
||||
SetSkill(SkillName.Swords, 62.5, 85.0);
|
||||
SetSkill(SkillName.Tactics, 62.5, 85.0);
|
||||
SetSkill(SkillName.Wrestling, 62.5, 85.0);
|
||||
|
||||
Fame = 1000;
|
||||
Karma = -1000;
|
||||
|
||||
PackReg(10, 15);
|
||||
PackItem(new Bandage(Utility.RandomMinMax(1, 15)));
|
||||
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
PackItem(new TribalBerry());
|
||||
|
||||
AddItem(new BoneArms());
|
||||
AddItem(new BoneLegs());
|
||||
AddItem(new DeerMask());
|
||||
}
|
||||
|
||||
public SavageShaman(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override string CorpseName => "a savage corpse";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override bool AlwaysMurderer => true;
|
||||
public override bool ShowFameTitle => false;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.SavagesAndOrcs;
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
}
|
||||
|
||||
public override bool IsEnemy(Mobile m)
|
||||
{
|
||||
if (m.BodyMod == 183 || m.BodyMod == 184)
|
||||
return false;
|
||||
|
||||
return base.IsEnemy(m);
|
||||
}
|
||||
|
||||
public override void OnGotMeleeAttack( Mobile attacker )
|
||||
{
|
||||
base.OnGotMeleeAttack( attacker );
|
||||
public override void AggressiveAction(Mobile aggressor, bool criminal)
|
||||
{
|
||||
base.AggressiveAction(aggressor, criminal);
|
||||
|
||||
if ( 0.1 > Utility.RandomDouble() )
|
||||
BeginSavageDance();
|
||||
}
|
||||
|
||||
public void BeginSavageDance()
|
||||
{
|
||||
if ( Map == null )
|
||||
return;
|
||||
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!
|
||||
|
||||
if (aggressor is PlayerMobile mobile)
|
||||
mobile.SavagePaintExpiration = TimeSpan.Zero;
|
||||
}
|
||||
}
|
||||
|
||||
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;
|
||||
}
|
||||
|
||||
ArrayList list = new ArrayList();
|
||||
public override void OnGotMeleeAttack(Mobile attacker)
|
||||
{
|
||||
base.OnGotMeleeAttack(attacker);
|
||||
|
||||
foreach ( Mobile m in GetMobilesInRange( 8 ) )
|
||||
{
|
||||
if ( m != this && m is SavageShaman )
|
||||
list.Add( m );
|
||||
}
|
||||
if (0.1 > Utility.RandomDouble())
|
||||
BeginSavageDance();
|
||||
}
|
||||
|
||||
Animate( 111, 5, 1, true, false, 0 ); // Do a little dance...
|
||||
public void BeginSavageDance()
|
||||
{
|
||||
if (Map == null)
|
||||
return;
|
||||
|
||||
if ( AIObject != null )
|
||||
AIObject.NextMove = Core.TickCount + 1000;
|
||||
ArrayList list = new ArrayList();
|
||||
|
||||
if ( list.Count >= 3 )
|
||||
{
|
||||
for ( int i = 0; i < list.Count; ++i )
|
||||
{
|
||||
SavageShaman dancer = (SavageShaman)list[i];
|
||||
foreach (Mobile m in GetMobilesInRange(8))
|
||||
if (m != this && m is SavageShaman)
|
||||
list.Add(m);
|
||||
|
||||
Animate(111, 5, 1, true, false, 0); // Do a little dance...
|
||||
|
||||
if (AIObject != null)
|
||||
AIObject.NextMove = Core.TickCount + 1000;
|
||||
|
||||
dancer.Animate( 111, 5, 1, true, false, 0 ); // Get down tonight...
|
||||
if (list.Count >= 3)
|
||||
{
|
||||
for (int i = 0; i < list.Count; ++i)
|
||||
{
|
||||
SavageShaman dancer = (SavageShaman)list[i];
|
||||
|
||||
if ( dancer.AIObject != null )
|
||||
dancer.AIObject.NextMove = Core.TickCount + 1000;
|
||||
}
|
||||
dancer.Animate(111, 5, 1, true, false, 0); // Get down tonight...
|
||||
|
||||
Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), EndSavageDance );
|
||||
}
|
||||
}
|
||||
if (dancer.AIObject != null)
|
||||
dancer.AIObject.NextMove = Core.TickCount + 1000;
|
||||
}
|
||||
|
||||
public void EndSavageDance()
|
||||
{
|
||||
if ( Deleted )
|
||||
return;
|
||||
Timer.DelayCall(TimeSpan.FromSeconds(1.0), EndSavageDance);
|
||||
}
|
||||
}
|
||||
|
||||
ArrayList list = new ArrayList();
|
||||
public void EndSavageDance()
|
||||
{
|
||||
if (Deleted)
|
||||
return;
|
||||
|
||||
foreach ( Mobile m in GetMobilesInRange( 8 ) )
|
||||
list.Add( m );
|
||||
ArrayList list = new ArrayList();
|
||||
|
||||
if ( list.Count > 0 )
|
||||
{
|
||||
switch ( Utility.Random( 3 ) )
|
||||
{
|
||||
case 0: /* greater heal */
|
||||
{
|
||||
foreach ( Mobile m in list )
|
||||
{
|
||||
bool isFriendly = ( m is Savage || m is SavageRider || m is SavageShaman || m is SavageRidgeback );
|
||||
foreach (Mobile m in GetMobilesInRange(8))
|
||||
list.Add(m);
|
||||
|
||||
if ( !isFriendly )
|
||||
continue;
|
||||
if (list.Count > 0)
|
||||
switch (Utility.Random(3))
|
||||
{
|
||||
case 0: /* greater heal */
|
||||
{
|
||||
foreach (Mobile m in list)
|
||||
{
|
||||
bool isFriendly = m is Savage || m is SavageRider || m is SavageShaman || m is SavageRidgeback;
|
||||
|
||||
if ( m.Poisoned || MortalStrike.IsWounded( m ) || !CanBeBeneficial( m ) )
|
||||
continue;
|
||||
if (!isFriendly)
|
||||
continue;
|
||||
|
||||
DoBeneficial( m );
|
||||
if (m.Poisoned || MortalStrike.IsWounded(m) || !CanBeBeneficial(m))
|
||||
continue;
|
||||
|
||||
// Algorithm: (40% of magery) + (1-10)
|
||||
DoBeneficial(m);
|
||||
|
||||
int toHeal = (int)(Skills[SkillName.Magery].Value * 0.4);
|
||||
toHeal += Utility.Random( 1, 10 );
|
||||
// Algorithm: (40% of magery) + (1-10)
|
||||
|
||||
m.Heal( toHeal, this );
|
||||
int toHeal = (int)(Skills[SkillName.Magery].Value * 0.4);
|
||||
toHeal += Utility.Random(1, 10);
|
||||
|
||||
m.FixedParticles( 0x376A, 9, 32, 5030, EffectLayer.Waist );
|
||||
m.PlaySound( 0x202 );
|
||||
}
|
||||
m.Heal(toHeal, this);
|
||||
|
||||
break;
|
||||
}
|
||||
case 1: /* lightning */
|
||||
{
|
||||
foreach ( Mobile m in list )
|
||||
{
|
||||
bool isFriendly = ( m is Savage || m is SavageRider || m is SavageShaman || m is SavageRidgeback );
|
||||
m.FixedParticles(0x376A, 9, 32, 5030, EffectLayer.Waist);
|
||||
m.PlaySound(0x202);
|
||||
}
|
||||
|
||||
if ( isFriendly )
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
case 1: /* lightning */
|
||||
{
|
||||
foreach (Mobile m in list)
|
||||
{
|
||||
bool isFriendly = m is Savage || m is SavageRider || m is SavageShaman || m is SavageRidgeback;
|
||||
|
||||
if ( !CanBeHarmful( m ) )
|
||||
continue;
|
||||
if (isFriendly)
|
||||
continue;
|
||||
|
||||
DoHarmful( m );
|
||||
if (!CanBeHarmful(m))
|
||||
continue;
|
||||
|
||||
double damage;
|
||||
DoHarmful(m);
|
||||
|
||||
if ( Core.AOS )
|
||||
{
|
||||
int baseDamage = 6 + (int)(Skills[SkillName.EvalInt].Value / 5.0);
|
||||
double damage;
|
||||
|
||||
damage = Utility.RandomMinMax( baseDamage, baseDamage + 3 );
|
||||
}
|
||||
else
|
||||
{
|
||||
damage = Utility.Random( 12, 9 );
|
||||
}
|
||||
if (Core.AOS)
|
||||
{
|
||||
int baseDamage = 6 + (int)(Skills[SkillName.EvalInt].Value / 5.0);
|
||||
|
||||
m.BoltEffect( 0 );
|
||||
damage = Utility.RandomMinMax(baseDamage, baseDamage + 3);
|
||||
}
|
||||
else
|
||||
{
|
||||
damage = Utility.Random(12, 9);
|
||||
}
|
||||
|
||||
SpellHelper.Damage( TimeSpan.FromSeconds( 0.25 ), m, this, damage, 0, 0, 0, 0, 100 );
|
||||
}
|
||||
m.BoltEffect(0);
|
||||
|
||||
break;
|
||||
}
|
||||
case 2: /* poison */
|
||||
{
|
||||
foreach ( Mobile m in list )
|
||||
{
|
||||
bool isFriendly = ( m is Savage || m is SavageRider || m is SavageShaman || m is SavageRidgeback );
|
||||
SpellHelper.Damage(TimeSpan.FromSeconds(0.25), m, this, damage, 0, 0, 0, 0, 100);
|
||||
}
|
||||
|
||||
if ( isFriendly )
|
||||
continue;
|
||||
break;
|
||||
}
|
||||
case 2: /* poison */
|
||||
{
|
||||
foreach (Mobile m in list)
|
||||
{
|
||||
bool isFriendly = m is Savage || m is SavageRider || m is SavageShaman || m is SavageRidgeback;
|
||||
|
||||
if ( !CanBeHarmful( m ) )
|
||||
continue;
|
||||
if (isFriendly)
|
||||
continue;
|
||||
|
||||
DoHarmful( m );
|
||||
if (!CanBeHarmful(m))
|
||||
continue;
|
||||
|
||||
m.Spell?.OnCasterHurt();
|
||||
DoHarmful(m);
|
||||
|
||||
m.Paralyzed = false;
|
||||
m.Spell?.OnCasterHurt();
|
||||
|
||||
double total = Skills[SkillName.Magery].Value + Skills[SkillName.Poisoning].Value;
|
||||
m.Paralyzed = false;
|
||||
|
||||
double dist = GetDistanceToSqrt( m );
|
||||
double total = Skills[SkillName.Magery].Value + Skills[SkillName.Poisoning].Value;
|
||||
|
||||
if ( dist >= 3.0 )
|
||||
total -= (dist - 3.0) * 10.0;
|
||||
double dist = GetDistanceToSqrt(m);
|
||||
|
||||
int level;
|
||||
if (dist >= 3.0)
|
||||
total -= (dist - 3.0) * 10.0;
|
||||
|
||||
if ( total >= 200.0 && Utility.Random( 1, 100 ) <= 10 )
|
||||
level = 3;
|
||||
else if ( total > 170.0 )
|
||||
level = 2;
|
||||
else if ( total > 130.0 )
|
||||
level = 1;
|
||||
else
|
||||
level = 0;
|
||||
int level;
|
||||
|
||||
m.ApplyPoison( this, Poison.GetPoison( level ) );
|
||||
if (total >= 200.0 && Utility.Random(1, 100) <= 10)
|
||||
level = 3;
|
||||
else if (total > 170.0)
|
||||
level = 2;
|
||||
else if (total > 130.0)
|
||||
level = 1;
|
||||
else
|
||||
level = 0;
|
||||
|
||||
m.FixedParticles( 0x374A, 10, 15, 5021, EffectLayer.Waist );
|
||||
m.PlaySound( 0x474 );
|
||||
}
|
||||
m.ApplyPoison(this, Poison.GetPoison(level));
|
||||
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
m.FixedParticles(0x374A, 10, 15, 5021, EffectLayer.Waist);
|
||||
m.PlaySound(0x474);
|
||||
}
|
||||
|
||||
public SavageShaman( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
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,71 +1,71 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Shade : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a shade";
|
||||
public class Shade : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Shade() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 26;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
[Constructible]
|
||||
public Shade() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 26;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 0x482;
|
||||
SetStr(76, 100);
|
||||
SetDex(76, 95);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(46, 60);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetDamage(7, 11);
|
||||
|
||||
SetDamage( 7, 11 );
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Cold, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
SetResistance(ResistanceType.Physical, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetSkill(SkillName.EvalInt, 55.1, 70.0);
|
||||
SetSkill(SkillName.Magery, 55.1, 70.0);
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 28;
|
||||
|
||||
VirtualArmor = 28;
|
||||
PackReg(10);
|
||||
}
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
public Shade(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a shade";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
|
||||
public Shade( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,77 +2,77 @@ using Server.Items;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class SkeletalMage : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a skeletal mage";
|
||||
public class SkeletalMage : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public SkeletalMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 148;
|
||||
BaseSoundID = 451;
|
||||
|
||||
[Constructible]
|
||||
public SkeletalMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 148;
|
||||
BaseSoundID = 451;
|
||||
SetStr(76, 100);
|
||||
SetDex(56, 75);
|
||||
SetInt(186, 210);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 56, 75 );
|
||||
SetInt( 186, 210 );
|
||||
SetHits(46, 60);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetDamage(3, 7);
|
||||
|
||||
SetDamage( 3, 7 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 35, 40);
|
||||
SetResistance(ResistanceType.Fire, 20, 30);
|
||||
SetResistance(ResistanceType.Cold, 50, 60);
|
||||
SetResistance(ResistanceType.Poison, 20, 30);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 40 );
|
||||
SetResistance( ResistanceType.Fire, 20, 30 );
|
||||
SetResistance( ResistanceType.Cold, 50, 60 );
|
||||
SetResistance( ResistanceType.Poison, 20, 30 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.EvalInt, 60.1, 70.0);
|
||||
SetSkill(SkillName.Magery, 60.1, 70.0);
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
SetSkill(SkillName.Necromancy, 89, 99.1);
|
||||
SetSkill(SkillName.SpiritSpeak, 90.0, 99.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 60.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 60.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
SetSkill( SkillName.Necromancy, 89, 99.1 );
|
||||
SetSkill( SkillName.SpiritSpeak, 90.0, 99.0 );
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
|
||||
Fame = 3000;
|
||||
Karma = -3000;
|
||||
VirtualArmor = 38;
|
||||
PackReg(3);
|
||||
PackNecroReg(3, 10);
|
||||
PackItem(new Bone());
|
||||
}
|
||||
|
||||
VirtualArmor = 38;
|
||||
PackReg( 3 );
|
||||
PackNecroReg( 3, 10 );
|
||||
PackItem( new Bone() );
|
||||
}
|
||||
public SkeletalMage(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.LowScrolls );
|
||||
AddLoot( LootPack.Potions );
|
||||
}
|
||||
public override string CorpseName => "a skeletal corpse";
|
||||
public override string DefaultName => "a skeletal mage";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
|
||||
public SkeletalMage( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.LowScrolls);
|
||||
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,71 +1,71 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Spectre : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a spectre";
|
||||
public class Spectre : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Spectre() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 26;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
[Constructible]
|
||||
public Spectre() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 26;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 0x482;
|
||||
SetStr(76, 100);
|
||||
SetDex(76, 95);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(46, 60);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetDamage(7, 11);
|
||||
|
||||
SetDamage( 7, 11 );
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Cold, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
SetResistance(ResistanceType.Physical, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetSkill(SkillName.EvalInt, 55.1, 70.0);
|
||||
SetSkill(SkillName.Magery, 55.1, 70.0);
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 28;
|
||||
|
||||
VirtualArmor = 28;
|
||||
PackReg(10);
|
||||
}
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
public Spectre(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a spectre";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
|
||||
public Spectre( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -2,117 +2,117 @@ using System.Collections;
|
|||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Succubus : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a succubus corpse";
|
||||
public override string DefaultName => "a succubus";
|
||||
public class Succubus : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Succubus() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 149;
|
||||
BaseSoundID = 0x4B0;
|
||||
|
||||
[Constructible]
|
||||
public Succubus () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 149;
|
||||
BaseSoundID = 0x4B0;
|
||||
SetStr(488, 620);
|
||||
SetDex(121, 170);
|
||||
SetInt(498, 657);
|
||||
|
||||
SetStr( 488, 620 );
|
||||
SetDex( 121, 170 );
|
||||
SetInt( 498, 657 );
|
||||
SetHits(312, 353);
|
||||
|
||||
SetHits( 312, 353 );
|
||||
SetDamage(18, 28);
|
||||
|
||||
SetDamage( 18, 28 );
|
||||
SetDamageType(ResistanceType.Physical, 75);
|
||||
SetDamageType(ResistanceType.Energy, 25);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 75 );
|
||||
SetDamageType( ResistanceType.Energy, 25 );
|
||||
SetResistance(ResistanceType.Physical, 80, 90);
|
||||
SetResistance(ResistanceType.Fire, 70, 80);
|
||||
SetResistance(ResistanceType.Cold, 40, 50);
|
||||
SetResistance(ResistanceType.Poison, 50, 60);
|
||||
SetResistance(ResistanceType.Energy, 50, 60);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 80, 90 );
|
||||
SetResistance( ResistanceType.Fire, 70, 80 );
|
||||
SetResistance( ResistanceType.Cold, 40, 50 );
|
||||
SetResistance( ResistanceType.Poison, 50, 60 );
|
||||
SetResistance( ResistanceType.Energy, 50, 60 );
|
||||
SetSkill(SkillName.EvalInt, 90.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 99.1, 100.0);
|
||||
SetSkill(SkillName.Meditation, 90.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 100.5, 150.0);
|
||||
SetSkill(SkillName.Tactics, 80.1, 90.0);
|
||||
SetSkill(SkillName.Wrestling, 80.1, 90.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 99.1, 100.0 );
|
||||
SetSkill( SkillName.Meditation, 90.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 100.5, 150.0 );
|
||||
SetSkill( SkillName.Tactics, 80.1, 90.0 );
|
||||
SetSkill( SkillName.Wrestling, 80.1, 90.0 );
|
||||
Fame = 24000;
|
||||
Karma = -24000;
|
||||
|
||||
Fame = 24000;
|
||||
Karma = -24000;
|
||||
VirtualArmor = 80;
|
||||
}
|
||||
|
||||
VirtualArmor = 80;
|
||||
}
|
||||
public Succubus(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich, 2 );
|
||||
AddLoot( LootPack.MedScrolls, 2 );
|
||||
}
|
||||
public override string CorpseName => "a succubus corpse";
|
||||
public override string DefaultName => "a succubus";
|
||||
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override int Meat => 1;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public void DrainLife()
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich, 2);
|
||||
AddLoot(LootPack.MedScrolls, 2);
|
||||
}
|
||||
|
||||
foreach ( Mobile m in GetMobilesInRange( 2 ) )
|
||||
{
|
||||
if ( m == this || !CanBeHarmful( m ) )
|
||||
continue;
|
||||
public void DrainLife()
|
||||
{
|
||||
ArrayList list = new ArrayList();
|
||||
|
||||
if ( m is BaseCreature creature && (creature.Controlled || creature.Summoned || creature.Team != Team) )
|
||||
list.Add( m );
|
||||
else if ( m.Player )
|
||||
list.Add( m );
|
||||
}
|
||||
foreach (Mobile m in GetMobilesInRange(2))
|
||||
{
|
||||
if (m == this || !CanBeHarmful(m))
|
||||
continue;
|
||||
|
||||
foreach ( Mobile m in list )
|
||||
{
|
||||
DoHarmful( m );
|
||||
if (m is BaseCreature creature && (creature.Controlled || creature.Summoned || creature.Team != Team))
|
||||
list.Add(m);
|
||||
else if (m.Player)
|
||||
list.Add(m);
|
||||
}
|
||||
|
||||
m.FixedParticles( 0x374A, 10, 15, 5013, 0x496, 0, EffectLayer.Waist );
|
||||
m.PlaySound( 0x231 );
|
||||
foreach (Mobile m in list)
|
||||
{
|
||||
DoHarmful(m);
|
||||
|
||||
//m.SendMessage( "You feel the life drain out of you!" );
|
||||
m.FixedParticles(0x374A, 10, 15, 5013, 0x496, 0, EffectLayer.Waist);
|
||||
m.PlaySound(0x231);
|
||||
|
||||
int toDrain = Utility.RandomMinMax( 10, 40 );
|
||||
//m.SendMessage( "You feel the life drain out of you!" );
|
||||
|
||||
Hits += toDrain;
|
||||
m.Damage( toDrain, this );
|
||||
}
|
||||
}
|
||||
int toDrain = Utility.RandomMinMax(10, 40);
|
||||
|
||||
public override void OnGaveMeleeAttack( Mobile defender )
|
||||
{
|
||||
base.OnGaveMeleeAttack( defender );
|
||||
Hits += toDrain;
|
||||
m.Damage(toDrain, this);
|
||||
}
|
||||
}
|
||||
|
||||
if ( 0.1 >= Utility.RandomDouble() )
|
||||
DrainLife();
|
||||
}
|
||||
public override void OnGaveMeleeAttack(Mobile defender)
|
||||
{
|
||||
base.OnGaveMeleeAttack(defender);
|
||||
|
||||
public override void OnGotMeleeAttack( Mobile attacker )
|
||||
{
|
||||
base.OnGotMeleeAttack( attacker );
|
||||
if (0.1 >= Utility.RandomDouble())
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
if ( 0.1 >= Utility.RandomDouble() )
|
||||
DrainLife();
|
||||
}
|
||||
public override void OnGotMeleeAttack(Mobile attacker)
|
||||
{
|
||||
base.OnGotMeleeAttack(attacker);
|
||||
|
||||
public Succubus( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
if (0.1 >= Utility.RandomDouble())
|
||||
DrainLife();
|
||||
}
|
||||
|
||||
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,72 +1,74 @@
|
|||
using Server.Engines.Plants;
|
||||
|
||||
namespace Server.Mobiles
|
||||
{
|
||||
public class Titan : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a titans corpse";
|
||||
public override string DefaultName => "a titan";
|
||||
public class Titan : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Titan() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 76;
|
||||
BaseSoundID = 609;
|
||||
|
||||
[Constructible]
|
||||
public Titan() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 76;
|
||||
BaseSoundID = 609;
|
||||
SetStr(536, 585);
|
||||
SetDex(126, 145);
|
||||
SetInt(281, 305);
|
||||
|
||||
SetStr( 536, 585 );
|
||||
SetDex( 126, 145 );
|
||||
SetInt( 281, 305 );
|
||||
SetHits(322, 351);
|
||||
|
||||
SetHits( 322, 351 );
|
||||
SetDamage(13, 16);
|
||||
|
||||
SetDamage( 13, 16 );
|
||||
SetDamageType(ResistanceType.Physical, 100);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 100 );
|
||||
SetResistance(ResistanceType.Physical, 35, 45);
|
||||
SetResistance(ResistanceType.Fire, 30, 40);
|
||||
SetResistance(ResistanceType.Cold, 25, 35);
|
||||
SetResistance(ResistanceType.Poison, 30, 40);
|
||||
SetResistance(ResistanceType.Energy, 30, 40);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 35, 45 );
|
||||
SetResistance( ResistanceType.Fire, 30, 40 );
|
||||
SetResistance( ResistanceType.Cold, 25, 35 );
|
||||
SetResistance( ResistanceType.Poison, 30, 40 );
|
||||
SetResistance( ResistanceType.Energy, 30, 40 );
|
||||
SetSkill(SkillName.EvalInt, 85.1, 100.0);
|
||||
SetSkill(SkillName.Magery, 85.1, 100.0);
|
||||
SetSkill(SkillName.MagicResist, 80.2, 110.0);
|
||||
SetSkill(SkillName.Tactics, 60.1, 80.0);
|
||||
SetSkill(SkillName.Wrestling, 40.1, 50.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 85.1, 100.0 );
|
||||
SetSkill( SkillName.Magery, 85.1, 100.0 );
|
||||
SetSkill( SkillName.MagicResist, 80.2, 110.0 );
|
||||
SetSkill( SkillName.Tactics, 60.1, 80.0 );
|
||||
SetSkill( SkillName.Wrestling, 40.1, 50.0 );
|
||||
Fame = 11500;
|
||||
Karma = -11500;
|
||||
|
||||
Fame = 11500;
|
||||
Karma = -11500;
|
||||
VirtualArmor = 40;
|
||||
|
||||
VirtualArmor = 40;
|
||||
if (Core.ML && Utility.RandomDouble() < .33)
|
||||
PackItem(Seed.RandomPeculiarSeed(1));
|
||||
}
|
||||
|
||||
if ( Core.ML && Utility.RandomDouble() < .33 )
|
||||
PackItem( Engines.Plants.Seed.RandomPeculiarSeed(1) );
|
||||
}
|
||||
public Titan(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.FilthyRich );
|
||||
AddLoot( LootPack.Average );
|
||||
AddLoot( LootPack.MedScrolls );
|
||||
}
|
||||
public override string CorpseName => "a titans corpse";
|
||||
public override string DefaultName => "a titan";
|
||||
|
||||
public override int Meat => 4;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 5;
|
||||
public override int Meat => 4;
|
||||
public override Poison PoisonImmune => Poison.Regular;
|
||||
public override int TreasureMapLevel => 5;
|
||||
|
||||
public Titan( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot(LootPack.FilthyRich);
|
||||
AddLoot(LootPack.Average);
|
||||
AddLoot(LootPack.MedScrolls);
|
||||
}
|
||||
|
||||
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,71 +1,71 @@
|
|||
namespace Server.Mobiles
|
||||
{
|
||||
public class Wraith : BaseCreature
|
||||
{
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a wraith";
|
||||
public class Wraith : BaseCreature
|
||||
{
|
||||
[Constructible]
|
||||
public Wraith() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
|
||||
{
|
||||
Body = 26;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 0x482;
|
||||
|
||||
[Constructible]
|
||||
public Wraith() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
|
||||
{
|
||||
Body = 26;
|
||||
Hue = 0x4001;
|
||||
BaseSoundID = 0x482;
|
||||
SetStr(76, 100);
|
||||
SetDex(76, 95);
|
||||
SetInt(36, 60);
|
||||
|
||||
SetStr( 76, 100 );
|
||||
SetDex( 76, 95 );
|
||||
SetInt( 36, 60 );
|
||||
SetHits(46, 60);
|
||||
|
||||
SetHits( 46, 60 );
|
||||
SetDamage(7, 11);
|
||||
|
||||
SetDamage( 7, 11 );
|
||||
SetDamageType(ResistanceType.Physical, 50);
|
||||
SetDamageType(ResistanceType.Cold, 50);
|
||||
|
||||
SetDamageType( ResistanceType.Physical, 50 );
|
||||
SetDamageType( ResistanceType.Cold, 50 );
|
||||
SetResistance(ResistanceType.Physical, 25, 30);
|
||||
SetResistance(ResistanceType.Cold, 15, 25);
|
||||
SetResistance(ResistanceType.Poison, 10, 20);
|
||||
|
||||
SetResistance( ResistanceType.Physical, 25, 30 );
|
||||
SetResistance( ResistanceType.Cold, 15, 25 );
|
||||
SetResistance( ResistanceType.Poison, 10, 20 );
|
||||
SetSkill(SkillName.EvalInt, 55.1, 70.0);
|
||||
SetSkill(SkillName.Magery, 55.1, 70.0);
|
||||
SetSkill(SkillName.MagicResist, 55.1, 70.0);
|
||||
SetSkill(SkillName.Tactics, 45.1, 60.0);
|
||||
SetSkill(SkillName.Wrestling, 45.1, 55.0);
|
||||
|
||||
SetSkill( SkillName.EvalInt, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Magery, 55.1, 70.0 );
|
||||
SetSkill( SkillName.MagicResist, 55.1, 70.0 );
|
||||
SetSkill( SkillName.Tactics, 45.1, 60.0 );
|
||||
SetSkill( SkillName.Wrestling, 45.1, 55.0 );
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
|
||||
Fame = 4000;
|
||||
Karma = -4000;
|
||||
VirtualArmor = 28;
|
||||
|
||||
VirtualArmor = 28;
|
||||
PackReg(10);
|
||||
}
|
||||
|
||||
PackReg( 10 );
|
||||
}
|
||||
public Wraith(Serial serial) : base(serial)
|
||||
{
|
||||
}
|
||||
|
||||
public override void GenerateLoot()
|
||||
{
|
||||
AddLoot( LootPack.Meager );
|
||||
}
|
||||
public override string CorpseName => "a ghostly corpse";
|
||||
public override string DefaultName => "a wraith";
|
||||
|
||||
public override bool BleedImmune => true;
|
||||
public override bool BleedImmune => true;
|
||||
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
public override OppositionGroup OppositionGroup => OppositionGroup.FeyAndUndead;
|
||||
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
public override Poison PoisonImmune => Poison.Lethal;
|
||||
|
||||
public Wraith( Serial serial ) : base( serial )
|
||||
{
|
||||
}
|
||||
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