[Feature] Rule to replace dispel spell effects with suppression effect.

This commit is contained in:
zimp-wow
2025-06-11 18:08:45 -05:00
committed by Vayle
parent 30004716bb
commit dd6cfcddca
13 changed files with 321 additions and 172 deletions
+3
View File
@@ -546,6 +546,9 @@ RULE_INT(Spells, PointBlankAOEMaxTargets, 0, "Max number of targets a Point-Blan
RULE_INT(Spells, DefaultAOEMaxTargets, 0, "Max number of targets that an AOE spell which does not meet other descriptions can cast on. Set to 0 for no limit.")
RULE_BOOL(Spells, AllowFocusOnSkillDamageSpells, false, "Allow focus effects 185, 459, and 482 to enhance SkillAttack spell effect 193")
RULE_STRING(Spells, AlwaysStackSpells, "", "Comma-Seperated list of spell IDs to always stack with every other spell, except themselves.")
RULE_BOOL(Spells, SuppressDispels, false, "Swaps 'cancel magic' SPA logic with SuppressBuff SPA (527).")
RULE_INT(Spells, SuppressDispelsTime, 6, "Number of tics that dispelled buffs will be suppressed for")
RULE_INT(Spells, SuppressDebuffSpellID, 21840, "Spell ID to send to client when a spell is supprssed. 21840 = 'Suppression Field'")
RULE_CATEGORY_END()
RULE_CATEGORY(Combat)
+13
View File
@@ -966,6 +966,19 @@ bool IsValidSpell(uint32 spell_id)
return false;
}
bool IsValidOrSuppressedSpell(uint32 spell_id)
{
if (IsValidSpell(spell_id)) {
return true;
}
if (spell_id == SPELL_SUPPRESSED) {
return true;
}
return false;
}
bool IsHarmTouchSpell(uint16 spell_id)
{
return spell_id == SPELL_HARM_TOUCH ||
+2
View File
@@ -24,6 +24,7 @@
#define SPELL_UNKNOWN 0xFFFF
#define POISON_PROC 0xFFFE
#define SPELL_SUPPRESSED 0xFFFD
#define SPELLBOOK_UNKNOWN 0xFFFFFFFF //player profile spells are 32 bit
//some spell IDs which will prolly change, but are needed
@@ -1815,6 +1816,7 @@ bool IsEffectInSpell(uint16 spell_id, int effect_id);
uint16 GetSpellTriggerSpellID(uint16 spell_id, int effect_id);
bool IsBlankSpellEffect(uint16 spell_id, int effect_index);
bool IsValidSpell(uint32 spell_id);
bool IsValidOrSuppressedSpell(uint32 spell_id);
bool IsSummonSpell(uint16 spell_id);
bool IsDamageSpell(uint16 spell_id);
bool IsAnyDamageSpell(uint16 spell_id);