#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,60 @@
using System;
using Server;
using Server.Items;
namespace Server.Items
{
public abstract class BaseBashing : BaseMeleeWeapon
{
public override int DefHitSound{ get{ return 0x233; } }
public override int DefMissSound{ get{ return 0x239; } }
public override SkillName DefSkill{ get{ return SkillName.Macing; } }
public override WeaponType DefType{ get{ return WeaponType.Bashing; } }
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Bash1H; } }
public BaseBashing( int itemID ) : base( itemID )
{
}
public BaseBashing( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void OnHit( Mobile attacker, Mobile defender, double damageBonus )
{
base.OnHit( attacker, defender, damageBonus );
defender.Stam -= Utility.Random( 3, 3 ); // 3-5 points of stamina loss
}
public override double GetBaseDamage( Mobile attacker )
{
double damage = base.GetBaseDamage( attacker );
if (!Core.AOS && (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded && attacker.Skills[SkillName.Anatomy].Value >= 80 && (attacker.Skills[SkillName.Anatomy].Value / 400.0) >= Utility.RandomDouble() && Engines.ConPVP.DuelContext.AllowSpecialAbility(attacker, "Crushing Blow", false))
{
damage *= 1.5;
attacker.SendMessage( "You deliver a crushing blow!" ); // Is this not localized?
attacker.PlaySound( 0x11C );
}
return damage;
}
}
}

View file

@ -0,0 +1,51 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0x13b4, 0x13b3 )]
public class Club : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.ShadowStrike; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.Dismount; } }
public override int AosStrengthReq{ get{ return 40; } }
public override int AosMinDamage{ get{ return 11; } }
public override int AosMaxDamage{ get{ return 13; } }
public override int AosSpeed{ get{ return 44; } }
public override float MlSpeed{ get{ return 2.50f; } }
public override int OldStrengthReq{ get{ return 10; } }
public override int OldMinDamage{ get{ return 8; } }
public override int OldMaxDamage{ get{ return 24; } }
public override int OldSpeed{ get{ return 40; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 40; } }
[Constructable]
public Club() : base( 0x13B4 )
{
Weight = 9.0;
}
public Club( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server.Items;
namespace Server.Items
{
public class EmeraldMace : DiamondMace
{
public override int LabelNumber{ get{ return 1073530; } } // emerald mace
[Constructable]
public EmeraldMace()
{
WeaponAttributes.ResistPoisonBonus = 5;
}
public EmeraldMace( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,138 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
public class FireworksWand : MagicWand
{
public override int LabelNumber{ get{ return 1041424; } } // a fireworks wand
private int m_Charges;
[CommandProperty( AccessLevel.GameMaster )]
public int Charges
{
get{ return m_Charges; }
set{ m_Charges = value; InvalidateProperties(); }
}
[Constructable]
public FireworksWand() : this( 100 )
{
}
[Constructable]
public FireworksWand( int charges )
{
m_Charges = charges;
LootType = LootType.Blessed;
}
public FireworksWand( Serial serial ) : base( serial )
{
}
public override void AddNameProperties( ObjectPropertyList list )
{
base.AddNameProperties( list );
list.Add( 1060741, m_Charges.ToString() ); // charges: ~1_val~
}
public override void OnDoubleClick( Mobile from )
{
BeginLaunch( from, true );
}
public void BeginLaunch( Mobile from, bool useCharges )
{
Map map = from.Map;
if ( map == null || map == Map.Internal )
return;
if ( useCharges )
{
if ( Charges > 0 )
{
--Charges;
}
else
{
from.SendLocalizedMessage( 502412 ); // There are no charges left on that item.
return;
}
}
from.SendLocalizedMessage( 502615 ); // You launch a firework!
Point3D ourLoc = GetWorldLocation();
Point3D startLoc = new Point3D( ourLoc.X, ourLoc.Y, ourLoc.Z + 10 );
Point3D endLoc = new Point3D( startLoc.X + Utility.RandomMinMax( -2, 2 ), startLoc.Y + Utility.RandomMinMax( -2, 2 ), startLoc.Z + 32 );
Effects.SendMovingEffect( new Entity( Serial.Zero, startLoc, map ), new Entity( Serial.Zero, endLoc, map ),
0x36E4, 5, 0, false, false );
Timer.DelayCall( TimeSpan.FromSeconds( 1.0 ), new TimerStateCallback( FinishLaunch ), new object[]{ from, endLoc, map } );
}
private void FinishLaunch( object state )
{
object[] states = (object[])state;
Mobile from = (Mobile)states[0];
Point3D endLoc = (Point3D)states[1];
Map map = (Map)states[2];
int hue = Utility.Random( 40 );
if ( hue < 8 )
hue = 0x66D;
else if ( hue < 10 )
hue = 0x482;
else if ( hue < 12 )
hue = 0x47E;
else if ( hue < 16 )
hue = 0x480;
else if ( hue < 20 )
hue = 0x47F;
else
hue = 0;
if ( Utility.RandomBool() )
hue = Utility.RandomList( 0x47E, 0x47F, 0x480, 0x482, 0x66D );
int renderMode = Utility.RandomList( 0, 2, 3, 4, 5, 7 );
Effects.PlaySound( endLoc, map, Utility.Random( 0x11B, 4 ) );
Effects.SendLocationEffect( endLoc, map, 0x373A + (0x10 * Utility.Random( 4 )), 16, 10, hue, renderMode );
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
writer.Write( (int) m_Charges );
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
switch ( version )
{
case 0:
{
m_Charges = reader.ReadInt();
break;
}
}
}
}
}

View file

@ -0,0 +1,52 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0x143D, 0x143C )]
public class HammerPick : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.ArmorIgnore; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.MortalStrike; } }
public override int AosStrengthReq{ get{ return 45; } }
public override int AosMinDamage{ get{ return 15; } }
public override int AosMaxDamage{ get{ return 17; } }
public override int AosSpeed{ get{ return 28; } }
public override float MlSpeed{ get{ return 3.75f; } }
public override int OldStrengthReq{ get{ return 35; } }
public override int OldMinDamage{ get{ return 6; } }
public override int OldMaxDamage{ get{ return 33; } }
public override int OldSpeed{ get{ return 30; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 70; } }
[Constructable]
public HammerPick() : base( 0x143D )
{
Weight = 9.0;
Layer = Layer.OneHanded;
}
public HammerPick( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,51 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0xF5C, 0xF5D )]
public class Mace : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.ConcussionBlow; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.Disarm; } }
public override int AosStrengthReq{ get{ return 45; } }
public override int AosMinDamage{ get{ return 12; } }
public override int AosMaxDamage{ get{ return 14; } }
public override int AosSpeed{ get{ return 40; } }
public override float MlSpeed{ get{ return 2.75f; } }
public override int OldStrengthReq{ get{ return 20; } }
public override int OldMinDamage{ get{ return 8; } }
public override int OldMaxDamage{ get{ return 32; } }
public override int OldSpeed{ get{ return 30; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 70; } }
[Constructable]
public Mace() : base( 0xF5C )
{
Weight = 14.0;
}
public Mace( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,50 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
public class MagicWand : BaseBashing
{
public override WeaponAbility PrimaryAbility { get { return WeaponAbility.Dismount; } }
public override WeaponAbility SecondaryAbility { get { return WeaponAbility.Disarm; } }
public override int AosStrengthReq{ get{ return 5; } }
public override int AosMinDamage{ get{ return 9; } }
public override int AosMaxDamage{ get{ return 11; } }
public override int AosSpeed{ get{ return 40; } }
public override float MlSpeed{ get{ return 2.75f; } }
public override int OldStrengthReq{ get{ return 0; } }
public override int OldMinDamage{ get{ return 2; } }
public override int OldMaxDamage{ get{ return 6; } }
public override int OldSpeed{ get{ return 35; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 110; } }
[Constructable]
public MagicWand() : base( 0xDF2 )
{
Weight = 1.0;
}
public MagicWand( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0x143B, 0x143A )]
public class Maul : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.CrushingBlow; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.ConcussionBlow; } }
public override int AosStrengthReq{ get{ return 45; } }
public override int AosMinDamage{ get{ return 14; } }
public override int AosMaxDamage{ get{ return 16; } }
public override int AosSpeed{ get{ return 32; } }
public override float MlSpeed{ get{ return 3.50f; } }
public override int OldStrengthReq{ get{ return 20; } }
public override int OldMinDamage{ get{ return 10; } }
public override int OldMaxDamage{ get{ return 30; } }
public override int OldSpeed{ get{ return 30; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 70; } }
[Constructable]
public Maul() : base( 0x143B )
{
Weight = 10.0;
}
public Maul( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( Weight == 14.0 )
Weight = 10.0;
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server.Items;
namespace Server.Items
{
public class RubyMace : DiamondMace
{
public override int LabelNumber{ get{ return 1073529; } } // ruby mace
[Constructable]
public RubyMace()
{
Attributes.WeaponDamage = 5;
}
public RubyMace( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server.Items;
namespace Server.Items
{
public class SapphireMace : DiamondMace
{
public override int LabelNumber{ get{ return 1073531; } } // sapphire mace
[Constructable]
public SapphireMace()
{
WeaponAttributes.ResistEnergyBonus = 5;
}
public SapphireMace( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,51 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0x26BC, 0x26C6 )]
public class Scepter : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.CrushingBlow; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.MortalStrike; } }
public override int AosStrengthReq{ get{ return 40; } }
public override int AosMinDamage{ get{ return 14; } }
public override int AosMaxDamage{ get{ return 17; } }
public override int AosSpeed{ get{ return 30; } }
public override float MlSpeed{ get{ return 3.50f; } }
public override int OldStrengthReq{ get{ return 40; } }
public override int OldMinDamage{ get{ return 14; } }
public override int OldMaxDamage{ get{ return 17; } }
public override int OldSpeed{ get{ return 30; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 110; } }
[Constructable]
public Scepter() : base( 0x26BC )
{
Weight = 8.0;
}
public Scepter( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,34 @@
using System;
using Server.Items;
namespace Server.Items
{
public class SilverEtchedMace : DiamondMace
{
public override int LabelNumber{ get{ return 1073532; } } // silver-etched mace
[Constructable]
public SilverEtchedMace()
{
Slayer = SlayerName.Exorcism;
}
public SilverEtchedMace( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.WriteEncodedInt( 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadEncodedInt();
}
}
}

View file

@ -0,0 +1,54 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0x1439, 0x1438 )]
public class WarHammer : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.WhirlwindAttack; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.CrushingBlow; } }
public override int AosStrengthReq{ get{ return 95; } }
public override int AosMinDamage{ get{ return 17; } }
public override int AosMaxDamage{ get{ return 18; } }
public override int AosSpeed{ get{ return 28; } }
public override float MlSpeed{ get{ return 3.75f; } }
public override int OldStrengthReq{ get{ return 40; } }
public override int OldMinDamage{ get{ return 8; } }
public override int OldMaxDamage{ get{ return 36; } }
public override int OldSpeed{ get{ return 31; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 110; } }
public override WeaponAnimation DefAnimation{ get{ return WeaponAnimation.Bash2H; } }
[Constructable]
public WarHammer() : base( 0x1439 )
{
Weight = 10.0;
Layer = Layer.TwoHanded;
}
public WarHammer( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,51 @@
using System;
using Server.Network;
using Server.Items;
namespace Server.Items
{
[FlipableAttribute( 0x1407, 0x1406 )]
public class WarMace : BaseBashing
{
public override WeaponAbility PrimaryAbility{ get{ return WeaponAbility.CrushingBlow; } }
public override WeaponAbility SecondaryAbility{ get{ return WeaponAbility.MortalStrike; } }
public override int AosStrengthReq{ get{ return 80; } }
public override int AosMinDamage{ get{ return 16; } }
public override int AosMaxDamage{ get{ return 17; } }
public override int AosSpeed{ get{ return 26; } }
public override float MlSpeed{ get{ return 4.00f; } }
public override int OldStrengthReq{ get{ return 30; } }
public override int OldMinDamage{ get{ return 10; } }
public override int OldMaxDamage{ get{ return 30; } }
public override int OldSpeed{ get{ return 32; } }
public override int InitMinHits{ get{ return 31; } }
public override int InitMaxHits{ get{ return 110; } }
[Constructable]
public WarMace() : base( 0x1407 )
{
Weight = 17.0;
}
public WarMace( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 0 ); // version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
}
}