diff --git a/common/ruletypes.h b/common/ruletypes.h index 2d1f2b9f1..33ea458f7 100644 --- a/common/ruletypes.h +++ b/common/ruletypes.h @@ -441,6 +441,7 @@ RULE_BOOL(Spells, IllusionsAlwaysPersist, false, "Allows Illusions to persist be RULE_BOOL(Spells, UseItemCastMessage, false, "Enable to use the \"item begins to glow\" messages when casting from an item.") RULE_BOOL(Spells, TargetsTargetRequiresCombatRange, true, "Disable to remove combat range requirement from Target's Target Spell Target Type") RULE_BOOL(Spells, NPCBuffLevelRestrictions, false, "Impose BuffLevelRestrictions on NPCs if true") +RULE_BOOL(Spells, ResurrectionEffectsBlock, true, "If enabled, resurrection effects cannot be overwritten.") RULE_CATEGORY_END() RULE_CATEGORY(Combat) diff --git a/zone/spells.cpp b/zone/spells.cpp index ff12578e2..ba7da07c9 100644 --- a/zone/spells.cpp +++ b/zone/spells.cpp @@ -3161,6 +3161,11 @@ int Mob::CheckStackConflict(uint16 spellid1, int caster_level1, uint16 spellid2, } if (sp2_value != sp1_value) values_equal = false; + + if (RuleB(Spells, ResurrectionEffectsBlock) && IsResurrectionEffects(spellid1)) { + LogSpells("ResurrectionEffectsBlock triggered -- [{}] is blocked by [{}]", sp2.name, sp1.name); + return -1; // can't stack + } //we dont return here... a better value on this one effect dosent mean they are //all better...