diff options
| author | Treeston <treeston.mmoc@gmail.com> | 2020-09-07 18:25:39 +0200 |
|---|---|---|
| committer | Treeston <treeston.mmoc@gmail.com> | 2020-09-07 18:25:49 +0200 |
| commit | 0c7f6ac89fcc5fdc7f4435a6c1b673c752eb1e41 (patch) | |
| tree | 16d5963ea7984c4eacab8b1bc52759f6d77fa7ad /src/server/game/Scripting | |
| parent | 141d3d27185f02c300c1530d9cecb44b473e7fda (diff) | |
Scripts/AreaTrigger: Rename OnlyOnceAreaTriggerScript::_OnTrigger to TryHandleOnce, and make its return value useful.
Diffstat (limited to 'src/server/game/Scripting')
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.cpp | 16 | ||||
| -rw-r--r-- | src/server/game/Scripting/ScriptMgr.h | 3 |
2 files changed, 10 insertions, 9 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp index 41bc38f0081..334b8d23951 100644 --- a/src/server/game/Scripting/ScriptMgr.cpp +++ b/src/server/game/Scripting/ScriptMgr.cpp @@ -2228,14 +2228,14 @@ AreaTriggerScript::AreaTriggerScript(char const* name) bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTriggerEntry const* trigger) { uint32 const triggerId = trigger->ID; - if (InstanceScript* instance = player->GetInstanceScript()) - { - if (instance->IsAreaTriggerDone(triggerId)) - return true; - else - instance->MarkAreaTriggerDone(triggerId); - } - return _OnTrigger(player, trigger); + InstanceScript* instance = player->GetInstanceScript(); + if (instance && instance->IsAreaTriggerDone(triggerId)) + return true; + + if (TryHandleOnce(player, trigger) && instance) + instance->MarkAreaTriggerDone(triggerId); + + return true; } void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(InstanceScript* script, uint32 triggerId) { script->ResetAreaTriggerDone(triggerId); } void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger) { if (InstanceScript* instance = player->GetInstanceScript()) ResetAreaTriggerDone(instance, trigger->ID); } diff --git a/src/server/game/Scripting/ScriptMgr.h b/src/server/game/Scripting/ScriptMgr.h index dc14ba03b8f..0f5caa70a30 100644 --- a/src/server/game/Scripting/ScriptMgr.h +++ b/src/server/game/Scripting/ScriptMgr.h @@ -462,7 +462,8 @@ class TC_GAME_API OnlyOnceAreaTriggerScript : public AreaTriggerScript bool OnTrigger(Player* /*player*/, AreaTriggerEntry const* /*trigger*/) final override; protected: - virtual bool _OnTrigger(Player* /*player*/, AreaTriggerEntry const* /*trigger*/) = 0; + // returns true if the trigger was successfully handled, false if we should try again next time + virtual bool TryHandleOnce(Player* /*player*/, AreaTriggerEntry const* /*trigger*/) = 0; void ResetAreaTriggerDone(InstanceScript* /*instance*/, uint32 /*triggerId*/); void ResetAreaTriggerDone(Player const* /*player*/, AreaTriggerEntry const* /*trigger*/); }; |
