aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRat <none@none>2010-11-06 23:18:04 +0100
committerRat <none@none>2010-11-06 23:18:04 +0100
commit9781bba535a34bd88ec28bf7a118fc4bfec90551 (patch)
treee984b175632484fb246477ba03f6a786024c5ec5 /src
parent38098929871efd9e39b2e5cd5b83685b62b5ce81 (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.cpp14
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.cpp1
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h1
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,
};