[Bug] Prevent Resurrection Spells from being resisted (#4393)

* [Bug] Prevent Ressurection Spells from being resisted

Added IsRessurectionSpell(uint16 spell_id) to assist with checking on a spell is a ressurection spell.

This was noticed when Dragons of Norrath launched and the Tier 5 Progression AA provided SPA 180 2% SE_ResistSpellChance

* Helps if I spell it correctly

* Update per feedback
This commit is contained in:
Fryguy 2024-06-14 12:51:33 -04:00 committed by GitHub
parent 1aa8758b0a
commit 850053a136
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 14 additions and 6 deletions

View File

@ -431,6 +431,16 @@ bool IsCharmSpell(uint16 spell_id)
return IsEffectInSpell(spell_id, SE_Charm); return IsEffectInSpell(spell_id, SE_Charm);
} }
bool IsResurrectionSicknessSpell(uint16 spell_id) {
return (
spell_id == SPELL_RESURRECTION_SICKNESS ||
spell_id == SPELL_RESURRECTION_SICKNESS2 ||
spell_id == SPELL_RESURRECTION_SICKNESS3 ||
spell_id == SPELL_RESURRECTION_SICKNESS4 ||
spell_id == SPELL_REVIVAL_SICKNESS
);
}
bool IsBlindSpell(uint16 spell_id) bool IsBlindSpell(uint16 spell_id)
{ {
return IsEffectInSpell(spell_id, SE_Blind); return IsEffectInSpell(spell_id, SE_Blind);

View File

@ -1522,6 +1522,7 @@ bool IsSummonPetSpell(uint16 spell_id);
bool IsSummonPCSpell(uint16 spell_id); bool IsSummonPCSpell(uint16 spell_id);
bool IsPetSpell(uint16 spell_id); bool IsPetSpell(uint16 spell_id);
bool IsCharmSpell(uint16 spell_id); bool IsCharmSpell(uint16 spell_id);
bool IsResurrectionSicknessSpell(uint16 spell_id);
bool IsBlindSpell(uint16 spell_id); bool IsBlindSpell(uint16 spell_id);
bool IsHealthSpell(uint16 spell_id); bool IsHealthSpell(uint16 spell_id);
bool IsCastTimeReductionSpell(uint16 spell_id); bool IsCastTimeReductionSpell(uint16 spell_id);

View File

@ -5315,19 +5315,16 @@ float Mob::ResistSpell(uint8 resist_type, uint16 spell_id, Mob *caster, bool use
} }
} }
if (!CharmTick){ if (!CharmTick) {
//Check for Spell Effect specific resistance chances (ie AA Mental Fortitude) //Check for Spell Effect specific resistance chances (ie AA Mental Fortitude)
int se_resist_bonuses = GetSpellEffectResistChance(spell_id); int se_resist_bonuses = GetSpellEffectResistChance(spell_id);
if(se_resist_bonuses && zone->random.Roll(se_resist_bonuses)) if (se_resist_bonuses && zone->random.Roll(se_resist_bonuses)) {
{
return 0; return 0;
} }
// Check for Chance to Resist Spell bonuses (ie Sanctification Discipline) // Check for Chance to Resist Spell bonuses (ie Sanctification Discipline)
int resist_bonuses = CalcResistChanceBonus(); int resist_bonuses = CalcResistChanceBonus();
if(resist_bonuses && zone->random.Roll(resist_bonuses)) if (resist_bonuses && zone->random.Roll(resist_bonuses) && !IsResurrectionSicknessSpell(spell_id)) {
{
LogSpells("Resisted spell in sanctification, had [{}] chance to resist", resist_bonuses); LogSpells("Resisted spell in sanctification, had [{}] chance to resist", resist_bonuses);
return 0; return 0;
} }