aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRat <none@none>2010-11-03 17:25:46 +0100
committerRat <none@none>2010-11-03 17:25:46 +0100
commit4747c5f820ad966a8cf95633ad3b8456ef57c79f (patch)
treec6643ebf2696fa9c7764fcf2a3d30655c37d07d1
parent58bc1194d2b625f9a8de14dd61e03f5419641306 (diff)
Core/SmartAI: fixed EVENT_RANGE handling, and limited it to only creature scripts
--HG-- branch : trunk
-rw-r--r--src/server/game/AI/SmartScripts/SmartScript.cpp18
-rw-r--r--src/server/game/AI/SmartScripts/SmartScriptMgr.h2
2 files changed, 7 insertions, 13 deletions
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp
index 7857cd1d75e..84520090466 100644
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp
@@ -1477,19 +1477,13 @@ void SmartScript::ProcessEvent(SmartScriptHolder &e, Unit* unit, uint32 var0, ui
}
case SMART_EVENT_RANGE:
{
- if (!GetBaseObject()) return;
- ObjectList* targets = GetTargets(e, unit);
- if (!targets) return;
- for (ObjectList::const_iterator itr = targets->begin(); itr != targets->end(); itr++)
+ if (!me || !me->isInCombat() || !me->getVictim())
+ return;
+
+ if (me->IsInRange(me->getVictim(),(float)e.event.minMaxRepeat.min,(float)e.event.minMaxRepeat.max))
{
- if (!IsUnit((*itr)))
- continue;
- if (GetBaseObject()->IsInMap((*itr)))
- if (GetBaseObject()->IsInRange((*itr),(float)e.event.minMaxRepeat.min,(float)e.event.minMaxRepeat.max))
- {
- ProcessAction(e, (*itr)->ToUnit());
- RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax);
- }
+ ProcessAction(e, me->getVictim());
+ RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax);
}
break;
}
diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
index b70c65c1e04..dc3a30013da 100644
--- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h
+++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h
@@ -982,7 +982,7 @@ const uint32 SmartAIEventMask[SMART_EVENT_END][2] =
{SMART_EVENT_DEATH, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_EVADE, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_SPELLHIT, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
- {SMART_EVENT_RANGE, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
+ {SMART_EVENT_RANGE, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_OOC_LOS, SMART_SCRIPT_TYPE_MASK_CREATURE },
{SMART_EVENT_RESPAWN, SMART_SCRIPT_TYPE_MASK_CREATURE + SMART_SCRIPT_TYPE_MASK_GAMEOBJECT },
{SMART_EVENT_TARGET_HEALTH_PCT, SMART_SCRIPT_TYPE_MASK_CREATURE },