using System; using System.Collections.Generic; using Server.ContextMenus; using Server.Engines.Harvest; namespace Server.Items { public abstract class BasePoleArm : BaseMeleeWeapon, IHarvestTool { public BasePoleArm(int itemID) : base(itemID) { } public BasePoleArm(Serial serial) : base(serial) { } public override int DefHitSound { get { return 0x237; } } public override int DefMissSound { get { return 0x238; } } public override SkillName DefSkill { get { return SkillName.Swords; } } public override WeaponType DefType { get { return WeaponType.Polearm; } } public override WeaponAnimation DefAnimation { get { return WeaponAnimation.Slash2H; } } public virtual HarvestSystem HarvestSystem { get { return Lumberjacking.System; } } public override void OnDoubleClick(Mobile from) { if (this.HarvestSystem == null) return; if (this.IsChildOf(from.Backpack) || this.Parent == from) this.HarvestSystem.BeginHarvesting(from, this); else from.SendLocalizedMessage(1042001); // That must be in your pack for you to use it. } public override void GetContextMenuEntries(Mobile from, List list) { base.GetContextMenuEntries(from, list); if (this.HarvestSystem != null) BaseHarvestTool.AddContextMenuEntries(from, this, list, this.HarvestSystem); } public override void Serialize(GenericWriter writer) { base.Serialize(writer); writer.Write((int)3); // version } public override void Deserialize(GenericReader reader) { base.Deserialize(reader); int version = reader.ReadInt(); switch ( version ) { case 3: break; case 2: { if(version == 2) ShowUsesRemaining = reader.ReadBool(); goto case 1; } case 1: { if(version == 2) UsesRemaining = reader.ReadInt(); goto case 0; } case 0: { break; } } } public override void OnHit(Mobile attacker, IDamageable defender, double damageBonus) { base.OnHit(attacker, defender, damageBonus); if (!Core.AOS && defender is Mobile && (attacker.Player || attacker.Body.IsHuman) && this.Layer == Layer.TwoHanded && (attacker.Skills[SkillName.Anatomy].Value / 400.0) >= Utility.RandomDouble()) { StatMod mod = ((Mobile)defender).GetStatMod("Concussion"); if (mod == null) { ((Mobile)defender).SendMessage("You receive a concussion blow!"); ((Mobile)defender).AddStatMod(new StatMod(StatType.Int, "Concussion", -(((Mobile)defender).RawInt / 2), TimeSpan.FromSeconds(30.0))); attacker.SendMessage("You deliver a concussion blow!"); attacker.PlaySound(0x11C); } } } } }