Reorganizes Project (#41)

This commit is contained in:
Kamron Batman 2019-08-02 18:13:40 -07:00 committed by GitHub
parent 08bf44af9a
commit 3614a66aee
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3499 changed files with 79 additions and 55 deletions

View file

@ -0,0 +1,44 @@
namespace Server.Items
{
public class Aegis : HeaterShield
{
[Constructible]
public Aegis()
{
Hue = 0x47E;
ArmorAttributes.SelfRepair = 5;
Attributes.ReflectPhysical = 15;
Attributes.DefendChance = 15;
Attributes.LowerManaCost = 8;
}
public Aegis(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1061602; // <20>gis
public override int ArtifactRarity => 11;
public override int BasePhysicalResistance => 15;
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(1);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
if (version < 1)
PhysicalBonus = 0;
}
}
}

View file

@ -0,0 +1,43 @@
namespace Server.Items
{
public class ArcaneShield : WoodenKiteShield
{
[Constructible]
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 int LabelNumber => 1061101; // Arcane Shield
public override int ArtifactRarity => 11;
public override int InitMinHits => 255;
public override int InitMaxHits => 255;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(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,179 @@
using Server.Network;
namespace Server.Items
{
public class BaseShield : BaseArmor
{
public BaseShield(int itemID) : base(itemID)
{
}
public BaseShield(Serial serial) : base(serial)
{
}
public override ArmorMaterialType MaterialType => ArmorMaterialType.Plate;
public override double ArmorRating
{
get
{
Mobile m = Parent as Mobile;
double ar = base.ArmorRating;
if (m != null)
return m.Skills.Parry.Value * ar / 200.0 + 1.0;
return ar;
}
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(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 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)
mobile.LocalOverheadMessage(MessageType.Regular, 0x3B2,
1061121); // Your equipment is severely damaged.
}
else
{
Delete();
}
}
}
}
return 0;
}
if (!(Parent is Mobile owner))
return damage;
double ar = ArmorRating;
double chance = (owner.Skills.Parry.Value - ar * 2.0) / 100.0;
if (chance < 0.01)
chance = 0.01;
/*
FORMULA: Displayed AR = ((Parrying Skill * Base AR of Shield) <EFBFBD> 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;
((Mobile)Parent).LocalOverheadMessage(MessageType.Regular, 0x3B2,
1061121); // Your equipment is severely damaged.
}
else
{
Delete();
}
}
}
}
}
return damage;
}
}
}

View file

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

View file

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

View file

@ -0,0 +1,74 @@
using Server.Guilds;
namespace Server.Items
{
public class ChaosShield : BaseShield
{
[Constructible]
public ChaosShield() : base(0x1BC3)
{
if (!Core.AOS)
LootType = LootType.Newbied;
Weight = 5.0;
}
public ChaosShield(Serial serial) : base(serial)
{
}
public override int BasePhysicalResistance => 1;
public override int BaseFireResistance => 0;
public override int BaseColdResistance => 0;
public override int BasePoisonResistance => 0;
public override int BaseEnergyResistance => 0;
public override int InitMinHits => 100;
public override int InitMaxHits => 125;
public override int AosStrReq => 95;
public override int ArmorBase => 32;
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(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;
if (!(m.Guild is Guild g) || g.Type != GuildType.Chaos)
{
m.FixedEffect(0x3728, 10, 13);
Delete();
return false;
}
return true;
}
}
}

View file

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

View file

@ -0,0 +1,55 @@
namespace Server.Items
{
public class MetalKiteShield : BaseShield, IDyable
{
[Constructible]
public MetalKiteShield() : base(0x1B74)
{
Weight = 7.0;
}
public MetalKiteShield(Serial serial) : base(serial)
{
}
public override int BasePhysicalResistance => 0;
public override int BaseFireResistance => 0;
public override int BaseColdResistance => 0;
public override int BasePoisonResistance => 0;
public override int BaseEnergyResistance => 1;
public override int InitMinHits => 45;
public override int InitMaxHits => 60;
public override int AosStrReq => 45;
public override int ArmorBase => 16;
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(0); //version
}
}
}

View file

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

View file

@ -0,0 +1,77 @@
using Server.Guilds;
namespace Server.Items
{
public class OrderShield : BaseShield
{
[Constructible]
public OrderShield() : base(0x1BC4)
{
if (!Core.AOS)
LootType = LootType.Newbied;
Weight = 7.0;
}
public OrderShield(Serial serial) : base(serial)
{
}
public override int BasePhysicalResistance => 1;
public override int BaseFireResistance => 0;
public override int BaseColdResistance => 0;
public override int BasePoisonResistance => 0;
public override int BaseEnergyResistance => 0;
public override int InitMinHits => 100;
public override int InitMaxHits => 125;
public override int AosStrReq => 95;
public override int ArmorBase => 30;
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(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;
if (!(m.Guild is Guild g) || g.Type != GuildType.Order)
{
m.FixedEffect(0x3728, 10, 13);
Delete();
return false;
}
return true;
}
}
}

View file

@ -0,0 +1,45 @@
namespace Server.Items
{
public class WoodenKiteShield : BaseShield
{
[Constructible]
public WoodenKiteShield() : base(0x1B79)
{
Weight = 5.0;
}
public WoodenKiteShield(Serial serial) : base(serial)
{
}
public override int BasePhysicalResistance => 0;
public override int BaseFireResistance => 0;
public override int BaseColdResistance => 0;
public override int BasePoisonResistance => 0;
public override int BaseEnergyResistance => 1;
public override int InitMinHits => 50;
public override int InitMaxHits => 65;
public override int AosStrReq => 20;
public override int ArmorBase => 12;
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(0); //version
}
}
}

View file

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