diff options
Diffstat (limited to 'src/game/Map.cpp')
-rw-r--r-- | src/game/Map.cpp | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/src/game/Map.cpp b/src/game/Map.cpp index a78176506cc..610f5bb63d4 100644 --- a/src/game/Map.cpp +++ b/src/game/Map.cpp @@ -3509,7 +3509,21 @@ void Map::ScriptsProcess() break; } - Object* cmdTarget = step.script->datalong2 & 0x01 ? source : target; + Object* cmdTarget = NULL; + Object* cmdSource = NULL; + Unit* spellTarget = NULL; + + if (step.script->datalong2 == 4) + { + Unit* pTarget = (Unit*)target; + if (Creature* victim = GetClosestCreatureWithEntry(pTarget,step.script->dataint,step.script->x)) + Unit* spellTarget = (Unit*)victim->GetGUID(); + } + else + { + Object* cmdTarget = step.script->datalong2 & 0x01 ? source : target; + Unit* spellTarget = (Unit*)cmdTarget; + } if (cmdTarget && !cmdTarget->isType(TYPEMASK_UNIT)) { @@ -3517,9 +3531,10 @@ void Map::ScriptsProcess() break; } - Unit* spellTarget = (Unit*)cmdTarget; - - Object* cmdSource = step.script->datalong2 & 0x02 ? target : source; + if (step.script->datalong2 == 4) + Object* cmdSource = target; + else + Object* cmdSource = step.script->datalong2 & 0x02 ? target : source; if (!cmdSource) { |