[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);
}
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)
{
return IsEffectInSpell(spell_id, SE_Blind);

View File

@ -1522,6 +1522,7 @@ bool IsSummonPetSpell(uint16 spell_id);
bool IsSummonPCSpell(uint16 spell_id);
bool IsPetSpell(uint16 spell_id);
bool IsCharmSpell(uint16 spell_id);
bool IsResurrectionSicknessSpell(uint16 spell_id);
bool IsBlindSpell(uint16 spell_id);
bool IsHealthSpell(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)
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;
}
// Check for Chance to Resist Spell bonuses (ie Sanctification Discipline)
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);
return 0;
}