aboutsummaryrefslogtreecommitdiff
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
parent141d3d27185f02c300c1530d9cecb44b473e7fda (diff)
Scripts/AreaTrigger: Rename OnlyOnceAreaTriggerScript::_OnTrigger to TryHandleOnce, and make its return value useful.
-rw-r--r--src/server/game/Scripting/ScriptMgr.cpp16
-rw-r--r--src/server/game/Scripting/ScriptMgr.h3
-rw-r--r--src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp2
-rw-r--r--src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp2
-rw-r--r--src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp2
-rw-r--r--src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp2
-rw-r--r--src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp2
10 files changed, 18 insertions, 17 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*/);
};
diff --git a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
index ead88e911b8..cbe0f4da438 100644
--- a/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
+++ b/src/server/scripts/EasternKingdoms/ZulGurub/boss_hakkar.cpp
@@ -188,7 +188,7 @@ class at_zulgurub_entrance : public OnlyOnceAreaTriggerScript
public:
at_zulgurub_entrance() : OnlyOnceAreaTriggerScript("at_zulgurub_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* areaTrigger) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* areaTrigger) override
{
InstanceScript* instance = player->GetInstanceScript();
if (!instance || instance->GetBossState(DATA_HAKKAR) == DONE)
diff --git a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
index 25ad1f7aebe..1cd3e150afa 100644
--- a/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
+++ b/src/server/scripts/Northrend/ChamberOfAspects/RubySanctum/ruby_sanctum.cpp
@@ -159,7 +159,7 @@ class at_baltharus_plateau : public OnlyOnceAreaTriggerScript
public:
at_baltharus_plateau() : OnlyOnceAreaTriggerScript("at_baltharus_plateau") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
// Only trigger once
if (InstanceScript* instance = player->GetInstanceScript())
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
index e448c980e45..4313fd81447 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lady_deathwhisper.cpp
@@ -1007,7 +1007,7 @@ class at_lady_deathwhisper_entrance : public OnlyOnceAreaTriggerScript
public:
at_lady_deathwhisper_entrance() : OnlyOnceAreaTriggerScript("at_lady_deathwhisper_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
if (instance->GetBossState(DATA_LADY_DEATHWHISPER) != DONE)
diff --git a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
index 189be71df0c..ffbb5cbca39 100644
--- a/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
+++ b/src/server/scripts/Northrend/IcecrownCitadel/boss_lord_marrowgar.cpp
@@ -773,7 +773,7 @@ class at_lord_marrowgar_entrance : public OnlyOnceAreaTriggerScript
public:
at_lord_marrowgar_entrance() : OnlyOnceAreaTriggerScript("at_lord_marrowgar_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* lordMarrowgar = ObjectAccessor::GetCreature(*player, instance->GetGuidData(DATA_LORD_MARROWGAR)))
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
index 05b78f214d4..fece9b8ddcb 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_anubrekhan.cpp
@@ -245,7 +245,7 @@ class at_anubrekhan_entrance : public OnlyOnceAreaTriggerScript
public:
at_anubrekhan_entrance() : OnlyOnceAreaTriggerScript("at_anubrekhan_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
InstanceScript* instance = player->GetInstanceScript();
if (!instance || instance->GetBossState(BOSS_ANUBREKHAN) != NOT_STARTED)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
index 7ff87390263..e0ce4254498 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_faerlina.cpp
@@ -269,7 +269,7 @@ class at_faerlina_entrance : public OnlyOnceAreaTriggerScript
public:
at_faerlina_entrance() : OnlyOnceAreaTriggerScript("at_faerlina_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
InstanceScript* instance = player->GetInstanceScript();
if (!instance || instance->GetBossState(BOSS_FAERLINA) != NOT_STARTED)
diff --git a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
index 635a00a68bd..f998b7ba5e6 100644
--- a/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
+++ b/src/server/scripts/Northrend/Naxxramas/boss_thaddius.cpp
@@ -1219,7 +1219,7 @@ class at_thaddius_entrance : public OnlyOnceAreaTriggerScript
public:
at_thaddius_entrance() : OnlyOnceAreaTriggerScript("at_thaddius_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
InstanceScript* instance = player->GetInstanceScript();
if (!instance || instance->GetBossState(BOSS_THADDIUS) == DONE)
diff --git a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
index faf789f3907..9bc157c44ff 100644
--- a/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
+++ b/src/server/scripts/Outland/BlackTemple/boss_teron_gorefiend.cpp
@@ -431,7 +431,7 @@ class at_teron_gorefiend_entrance : public OnlyOnceAreaTriggerScript
public:
at_teron_gorefiend_entrance() : OnlyOnceAreaTriggerScript("at_teron_gorefiend_entrance") { }
- bool _OnTrigger(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
+ bool TryHandleOnce(Player* player, AreaTriggerEntry const* /*areaTrigger*/) override
{
if (InstanceScript* instance = player->GetInstanceScript())
if (Creature* teron = instance->GetCreature(DATA_TERON_GOREFIEND))