Files
abysmal-isle/Scripts/Items/Equipment/Weapons/BasePoleArm.cs
Unstable Kitsune b918192e4e Overwrite
Complete Overwrite of the Folder with the free shard. ServUO 57.3 has been added.
2023-11-28 23:20:26 -05:00

139 lines
3.8 KiB
C#

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<ContextMenuEntry> 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);
}
}
}
}
}