diff options
author | Rat <none@none> | 2010-11-06 23:18:04 +0100 |
---|---|---|
committer | Rat <none@none> | 2010-11-06 23:18:04 +0100 |
commit | 9781bba535a34bd88ec28bf7a118fc4bfec90551 (patch) | |
tree | e984b175632484fb246477ba03f6a786024c5ec5 /src | |
parent | 38098929871efd9e39b2e5cd5b83685b62b5ce81 (diff) |
Core/SmartAI: added SMART_ACTION_INVOKER_CAST, spellID, castFlags,
-if avaliable, last used invoker will cast spellId with castFlags on targets
--HG--
branch : trunk
Diffstat (limited to 'src')
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScript.cpp | 14 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.cpp | 1 | ||||
-rw-r--r-- | src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 |
3 files changed, 16 insertions, 0 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 064b4b358f0..dce1015e154 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -342,6 +342,20 @@ void SmartScript::ProcessAction(SmartScriptHolder &e, Unit* unit, uint32 var0, u } break; } + case SMART_ACTION_INVOKER_CAST: + { + if (!mLastInvoker) return; + ObjectList* targets = GetTargets(e, unit); + if (!targets) return; + for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++) + if (IsUnit((*itr))) + { + if (e.action.cast.flags & SMARTCAST_INTERRUPT_PREVIOUS) + mLastInvoker->InterruptNonMeleeSpells(false); + mLastInvoker->CastSpell((*itr)->ToUnit(), e.action.cast.spell,(e.action.cast.flags & SMARTCAST_TRIGGERED) ? true : false); + } + break; + } case SMART_ACTION_ADD_AURA: { ObjectList* targets = GetTargets(e, unit); diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp index 98ae02677c2..1f94b1f9976 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.cpp @@ -546,6 +546,7 @@ bool SmartAIMgr::IsEventValid(SmartScriptHolder &e) break; case SMART_ACTION_ADD_AURA: case SMART_ACTION_CAST: + case SMART_ACTION_INVOKER_CAST: if (!IsSpellValid(e, e.action.cast.spell)) return false; break; case SMART_ACTION_CALL_AREAEXPLOREDOREVENTHAPPENS: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index dae3a9d1f01..4d384ac8dfc 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -431,6 +431,7 @@ enum SMART_ACTION SMART_ACTION_ADD_NPC_FLAG = 82, // Flags SMART_ACTION_REMOVE_NPC_FLAG = 83, // Flags SMART_ACTION_SIMPLE_TALK = 84, // groupID, can be used to make players say groupID, Text_over event is not triggered, whisper can not be used (Target units will say the text) + SMART_ACTION_INVOKER_CAST = 85, // spellID, castFlags, if avaliable, last used invoker will cast spellId with castFlags on targets SMART_ACTION_END = 85, }; |