#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,47 @@
using System;
using Server;
namespace Server.Items
{
public class Aegis : HeaterShield
{
public override int LabelNumber{ get{ return 1061602; } } // Ægis
public override int ArtifactRarity{ get{ return 11; } }
public override int BasePhysicalResistance{ get{ return 15; } }
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public Aegis()
{
Hue = 0x47E;
ArmorAttributes.SelfRepair = 5;
Attributes.ReflectPhysical = 15;
Attributes.DefendChance = 15;
Attributes.LowerManaCost = 8;
}
public Aegis( Serial serial ) : base( serial )
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 );
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( version < 1 )
PhysicalBonus = 0;
}
}
}

View file

@ -0,0 +1,46 @@
using System;
using Server;
namespace Server.Items
{
public class ArcaneShield : WoodenKiteShield
{
public override int LabelNumber{ get{ return 1061101; } } // Arcane Shield
public override int ArtifactRarity{ get{ return 11; } }
public override int InitMinHits{ get{ return 255; } }
public override int InitMaxHits{ get{ return 255; } }
[Constructable]
public ArcaneShield()
{
ItemID = 0x1B78;
Hue = 0x556;
Attributes.NightSight = 1;
Attributes.SpellChanneling = 1;
Attributes.DefendChance = 15;
Attributes.CastSpeed = 1;
}
public ArcaneShield( 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 ( Attributes.NightSight == 0 )
Attributes.NightSight = 1;
}
}
}

View file

@ -0,0 +1,185 @@
using System;
using System.Collections;
using Server;
using Server.Network;
namespace Server.Items
{
public class BaseShield : BaseArmor
{
public override ArmorMaterialType MaterialType{ get{ return ArmorMaterialType.Plate; } }
public BaseShield( int itemID ) : base( itemID )
{
}
public BaseShield( Serial serial ) : base(serial)
{
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int) 1 );//version
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( version < 1 )
{
if ( this is Aegis )
return;
// The 15 bonus points to resistances are not applied to shields on OSI.
PhysicalBonus = 0;
FireBonus = 0;
ColdBonus = 0;
PoisonBonus = 0;
EnergyBonus = 0;
}
}
public override double ArmorRating
{
get
{
Mobile m = this.Parent as Mobile;
double ar = base.ArmorRating;
if ( m != null )
return ( ( m.Skills[SkillName.Parry].Value * ar ) / 200.0 ) + 1.0;
else
return ar;
}
}
public override int OnHit( BaseWeapon weapon, int damage )
{
if( Core.AOS )
{
if( ArmorAttributes.SelfRepair > Utility.Random( 10 ) )
{
HitPoints += 2;
}
else
{
double halfArmor = ArmorRating / 2.0;
int absorbed = (int)(halfArmor + (halfArmor*Utility.RandomDouble()));
if( absorbed < 2 )
absorbed = 2;
int wear;
if( weapon.Type == WeaponType.Bashing )
wear = (absorbed / 2);
else
wear = Utility.Random( 2 );
if( wear > 0 && MaxHitPoints > 0 )
{
if( HitPoints >= wear )
{
HitPoints -= wear;
wear = 0;
}
else
{
wear -= HitPoints;
HitPoints = 0;
}
if( wear > 0 )
{
if( MaxHitPoints > wear )
{
MaxHitPoints -= wear;
if( Parent is Mobile )
((Mobile)Parent).LocalOverheadMessage( MessageType.Regular, 0x3B2, 1061121 ); // Your equipment is severely damaged.
}
else
{
Delete();
}
}
}
}
return 0;
}
else
{
Mobile owner = this.Parent as Mobile;
if( owner == null )
return damage;
double ar = this.ArmorRating;
double chance = (owner.Skills[SkillName.Parry].Value - (ar * 2.0)) / 100.0;
if( chance < 0.01 )
chance = 0.01;
/*
FORMULA: Displayed AR = ((Parrying Skill * Base AR of Shield) ÷ 200) + 1
FORMULA: % Chance of Blocking = parry skill - (shieldAR * 2)
FORMULA: Melee Damage Absorbed = (AR of Shield) / 2 | Archery Damage Absorbed = AR of Shield
*/
if( owner.CheckSkill( SkillName.Parry, chance ) )
{
if( weapon.Skill == SkillName.Archery )
damage -= (int)ar;
else
damage -= (int)(ar / 2.0);
if( damage < 0 )
damage = 0;
owner.FixedEffect( 0x37B9, 10, 16 );
if( 25 > Utility.Random( 100 ) ) // 25% chance to lower durability
{
int wear = Utility.Random( 2 );
if( wear > 0 && MaxHitPoints > 0 )
{
if( HitPoints >= wear )
{
HitPoints -= wear;
wear = 0;
}
else
{
wear -= HitPoints;
HitPoints = 0;
}
if( wear > 0 )
{
if( MaxHitPoints > wear )
{
MaxHitPoints -= wear;
if( Parent is Mobile )
((Mobile)Parent).LocalOverheadMessage( MessageType.Regular, 0x3B2, 1061121 ); // Your equipment is severely damaged.
}
else
{
Delete();
}
}
}
}
}
return damage;
}
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class BronzeShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 1; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 0; } }
public override int InitMinHits{ get{ return 25; } }
public override int InitMaxHits{ get{ return 30; } }
public override int AosStrReq{ get{ return 35; } }
public override int ArmorBase{ get{ return 10; } }
[Constructable]
public BronzeShield() : base( 0x1B72 )
{
Weight = 6.0;
}
public BronzeShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class Buckler : BaseShield
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 1; } }
public override int BaseEnergyResistance{ get{ return 0; } }
public override int InitMinHits{ get{ return 40; } }
public override int InitMaxHits{ get{ return 50; } }
public override int AosStrReq{ get{ return 20; } }
public override int ArmorBase{ get{ return 7; } }
[Constructable]
public Buckler() : base( 0x1B73 )
{
Weight = 5.0;
}
public Buckler( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}

View file

@ -0,0 +1,78 @@
using System;
using Server;
using Server.Guilds;
namespace Server.Items
{
public class ChaosShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 1; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 0; } }
public override int InitMinHits{ get{ return 100; } }
public override int InitMaxHits{ get{ return 125; } }
public override int AosStrReq{ get{ return 95; } }
public override int ArmorBase{ get{ return 32; } }
[Constructable]
public ChaosShield() : base( 0x1BC3 )
{
if ( !Core.AOS )
LootType = LootType.Newbied;
Weight = 5.0;
}
public ChaosShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
public override bool OnEquip( Mobile from )
{
return Validate( from ) && base.OnEquip( from );
}
public override void OnSingleClick( Mobile from )
{
if ( Validate( Parent as Mobile ) )
base.OnSingleClick( from );
}
public virtual bool Validate( Mobile m )
{
if ( m == null || !m.Player || m.AccessLevel != AccessLevel.Player || Core.AOS )
return true;
Guild g = m.Guild as Guild;
if ( g == null || g.Type != GuildType.Chaos )
{
m.FixedEffect( 0x3728, 10, 13 );
Delete();
return false;
}
return true;
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class HeaterShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 1; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 0; } }
public override int InitMinHits{ get{ return 50; } }
public override int InitMaxHits{ get{ return 65; } }
public override int AosStrReq{ get{ return 90; } }
public override int ArmorBase{ get{ return 23; } }
[Constructable]
public HeaterShield() : base( 0x1B76 )
{
Weight = 8.0;
}
public HeaterShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}

View file

@ -0,0 +1,58 @@
using System;
using Server;
namespace Server.Items
{
public class MetalKiteShield : BaseShield, IDyable
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 1; } }
public override int InitMinHits{ get{ return 45; } }
public override int InitMaxHits{ get{ return 60; } }
public override int AosStrReq{ get{ return 45; } }
public override int ArmorBase{ get{ return 16; } }
[Constructable]
public MetalKiteShield() : base( 0x1B74 )
{
Weight = 7.0;
}
public MetalKiteShield( Serial serial ) : base(serial)
{
}
public bool Dye( Mobile from, DyeTub sender )
{
if ( Deleted )
return false;
Hue = sender.DyedHue;
return true;
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( Weight == 5.0 )
Weight = 7.0;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class MetalShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 1; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 0; } }
public override int InitMinHits{ get{ return 50; } }
public override int InitMaxHits{ get{ return 65; } }
public override int AosStrReq{ get{ return 45; } }
public override int ArmorBase{ get{ return 11; } }
[Constructable]
public MetalShield() : base( 0x1B7B )
{
Weight = 6.0;
}
public MetalShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}

View file

@ -0,0 +1,81 @@
using System;
using Server;
using Server.Guilds;
namespace Server.Items
{
public class OrderShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 1; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 0; } }
public override int InitMinHits{ get{ return 100; } }
public override int InitMaxHits{ get{ return 125; } }
public override int AosStrReq{ get{ return 95; } }
public override int ArmorBase{ get{ return 30; } }
[Constructable]
public OrderShield() : base( 0x1BC4 )
{
if ( !Core.AOS )
LootType = LootType.Newbied;
Weight = 7.0;
}
public OrderShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( Weight == 6.0 )
Weight = 7.0;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
public override bool OnEquip( Mobile from )
{
return Validate( from ) && base.OnEquip( from );
}
public override void OnSingleClick( Mobile from )
{
if ( Validate( Parent as Mobile ) )
base.OnSingleClick( from );
}
public virtual bool Validate( Mobile m )
{
if ( Core.AOS || m == null || !m.Player || m.AccessLevel != AccessLevel.Player )
return true;
Guild g = m.Guild as Guild;
if ( g == null || g.Type != GuildType.Order )
{
m.FixedEffect( 0x3728, 10, 13 );
Delete();
return false;
}
return true;
}
}
}

View file

@ -0,0 +1,48 @@
using System;
using Server;
namespace Server.Items
{
public class WoodenKiteShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 1; } }
public override int InitMinHits{ get{ return 50; } }
public override int InitMaxHits{ get{ return 65; } }
public override int AosStrReq{ get{ return 20; } }
public override int ArmorBase{ get{ return 12; } }
[Constructable]
public WoodenKiteShield() : base( 0x1B79 )
{
Weight = 5.0;
}
public WoodenKiteShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
if ( Weight == 7.0 )
Weight = 5.0;
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}

View file

@ -0,0 +1,45 @@
using System;
using Server;
namespace Server.Items
{
public class WoodenShield : BaseShield
{
public override int BasePhysicalResistance{ get{ return 0; } }
public override int BaseFireResistance{ get{ return 0; } }
public override int BaseColdResistance{ get{ return 0; } }
public override int BasePoisonResistance{ get{ return 0; } }
public override int BaseEnergyResistance{ get{ return 1; } }
public override int InitMinHits{ get{ return 20; } }
public override int InitMaxHits{ get{ return 25; } }
public override int AosStrReq{ get{ return 20; } }
public override int ArmorBase{ get{ return 8; } }
[Constructable]
public WoodenShield() : base( 0x1B7A )
{
Weight = 5.0;
}
public WoodenShield( Serial serial ) : base(serial)
{
}
public override void Deserialize( GenericReader reader )
{
base.Deserialize( reader );
int version = reader.ReadInt();
}
public override void Serialize( GenericWriter writer )
{
base.Serialize( writer );
writer.Write( (int)0 );//version
}
}
}