Fixes code according to modern code style. Fixes a few expression bugs.

This commit is contained in:
Kamron Batman 2018-09-15 09:58:51 -07:00
parent 89eea25e5f
commit 970fd563b2
3324 changed files with 441118 additions and 433755 deletions

View file

@ -1,89 +1,89 @@
namespace Server.Mobiles
{
public class AncientWyrm : BaseCreature
{
public override string CorpseName => "a dragon corpse";
public override string DefaultName => "an ancient wyrm";
public class AncientWyrm : BaseCreature
{
[Constructible]
public AncientWyrm() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = 46;
BaseSoundID = 362;
[Constructible]
public AncientWyrm () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 46;
BaseSoundID = 362;
SetStr(1096, 1185);
SetDex(86, 175);
SetInt(686, 775);
SetStr( 1096, 1185 );
SetDex( 86, 175 );
SetInt( 686, 775 );
SetHits(658, 711);
SetHits( 658, 711 );
SetDamage(29, 35);
SetDamage( 29, 35 );
SetDamageType(ResistanceType.Physical, 75);
SetDamageType(ResistanceType.Fire, 25);
SetDamageType( ResistanceType.Physical, 75 );
SetDamageType( ResistanceType.Fire, 25 );
SetResistance(ResistanceType.Physical, 65, 75);
SetResistance(ResistanceType.Fire, 80, 90);
SetResistance(ResistanceType.Cold, 70, 80);
SetResistance(ResistanceType.Poison, 60, 70);
SetResistance(ResistanceType.Energy, 60, 70);
SetResistance( ResistanceType.Physical, 65, 75 );
SetResistance( ResistanceType.Fire, 80, 90 );
SetResistance( ResistanceType.Cold, 70, 80 );
SetResistance( ResistanceType.Poison, 60, 70 );
SetResistance( ResistanceType.Energy, 60, 70 );
SetSkill(SkillName.EvalInt, 80.1, 100.0);
SetSkill(SkillName.Magery, 80.1, 100.0);
SetSkill(SkillName.Meditation, 52.5, 75.0);
SetSkill(SkillName.MagicResist, 100.5, 150.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 97.6, 100.0);
SetSkill( SkillName.EvalInt, 80.1, 100.0 );
SetSkill( SkillName.Magery, 80.1, 100.0 );
SetSkill( SkillName.Meditation, 52.5, 75.0 );
SetSkill( SkillName.MagicResist, 100.5, 150.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.Wrestling, 97.6, 100.0 );
Fame = 22500;
Karma = -22500;
Fame = 22500;
Karma = -22500;
VirtualArmor = 70;
}
VirtualArmor = 70;
}
public AncientWyrm(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 3 );
AddLoot( LootPack.Gems, 5 );
}
public override string CorpseName => "a dragon corpse";
public override string DefaultName => "an ancient wyrm";
public override int GetIdleSound()
{
return 0x2D3;
}
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override bool AutoDispel => true;
public override HideType HideType => HideType.Barbed;
public override int Hides => 40;
public override int Meat => 19;
public override int Scales => 12;
public override ScaleType ScaleType => (ScaleType)Utility.Random(4);
public override Poison PoisonImmune => Poison.Regular;
public override Poison HitPoison => Utility.RandomBool() ? Poison.Lesser : Poison.Regular;
public override int TreasureMapLevel => 5;
public override bool CanFly => true;
public override int GetHurtSound()
{
return 0x2D1;
}
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 3);
AddLoot(LootPack.Gems, 5);
}
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override bool AutoDispel => true;
public override HideType HideType => HideType.Barbed;
public override int Hides => 40;
public override int Meat => 19;
public override int Scales => 12;
public override ScaleType ScaleType => (ScaleType)Utility.Random( 4 );
public override Poison PoisonImmune => Poison.Regular;
public override Poison HitPoison => Utility.RandomBool() ? Poison.Lesser : Poison.Regular;
public override int TreasureMapLevel => 5;
public override bool CanFly => true;
public override int GetIdleSound()
{
return 0x2D3;
}
public AncientWyrm( Serial serial ) : base( serial )
{
}
public override int GetHurtSound()
{
return 0x2D1;
}
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();
}
}
}

View file

@ -2,78 +2,78 @@ using Server.Items;
namespace Server.Mobiles
{
public class DeepSeaSerpent : BaseCreature
{
public override string CorpseName => "a deep sea serpents corpse";
public override string DefaultName => "a deep sea serpent";
public class DeepSeaSerpent : BaseCreature
{
[Constructible]
public DeepSeaSerpent() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = 150;
BaseSoundID = 447;
[Constructible]
public DeepSeaSerpent() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 150;
BaseSoundID = 447;
Hue = Utility.Random(0x8A0, 5);
Hue = Utility.Random( 0x8A0, 5 );
SetStr(251, 425);
SetDex(87, 135);
SetInt(87, 155);
SetStr( 251, 425 );
SetDex( 87, 135 );
SetInt( 87, 155 );
SetHits(151, 255);
SetHits( 151, 255 );
SetDamage(6, 14);
SetDamage( 6, 14 );
SetDamageType(ResistanceType.Physical, 100);
SetDamageType( ResistanceType.Physical, 100 );
SetResistance(ResistanceType.Physical, 30, 40);
SetResistance(ResistanceType.Fire, 70, 80);
SetResistance(ResistanceType.Cold, 40, 50);
SetResistance(ResistanceType.Poison, 30, 40);
SetResistance(ResistanceType.Energy, 15, 20);
SetResistance( ResistanceType.Physical, 30, 40 );
SetResistance( ResistanceType.Fire, 70, 80 );
SetResistance( ResistanceType.Cold, 40, 50 );
SetResistance( ResistanceType.Poison, 30, 40 );
SetResistance( ResistanceType.Energy, 15, 20 );
SetSkill(SkillName.MagicResist, 60.1, 75.0);
SetSkill(SkillName.Tactics, 60.1, 70.0);
SetSkill(SkillName.Wrestling, 60.1, 70.0);
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 60.1, 70.0 );
SetSkill( SkillName.Wrestling, 60.1, 70.0 );
Fame = 6000;
Karma = -6000;
Fame = 6000;
Karma = -6000;
VirtualArmor = 60;
CanSwim = true;
CantWalk = true;
VirtualArmor = 60;
CanSwim = true;
CantWalk = true;
if (Utility.RandomBool())
PackItem(new SulfurousAsh(4));
else
PackItem(new BlackPearl(4));
if ( Utility.RandomBool() )
PackItem( new SulfurousAsh( 4 ) );
else
PackItem( new BlackPearl( 4 ) );
//PackItem( new SpecialFishingNet() );
}
//PackItem( new SpecialFishingNet() );
}
public DeepSeaSerpent(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override string CorpseName => "a deep sea serpents corpse";
public override string DefaultName => "a deep sea serpent";
public override bool HasBreath => true;
public override int Meat => 1;
public override int Scales => 8;
public override ScaleType ScaleType => ScaleType.Blue;
public override bool HasBreath => true;
public override int Meat => 1;
public override int Scales => 8;
public override ScaleType ScaleType => ScaleType.Blue;
public DeepSeaSerpent( 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();
}
}
}

View file

@ -1,81 +1,81 @@
namespace Server.Mobiles
{
public class Dragon : BaseCreature
{
public override string CorpseName => "a dragon corpse";
public override string DefaultName => "a dragon";
public class Dragon : BaseCreature
{
[Constructible]
public Dragon() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = Utility.RandomList(12, 59);
BaseSoundID = 362;
[Constructible]
public Dragon () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = Utility.RandomList( 12, 59 );
BaseSoundID = 362;
SetStr(796, 825);
SetDex(86, 105);
SetInt(436, 475);
SetStr( 796, 825 );
SetDex( 86, 105 );
SetInt( 436, 475 );
SetHits(478, 495);
SetHits( 478, 495 );
SetDamage(16, 22);
SetDamage( 16, 22 );
SetDamageType(ResistanceType.Physical, 100);
SetDamageType( ResistanceType.Physical, 100 );
SetResistance(ResistanceType.Physical, 55, 65);
SetResistance(ResistanceType.Fire, 60, 70);
SetResistance(ResistanceType.Cold, 30, 40);
SetResistance(ResistanceType.Poison, 25, 35);
SetResistance(ResistanceType.Energy, 35, 45);
SetResistance( ResistanceType.Physical, 55, 65 );
SetResistance( ResistanceType.Fire, 60, 70 );
SetResistance( ResistanceType.Cold, 30, 40 );
SetResistance( ResistanceType.Poison, 25, 35 );
SetResistance( ResistanceType.Energy, 35, 45 );
SetSkill(SkillName.EvalInt, 30.1, 40.0);
SetSkill(SkillName.Magery, 30.1, 40.0);
SetSkill(SkillName.MagicResist, 99.1, 100.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 90.1, 92.5);
SetSkill( SkillName.EvalInt, 30.1, 40.0 );
SetSkill( SkillName.Magery, 30.1, 40.0 );
SetSkill( SkillName.MagicResist, 99.1, 100.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.Wrestling, 90.1, 92.5 );
Fame = 15000;
Karma = -15000;
Fame = 15000;
Karma = -15000;
VirtualArmor = 60;
VirtualArmor = 60;
Tamable = true;
ControlSlots = 3;
MinTameSkill = 93.9;
}
Tamable = true;
ControlSlots = 3;
MinTameSkill = 93.9;
}
public Dragon(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
AddLoot( LootPack.Gems, 8 );
}
public override string CorpseName => "a dragon corpse";
public override string DefaultName => "a dragon";
public override bool ReacquireOnMovement => !Controlled;
public override bool HasBreath => true; // fire breath enabled
public override bool AutoDispel => !Controlled;
public override int TreasureMapLevel => 4;
public override int Meat => 19;
public override int Hides => 20;
public override HideType HideType => HideType.Barbed;
public override int Scales => 7;
public override ScaleType ScaleType => ( Body == 12 ? ScaleType.Yellow : ScaleType.Red );
public override FoodType FavoriteFood => FoodType.Meat;
public override bool CanAngerOnTame => true;
public override bool CanFly => true;
public override bool ReacquireOnMovement => !Controlled;
public override bool HasBreath => true; // fire breath enabled
public override bool AutoDispel => !Controlled;
public override int TreasureMapLevel => 4;
public override int Meat => 19;
public override int Hides => 20;
public override HideType HideType => HideType.Barbed;
public override int Scales => 7;
public override ScaleType ScaleType => Body == 12 ? ScaleType.Yellow : ScaleType.Red;
public override FoodType FavoriteFood => FoodType.Meat;
public override bool CanAngerOnTame => true;
public override bool CanFly => true;
public Dragon( Serial serial ) : base( serial )
{
}
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 2);
AddLoot(LootPack.Gems, 8);
}
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();
}
}
}

View file

@ -3,172 +3,173 @@ using Server.Items;
namespace Server.Mobiles
{
public class Leviathan : BaseCreature
{
public override string CorpseName => "a leviathan corpse";
public class Leviathan : BaseCreature
{
[Constructible]
public Leviathan() : this(null)
{
}
public Mobile Fisher { get; set; }
[Constructible]
public Leviathan(Mobile fisher) : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Fisher = fisher;
public override string DefaultName => "a leviathan";
// May not be OSI accurate; mostly copied from krakens
Body = 77;
BaseSoundID = 353;
[Constructible]
public Leviathan() : this( null )
{
}
Hue = 0x481;
[Constructible]
public Leviathan( Mobile fisher ) : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Fisher = fisher;
SetStr(1000);
SetDex(501, 520);
SetInt(501, 515);
// May not be OSI accurate; mostly copied from krakens
Body = 77;
BaseSoundID = 353;
SetHits(1500);
Hue = 0x481;
SetDamage(25, 33);
SetStr( 1000 );
SetDex( 501, 520 );
SetInt( 501, 515 );
SetDamageType(ResistanceType.Physical, 70);
SetDamageType(ResistanceType.Cold, 30);
SetHits( 1500 );
SetResistance(ResistanceType.Physical, 55, 65);
SetResistance(ResistanceType.Fire, 45, 55);
SetResistance(ResistanceType.Cold, 45, 55);
SetResistance(ResistanceType.Poison, 35, 45);
SetResistance(ResistanceType.Energy, 25, 35);
SetDamage( 25, 33 );
SetSkill(SkillName.EvalInt, 97.6, 107.5);
SetSkill(SkillName.Magery, 97.6, 107.5);
SetSkill(SkillName.MagicResist, 97.6, 107.5);
SetSkill(SkillName.Meditation, 97.6, 107.5);
SetSkill(SkillName.Tactics, 97.6, 107.5);
SetSkill(SkillName.Wrestling, 97.6, 107.5);
SetDamageType( ResistanceType.Physical, 70 );
SetDamageType( ResistanceType.Cold, 30 );
Fame = 24000;
Karma = -24000;
SetResistance( ResistanceType.Physical, 55, 65 );
SetResistance( ResistanceType.Fire, 45, 55 );
SetResistance( ResistanceType.Cold, 45, 55 );
SetResistance( ResistanceType.Poison, 35, 45 );
SetResistance( ResistanceType.Energy, 25, 35 );
VirtualArmor = 50;
SetSkill( SkillName.EvalInt, 97.6, 107.5 );
SetSkill( SkillName.Magery, 97.6, 107.5 );
SetSkill( SkillName.MagicResist, 97.6, 107.5 );
SetSkill( SkillName.Meditation, 97.6, 107.5 );
SetSkill( SkillName.Tactics, 97.6, 107.5 );
SetSkill( SkillName.Wrestling, 97.6, 107.5 );
CanSwim = true;
CantWalk = true;
Fame = 24000;
Karma = -24000;
PackItem(new MessageInABottle());
VirtualArmor = 50;
Rope rope = new Rope();
rope.ItemID = 0x14F8;
PackItem(rope);
CanSwim = true;
CantWalk = true;
rope = new Rope();
rope.ItemID = 0x14FA;
PackItem(rope);
}
PackItem( new MessageInABottle() );
public Leviathan(Serial serial) : base(serial)
{
}
Rope rope = new Rope();
rope.ItemID = 0x14F8;
PackItem( rope );
public override string CorpseName => "a leviathan corpse";
rope = new Rope();
rope.ItemID = 0x14FA;
PackItem( rope );
}
public Mobile Fisher{ get; set; }
public override bool HasBreath => true;
public override int BreathPhysicalDamage => 70; // TODO: Verify damage type
public override int BreathColdDamage => 30;
public override int BreathFireDamage => 0;
public override int BreathEffectHue => 0x1ED;
public override double BreathDamageScalar => 0.05;
public override double BreathMinDelay => 5.0;
public override double BreathMaxDelay => 7.5;
public override string DefaultName => "a leviathan";
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 5 );
}
public override bool HasBreath => true;
public override int BreathPhysicalDamage => 70; // TODO: Verify damage type
public override int BreathColdDamage => 30;
public override int BreathFireDamage => 0;
public override int BreathEffectHue => 0x1ED;
public override double BreathDamageScalar => 0.05;
public override double BreathMinDelay => 5.0;
public override double BreathMaxDelay => 7.5;
public override double TreasureMapChance => 0.25;
public override int TreasureMapLevel => 5;
public override double TreasureMapChance => 0.25;
public override int TreasureMapLevel => 5;
public Leviathan( Serial serial ) : base( serial )
{
}
public static Type[] Artifacts{ get; } =
{
// Decorations
typeof(CandelabraOfSouls),
typeof(GhostShipAnchor),
typeof(GoldBricks),
typeof(PhillipsWoodenSteed),
typeof(SeahorseStatuette),
typeof(ShipModelOfTheHMSCape),
typeof(AdmiralsHeartyRum),
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
// Equipment
typeof(AlchemistsBauble),
typeof(ArcticDeathDealer),
typeof(BlazeOfDeath),
typeof(BurglarsBandana),
typeof(CaptainQuacklebushsCutlass),
typeof(CavortingClub),
typeof(DreadPirateHat),
typeof(EnchantedTitanLegBone),
typeof(GwennosHarp),
typeof(IolosLute),
typeof(LunaLance),
typeof(NightsKiss),
typeof(NoxRangersHeavyCrossbow),
typeof(PolarBearMask),
typeof(VioletCourage)
};
writer.Write( (int) 0 );
}
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 5);
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
int version = reader.ReadInt();
}
writer.Write(0);
}
public static Type[] Artifacts { get; } =
{
// Decorations
typeof( CandelabraOfSouls ),
typeof( GhostShipAnchor ),
typeof( GoldBricks ),
typeof( PhillipsWoodenSteed ),
typeof( SeahorseStatuette ),
typeof( ShipModelOfTheHMSCape ),
typeof( AdmiralsHeartyRum ),
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
// Equipment
typeof( AlchemistsBauble ),
typeof( ArcticDeathDealer ),
typeof( BlazeOfDeath ),
typeof( BurglarsBandana ),
typeof( CaptainQuacklebushsCutlass ),
typeof( CavortingClub ),
typeof( DreadPirateHat ),
typeof( EnchantedTitanLegBone ),
typeof( GwennosHarp ),
typeof( IolosLute ),
typeof( LunaLance ),
typeof( NightsKiss ),
typeof( NoxRangersHeavyCrossbow ),
typeof( PolarBearMask ),
typeof( VioletCourage )
};
int version = reader.ReadInt();
}
public static void GiveArtifactTo( Mobile m )
{
Item item = Loot.Construct( Artifacts );
public static void GiveArtifactTo(Mobile m)
{
Item item = Loot.Construct(Artifacts);
if ( item == null )
return;
if (item == null)
return;
// TODO: Confirm messages
if ( m.AddToBackpack( item ) )
m.SendMessage( "As a reward for slaying the mighty leviathan, an artifact has been placed in your backpack." );
else
m.SendMessage( "As your backpack is full, your reward for destroying the legendary leviathan has been placed at your feet." );
}
// TODO: Confirm messages
if (m.AddToBackpack(item))
m.SendMessage("As a reward for slaying the mighty leviathan, an artifact has been placed in your backpack.");
else
m.SendMessage(
"As your backpack is full, your reward for destroying the legendary leviathan has been placed at your feet.");
}
public override void OnKilledBy( Mobile mob )
{
base.OnKilledBy( mob );
public override void OnKilledBy(Mobile mob)
{
base.OnKilledBy(mob);
if ( Paragon.CheckArtifactChance( mob, this ) )
{
GiveArtifactTo( mob );
if (Paragon.CheckArtifactChance(mob, this))
{
GiveArtifactTo(mob);
if ( mob == Fisher )
Fisher = null;
}
}
if (mob == Fisher)
Fisher = null;
}
}
public override void OnDeath( Container c )
{
base.OnDeath( c );
public override void OnDeath(Container c)
{
base.OnDeath(c);
if ( Fisher != null && 25 > Utility.Random( 100 ) )
GiveArtifactTo( Fisher );
if (Fisher != null && 25 > Utility.Random(100))
GiveArtifactTo(Fisher);
Fisher = null;
}
}
}
Fisher = null;
}
}
}

View file

@ -1,77 +1,79 @@
namespace Server.Mobiles
{
[TypeAlias( "Server.Mobiles.OphidianJusticar", "Server.Mobiles.OphidianZealot" )]
public class OphidianArchmage : BaseCreature
{
public override string CorpseName => "an ophidian corpse";
private static string[] m_Names = {
"an ophidian justicar",
"an ophidian zealot"
};
[TypeAlias("Server.Mobiles.OphidianJusticar", "Server.Mobiles.OphidianZealot")]
public class OphidianArchmage : BaseCreature
{
private static string[] m_Names =
{
"an ophidian justicar",
"an ophidian zealot"
};
[Constructible]
public OphidianArchmage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = m_Names[Utility.Random( m_Names.Length )];
Body = 85;
BaseSoundID = 639;
[Constructible]
public OphidianArchmage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = m_Names[Utility.Random(m_Names.Length)];
Body = 85;
BaseSoundID = 639;
SetStr( 281, 305 );
SetDex( 191, 215 );
SetInt( 226, 250 );
SetStr(281, 305);
SetDex(191, 215);
SetInt(226, 250);
SetHits( 169, 183 );
SetStam( 36, 45 );
SetHits(169, 183);
SetStam(36, 45);
SetDamage( 5, 10 );
SetDamage(5, 10);
SetDamageType( ResistanceType.Physical, 100 );
SetDamageType(ResistanceType.Physical, 100);
SetResistance( ResistanceType.Physical, 40, 45 );
SetResistance( ResistanceType.Fire, 20, 30 );
SetResistance( ResistanceType.Cold, 25, 35 );
SetResistance( ResistanceType.Poison, 35, 40 );
SetResistance( ResistanceType.Energy, 25, 35 );
SetResistance(ResistanceType.Physical, 40, 45);
SetResistance(ResistanceType.Fire, 20, 30);
SetResistance(ResistanceType.Cold, 25, 35);
SetResistance(ResistanceType.Poison, 35, 40);
SetResistance(ResistanceType.Energy, 25, 35);
SetSkill( SkillName.EvalInt, 95.1, 100.0 );
SetSkill( SkillName.Magery, 95.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, 95.1, 100.0);
SetSkill(SkillName.Magery, 95.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 = 11500;
Karma = -11500;
Fame = 11500;
Karma = -11500;
VirtualArmor = 44;
VirtualArmor = 44;
PackReg( 5, 15 );
PackNecroReg( 5, 15 );
}
PackReg(5, 15);
PackNecroReg(5, 15);
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.MedScrolls, 2 );
}
public OphidianArchmage(Serial serial) : base(serial)
{
}
public override int Meat => 1;
public override string CorpseName => "an ophidian corpse";
public override OppositionGroup OppositionGroup => OppositionGroup.TerathansAndOphidians;
public override int Meat => 1;
public OphidianArchmage( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup => OppositionGroup.TerathansAndOphidians;
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();
}
}
}

View file

@ -1,78 +1,80 @@
namespace Server.Mobiles
{
[TypeAlias( "Server.Mobiles.OphidianShaman" )]
public class OphidianMage : BaseCreature
{
public override string CorpseName => "an ophidian corpse";
private static string[] m_Names = {
"an ophidian apprentice mage",
"an ophidian shaman"
};
[TypeAlias("Server.Mobiles.OphidianShaman")]
public class OphidianMage : BaseCreature
{
private static string[] m_Names =
{
"an ophidian apprentice mage",
"an ophidian shaman"
};
[Constructible]
public OphidianMage() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = m_Names[Utility.Random( m_Names.Length )];
Body = 85;
BaseSoundID = 639;
[Constructible]
public OphidianMage() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Name = m_Names[Utility.Random(m_Names.Length)];
Body = 85;
BaseSoundID = 639;
SetStr( 181, 205 );
SetDex( 191, 215 );
SetInt( 96, 120 );
SetStr(181, 205);
SetDex(191, 215);
SetInt(96, 120);
SetHits( 109, 123 );
SetHits(109, 123);
SetDamage( 5, 10 );
SetDamage(5, 10);
SetDamageType( ResistanceType.Physical, 100 );
SetDamageType(ResistanceType.Physical, 100);
SetResistance( ResistanceType.Physical, 25, 35 );
SetResistance( ResistanceType.Fire, 30, 40 );
SetResistance( ResistanceType.Cold, 35, 45 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 35, 45 );
SetResistance(ResistanceType.Physical, 25, 35);
SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 35, 45);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 35, 45);
SetSkill( SkillName.EvalInt, 85.1, 100.0 );
SetSkill( SkillName.Magery, 85.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, 85.1, 100.0);
SetSkill(SkillName.Magery, 85.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 = 4000;
Karma = -4000;
Fame = 4000;
Karma = -4000;
VirtualArmor = 30;
VirtualArmor = 30;
PackReg( 10 );
}
PackReg(10);
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.LowScrolls );
AddLoot( LootPack.MedScrolls );
AddLoot( LootPack.Potions );
}
public OphidianMage(Serial serial) : base(serial)
{
}
public override int Meat => 1;
public override int TreasureMapLevel => 2;
public override string CorpseName => "an ophidian corpse";
public override OppositionGroup OppositionGroup => OppositionGroup.TerathansAndOphidians;
public override int Meat => 1;
public override int TreasureMapLevel => 2;
public OphidianMage( Serial serial ) : base( serial )
{
}
public override OppositionGroup OppositionGroup => OppositionGroup.TerathansAndOphidians;
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void GenerateLoot()
{
AddLoot(LootPack.Average);
AddLoot(LootPack.LowScrolls);
AddLoot(LootPack.MedScrolls);
AddLoot(LootPack.Potions);
}
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();
}
}
}

View file

@ -1,71 +1,71 @@
namespace Server.Mobiles
{
public class OphidianMatriarch : BaseCreature
{
public override string CorpseName => "an ophidian corpse";
public override string DefaultName => "an ophidian matriarch";
public class OphidianMatriarch : BaseCreature
{
[Constructible]
public OphidianMatriarch() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = 87;
BaseSoundID = 644;
[Constructible]
public OphidianMatriarch() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 87;
BaseSoundID = 644;
SetStr(416, 505);
SetDex(96, 115);
SetInt(366, 455);
SetStr( 416, 505 );
SetDex( 96, 115 );
SetInt( 366, 455 );
SetHits(250, 303);
SetHits( 250, 303 );
SetDamage(11, 13);
SetDamage( 11, 13 );
SetDamageType(ResistanceType.Physical, 100);
SetDamageType( ResistanceType.Physical, 100 );
SetResistance(ResistanceType.Physical, 45, 55);
SetResistance(ResistanceType.Fire, 30, 40);
SetResistance(ResistanceType.Cold, 35, 45);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 35, 45);
SetResistance( ResistanceType.Physical, 45, 55 );
SetResistance( ResistanceType.Fire, 30, 40 );
SetResistance( ResistanceType.Cold, 35, 45 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 35, 45 );
SetSkill(SkillName.EvalInt, 90.1, 100.0);
SetSkill(SkillName.Magery, 90.1, 100.0);
SetSkill(SkillName.Meditation, 5.4, 25.0);
SetSkill(SkillName.MagicResist, 90.1, 100.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.Meditation, 5.4, 25.0 );
SetSkill( SkillName.MagicResist, 90.1, 100.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
Fame = 16000;
Karma = -16000;
Fame = 16000;
Karma = -16000;
VirtualArmor = 50;
}
VirtualArmor = 50;
}
public OphidianMatriarch(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average, 2 );
AddLoot( LootPack.MedScrolls, 2 );
}
public override string CorpseName => "an ophidian corpse";
public override string DefaultName => "an ophidian matriarch";
public override Poison PoisonImmune => Poison.Greater;
public override int TreasureMapLevel => 4;
public override Poison PoisonImmune => Poison.Greater;
public override int TreasureMapLevel => 4;
public override OppositionGroup OppositionGroup => OppositionGroup.TerathansAndOphidians;
public override OppositionGroup OppositionGroup => OppositionGroup.TerathansAndOphidians;
public OphidianMatriarch( 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();
}
}
}

View file

@ -2,84 +2,84 @@ using Server.Items;
namespace Server.Mobiles
{
[TypeAlias( "Server.Mobiles.Seaserpant" )]
public class SeaSerpent : BaseCreature
{
public override string CorpseName => "a sea serpents corpse";
public override string DefaultName => "a sea serpent";
[TypeAlias("Server.Mobiles.Seaserpant")]
public class SeaSerpent : BaseCreature
{
[Constructible]
public SeaSerpent() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = 150;
BaseSoundID = 447;
[Constructible]
public SeaSerpent() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 150;
BaseSoundID = 447;
Hue = Utility.Random(0x530, 9);
Hue = Utility.Random( 0x530, 9 );
SetStr(168, 225);
SetDex(58, 85);
SetInt(53, 95);
SetStr( 168, 225 );
SetDex( 58, 85 );
SetInt( 53, 95 );
SetHits(110, 127);
SetHits( 110, 127 );
SetDamage(7, 13);
SetDamage( 7, 13 );
SetDamageType(ResistanceType.Physical, 100);
SetDamageType( ResistanceType.Physical, 100 );
SetResistance(ResistanceType.Physical, 25, 35);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 30, 40);
SetResistance(ResistanceType.Poison, 30, 40);
SetResistance(ResistanceType.Energy, 15, 20);
SetResistance( ResistanceType.Physical, 25, 35 );
SetResistance( ResistanceType.Fire, 50, 60 );
SetResistance( ResistanceType.Cold, 30, 40 );
SetResistance( ResistanceType.Poison, 30, 40 );
SetResistance( ResistanceType.Energy, 15, 20 );
SetSkill(SkillName.MagicResist, 60.1, 75.0);
SetSkill(SkillName.Tactics, 60.1, 70.0);
SetSkill(SkillName.Wrestling, 60.1, 70.0);
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 60.1, 70.0 );
SetSkill( SkillName.Wrestling, 60.1, 70.0 );
Fame = 6000;
Karma = -6000;
Fame = 6000;
Karma = -6000;
VirtualArmor = 30;
CanSwim = true;
CantWalk = true;
VirtualArmor = 30;
CanSwim = true;
CantWalk = true;
if (Utility.RandomBool())
PackItem(new SulfurousAsh(4));
else
PackItem(new BlackPearl(4));
if ( Utility.RandomBool() )
PackItem( new SulfurousAsh( 4 ) );
else
PackItem( new BlackPearl( 4 ) );
PackItem(new RawFishSteak());
PackItem( new RawFishSteak() );
//PackItem( new SpecialFishingNet() );
}
//PackItem( new SpecialFishingNet() );
}
public SeaSerpent(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override string CorpseName => "a sea serpents corpse";
public override string DefaultName => "a sea serpent";
public override bool HasBreath => true;
public override int TreasureMapLevel => 2;
public override bool HasBreath => true;
public override int TreasureMapLevel => 2;
public override int Hides => 10;
public override HideType HideType => HideType.Horned;
public override int Scales => 8;
public override ScaleType ScaleType => ScaleType.Blue;
public override int Hides => 10;
public override HideType HideType => HideType.Horned;
public override int Scales => 8;
public override ScaleType ScaleType => ScaleType.Blue;
public SeaSerpent( 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();
}
}
}

View file

@ -1,118 +1,121 @@
using Server.Engines.Plants;
namespace Server.Mobiles
{
public class SerpentineDragon : BaseCreature
{
public override string CorpseName => "a dragon corpse";
public override string DefaultName => "a serpentine dragon";
public class SerpentineDragon : BaseCreature
{
[Constructible]
public SerpentineDragon() : base(AIType.AI_Mage, FightMode.Evil, 10, 1, 0.2, 0.4)
{
Body = 103;
BaseSoundID = 362;
[Constructible]
public SerpentineDragon() : base( AIType.AI_Mage, FightMode.Evil, 10, 1, 0.2, 0.4 )
{
Body = 103;
BaseSoundID = 362;
SetStr(111, 140);
SetDex(201, 220);
SetInt(1001, 1040);
SetStr( 111, 140 );
SetDex( 201, 220 );
SetInt( 1001, 1040 );
SetHits(480);
SetHits( 480 );
SetDamage(5, 12);
SetDamage( 5, 12 );
SetDamageType(ResistanceType.Physical, 75);
SetDamageType(ResistanceType.Poison, 25);
SetDamageType( ResistanceType.Physical, 75 );
SetDamageType( ResistanceType.Poison, 25 );
SetResistance(ResistanceType.Physical, 35, 40);
SetResistance(ResistanceType.Fire, 25, 35);
SetResistance(ResistanceType.Cold, 25, 35);
SetResistance(ResistanceType.Poison, 25, 35);
SetResistance(ResistanceType.Energy, 25, 35);
SetResistance( ResistanceType.Physical, 35, 40 );
SetResistance( ResistanceType.Fire, 25, 35 );
SetResistance( ResistanceType.Cold, 25, 35 );
SetResistance( ResistanceType.Poison, 25, 35 );
SetResistance( ResistanceType.Energy, 25, 35 );
SetSkill(SkillName.EvalInt, 100.1, 110.0);
SetSkill(SkillName.Magery, 110.1, 120.0);
SetSkill(SkillName.Meditation, 100.0);
SetSkill(SkillName.MagicResist, 100.0);
SetSkill(SkillName.Tactics, 50.1, 60.0);
SetSkill(SkillName.Wrestling, 30.1, 100.0);
SetSkill( SkillName.EvalInt, 100.1, 110.0 );
SetSkill( SkillName.Magery, 110.1, 120.0 );
SetSkill( SkillName.Meditation, 100.0 );
SetSkill( SkillName.MagicResist, 100.0 );
SetSkill( SkillName.Tactics, 50.1, 60.0 );
SetSkill( SkillName.Wrestling, 30.1, 100.0 );
Fame = 15000;
Karma = 15000;
Fame = 15000;
Karma = 15000;
VirtualArmor = 36;
VirtualArmor = 36;
if (Core.ML && Utility.RandomDouble() < .33)
PackItem(Seed.RandomPeculiarSeed(2));
}
if ( Core.ML && Utility.RandomDouble() < .33 )
PackItem( Engines.Plants.Seed.RandomPeculiarSeed(2) );
}
public SerpentineDragon(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
AddLoot( LootPack.Gems, 2 );
}
public override string CorpseName => "a dragon corpse";
public override string DefaultName => "a serpentine dragon";
public override int GetIdleSound()
{
return 0x2C4;
}
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override double BonusPetDamageScalar => Core.SE ? 3.0 : 1.0;
public override int GetAttackSound()
{
return 0x2C0;
}
public override bool AutoDispel => true;
public override HideType HideType => HideType.Barbed;
public override int Hides => 20;
public override int Meat => 19;
public override int Scales => 6;
public override ScaleType ScaleType => Utility.RandomBool() ? ScaleType.Black : ScaleType.White;
public override int TreasureMapLevel => 4;
public override int GetDeathSound()
{
return 0x2C1;
}
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 2);
AddLoot(LootPack.Gems, 2);
}
public override int GetAngerSound()
{
return 0x2C4;
}
public override int GetIdleSound()
{
return 0x2C4;
}
public override int GetHurtSound()
{
return 0x2C3;
}
public override int GetAttackSound()
{
return 0x2C0;
}
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override double BonusPetDamageScalar => (Core.SE) ? 3.0 : 1.0;
public override int GetDeathSound()
{
return 0x2C1;
}
public override bool AutoDispel => true;
public override HideType HideType => HideType.Barbed;
public override int Hides => 20;
public override int Meat => 19;
public override int Scales => 6;
public override ScaleType ScaleType => ( Utility.RandomBool() ? ScaleType.Black : ScaleType.White );
public override int TreasureMapLevel => 4;
public override int GetAngerSound()
{
return 0x2C4;
}
public SerpentineDragon( Serial serial ) : base( serial )
{
}
public override int GetHurtSound()
{
return 0x2C3;
}
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
public override void OnGotMeleeAttack(Mobile attacker)
{
base.OnGotMeleeAttack(attacker);
if ( !Core.SE && 0.2 > Utility.RandomDouble() && attacker is BaseCreature c && c.Controlled && c.ControlMaster != null )
{
c.ControlTarget = c.ControlMaster;
c.ControlOrder = OrderType.Attack;
c.Combatant = c.ControlMaster;
}
}
if (!Core.SE && 0.2 > Utility.RandomDouble() && attacker is BaseCreature c && c.Controlled &&
c.ControlMaster != null)
{
c.ControlTarget = c.ControlMaster;
c.ControlOrder = OrderType.Attack;
c.Combatant = c.ControlMaster;
}
}
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();
}
}
}

View file

@ -1,90 +1,90 @@
namespace Server.Mobiles
{
public class ShadowWyrm : BaseCreature
{
public override string CorpseName => "a shadow wyrm corpse";
public override string DefaultName => "a shadow wyrm";
public class ShadowWyrm : BaseCreature
{
[Constructible]
public ShadowWyrm() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = 106;
BaseSoundID = 362;
[Constructible]
public ShadowWyrm() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 106;
BaseSoundID = 362;
SetStr(898, 1030);
SetDex(68, 200);
SetInt(488, 620);
SetStr( 898, 1030 );
SetDex( 68, 200 );
SetInt( 488, 620 );
SetHits(558, 599);
SetHits( 558, 599 );
SetDamage(29, 35);
SetDamage( 29, 35 );
SetDamageType(ResistanceType.Physical, 75);
SetDamageType(ResistanceType.Cold, 25);
SetDamageType( ResistanceType.Physical, 75 );
SetDamageType( ResistanceType.Cold, 25 );
SetResistance(ResistanceType.Physical, 65, 75);
SetResistance(ResistanceType.Fire, 50, 60);
SetResistance(ResistanceType.Cold, 45, 55);
SetResistance(ResistanceType.Poison, 20, 30);
SetResistance(ResistanceType.Energy, 50, 60);
SetResistance( ResistanceType.Physical, 65, 75 );
SetResistance( ResistanceType.Fire, 50, 60 );
SetResistance( ResistanceType.Cold, 45, 55 );
SetResistance( ResistanceType.Poison, 20, 30 );
SetResistance( ResistanceType.Energy, 50, 60 );
SetSkill(SkillName.EvalInt, 80.1, 100.0);
SetSkill(SkillName.Magery, 80.1, 100.0);
SetSkill(SkillName.Meditation, 52.5, 75.0);
SetSkill(SkillName.MagicResist, 100.3, 130.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 97.6, 100.0);
SetSkill( SkillName.EvalInt, 80.1, 100.0 );
SetSkill( SkillName.Magery, 80.1, 100.0 );
SetSkill( SkillName.Meditation, 52.5, 75.0 );
SetSkill( SkillName.MagicResist, 100.3, 130.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.Wrestling, 97.6, 100.0 );
Fame = 22500;
Karma = -22500;
Fame = 22500;
Karma = -22500;
VirtualArmor = 70;
}
VirtualArmor = 70;
}
public ShadowWyrm(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 3 );
AddLoot( LootPack.Gems, 5 );
}
public override string CorpseName => "a shadow wyrm corpse";
public override string DefaultName => "a shadow wyrm";
public override int GetIdleSound()
{
return 0x2D5;
}
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override bool AutoDispel => true;
public override Poison PoisonImmune => Poison.Deadly;
public override Poison HitPoison => Poison.Deadly;
public override int TreasureMapLevel => 5;
public override int GetHurtSound()
{
return 0x2D1;
}
public override int Meat => 19;
public override int Hides => 20;
public override int Scales => 10;
public override ScaleType ScaleType => ScaleType.Black;
public override HideType HideType => HideType.Barbed;
public override bool CanFly => true;
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override bool AutoDispel => true;
public override Poison PoisonImmune => Poison.Deadly;
public override Poison HitPoison => Poison.Deadly;
public override int TreasureMapLevel => 5;
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 3);
AddLoot(LootPack.Gems, 5);
}
public override int Meat => 19;
public override int Hides => 20;
public override int Scales => 10;
public override ScaleType ScaleType => ScaleType.Black;
public override HideType HideType => HideType.Barbed;
public override bool CanFly => true;
public override int GetIdleSound()
{
return 0x2D5;
}
public ShadowWyrm( Serial serial ) : base( serial )
{
}
public override int GetHurtSound()
{
return 0x2D1;
}
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();
}
}
}

View file

@ -1,82 +1,83 @@
namespace Server.Mobiles
{
public class SkeletalDragon : BaseCreature
{
public override string CorpseName => "a skeletal dragon corpse";
public override string DefaultName => "a skeletal dragon";
public class SkeletalDragon : BaseCreature
{
[Constructible]
public SkeletalDragon() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = 104;
BaseSoundID = 0x488;
[Constructible]
public SkeletalDragon () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = 104;
BaseSoundID = 0x488;
SetStr(898, 1030);
SetDex(68, 200);
SetInt(488, 620);
SetStr( 898, 1030 );
SetDex( 68, 200 );
SetInt( 488, 620 );
SetHits(558, 599);
SetHits( 558, 599 );
SetDamage(29, 35);
SetDamage( 29, 35 );
SetDamageType(ResistanceType.Physical, 75);
SetDamageType(ResistanceType.Fire, 25);
SetDamageType( ResistanceType.Physical, 75 );
SetDamageType( ResistanceType.Fire, 25 );
SetResistance(ResistanceType.Physical, 75, 80);
SetResistance(ResistanceType.Fire, 40, 60);
SetResistance(ResistanceType.Cold, 40, 60);
SetResistance(ResistanceType.Poison, 70, 80);
SetResistance(ResistanceType.Energy, 40, 60);
SetResistance( ResistanceType.Physical, 75, 80 );
SetResistance( ResistanceType.Fire, 40, 60 );
SetResistance( ResistanceType.Cold, 40, 60 );
SetResistance( ResistanceType.Poison, 70, 80 );
SetResistance( ResistanceType.Energy, 40, 60 );
SetSkill(SkillName.EvalInt, 80.1, 100.0);
SetSkill(SkillName.Magery, 80.1, 100.0);
SetSkill(SkillName.MagicResist, 100.3, 130.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 97.6, 100.0);
SetSkill(SkillName.Necromancy, 120.1, 130.0);
SetSkill(SkillName.SpiritSpeak, 120.1, 130.0);
SetSkill( SkillName.EvalInt, 80.1, 100.0 );
SetSkill( SkillName.Magery, 80.1, 100.0 );
SetSkill( SkillName.MagicResist, 100.3, 130.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.Wrestling, 97.6, 100.0 );
SetSkill( SkillName.Necromancy, 120.1, 130.0 );
SetSkill( SkillName.SpiritSpeak, 120.1, 130.0 );
Fame = 22500;
Karma = -22500;
Fame = 22500;
Karma = -22500;
VirtualArmor = 80;
}
VirtualArmor = 80;
}
public SkeletalDragon(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 4 );
AddLoot( LootPack.Gems, 5 );
}
public override string CorpseName => "a skeletal dragon corpse";
public override string DefaultName => "a skeletal dragon";
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override int BreathFireDamage => 0;
public override int BreathColdDamage => 100;
public override int BreathEffectHue => 0x480;
public override double BonusPetDamageScalar => (Core.SE)? 3.0 : 1.0;
// TODO: Undead summoning?
public override bool ReacquireOnMovement => true;
public override bool HasBreath => true; // fire breath enabled
public override int BreathFireDamage => 0;
public override int BreathColdDamage => 100;
public override int BreathEffectHue => 0x480;
public override bool AutoDispel => true;
public override Poison PoisonImmune => Poison.Lethal;
public override bool BleedImmune => true;
public override int Meat => 19; // where's it hiding these? :)
public override int Hides => 20;
public override HideType HideType => HideType.Barbed;
public override double BonusPetDamageScalar => Core.SE ? 3.0 : 1.0;
// TODO: Undead summoning?
public SkeletalDragon( Serial serial ) : base( serial )
{
}
public override bool AutoDispel => true;
public override Poison PoisonImmune => Poison.Lethal;
public override bool BleedImmune => true;
public override int Meat => 19; // where's it hiding these? :)
public override int Hides => 20;
public override HideType HideType => HideType.Barbed;
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 4);
AddLoot(LootPack.Gems, 5);
}
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();
}
}
}

View file

@ -1,81 +1,81 @@
namespace Server.Mobiles
{
public class WhiteWyrm : BaseCreature
{
public override string CorpseName => "a white wyrm corpse";
public override string DefaultName => "a white wyrm";
public class WhiteWyrm : BaseCreature
{
[Constructible]
public WhiteWyrm() : base(AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4)
{
Body = Utility.RandomBool() ? 180 : 49;
BaseSoundID = 362;
[Constructible]
public WhiteWyrm() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Body = Utility.RandomBool() ? 180 : 49;
BaseSoundID = 362;
SetStr(721, 760);
SetDex(101, 130);
SetInt(386, 425);
SetStr( 721, 760 );
SetDex( 101, 130 );
SetInt( 386, 425 );
SetHits(433, 456);
SetHits( 433, 456 );
SetDamage(17, 25);
SetDamage( 17, 25 );
SetDamageType(ResistanceType.Physical, 50);
SetDamageType(ResistanceType.Cold, 50);
SetDamageType( ResistanceType.Physical, 50 );
SetDamageType( ResistanceType.Cold, 50 );
SetResistance(ResistanceType.Physical, 55, 70);
SetResistance(ResistanceType.Fire, 15, 25);
SetResistance(ResistanceType.Cold, 80, 90);
SetResistance(ResistanceType.Poison, 40, 50);
SetResistance(ResistanceType.Energy, 40, 50);
SetResistance( ResistanceType.Physical, 55, 70 );
SetResistance( ResistanceType.Fire, 15, 25 );
SetResistance( ResistanceType.Cold, 80, 90 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 40, 50 );
SetSkill(SkillName.EvalInt, 99.1, 100.0);
SetSkill(SkillName.Magery, 99.1, 100.0);
SetSkill(SkillName.MagicResist, 99.1, 100.0);
SetSkill(SkillName.Tactics, 97.6, 100.0);
SetSkill(SkillName.Wrestling, 90.1, 100.0);
SetSkill( SkillName.EvalInt, 99.1, 100.0 );
SetSkill( SkillName.Magery, 99.1, 100.0 );
SetSkill( SkillName.MagicResist, 99.1, 100.0 );
SetSkill( SkillName.Tactics, 97.6, 100.0 );
SetSkill( SkillName.Wrestling, 90.1, 100.0 );
Fame = 18000;
Karma = -18000;
Fame = 18000;
Karma = -18000;
VirtualArmor = 64;
VirtualArmor = 64;
Tamable = true;
ControlSlots = 3;
MinTameSkill = 96.3;
}
Tamable = true;
ControlSlots = 3;
MinTameSkill = 96.3;
}
public WhiteWyrm(Serial serial) : base(serial)
{
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich, 2 );
AddLoot( LootPack.Average );
AddLoot( LootPack.Gems, Utility.Random( 1, 5 ) );
}
public override string CorpseName => "a white wyrm corpse";
public override string DefaultName => "a white wyrm";
public override bool ReacquireOnMovement => true;
public override int TreasureMapLevel => 4;
public override int Meat => 19;
public override int Hides => 20;
public override HideType HideType => HideType.Barbed;
public override int Scales => 9;
public override ScaleType ScaleType => ScaleType.White;
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Gold;
public override bool CanAngerOnTame => true;
public override bool CanFly => true;
public override bool ReacquireOnMovement => true;
public override int TreasureMapLevel => 4;
public override int Meat => 19;
public override int Hides => 20;
public override HideType HideType => HideType.Barbed;
public override int Scales => 9;
public override ScaleType ScaleType => ScaleType.White;
public override FoodType FavoriteFood => FoodType.Meat | FoodType.Gold;
public override bool CanAngerOnTame => true;
public override bool CanFly => true;
public WhiteWyrm( Serial serial ) : base( serial )
{
}
public override void GenerateLoot()
{
AddLoot(LootPack.FilthyRich, 2);
AddLoot(LootPack.Average);
AddLoot(LootPack.Gems, Utility.Random(1, 5));
}
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();
}
}
}