#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,35 @@
using System;
using Server;
namespace Server.Items
{
public class AmeliasToolbox : TinkerTools
{
public override int LabelNumber{ get{ return 1077749; } } // Amelias Toolbox
[Constructable]
public AmeliasToolbox() : base( 500 )
{
LootType = LootType.Blessed;
Hue = 1895; // TODO check
}
public AmeliasToolbox( 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,43 @@
using System;
using Server;
namespace Server.Items
{
public class ArmsOfArmstrong : LeatherArms
{
public override int LabelNumber{ get{ return 1077675; } } // Arms of Armstrong
public override int BasePhysicalResistance{ get{ return 6; } }
public override int BaseFireResistance{ get{ return 6; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
[Constructable]
public ArmsOfArmstrong()
{
LootType = LootType.Blessed;
Attributes.BonusStr = 3;
Attributes.RegenHits = 1;
}
public ArmsOfArmstrong( 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,41 @@
using System;
using Server;
namespace Server.Items
{
public class BagOfNecromancerReagents : Bag
{
[Constructable]
public BagOfNecromancerReagents() : this( 50 )
{
}
[Constructable]
public BagOfNecromancerReagents( int amount )
{
DropItem( new BatWing ( amount ) );
DropItem( new GraveDust ( amount ) );
DropItem( new DaemonBlood( amount ) );
DropItem( new NoxCrystal ( amount ) );
DropItem( new PigIron ( amount ) );
}
public BagOfNecromancerReagents( 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,38 @@
using System;
using Server;
namespace Server.Items
{
public class BagOfSmokeBombs : Bag
{
[Constructable]
public BagOfSmokeBombs() : this( 20 )
{
}
[Constructable]
public BagOfSmokeBombs( int amount )
{
for ( int i = 0; i < amount; ++i )
DropItem( new SmokeBomb() );
}
public BagOfSmokeBombs( 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,40 @@
using System;
using Server;
namespace Server.Items
{
public class BraceletOfResilience : GoldBracelet
{
public override int LabelNumber{ get{ return 1077627; } } // Bracelet of Resilience
[Constructable]
public BraceletOfResilience()
{
LootType = LootType.Blessed;
Attributes.DefendChance = 5;
Resistances.Fire = 5;
Resistances.Cold = 5;
Resistances.Poison = 5;
Resistances.Energy = 5;
}
public BraceletOfResilience( 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,43 @@
using System;
using Server;
namespace Server.Items
{
public class BulwarkLeggings : RingmailLegs
{
public override int LabelNumber{ get{ return 1077727; } } // Bulwark Leggings
public override int BasePhysicalResistance{ get{ return 9; } }
public override int BaseFireResistance{ get{ return 5; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 3; } }
[Constructable]
public BulwarkLeggings()
{
LootType = LootType.Blessed;
Attributes.RegenStam = 1;
Attributes.RegenMana = 1;
}
public BulwarkLeggings( 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,39 @@
using System;
using Server;
namespace Server.Items
{
public class ChurchillsWarMace : WarMace
{
public override int LabelNumber{ get{ return 1078062; } } // Churchill's War Mace
[Constructable]
public ChurchillsWarMace()
{
LootType = LootType.Blessed;
Attributes.AttackChance = 5;
Attributes.WeaponSpeed = 10;
Attributes.WeaponDamage = 25;
WeaponAttributes.LowerStatReq = 70;
}
public ChurchillsWarMace( 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,39 @@
using System;
using Server;
namespace Server.Items
{
public class ClaspOfConcentration : SilverBracelet
{
public override int LabelNumber{ get{ return 1077695; } } // Clasp of Concentration
[Constructable]
public ClaspOfConcentration()
{
LootType = LootType.Blessed;
Attributes.RegenStam = 2;
Attributes.RegenMana = 1;
Resistances.Fire = 5;
Resistances.Cold = 5;
}
public ClaspOfConcentration( 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,40 @@
using System;
using Server;
namespace Server.Items
{
public class EmberStaff : QuarterStaff
{
public override int LabelNumber{ get{ return 1077582; } } // Ember Staff
[Constructable]
public EmberStaff()
{
LootType = LootType.Blessed;
WeaponAttributes.HitFireball = 15;
WeaponAttributes.MageWeapon = 10;
Attributes.SpellChanneling = 1;
Attributes.CastSpeed = -1;
WeaponAttributes.LowerStatReq = 50;
}
public EmberStaff( 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,44 @@
using System;
using Server;
namespace Server.Items
{
public class EscutcheonDeAriadne : MetalKiteShield
{
public override int LabelNumber{ get{ return 1077694; } } // Escutcheon de Ariadne
public override int BasePhysicalResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 1; } }
public override int AosStrReq{ get{ return 14; } }
[Constructable]
public EscutcheonDeAriadne()
{
LootType = LootType.Blessed;
Hue = 0x8A5;
ArmorAttributes.DurabilityBonus = 49;
Attributes.ReflectPhysical = 5;
Attributes.DefendChance = 5;
}
public EscutcheonDeAriadne( 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,43 @@
using System;
using Server;
namespace Server.Items
{
public class GlovesOfSafeguarding : LeatherGloves
{
public override int LabelNumber{ get{ return 1077614; } } // Gloves of Safeguarding
public override int BasePhysicalResistance{ get{ return 6; } }
public override int BaseFireResistance{ get{ return 6; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
[Constructable]
public GlovesOfSafeguarding()
{
LootType = LootType.Blessed;
Attributes.BonusStam = 3;
Attributes.RegenHits = 1;
}
public GlovesOfSafeguarding( 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,36 @@
using System;
using Server;
namespace Server.Items
{
public class HallowedSpellbook : Spellbook
{
public override int LabelNumber { get { return 1077620; } } // Hallowed Spellbook
[Constructable]
public HallowedSpellbook() : base( 0x3FFFFFFFF )
{
LootType = LootType.Blessed;
Slayer = SlayerName.Silver;
}
public HallowedSpellbook( 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,74 @@
using System;
using Server.Mobiles;
namespace Server.Items
{
[FlipableAttribute( 0x13E3, 0x13E4 )]
public class HammerOfHephaestus : SmithHammer
{
public override int LabelNumber{ get{ return 1077740; } } // Hammer of Hephaestus
public static readonly TimeSpan RechargeDelay = TimeSpan.FromMinutes( 5 );
[Constructable]
public HammerOfHephaestus()
{
UsesRemaining = 20;
LootType = LootType.Blessed;
// TODO: Blacksmith +10 bonus when equipped
StartRechargeTimer();
}
public override bool BreakOnDepletion { get { return false; } }
/* Note:
* On EA, it also leaves the crafting gump open when it reaches 0 charges.
* When crafting again, only then the crafting gump closes with the 1072306 system message.
*/
public override void OnDoubleClick( Mobile from )
{
if ( !IsChildOf( from.Backpack ) && Parent != from ) // TODO: These checks don't match EA, but they match BaseTool for now
from.SendLocalizedMessage( 1042001 ); // That must be in your pack for you to use it.
else if ( UsesRemaining <= 0 )
from.SendLocalizedMessage( 1072306 ); // You must wait a moment for it to recharge.
else
base.OnDoubleClick( from );
}
private void StartRechargeTimer()
{
// TODO: Needs work
//Timer.DelayCall( RechargeDelay, RechargeDelay, new TimerCallback( Recharge ) );
}
public void Recharge()
{
// TODO: Stop timer at 20? Count downtime? Something more generic so we can use it for JacobsPickaxe too (both are IUsesRemaining)?
if ( UsesRemaining < 20 )
++UsesRemaining;
}
public HammerOfHephaestus( 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();
StartRechargeTimer();
}
}
}

View file

@ -0,0 +1,43 @@
using System;
using Server;
namespace Server.Items
{
public class HealersTouch : LeatherGloves
{
public override int LabelNumber{ get{ return 1077684; } } // Healer's Touch
public override int BasePhysicalResistance{ get{ return 6; } }
public override int BaseFireResistance{ get{ return 6; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
[Constructable]
public HealersTouch()
{
LootType = LootType.Blessed;
Attributes.BonusStam = 3;
Attributes.ReflectPhysical = 5;
}
public HealersTouch( 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,39 @@
using System;
using Server;
namespace Server.Items
{
public class Heartseeker : CompositeBow
{
public override int LabelNumber{ get{ return 1078210; } } // Heartseeker
[Constructable]
public Heartseeker()
{
LootType = LootType.Blessed;
Attributes.AttackChance = 5;
Attributes.WeaponSpeed = 10;
Attributes.WeaponDamage = 25;
WeaponAttributes.LowerStatReq = 70;
}
public Heartseeker( 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,40 @@
using System;
using Server.Mobiles;
namespace Server.Items
{
public class JacobsPickaxe : Pickaxe
{
public override int LabelNumber{ get{ return 1077758; } } // Jacob's Pickaxe
// TODO: Recharges 1 use every 5 minutes. Doesn't break when it reaches 0, you get a system message "You must wait a moment for it to recharge" 1072306 if you attempt to use it with no uses remaining.
[Constructable]
public JacobsPickaxe()
{
UsesRemaining = 20;
LootType = LootType.Blessed;
SkillBonuses.SetValues( 0, SkillName.Mining, 10.0 );
}
public JacobsPickaxe( 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,38 @@
using System;
using Server;
namespace Server.Items
{
public class JocklesQuicksword : Longsword
{
public override int LabelNumber{ get{ return 1077666; } } // Jockles' Quicksword
[Constructable]
public JocklesQuicksword()
{
LootType = LootType.Blessed;
Attributes.AttackChance = 5;
Attributes.WeaponSpeed = 10;
Attributes.WeaponDamage = 25;
}
public JocklesQuicksword( 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,43 @@
using System;
using Server;
namespace Server.Items
{
public class PhilosophersHat : WizardsHat
{
public override int LabelNumber{ get{ return 1077602; } } // Philosopher's Hat
public override int BasePhysicalResistance{ get{ return 5; } }
public override int BaseFireResistance{ get{ return 5; } }
public override int BaseColdResistance{ get{ return 9; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
[Constructable]
public PhilosophersHat()
{
LootType = LootType.Blessed;
Attributes.RegenMana = 1;
Attributes.LowerRegCost = 7;
}
public PhilosophersHat( 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,38 @@
using System;
using Server;
namespace Server.Items
{
public class RecarosRiposte : WarFork
{
public override int LabelNumber{ get{ return 1078195; } } // Recaro's Riposte
[Constructable]
public RecarosRiposte()
{
LootType = LootType.Blessed;
Attributes.AttackChance = 5;
Attributes.WeaponSpeed = 10;
Attributes.WeaponDamage = 25;
}
public RecarosRiposte( 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,38 @@
using System;
using Server;
namespace Server.Items
{
public class RingOfTheSavant : GoldRing
{
public override int LabelNumber{ get{ return 1077608; } } // Ring of the Savant
[Constructable]
public RingOfTheSavant()
{
LootType = LootType.Blessed;
Attributes.BonusInt = 3;
Attributes.CastRecovery = 1;
Attributes.CastSpeed = 1;
}
public RingOfTheSavant( 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,38 @@
using System;
using Server;
namespace Server.Items
{
public class SilverSerpentBlade : Kryss
{
public override int LabelNumber{ get{ return 1078163; } } // Silver Serpent Blade
[Constructable]
public SilverSerpentBlade()
{
LootType = LootType.Blessed;
Attributes.AttackChance = 5;
Attributes.WeaponSpeed = 10;
Attributes.WeaponDamage = 25;
}
public SilverSerpentBlade( 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,41 @@
using System;
using Server;
namespace Server.Items
{
public class TheDragonsTail : NoDachi
{
public override int LabelNumber { get { return 1078015; } } // The Dragon's Tail
public override int InitMinHits{ get{ return 80; } }
public override int InitMaxHits{ get{ return 80; } }
[Constructable]
public TheDragonsTail()
{
LootType = LootType.Blessed;
WeaponAttributes.HitLeechStam = 16;
Attributes.WeaponSpeed = 10;
Attributes.WeaponDamage = 25;
}
public TheDragonsTail( 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,43 @@
using System;
using Server;
namespace Server.Items
{
public class TunicOfGuarding : LeatherChest
{
public override int LabelNumber{ get{ return 1077693; } } // Tunic of Guarding
public override int BasePhysicalResistance{ get{ return 6; } }
public override int BaseFireResistance{ get{ return 6; } }
public override int BaseColdResistance{ get{ return 5; } }
public override int BasePoisonResistance{ get{ return 5; } }
public override int BaseEnergyResistance{ get{ return 5; } }
[Constructable]
public TunicOfGuarding()
{
LootType = LootType.Blessed;
Attributes.BonusHits = 2;
Attributes.ReflectPhysical = 5;
}
public TunicOfGuarding( 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,42 @@
using System;
using Server;
namespace Server.Items
{
public class TwilightJacket : LeatherNinjaJacket
{
public override int LabelNumber{ get{ return 1078183; } } // Twilight Jacket
public override int BasePhysicalResistance{ get{ return 6; } }
public override int BaseFireResistance{ get{ return 12; } }
public override int BaseColdResistance{ get{ return 3; } }
public override int BasePoisonResistance{ get{ return 3; } }
public override int BaseEnergyResistance{ get{ return 3; } }
[Constructable]
public TwilightJacket()
{
LootType = LootType.Blessed;
Attributes.ReflectPhysical = 5;
}
public TwilightJacket( 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,40 @@
using System;
using Server;
namespace Server.Items
{
public class WalkersLeggings : LeatherNinjaPants
{
public override int LabelNumber{ get{ return 1078222; } } // Walker's Leggings
public override int BasePhysicalResistance{ get{ return 10; } }
public override int BaseFireResistance{ get{ return 6; } }
public override int BaseColdResistance{ get{ return 6; } }
public override int BasePoisonResistance{ get{ return 3; } }
public override int BaseEnergyResistance{ get{ return 3; } }
[Constructable]
public WalkersLeggings()
{
LootType = LootType.Blessed;
}
public WalkersLeggings( 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();
}
}
}