Last active
July 23, 2018 01:38
-
-
Save Langerz82/14e10a876866c3daf26b3bbf98aba83d to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
diff --git a/src/server/game/AI/SmartScripts/SmartAI.cpp b/src/server/game/AI/SmartScripts/SmartAI.cpp | |
index 0fb99e63d9..9ae272d017 100644 | |
--- a/src/server/game/AI/SmartScripts/SmartAI.cpp | |
+++ b/src/server/game/AI/SmartScripts/SmartAI.cpp | |
@@ -787,7 +787,7 @@ void SmartAI::SetCombatMove(bool on) | |
} | |
else if (MovementGenerator* movement = me->GetMotionMaster()->GetMovementGenerator([](MovementGenerator const* a) -> bool | |
{ | |
- return a->GetMovementGeneratorType() == CHASE_MOTION_TYPE && a->Mode == MOTION_MODE_DEFAULT && a->Priority == MOTION_PRIORITY_NORMAL; | |
+ return a->GetMovementGeneratorType() == CHASE_MOTION_TYPE && a->Mode == MOTION_MODE_OVERRIDE && a->Priority == MOTION_PRIORITY_NORMAL; | |
})) | |
me->GetMotionMaster()->Remove(movement); | |
} | |
diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp | |
index 2e8d2f7256..975e1cc88e 100644 | |
--- a/src/server/game/AI/SmartScripts/SmartScript.cpp | |
+++ b/src/server/game/AI/SmartScripts/SmartScript.cpp | |
@@ -525,7 +525,11 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u | |
case SMART_ACTION_CAST: | |
{ | |
if (targets.empty()) | |
+ { | |
+ e.event.minMaxRepeat.repeatMin = e.event.raw.param5 ? e.event.raw.param5 : 1000; | |
+ e.event.minMaxRepeat.repeatMax = e.event.raw.param5 ? e.event.raw.param5 : 1000; | |
break; | |
+ } | |
if (e.action.cast.targetsLimit > 0 && targets.size() > e.action.cast.targetsLimit) | |
Trinity::Containers::RandomResize(targets, e.action.cast.targetsLimit); | |
@@ -2275,16 +2279,20 @@ void SmartScript::ProcessAction(SmartScriptHolder& e, Unit* unit, uint32 var0, u | |
} | |
} | |
-void SmartScript::ProcessTimedAction(SmartScriptHolder& e, uint32 const& min, uint32 const& max, Unit* unit, uint32 var0, uint32 var1, bool bvar, SpellInfo const* spell, GameObject* gob) | |
+void SmartScript::ProcessTimedAction(SmartScriptHolder& e, uint32 & min, uint32 & max, Unit* unit, uint32 var0, uint32 var1, bool bvar, SpellInfo const* spell, GameObject* gob) | |
{ | |
// We may want to execute action rarely and because of this if condition is not fulfilled the action will be rechecked in a long time | |
if (sConditionMgr->IsObjectMeetingSmartEventConditions(e.entryOrGuid, e.event_id, e.source_type, unit, GetBaseObject())) | |
{ | |
- RecalcTimer(e, min, max); | |
ProcessAction(e, unit, var0, var1, bvar, spell, gob); | |
+ uint32 recheckDelay = e.event.raw.param5 ? e.event.raw.param5 : 1000; | |
+ RecalcTimer(e, min + recheckDelay, max + recheckDelay); | |
} | |
else | |
- RecalcTimer(e, std::min<uint32>(min, 5000), std::min<uint32>(min, 5000)); | |
+ { | |
+ uint32 recheckDelay = e.event.raw.param5 ? e.event.raw.param5 : 1000; | |
+ RecalcTimer(e, recheckDelay, recheckDelay); | |
+ } | |
} | |
void SmartScript::InstallTemplate(SmartScriptHolder const& e) | |
@@ -2779,9 +2787,8 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui | |
ProcessTimedAction(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); | |
break; | |
case SMART_EVENT_UPDATE_IC: | |
- if (!me || !me->IsEngaged()) | |
- return; | |
- ProcessTimedAction(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); | |
+ if (me && me->IsEngaged()) | |
+ ProcessTimedAction(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); | |
break; | |
case SMART_EVENT_HEALT_PCT: | |
{ | |
diff --git a/src/server/game/AI/SmartScripts/SmartScript.h b/src/server/game/AI/SmartScripts/SmartScript.h | |
index 8ec08f413b..0159105490 100644 | |
--- a/src/server/game/AI/SmartScripts/SmartScript.h | |
+++ b/src/server/game/AI/SmartScripts/SmartScript.h | |
@@ -46,7 +46,7 @@ class TC_GAME_API SmartScript | |
void UpdateTimer(SmartScriptHolder& e, uint32 const diff); | |
static void InitTimer(SmartScriptHolder& e); | |
void ProcessAction(SmartScriptHolder& e, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr); | |
- void ProcessTimedAction(SmartScriptHolder& e, uint32 const& min, uint32 const& max, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr); | |
+ void ProcessTimedAction(SmartScriptHolder& e, uint32 & min, uint32 & max, Unit* unit = nullptr, uint32 var0 = 0, uint32 var1 = 0, bool bvar = false, SpellInfo const* spell = nullptr, GameObject* gob = nullptr); | |
void GetTargets(ObjectVector& targets, SmartScriptHolder const& e, Unit* invoker = nullptr) const; | |
void GetWorldObjectsInDist(ObjectVector& objects, float dist) const; | |
void InstallTemplate(SmartScriptHolder const& e); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment