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,47 @@
namespace Server.Items
{
[Flippable(0xF49, 0xF4a)]
public class Axe : BaseAxe
{
[Constructible]
public Axe() : base(0xF49)
{
Weight = 4.0;
}
public Axe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.CrushingBlow;
public override WeaponAbility SecondaryAbility => WeaponAbility.Dismount;
public override int AosStrengthReq => 35;
public override int AosMinDamage => 14;
public override int AosMaxDamage => 16;
public override int AosSpeed => 37;
public override float MlSpeed => 3.00f;
public override int OldStrengthReq => 35;
public override int OldMinDamage => 6;
public override int OldMaxDamage => 33;
public override int OldSpeed => 37;
public override int InitMinHits => 31;
public override int InitMaxHits => 110;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,184 @@
using System;
using System.Collections.Generic;
using Server.ContextMenus;
using Server.Engines.ConPVP;
using Server.Engines.Harvest;
using Server.Network;
namespace Server.Items
{
public interface IAxe
{
bool Axe(Mobile from, BaseAxe axe);
}
public abstract class BaseAxe : BaseMeleeWeapon
{
private bool m_ShowUsesRemaining;
private int m_UsesRemaining;
public BaseAxe(int itemID) : base(itemID)
{
m_UsesRemaining = 150;
}
public BaseAxe(Serial serial) : base(serial)
{
}
public override int DefHitSound => 0x232;
public override int DefMissSound => 0x23A;
public override SkillName DefSkill => SkillName.Swords;
public override WeaponType DefType => WeaponType.Axe;
public override WeaponAnimation DefAnimation => WeaponAnimation.Slash2H;
public virtual HarvestSystem HarvestSystem => Lumberjacking.System;
[CommandProperty(AccessLevel.GameMaster)]
public int UsesRemaining
{
get => m_UsesRemaining;
set
{
m_UsesRemaining = value;
InvalidateProperties();
}
}
[CommandProperty(AccessLevel.GameMaster)]
public bool ShowUsesRemaining
{
get => m_ShowUsesRemaining;
set
{
m_ShowUsesRemaining = value;
InvalidateProperties();
}
}
public virtual int GetUsesScalar()
{
if (Quality == WeaponQuality.Exceptional)
return 200;
return 100;
}
public override void UnscaleDurability()
{
base.UnscaleDurability();
int scale = GetUsesScalar();
m_UsesRemaining = (m_UsesRemaining * 100 + (scale - 1)) / scale;
InvalidateProperties();
}
public override void ScaleDurability()
{
base.ScaleDurability();
int scale = GetUsesScalar();
m_UsesRemaining = (m_UsesRemaining * scale + 99) / 100;
InvalidateProperties();
}
public override void OnDoubleClick(Mobile from)
{
if (HarvestSystem == null || Deleted)
return;
Point3D loc = GetWorldLocation();
if (!from.InLOS(loc) || !from.InRange(loc, 2))
{
from.LocalOverheadMessage(MessageType.Regular, 0x3E9, 1019045); // I can't reach that
return;
}
if (!IsAccessibleTo(from))
{
PublicOverheadMessage(MessageType.Regular, 0x3E9, 1061637); // You are not allowed to access this.
return;
}
if (!(HarvestSystem is Mining))
from.SendLocalizedMessage(1010018); // What do you want to use this item on?
HarvestSystem.BeginHarvesting(from, this);
}
public override void GetContextMenuEntries(Mobile from, List<ContextMenuEntry> list)
{
base.GetContextMenuEntries(from, list);
if (HarvestSystem != null)
BaseHarvestTool.AddContextMenuEntries(from, this, list, HarvestSystem);
}
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(2); // version
writer.Write(m_ShowUsesRemaining);
writer.Write(m_UsesRemaining);
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
switch (version)
{
case 2:
{
m_ShowUsesRemaining = reader.ReadBool();
goto case 1;
}
case 1:
{
m_UsesRemaining = reader.ReadInt();
goto case 0;
}
case 0:
{
if (m_UsesRemaining < 1)
m_UsesRemaining = 150;
break;
}
}
}
public override void OnHit(Mobile attacker, Mobile defender, double damageBonus = 1)
{
base.OnHit(attacker, defender, damageBonus);
if (!Core.AOS && (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded &&
attacker.Skills.Anatomy.Value >= 80 &&
attacker.Skills.Anatomy.Value / 400.0 >= Utility.RandomDouble() &&
DuelContext.AllowSpecialAbility(attacker, "Concussion Blow", false))
{
StatMod mod = defender.GetStatMod("Concussion");
if (mod == null)
{
defender.SendMessage("You receive a concussion blow!");
defender.AddStatMod(new StatMod(StatType.Int, "Concussion", -(defender.RawInt / 2),
TimeSpan.FromSeconds(30.0)));
attacker.SendMessage("You deliver a concussion blow!");
attacker.PlaySound(0x308);
}
}
}
}
}

View file

@ -0,0 +1,48 @@
namespace Server.Items
{
[Flippable(0xF47, 0xF48)]
public class BattleAxe : BaseAxe
{
[Constructible]
public BattleAxe() : base(0xF47)
{
Weight = 4.0;
Layer = Layer.TwoHanded;
}
public BattleAxe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.BleedAttack;
public override WeaponAbility SecondaryAbility => WeaponAbility.ConcussionBlow;
public override int AosStrengthReq => 35;
public override int AosMinDamage => 15;
public override int AosMaxDamage => 17;
public override int AosSpeed => 31;
public override float MlSpeed => 3.50f;
public override int OldStrengthReq => 40;
public override int OldMinDamage => 6;
public override int OldMaxDamage => 38;
public override int OldSpeed => 30;
public override int InitMinHits => 31;
public override int InitMaxHits => 70;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,47 @@
namespace Server.Items
{
[Flippable(0xf4b, 0xf4c)]
public class DoubleAxe : BaseAxe
{
[Constructible]
public DoubleAxe() : base(0xF4B)
{
Weight = 8.0;
}
public DoubleAxe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.DoubleStrike;
public override WeaponAbility SecondaryAbility => WeaponAbility.WhirlwindAttack;
public override int AosStrengthReq => 45;
public override int AosMinDamage => 15;
public override int AosMaxDamage => 17;
public override int AosSpeed => 33;
public override float MlSpeed => 3.25f;
public override int OldStrengthReq => 45;
public override int OldMinDamage => 5;
public override int OldMaxDamage => 35;
public override int OldSpeed => 37;
public override int InitMinHits => 31;
public override int InitMaxHits => 110;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,47 @@
namespace Server.Items
{
[Flippable(0xf45, 0xf46)]
public class ExecutionersAxe : BaseAxe
{
[Constructible]
public ExecutionersAxe() : base(0xF45)
{
Weight = 8.0;
}
public ExecutionersAxe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.BleedAttack;
public override WeaponAbility SecondaryAbility => WeaponAbility.MortalStrike;
public override int AosStrengthReq => 40;
public override int AosMinDamage => 15;
public override int AosMaxDamage => 17;
public override int AosSpeed => 33;
public override float MlSpeed => 3.25f;
public override int OldStrengthReq => 35;
public override int OldMinDamage => 6;
public override int OldMaxDamage => 33;
public override int OldSpeed => 37;
public override int InitMinHits => 31;
public override int InitMaxHits => 70;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,32 @@
namespace Server.Items
{
public class GuardianAxe : OrnateAxe
{
[Constructible]
public GuardianAxe()
{
Attributes.BonusHits = 4;
Attributes.RegenHits = 1;
}
public GuardianAxe(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073545; // guardian axe
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,47 @@
namespace Server.Items
{
[Flippable(0xF43, 0xF44)]
public class Hatchet : BaseAxe
{
[Constructible]
public Hatchet() : base(0xF43)
{
Weight = 4.0;
}
public Hatchet(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.ArmorIgnore;
public override WeaponAbility SecondaryAbility => WeaponAbility.Disarm;
public override int AosStrengthReq => 20;
public override int AosMinDamage => 13;
public override int AosMaxDamage => 15;
public override int AosSpeed => 41;
public override float MlSpeed => 2.75f;
public override int OldStrengthReq => 15;
public override int OldMinDamage => 2;
public override int OldMaxDamage => 17;
public override int OldSpeed => 40;
public override int InitMinHits => 31;
public override int InitMaxHits => 80;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class HeavyOrnateAxe : OrnateAxe
{
[Constructible]
public HeavyOrnateAxe()
{
Attributes.WeaponDamage = 8;
}
public HeavyOrnateAxe(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073548; // heavy ornate axe
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,47 @@
namespace Server.Items
{
[Flippable(0x13FB, 0x13FA)]
public class LargeBattleAxe : BaseAxe
{
[Constructible]
public LargeBattleAxe() : base(0x13FB)
{
Weight = 6.0;
}
public LargeBattleAxe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.WhirlwindAttack;
public override WeaponAbility SecondaryAbility => WeaponAbility.BleedAttack;
public override int AosStrengthReq => 80;
public override int AosMinDamage => 16;
public override int AosMaxDamage => 17;
public override int AosSpeed => 29;
public override float MlSpeed => 3.75f;
public override int OldStrengthReq => 40;
public override int OldMinDamage => 6;
public override int OldMaxDamage => 38;
public override int OldSpeed => 30;
public override int InitMinHits => 31;
public override int InitMaxHits => 70;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,56 @@
using Server.Engines.Harvest;
namespace Server.Items
{
[Flippable(0xE86, 0xE85)]
public class Pickaxe : BaseAxe, IUsesRemaining
{
[Constructible]
public Pickaxe() : base(0xE86)
{
Weight = 11.0;
UsesRemaining = 50;
ShowUsesRemaining = true;
}
public Pickaxe(Serial serial) : base(serial)
{
}
public override HarvestSystem HarvestSystem => Mining.System;
public override WeaponAbility PrimaryAbility => WeaponAbility.DoubleStrike;
public override WeaponAbility SecondaryAbility => WeaponAbility.Disarm;
public override int AosStrengthReq => 50;
public override int AosMinDamage => 13;
public override int AosMaxDamage => 15;
public override int AosSpeed => 35;
public override float MlSpeed => 3.00f;
public override int OldStrengthReq => 25;
public override int OldMinDamage => 1;
public override int OldMaxDamage => 15;
public override int OldSpeed => 35;
public override int InitMinHits => 31;
public override int InitMaxHits => 60;
public override WeaponAnimation DefAnimation => WeaponAnimation.Slash1H;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
ShowUsesRemaining = true;
}
}
}

View file

@ -0,0 +1,31 @@
namespace Server.Items
{
public class SingingAxe : OrnateAxe
{
[Constructible]
public SingingAxe()
{
SkillBonuses.SetValues(0, SkillName.Musicianship, 5);
}
public SingingAxe(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073546; // singing axe
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,31 @@
namespace Server.Items
{
public class ThunderingAxe : OrnateAxe
{
[Constructible]
public ThunderingAxe()
{
WeaponAttributes.HitLightning = 10;
}
public ThunderingAxe(Serial serial) : base(serial)
{
}
public override int LabelNumber => 1073547; // thundering axe
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,47 @@
namespace Server.Items
{
[Flippable(0x1443, 0x1442)]
public class TwoHandedAxe : BaseAxe
{
[Constructible]
public TwoHandedAxe() : base(0x1443)
{
Weight = 8.0;
}
public TwoHandedAxe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.DoubleStrike;
public override WeaponAbility SecondaryAbility => WeaponAbility.ShadowStrike;
public override int AosStrengthReq => 40;
public override int AosMinDamage => 16;
public override int AosMaxDamage => 17;
public override int AosSpeed => 31;
public override float MlSpeed => 3.50f;
public override int OldStrengthReq => 35;
public override int OldMinDamage => 5;
public override int OldMaxDamage => 39;
public override int OldSpeed => 30;
public override int InitMinHits => 31;
public override int InitMaxHits => 90;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}

View file

@ -0,0 +1,58 @@
using Server.Engines.Harvest;
namespace Server.Items
{
[Flippable(0x13B0, 0x13AF)]
public class WarAxe : BaseAxe
{
[Constructible]
public WarAxe() : base(0x13B0)
{
Weight = 8.0;
}
public WarAxe(Serial serial) : base(serial)
{
}
public override WeaponAbility PrimaryAbility => WeaponAbility.ArmorIgnore;
public override WeaponAbility SecondaryAbility => WeaponAbility.BleedAttack;
public override int AosStrengthReq => 35;
public override int AosMinDamage => 14;
public override int AosMaxDamage => 15;
public override int AosSpeed => 33;
public override float MlSpeed => 3.25f;
public override int OldStrengthReq => 35;
public override int OldMinDamage => 9;
public override int OldMaxDamage => 27;
public override int OldSpeed => 40;
public override int DefHitSound => 0x233;
public override int DefMissSound => 0x239;
public override int InitMinHits => 31;
public override int InitMaxHits => 80;
public override SkillName DefSkill => SkillName.Macing;
public override WeaponType DefType => WeaponType.Bashing;
public override WeaponAnimation DefAnimation => WeaponAnimation.Bash1H;
public override HarvestSystem HarvestSystem => null;
public override void Serialize(GenericWriter writer)
{
base.Serialize(writer);
writer.Write(0); // version
}
public override void Deserialize(GenericReader reader)
{
base.Deserialize(reader);
int version = reader.ReadInt();
}
}
}