DarkflameServer/dScripts/TriggerAmbush.cpp

38 lines
919 B
C++
Raw Normal View History

#include "TriggerAmbush.h"
#include "dZoneManager.h"
2022-07-28 13:39:57 +00:00
void TriggerAmbush::OnStartup(Entity* self) {
self->SetProximityRadius(20, "ambush");
}
2022-07-28 13:39:57 +00:00
void TriggerAmbush::OnProximityUpdate(Entity* self, Entity* entering, std::string name, std::string status) {
if (name != "ambush" || status != "ENTER" || !entering->IsPlayer()) return;
if (self->GetVar<bool>(u"triggered")) return;
self->SetVar(u"triggered", true);
const auto spawners = dZoneManager::Instance()->GetSpawnersByName("Ambush");
2022-07-28 13:39:57 +00:00
for (auto* spawner : spawners) {
spawner->Activate();
}
self->AddTimer("TriggeredTimer", 45);
}
2022-07-28 13:39:57 +00:00
void TriggerAmbush::OnTimerDone(Entity* self, std::string timerName) {
if (timerName != "TriggeredTimer") return;
self->SetVar(u"triggered", false);
const auto spawners = dZoneManager::Instance()->GetSpawnersByName("Ambush");
2022-07-28 13:39:57 +00:00
for (auto* spawner : spawners) {
spawner->Reset();
2022-07-28 13:39:57 +00:00
spawner->Deactivate();
}
}