#W# Source and Scripts added. Added Scripts/Settings.cs to expose some basic tweak able settings.

This commit is contained in:
WarrentyExpired 2026-08-06 11:06:05 -04:00
parent b51c58f514
commit 3045c83799
3512 changed files with 627673 additions and 0 deletions

View file

@ -0,0 +1,87 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[TypeAlias( "Server.Mobiles.ToxicElemental" )]
[CorpseName( "an acid elemental corpse" )]
public class AcidElemental : BaseCreature
{
[Constructable]
public AcidElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an acid elemental";
Body = 0x9E;
BaseSoundID = 278;
SetStr( 326, 355 );
SetDex( 66, 85 );
SetInt( 271, 295 );
SetHits( 196, 213 );
SetDamage( 9, 15 );
SetDamageType( ResistanceType.Physical, 25 );
SetDamageType( ResistanceType.Fire, 50 );
SetDamageType( ResistanceType.Energy, 25 );
SetResistance( ResistanceType.Physical, 45, 55 );
SetResistance( ResistanceType.Fire, 40, 50 );
SetResistance( ResistanceType.Cold, 20, 30 );
SetResistance( ResistanceType.Poison, 10, 20 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.Anatomy, 30.3, 60.0 );
SetSkill( SkillName.EvalInt, 70.1, 85.0 );
SetSkill( SkillName.Magery, 70.1, 85.0 );
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 80.1, 90.0 );
SetSkill( SkillName.Wrestling, 70.1, 90.0 );
Fame = 10000;
Karma = -10000;
VirtualArmor = 40;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public override double HitPoisonChance{ get{ return 0.6; } }
public override int TreasureMapLevel{ get{ return Core.AOS ? 2 : 3; } }
public AcidElemental( Serial serial )
: base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( BaseSoundID == 263 )
BaseSoundID = 278;
if ( Body == 13 )
Body = 0x9E;
if ( Hue == 0x4001 )
Hue = 0;
}
}
}

View file

@ -0,0 +1,82 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an air elemental corpse" )]
public class AirElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
[Constructable]
public AirElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an air elemental";
Body = 13;
Hue = 0x4001;
BaseSoundID = 655;
SetStr( 126, 155 );
SetDex( 166, 185 );
SetInt( 101, 125 );
SetHits( 76, 93 );
SetDamage( 8, 10 );
SetDamageType( ResistanceType.Physical, 20 );
SetDamageType( ResistanceType.Cold, 40 );
SetDamageType( ResistanceType.Energy, 40 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 15, 25 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 10, 20 );
SetResistance( ResistanceType.Energy, 25, 35 );
SetSkill( SkillName.EvalInt, 60.1, 75.0 );
SetSkill( SkillName.Magery, 60.1, 75.0 );
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 60.1, 80.0 );
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
Fame = 4500;
Karma = -4500;
VirtualArmor = 40;
ControlSlots = 2;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
AddLoot( LootPack.LowScrolls );
AddLoot( LootPack.MedScrolls );
}
public override bool BleedImmune{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 2; } }
public AirElemental( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( BaseSoundID == 263 )
BaseSoundID = 655;
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a blood elemental corpse" )]
public class BloodElemental : BaseCreature
{
[Constructable]
public BloodElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a blood elemental";
Body = 159;
BaseSoundID = 278;
SetStr( 526, 615 );
SetDex( 66, 85 );
SetInt( 226, 350 );
SetHits( 316, 369 );
SetDamage( 17, 27 );
SetDamageType( ResistanceType.Physical, 0 );
SetDamageType( ResistanceType.Poison, 50 );
SetDamageType( ResistanceType.Energy, 50 );
SetResistance( ResistanceType.Physical, 55, 65 );
SetResistance( ResistanceType.Fire, 20, 30 );
SetResistance( ResistanceType.Cold, 40, 50 );
SetResistance( ResistanceType.Poison, 50, 60 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.EvalInt, 85.1, 100.0 );
SetSkill( SkillName.Magery, 85.1, 100.0 );
SetSkill( SkillName.Meditation, 10.4, 50.0 );
SetSkill( SkillName.MagicResist, 80.1, 95.0 );
SetSkill( SkillName.Tactics, 80.1, 100.0 );
SetSkill( SkillName.Wrestling, 80.1, 100.0 );
Fame = 12500;
Karma = -12500;
VirtualArmor = 60;
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.Rich );
}
public override int TreasureMapLevel{ get{ return 5; } }
public BloodElemental( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,83 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an efreet corpse" )]
public class Efreet : BaseCreature
{
[Constructable]
public Efreet () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an efreet";
Body = 131;
BaseSoundID = 768;
SetStr( 326, 355 );
SetDex( 266, 285 );
SetInt( 171, 195 );
SetHits( 196, 213 );
SetDamage( 11, 13 );
SetDamageType( ResistanceType.Physical, 0 );
SetDamageType( ResistanceType.Fire, 50 );
SetDamageType( ResistanceType.Energy, 50 );
SetResistance( ResistanceType.Physical, 50, 60 );
SetResistance( ResistanceType.Fire, 60, 70 );
SetResistance( ResistanceType.Poison, 30, 40 );
SetResistance( ResistanceType.Energy, 40, 50 );
SetSkill( SkillName.EvalInt, 60.1, 75.0 );
SetSkill( SkillName.Magery, 60.1, 75.0 );
SetSkill( SkillName.MagicResist, 60.1, 75.0 );
SetSkill( SkillName.Tactics, 60.1, 80.0 );
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
Fame = 10000;
Karma = -10000;
VirtualArmor = 56;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Rich );
AddLoot( LootPack.Average );
AddLoot( LootPack.Gems );
if ( 0.02 > Utility.RandomDouble() )
{
switch ( Utility.Random( 5 ) )
{
case 0: PackItem( new DaemonArms() ); break;
case 1: PackItem( new DaemonChest() ); break;
case 2: PackItem( new DaemonGloves() ); break;
case 3: PackItem( new DaemonLegs() ); break;
case 4: PackItem( new DaemonHelm() ); break;
}
}
}
public override int TreasureMapLevel{ get{ return Core.AOS ? 4 : 5; } }
public Efreet( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,83 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a fire elemental corpse" )]
public class FireElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
[Constructable]
public FireElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a fire elemental";
Body = 15;
BaseSoundID = 838;
SetStr( 126, 155 );
SetDex( 166, 185 );
SetInt( 101, 125 );
SetHits( 76, 93 );
SetDamage( 7, 9 );
SetDamageType( ResistanceType.Physical, 25 );
SetDamageType( ResistanceType.Fire, 75 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 60, 80 );
SetResistance( ResistanceType.Cold, 5, 10 );
SetResistance( ResistanceType.Poison, 30, 40 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.EvalInt, 60.1, 75.0 );
SetSkill( SkillName.Magery, 60.1, 75.0 );
SetSkill( SkillName.MagicResist, 75.2, 105.0 );
SetSkill( SkillName.Tactics, 80.1, 100.0 );
SetSkill( SkillName.Wrestling, 70.1, 100.0 );
Fame = 4500;
Karma = -4500;
VirtualArmor = 40;
ControlSlots = 4;
PackItem( new SulfurousAsh( 3 ) );
AddItem( new LightSource() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
AddLoot( LootPack.Gems );
}
public override bool BleedImmune{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 2; } }
public FireElemental( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( BaseSoundID == 274 )
BaseSoundID = 838;
}
}
}

View file

@ -0,0 +1,72 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "an ice elemental corpse" )]
public class IceElemental : BaseCreature
{
[Constructable]
public IceElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "an ice elemental";
Body = 161;
BaseSoundID = 268;
SetStr( 156, 185 );
SetDex( 96, 115 );
SetInt( 171, 192 );
SetHits( 94, 111 );
SetDamage( 10, 21 );
SetDamageType( ResistanceType.Physical, 25 );
SetDamageType( ResistanceType.Cold, 75 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 5, 10 );
SetResistance( ResistanceType.Cold, 50, 60 );
SetResistance( ResistanceType.Poison, 20, 30 );
SetResistance( ResistanceType.Energy, 20, 30 );
SetSkill( SkillName.EvalInt, 10.5, 60.0 );
SetSkill( SkillName.Magery, 10.5, 60.0 );
SetSkill( SkillName.MagicResist, 30.1, 80.0 );
SetSkill( SkillName.Tactics, 70.1, 100.0 );
SetSkill( SkillName.Wrestling, 60.1, 100.0 );
Fame = 4000;
Karma = -4000;
VirtualArmor = 40;
PackItem( new BlackPearl() );
PackReg( 3 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average, 2 );
AddLoot( LootPack.Gems, 2 );
}
public override bool BleedImmune{ get{ return true; } }
public IceElemental( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,82 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a poison elementals corpse" )]
public class PoisonElemental : BaseCreature
{
[Constructable]
public PoisonElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a poison elemental";
Body = 162;
BaseSoundID = 263;
SetStr( 426, 515 );
SetDex( 166, 185 );
SetInt( 361, 435 );
SetHits( 256, 309 );
SetDamage( 12, 18 );
SetDamageType( ResistanceType.Physical, 10 );
SetDamageType( ResistanceType.Poison, 90 );
SetResistance( ResistanceType.Physical, 60, 70 );
SetResistance( ResistanceType.Fire, 20, 30 );
SetResistance( ResistanceType.Cold, 20, 30 );
SetResistance( ResistanceType.Poison, 100 );
SetResistance( ResistanceType.Energy, 40, 50 );
SetSkill( SkillName.EvalInt, 80.1, 95.0 );
SetSkill( SkillName.Magery, 80.1, 95.0 );
SetSkill( SkillName.Meditation, 80.2, 120.0 );
SetSkill( SkillName.Poisoning, 90.1, 100.0 );
SetSkill( SkillName.MagicResist, 85.2, 115.0 );
SetSkill( SkillName.Tactics, 80.1, 100.0 );
SetSkill( SkillName.Wrestling, 70.1, 90.0 );
Fame = 12500;
Karma = -12500;
VirtualArmor = 70;
PackItem( new Nightshade( 4 ) );
PackItem( new LesserPoisonPotion() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.FilthyRich );
AddLoot( LootPack.Rich );
AddLoot( LootPack.MedScrolls );
}
public override bool BleedImmune{ get{ return true; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public override double HitPoisonChance{ get{ return 0.75; } }
public override int TreasureMapLevel{ get{ return 5; } }
public PoisonElemental( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,78 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a water elemental corpse" )]
public class WaterElemental : BaseCreature
{
public override double DispelDifficulty{ get{ return 117.5; } }
public override double DispelFocus{ get{ return 45.0; } }
[Constructable]
public WaterElemental () : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a water elemental";
Body = 16;
BaseSoundID = 278;
SetStr( 126, 155 );
SetDex( 66, 85 );
SetInt( 101, 125 );
SetHits( 76, 93 );
SetDamage( 7, 9 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 10, 25 );
SetResistance( ResistanceType.Cold, 10, 25 );
SetResistance( ResistanceType.Poison, 60, 70 );
SetResistance( ResistanceType.Energy, 5, 10 );
SetSkill( SkillName.EvalInt, 60.1, 75.0 );
SetSkill( SkillName.Magery, 60.1, 75.0 );
SetSkill( SkillName.MagicResist, 100.1, 115.0 );
SetSkill( SkillName.Tactics, 50.1, 70.0 );
SetSkill( SkillName.Wrestling, 50.1, 70.0 );
Fame = 4500;
Karma = -4500;
VirtualArmor = 40;
ControlSlots = 3;
CanSwim = true;
PackItem( new BlackPearl( 3 ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
AddLoot( LootPack.Meager );
AddLoot( LootPack.Potions );
}
public override bool BleedImmune{ get{ return true; } }
public override int TreasureMapLevel{ get{ return 2; } }
public WaterElemental( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}