aboutsummaryrefslogtreecommitdiff
path: root/src/server/game/Scripting
diff options
context:
space:
mode:
authorTreeston <treeston.mmoc@gmail.com>2020-09-07 18:25:39 +0200
committerShauren <shauren.trinity@gmail.com>2022-02-05 14:53:54 +0100
commit358dc78e47a6276e9f511e6510e04865d2d87fd2 (patch)
tree953c87d4a3194a3d2f99e94982328faac2970011 /src/server/game/Scripting
parent91f61638585330a5cd80cff0c6b09de47b9b9987 (diff)
Scripts/AreaTrigger: Rename OnlyOnceAreaTriggerScript::_OnTrigger to TryHandleOnce, and make its return value useful.
(cherry picked from commit 0c7f6ac89fcc5fdc7f4435a6c1b673c752eb1e41)
Diffstat (limited to 'src/server/game/Scripting')
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp16
-rw-r--r--src/server/game/Scripting/ScriptMgr.h7
2 files changed, 12 insertions, 11 deletions
diff --git a/src/server/game/Scripting/ScriptMgr.cpp b/src/server/game/Scripting/ScriptMgr.cpp
index 709018a98ed..0943147095d 100644
--- a/src/server/game/Scripting/ScriptMgr.cpp
+++ b/src/server/game/Scripting/ScriptMgr.cpp
@@ -2439,14 +2439,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 3941d450575..3c343d32650 100644
--- a/src/server/game/Scripting/ScriptMgr.h
+++ b/src/server/game/Scripting/ScriptMgr.h
@@ -469,9 +469,10 @@ class TC_GAME_API OnlyOnceAreaTriggerScript : public AreaTriggerScript
bool OnTrigger(Player* player, AreaTriggerEntry const* trigger) final;
protected:
- virtual bool _OnTrigger(Player* player, AreaTriggerEntry const* trigger) = 0;
- void ResetAreaTriggerDone(InstanceScript* instance, uint32 triggerId);
- void ResetAreaTriggerDone(Player const* player, AreaTriggerEntry const* trigger);
+ // 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*/);
};
class TC_GAME_API BattlefieldScript : public ScriptObject