#include "FvCandle.h" #include "MissionComponent.h" #include "RenderComponent.h" #include "eReplicaComponentType.h" std::vector FvCandle::m_Missions = { 850, 1431, 1529, 1566, 1603 }; void FvCandle::OnStartup(Entity* self) { auto* render = self->GetComponent(); if (render == nullptr) return; render->PlayEffect(2108, u"create", "candle_light", LWOOBJID_EMPTY, 1.0f, 1.0f, true); self->SetI32(u"Smoke", static_cast(5)); self->SetBoolean(u"AmHit", false); } void FvCandle::OnHit(Entity* self, Entity* attacker) { BlowOutCandle(self, attacker); } void FvCandle::BlowOutCandle(Entity* self, Entity* blower) { if (self->GetBoolean(u"AmHit")) return; auto* render = self->GetComponent(); if (render == nullptr) return; auto* missionComponent = blower->GetComponent(); if (missionComponent != nullptr) { for (const auto mission : m_Missions) { missionComponent->ForceProgressTaskType(mission, 1, 1); } } //Update mission tasks here self->SetBoolean(u"AmHit", true); render->StopEffect("candle_light", false); render->PlayEffect(2109, u"create", "candle_smoke", LWOOBJID_EMPTY, 1.0f, 1.0f, true); self->AddTimer("SmokeTime", self->GetI32(u"Smoke")); } void FvCandle::OnTimerDone(Entity* self, std::string timerName) { self->SetBoolean(u"AmHit", false); auto* render = self->GetComponent(); if (render == nullptr) return; render->StopEffect("candle_smoke", false); render->PlayEffect(2108, u"create", "candle_light", LWOOBJID_EMPTY, 1.0f, 1.0f, true); }