From f06f5a1334c40e010abe47488bb2847f21f54696 Mon Sep 17 00:00:00 2001 From: Malcrom Date: Sun, 18 Sep 2022 10:36:15 -0300 Subject: [PATCH] fix(Core/Smart Scripts): Add param5 flag for range event (#13049) * fix(Core/Smart Scripts): Add param5 flag for range event to prevent cast on entering combat. --- src/server/game/AI/SmartScripts/SmartScript.cpp | 9 +++++++-- src/server/game/AI/SmartScripts/SmartScriptMgr.h | 1 + 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/server/game/AI/SmartScripts/SmartScript.cpp b/src/server/game/AI/SmartScripts/SmartScript.cpp index 61db4f067..58f1f33a4 100644 --- a/src/server/game/AI/SmartScripts/SmartScript.cpp +++ b/src/server/game/AI/SmartScripts/SmartScript.cpp @@ -3430,8 +3430,13 @@ void SmartScript::ProcessEvent(SmartScriptHolder& e, Unit* unit, uint32 var0, ui if (me->IsInRange(me->GetVictim(), (float)e.event.minMaxRepeat.min, (float)e.event.minMaxRepeat.max)) ProcessTimedAction(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax, me->GetVictim()); - else // xinef: make it predictable - RecalcTimer(e, 500, 500); + else + { + if (!e.event.minMaxRepeat.controller) + RecalcTimer(e, 500, 500); // xinef: make it predictable "Malcrom: This seems to be done to standardize min, max start rather than using the range values for the timer." + else + RecalcTimer(e, e.event.minMaxRepeat.repeatMin, e.event.minMaxRepeat.repeatMax); // Malcrom: if param5 value is greater than 0 first action will not happen until after repeat timer fires. + } break; } case SMART_EVENT_VICTIM_CASTING: diff --git a/src/server/game/AI/SmartScripts/SmartScriptMgr.h b/src/server/game/AI/SmartScripts/SmartScriptMgr.h index 5bb07ec3e..74e9c9199 100644 --- a/src/server/game/AI/SmartScripts/SmartScriptMgr.h +++ b/src/server/game/AI/SmartScripts/SmartScriptMgr.h @@ -221,6 +221,7 @@ struct SmartEvent uint32 max; uint32 repeatMin; uint32 repeatMax; + uint32 controller; } minMaxRepeat; struct