fix: Adds missing ML Abilities (#799)

This commit is contained in:
IAmDanielDinner 2021-10-04 08:04:06 +02:00 • committed by GitHub
parent 4893094bb4
commit 5725fba373
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
27 changed files with 931 additions and 243 deletions

View file

@ -1024,6 +1024,7 @@ namespace Server.Items
}
ImmolatingWeaponSpell.StopImmolating(this);
ForceOfNature.Remove(m);
m.CheckStatTimers();
@ -1157,6 +1158,13 @@ namespace Server.Items
bonus = AosAttributes.GetValue(defender, AosAttribute.DefendChance);
var info = ForceArrow.GetInfo(attacker, defender);
if (info != null && info.Defender == defender)
{
bonus -= info.DefenseChanceMalus;
}
if (DivineFurySpell.UnderEffect(defender))
{
bonus -= 20; // defender loses 20% bonus when they're under divine fury
@ -1662,6 +1670,8 @@ namespace Server.Items
percentageBonus += (int)(move.GetDamageScalar(attacker, defender) * 100) - 100;
}
percentageBonus += (int)(ForceOfNature.GetDamageScalar(attacker, defender) * 100) - 100;
percentageBonus += (int)(damageBonus * 100) - 100;
var cs = CheckSlayers(attacker, defender);
@ -1864,7 +1874,10 @@ namespace Server.Items
move = null;
}
var ignoreArmor = a is ArmorIgnore || move?.IgnoreArmor(attacker) == true;
var ignoreArmor = a is ArmorIgnore ||
move?.IgnoreArmor(attacker) == true ||
Bladeweave.BladeWeaving(attacker, out var bladeweavingAbi) &&
bladeweavingAbi is ArmorIgnore;
var damageGiven = AOS.Damage(
defender,
@ -1981,8 +1994,8 @@ namespace Server.Items
mobile.LocalOverheadMessage(
MessageType.Regular,
0x3B2,
1061121
); // Your equipment is severely damaged.
1061121 // Your equipment is severely damaged.
);
}
}
else
@ -2101,6 +2114,8 @@ namespace Server.Items
a?.OnHit(attacker, defender, damage);
move?.OnHit(attacker, defender, damage);
ForceOfNature.OnHit(attacker, defender);
if (defender is IHonorTarget it)
{
it.ReceivedHonorContext?.OnTargetHit(attacker);
@ -2142,6 +2157,11 @@ namespace Server.Items
// SDI bonus
damageBonus += AosAttributes.GetValue(attacker, AosAttribute.SpellDamage);
if(PsychicAttack.Registry.TryGetValue(attacker,out var timer))
{
damageBonus -= timer.SpellDamageMalus;
}
var context = TransformationSpellHelper.GetContext(attacker);
if (context?.Spell is ReaperFormSpell spell)