feat(Core/Scripting): implement OnlyOnceAreaTrigger & Zul'Gurub's in… (#8850)

Co-authored-by: Treeston <treeston.mmoc@gmail.com>
This commit is contained in:
Skjalf
2021-11-03 19:43:03 -03:00
committed by GitHub
parent cde621f9eb
commit b2ce49135e
9 changed files with 96 additions and 3 deletions

View File

@@ -21,6 +21,7 @@
#include "DatabaseEnv.h"
#include "DBCStores.h"
#include "GossipDef.h"
#include "InstanceScript.h"
#include "ObjectMgr.h"
#include "OutdoorPvPMgr.h"
#include "Player.h"
@@ -3239,6 +3240,36 @@ AreaTriggerScript::AreaTriggerScript(const char* name)
ScriptRegistry<AreaTriggerScript>::AddScript(this);
}
bool OnlyOnceAreaTriggerScript::OnTrigger(Player* player, AreaTrigger const* trigger)
{
uint32 const triggerId = trigger->entry;
if (InstanceScript* instance = player->GetInstanceScript())
{
if (instance->IsAreaTriggerDone(triggerId))
{
return true;
}
else
{
instance->MarkAreaTriggerDone(triggerId);
}
}
return _OnTrigger(player, trigger);
}
void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(InstanceScript* script, uint32 triggerId)
{
script->ResetAreaTriggerDone(triggerId);
}
void OnlyOnceAreaTriggerScript::ResetAreaTriggerDone(Player const* player, AreaTrigger const* trigger)
{
if (InstanceScript* instance = player->GetInstanceScript())
{
ResetAreaTriggerDone(instance, trigger->entry);
}
}
BattlegroundScript::BattlegroundScript(const char* name)
: ScriptObject(name)
{