aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-09-07 18:25:39 +0200
committerTreeston <treeston.mmoc@gmail.com>2020-09-07 18:25:49 +0200
commit0c7f6ac89fcc5fdc7f4435a6c1b673c752eb1e41 (patch)
tree16d5963ea7984c4eacab8b1bc52759f6d77fa7ad /src/server/game/Scripting
parent141d3d27185f02c300c1530d9cecb44b473e7fda (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.cpp16
-rw-r--r--src/server/game/Scripting/ScriptMgr.h3
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*/);
};