#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,75 @@
using System;
using Server;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a reapers corpse" )]
public class Reaper : BaseCreature
{
[Constructable]
public Reaper() : base( AIType.AI_Mage, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a reaper";
Body = 47;
BaseSoundID = 442;
SetStr( 66, 215 );
SetDex( 66, 75 );
SetInt( 101, 250 );
SetHits( 40, 129 );
SetStam( 0 );
SetDamage( 9, 11 );
SetDamageType( ResistanceType.Physical, 80 );
SetDamageType( ResistanceType.Poison, 20 );
SetResistance( ResistanceType.Physical, 35, 45 );
SetResistance( ResistanceType.Fire, 15, 25 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 30, 40 );
SetSkill( SkillName.EvalInt, 90.1, 100.0 );
SetSkill( SkillName.Magery, 90.1, 100.0 );
SetSkill( SkillName.MagicResist, 100.1, 125.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.Wrestling, 50.1, 60.0 );
Fame = 3500;
Karma = -3500;
VirtualArmor = 40;
PackItem( new Log( 10 ) );
PackItem( new MandrakeRoot( 5 ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override Poison PoisonImmune{ get{ return Poison.Greater; } }
public override int TreasureMapLevel{ get{ return 2; } }
public override bool DisallowAllMoves{ get{ return true; } }
public Reaper( 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,144 @@
using System;
using System.Collections;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a plant corpse" )]
public class BogThing : BaseCreature
{
[Constructable]
public BogThing() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.6, 1.2 )
{
Name = "a bog thing";
Body = 780;
SetStr( 801, 900 );
SetDex( 46, 65 );
SetInt( 36, 50 );
SetHits( 481, 540 );
SetMana( 0 );
SetDamage( 10, 23 );
SetDamageType( ResistanceType.Physical, 60 );
SetDamageType( ResistanceType.Poison, 40 );
SetResistance( ResistanceType.Physical, 30, 40 );
SetResistance( ResistanceType.Fire, 20, 25 );
SetResistance( ResistanceType.Cold, 10, 15 );
SetResistance( ResistanceType.Poison, 40, 50 );
SetResistance( ResistanceType.Energy, 20, 25 );
SetSkill( SkillName.MagicResist, 90.1, 95.0 );
SetSkill( SkillName.Tactics, 70.1, 85.0 );
SetSkill( SkillName.Wrestling, 65.1, 80.0 );
Fame = 8000;
Karma = -8000;
VirtualArmor = 28;
if ( 0.25 > Utility.RandomDouble() )
PackItem( new Board( 10 ) );
else
PackItem( new Log( 10 ) );
PackReg( 3 );
PackItem( new Engines.Plants.Seed() );
PackItem( new Engines.Plants.Seed() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average, 2 );
}
public override bool BardImmune{ get{ return !Core.AOS; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public BogThing( 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();
}
public void SpawnBogling( Mobile m )
{
Map map = this.Map;
if ( map == null )
return;
Bogling spawned = new Bogling();
spawned.Team = this.Team;
bool validLocation = false;
Point3D loc = this.Location;
for ( int j = 0; !validLocation && j < 10; ++j )
{
int x = X + Utility.Random( 3 ) - 1;
int y = Y + Utility.Random( 3 ) - 1;
int z = map.GetAverageZ( x, y );
if ( validLocation = map.CanFit( x, y, this.Z, 16, false, false ) )
loc = new Point3D( x, y, Z );
else if ( validLocation = map.CanFit( x, y, z, 16, false, false ) )
loc = new Point3D( x, y, z );
}
spawned.MoveToWorld( loc, map );
spawned.Combatant = m;
}
public void EatBoglings()
{
ArrayList toEat = new ArrayList();
foreach ( Mobile m in this.GetMobilesInRange( 2 ) )
{
if ( m is Bogling )
toEat.Add( m );
}
if ( toEat.Count > 0 )
{
PlaySound( Utility.Random( 0x3B, 2 ) ); // Eat sound
foreach ( Mobile m in toEat )
{
Hits += (m.Hits / 2);
m.Delete();
}
}
}
public override void OnGotMeleeAttack( Mobile attacker )
{
base.OnGotMeleeAttack( attacker );
if ( this.Hits > (this.HitsMax / 4) )
{
if ( 0.25 >= Utility.RandomDouble() )
SpawnBogling( attacker );
}
else if ( 0.25 >= Utility.RandomDouble() )
{
EatBoglings();
}
}
}
}

View file

@ -0,0 +1,69 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a plant corpse" )]
public class Bogling : BaseCreature
{
[Constructable]
public Bogling() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a bogling";
Body = 779;
BaseSoundID = 422;
SetStr( 96, 120 );
SetDex( 91, 115 );
SetInt( 21, 45 );
SetHits( 58, 72 );
SetDamage( 5, 7 );
SetDamageType( ResistanceType.Physical, 100 );
SetResistance( ResistanceType.Physical, 20, 25 );
SetResistance( ResistanceType.Fire, 10, 20 );
SetResistance( ResistanceType.Cold, 15, 25 );
SetResistance( ResistanceType.Poison, 15, 25 );
SetResistance( ResistanceType.Energy, 15, 25 );
SetSkill( SkillName.MagicResist, 75.1, 100.0 );
SetSkill( SkillName.Tactics, 55.1, 80.0 );
SetSkill( SkillName.Wrestling, 55.1, 75.0 );
Fame = 450;
Karma = -450;
VirtualArmor = 28;
PackItem( new Log( 4 ) );
PackItem( new Engines.Plants.Seed() );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override int Hides{ get{ return 6; } }
public override int Meat{ get{ return 1; } }
public Bogling( 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,79 @@
using System;
using System.Collections;
using Server.Items;
using Server.Targeting;
namespace Server.Mobiles
{
[CorpseName( "a corpser corpse" )]
public class Corpser : BaseCreature
{
[Constructable]
public Corpser() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a corpser";
Body = 8;
BaseSoundID = 684;
SetStr( 156, 180 );
SetDex( 26, 45 );
SetInt( 26, 40 );
SetHits( 94, 108 );
SetMana( 0 );
SetDamage( 10, 23 );
SetDamageType( ResistanceType.Physical, 60 );
SetDamageType( ResistanceType.Poison, 40 );
SetResistance( ResistanceType.Physical, 15, 20 );
SetResistance( ResistanceType.Fire, 15, 25 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 20, 30 );
SetSkill( SkillName.MagicResist, 15.1, 20.0 );
SetSkill( SkillName.Tactics, 45.1, 60.0 );
SetSkill( SkillName.Wrestling, 45.1, 60.0 );
Fame = 1000;
Karma = -1000;
VirtualArmor = 18;
if ( 0.25 > Utility.RandomDouble() )
PackItem( new Board( 10 ) );
else
PackItem( new Log( 10 ) );
PackItem( new MandrakeRoot( 3 ) );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Meager );
}
public override Poison PoisonImmune{ get{ return Poison.Lesser; } }
public override bool DisallowAllMoves{ get{ return true; } }
public Corpser( 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 == 352 )
BaseSoundID = 684;
}
}
}

View file

@ -0,0 +1,76 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a quagmire corpse" )]
public class Quagmire : BaseCreature
{
[Constructable]
public Quagmire() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.4, 0.8 )
{
Name = "a quagmire";
Body = 789;
BaseSoundID = 352;
SetStr( 101, 130 );
SetDex( 66, 85 );
SetInt( 31, 55 );
SetHits( 91, 105 );
SetDamage( 10, 14 );
SetDamageType( ResistanceType.Physical, 60 );
SetDamageType( ResistanceType.Poison, 40 );
SetResistance( ResistanceType.Physical, 50, 60 );
SetResistance( ResistanceType.Fire, 10, 20 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 100 );
SetResistance( ResistanceType.Energy, 20, 30 );
SetSkill( SkillName.MagicResist, 65.1, 75.0 );
SetSkill( SkillName.Tactics, 50.1, 60.0 );
SetSkill( SkillName.Wrestling, 60.1, 80.0 );
Fame = 1500;
Karma = -1500;
VirtualArmor = 32;
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override int GetAngerSound()
{
return 353;
}
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public override Poison HitPoison{ get{ return Poison.Lethal; } }
public override double HitPoisonChance{ get{ return 0.1; } }
public Quagmire( 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 == -1 )
BaseSoundID = 352;
}
}
}

View file

@ -0,0 +1,69 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a swamp tentacle corpse" )]
public class SwampTentacle : BaseCreature
{
[Constructable]
public SwampTentacle() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a swamp tentacle";
Body = 66;
BaseSoundID = 352;
SetStr( 96, 120 );
SetDex( 66, 85 );
SetInt( 16, 30 );
SetHits( 58, 72 );
SetMana( 0 );
SetDamage( 6, 12 );
SetDamageType( ResistanceType.Physical, 40 );
SetDamageType( ResistanceType.Poison, 60 );
SetResistance( ResistanceType.Physical, 25, 35 );
SetResistance( ResistanceType.Fire, 10, 20 );
SetResistance( ResistanceType.Cold, 10, 20 );
SetResistance( ResistanceType.Poison, 60, 80 );
SetResistance( ResistanceType.Energy, 10, 20 );
SetSkill( SkillName.MagicResist, 15.1, 20.0 );
SetSkill( SkillName.Tactics, 65.1, 80.0 );
SetSkill( SkillName.Wrestling, 65.1, 80.0 );
Fame = 3000;
Karma = -3000;
VirtualArmor = 28;
PackReg( 3 );
}
public override void GenerateLoot()
{
AddLoot( LootPack.Average );
}
public override Poison PoisonImmune{ get{ return Poison.Greater; } }
public SwampTentacle( 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,71 @@
using System;
using Server.Items;
namespace Server.Mobiles
{
[CorpseName( "a whipping vine corpse" )]
public class WhippingVine : BaseCreature
{
[Constructable]
public WhippingVine() : base( AIType.AI_Melee, FightMode.Closest, 10, 1, 0.2, 0.4 )
{
Name = "a whipping vine";
Body = 8;
Hue = 0x851;
BaseSoundID = 352;
SetStr( 251, 300 );
SetDex( 76, 100 );
SetInt( 26, 40 );
SetMana( 0 );
SetDamage( 7, 25 );
SetDamageType( ResistanceType.Physical, 70 );
SetDamageType( ResistanceType.Poison, 30 );
SetResistance( ResistanceType.Physical, 75, 85 );
SetResistance( ResistanceType.Fire, 15, 25 );
SetResistance( ResistanceType.Cold, 15, 25 );
SetResistance( ResistanceType.Poison, 75, 85 );
SetResistance( ResistanceType.Energy, 35, 45 );
SetSkill( SkillName.MagicResist, 70.0 );
SetSkill( SkillName.Tactics, 70.0 );
SetSkill( SkillName.Wrestling, 70.0 );
Fame = 1000;
Karma = -1000;
VirtualArmor = 45;
PackReg( 3 );
PackItem( new FertileDirt( Utility.RandomMinMax( 1, 10 ) ) );
if ( 0.2 >= Utility.RandomDouble() )
PackItem( new ExecutionersCap() );
PackItem( new Vines() );
}
public override bool BardImmune{ get{ return !Core.AOS; } }
public override Poison PoisonImmune{ get{ return Poison.Lethal; } }
public WhippingVine( 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();
}
}
}