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.
This commit is contained in:
parent
2b66817937
commit
6cdec42146
5 changed files with 19 additions and 13 deletions
|
|
@ -112,7 +112,7 @@ namespace Server.Items
|
|||
{
|
||||
base.OnHit(attacker, defender, damageBonus);
|
||||
|
||||
if (!Core.AOS && (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded &&
|
||||
if (!Core.AOS && Core.UOR && (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))
|
||||
|
|
|
|||
|
|
@ -2615,7 +2615,7 @@ public abstract partial class BaseWeapon
|
|||
// Passively check Anatomy for gain
|
||||
attacker.CheckSkill(SkillName.Anatomy, 0.0, attacker.Skills.Anatomy.Cap);
|
||||
|
||||
if (Type == WeaponType.Axe)
|
||||
if (Core.UOR && Type == WeaponType.Axe)
|
||||
{
|
||||
// Passively check Lumberjacking for gain
|
||||
attacker.CheckSkill(SkillName.Lumberjacking, 0.0, 100.0);
|
||||
|
|
@ -2636,27 +2636,27 @@ public abstract partial class BaseWeapon
|
|||
|
||||
/* Compute anatomy modifier
|
||||
* : 1% bonus for every 5 points of anatomy
|
||||
* : +10% bonus at Grandmaster or higher
|
||||
* : +10% bonus at Grandmaster or higher (UOTD+)
|
||||
*/
|
||||
var anatomyValue = attacker.Skills.Anatomy.Value;
|
||||
modifiers += anatomyValue / 5.0 / 100.0;
|
||||
|
||||
if (anatomyValue >= 100.0)
|
||||
if (Core.UOTD && anatomyValue >= 100.0)
|
||||
{
|
||||
modifiers += 0.1;
|
||||
}
|
||||
|
||||
/* Compute lumberjacking bonus
|
||||
/* Compute lumberjacking bonus (UOR+)
|
||||
* : 1% bonus for every 5 points of lumberjacking
|
||||
* : +10% bonus at Grandmaster or higher
|
||||
* : +10% bonus at Grandmaster or higher (UOTD+)
|
||||
*/
|
||||
if (Type == WeaponType.Axe)
|
||||
if (Core.UOR && Type == WeaponType.Axe)
|
||||
{
|
||||
var lumberValue = attacker.Skills.Lumberjacking.Value;
|
||||
|
||||
modifiers += lumberValue / 5.0 / 100.0;
|
||||
|
||||
if (lumberValue >= 100.0)
|
||||
if (Core.UOTD && lumberValue >= 100.0)
|
||||
{
|
||||
modifiers += 0.1;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -45,6 +45,12 @@ namespace Server.Items
|
|||
public override double GetDefendSkillValue(Mobile attacker, Mobile defender)
|
||||
{
|
||||
var wresValue = defender.Skills.Wrestling.Value;
|
||||
|
||||
if (!Core.LBR)
|
||||
{
|
||||
return wresValue;
|
||||
}
|
||||
|
||||
var anatValue = defender.Skills.Anatomy.Value;
|
||||
var evalValue = defender.Skills.EvalInt.Value;
|
||||
var incrValue = Math.Min((anatValue + evalValue + 20.0) * 0.5, 120.0);
|
||||
|
|
@ -54,7 +60,7 @@ namespace Server.Items
|
|||
|
||||
private static void CheckPreAOSMoves(Mobile attacker, Mobile defender)
|
||||
{
|
||||
if (!attacker.CanBeginAction<Fists>())
|
||||
if (!Core.UOR || !attacker.CanBeginAction<Fists>())
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -197,7 +203,7 @@ namespace Server.Items
|
|||
|
||||
public static void DisarmRequest(Mobile m)
|
||||
{
|
||||
if (Core.AOS)
|
||||
if (Core.AOS || !Core.UOR)
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
@ -230,7 +236,7 @@ namespace Server.Items
|
|||
|
||||
public static void StunRequest(Mobile m)
|
||||
{
|
||||
if (Core.AOS || !DuelContext.AllowSpecialAbility(m, "Stun", true))
|
||||
if (Core.AOS || !Core.UOR || !DuelContext.AllowSpecialAbility(m, "Stun", true))
|
||||
{
|
||||
return;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ namespace Server.Items
|
|||
{
|
||||
var damage = base.GetBaseDamage(attacker);
|
||||
|
||||
if (!Core.AOS && (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded &&
|
||||
if (!Core.AOS && Core.UOR && (attacker.Player || attacker.Body.IsHuman) && Layer == Layer.TwoHanded &&
|
||||
attacker.Skills.Anatomy.Value >= 80 &&
|
||||
attacker.Skills.Anatomy.Value / 400.0 >= Utility.RandomDouble() &&
|
||||
DuelContext.AllowSpecialAbility(attacker, "Crushing Blow", false))
|
||||
|
|
|
|||
|
|
@ -22,7 +22,7 @@ namespace Server.Items
|
|||
{
|
||||
base.OnHit(attacker, defender, damageBonus);
|
||||
|
||||
if (!Core.AOS && Layer == Layer.TwoHanded &&
|
||||
if (!Core.AOS && Core.UOR && Layer == Layer.TwoHanded &&
|
||||
attacker.Skills.Anatomy.Value / 400.0 >= Utility.RandomDouble() &&
|
||||
DuelContext.AllowSpecialAbility(attacker, "Paralyzing Blow", false))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue