ModernUO/Projects/UOContent/Items/Weapons/SpearsAndForks/BaseSpear.cs
Jack 6cdec42146
fix: Special moves and various UOR+ bonuses (#2384)
## Special moves
Special moves were added [27 Apr, 2000.](https://uo.com/wiki/ultima-online-wiki/technical/previous-publishes/2000-2/2000-publish-05-27th-april/). This is well past the discussed cutoff date for T2A, which is **[Nov 23, 1999 - Publish 1](https://uo.com/wiki/ultima-online-wiki/technical/previous-publishes/1999-2/1999-publish-01-23rd-november/)** as per the UOSecondAge shard which is the golden standard for T2A accuracy and represents a logical cutoff for this era. 

Regarding the specific date: **Nov 23, 1999 (Publish 1)** - the game significantly changed as a "pre-patch" to UOR on this date, and UOSecondAge picks and chooses from this date based on QoL features, while keeping the gameplay accurate to what is widely known as the "T2A era". However this date is ~4 months before the actual UOR release date.

## Defensive wrestling
Defensively wrestling as (eval+anat)/2 was added in [publish 16](https://uo.com/wiki/ultima-online-wiki/technical/previous-publishes/2002-2/publish-16-changes-and-bug-fixes-24th-july/) and should be gated behind !Core.LBR
* "Unarmed “to-be-hit” changes (chance to get hit while unarmed is now the better of either Wrestling skill, or an average of Anatomy & Evaluate Intelligence)."

## Lumberjacking damage bonus

Lumberjacking damage bonus was added in [UOR](https://uo.com/wiki/ultima-online-wiki/technical/previous-publishes/2000-2/2000-publish-05-27th-april/)

## Anatomy and LJ +10% GM bonus
Anatomy/LJ +10% GM bonus was added in [pub 13](https://uo.com/wiki/ultima-online-wiki/technical/previous-publishes/2001-2/2001-publish-13-19th-august/), which was during UOTD.
2026-03-22 10:55:01 -07:00

47 lines
1.6 KiB
C#

using System;
using ModernUO.Serialization;
using Server.Engines.ConPVP;
namespace Server.Items
{
[SerializationGenerator(0, false)]
public abstract partial class BaseSpear : BaseMeleeWeapon
{
public BaseSpear(int itemID) : base(itemID)
{
}
public override int DefHitSound => 0x23C;
public override int DefMissSound => 0x238;
public override SkillName DefSkill => SkillName.Fencing;
public override WeaponType DefType => WeaponType.Piercing;
public override WeaponAnimation DefAnimation => WeaponAnimation.Pierce2H;
public override void OnHit(Mobile attacker, Mobile defender, double damageBonus = 1)
{
base.OnHit(attacker, defender, damageBonus);
if (!Core.AOS && Core.UOR && Layer == Layer.TwoHanded &&
attacker.Skills.Anatomy.Value / 400.0 >= Utility.RandomDouble() &&
DuelContext.AllowSpecialAbility(attacker, "Paralyzing Blow", false))
{
defender.SendLocalizedMessage(1072221); // You have been hit by a paralyzing blow!
defender.Freeze(TimeSpan.FromSeconds(2.0));
attacker.SendLocalizedMessage(1060163); // You deliver a paralyzing blow!
attacker.PlaySound(0x11C);
}
if (!Core.AOS && Poison != null && PoisonCharges > 0)
{
--PoisonCharges;
if (Utility.RandomBool()) // 50% chance to poison
{
defender.ApplyPoison(attacker, Poison);
}
}
}
}
}