Core/Scripts: Implemented OnlyOnceAreaTriggerScript

This commit is contained in:
Aokromes
2017-12-11 16:15:22 +01:00
parent 2103c33611
commit 1a00fad992
26 changed files with 213 additions and 168 deletions

View File

@@ -2200,6 +2200,22 @@ AreaTriggerScript::AreaTriggerScript(const char* name)
ScriptRegistry<AreaTriggerScript>::Instance()->AddScript(this);
}
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);
}
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); }
BattlegroundScript::BattlegroundScript(const char* name)
: ScriptObject(name)
{