From 13f3dd0536fc2e5c367c08c0353d963bdb53736c Mon Sep 17 00:00:00 2001 From: Shocker Date: Tue, 16 Apr 2013 02:18:43 +0300 Subject: Core/Spells: Implement TRIGGERED_IGNORE_TARGET_CHECK TriggerCastFlag to allow ignoring most target checks (mostly the default DBC ones) (cherry picked from commit 7e17679ada81ee349cb557cb7b5c6aa13f01a759) --- src/server/game/Spells/Spell.cpp | 4 ++++ src/server/game/Spells/SpellDefines.h | 1 + 2 files changed, 5 insertions(+) (limited to 'src') diff --git a/src/server/game/Spells/Spell.cpp b/src/server/game/Spells/Spell.cpp index 000bc453f6c..b2660e1449d 100644 --- a/src/server/game/Spells/Spell.cpp +++ b/src/server/game/Spells/Spell.cpp @@ -3119,6 +3119,10 @@ SpellCastResult Spell::prepare(SpellCastTargets const& targets, AuraEffect const uint32 param1 = 0, param2 = 0; SpellCastResult result = CheckCast(true, ¶m1, ¶m2); + // target is checked in too many locations and with different results to handle each of them + // handle just the general SPELL_FAILED_BAD_TARGETS result which is the default result for most DBC target checks + if (_triggeredCastFlags & TRIGGERED_IGNORE_TARGET_CHECK && result == SPELL_FAILED_BAD_TARGETS) + result = SPELL_CAST_OK; if (result != SPELL_CAST_OK && !IsAutoRepeat()) //always cast autorepeat dummy for triggering { // Periodic auras should be interrupted when aura triggers a spell which can't be cast diff --git a/src/server/game/Spells/SpellDefines.h b/src/server/game/Spells/SpellDefines.h index fd362f31726..bc4e045fb29 100644 --- a/src/server/game/Spells/SpellDefines.h +++ b/src/server/game/Spells/SpellDefines.h @@ -169,6 +169,7 @@ enum TriggerCastFlags : uint32 // debug flags (used with .cast triggered commands) TRIGGERED_IGNORE_EQUIPPED_ITEM_REQUIREMENT = 0x00080000, //! Will ignore equipped item requirements + TRIGGERED_IGNORE_TARGET_CHECK = 0x00100000, //! Will ignore most target checks (mostly DBC target checks) TRIGGERED_FULL_DEBUG_MASK = 0xFFFFFFFF }; -- cgit v1.2.3