#include "MaestromExtracticatorServer.h" #include "GameMessages.h" #include "GeneralUtils.h" #include "EntityManager.h" #include "MissionComponent.h" void MaestromExtracticatorServer::OnStartup(Entity* self) { //self:SetNetworkVar("current_anim", failAnim) GameMessages::SendPlayAnimation(self, GeneralUtils::ASCIIToUTF16(failAnim)); self->AddTimer("PlayFail", defaultTime); self->AddTimer("RemoveSample", destroyAfterNoSampleTime); } void MaestromExtracticatorServer::OnFireEventServerSide(Entity *self, Entity *sender, std::string args, int32_t param1, int32_t param2, int32_t param3) { if (sender == nullptr) return; if (args == "attemptCollection") { Entity* player = EntityManager::Instance()->GetEntity(self->GetSpawnerID()); if (!player) return; auto missionComponent = player->GetComponent(); if (missionComponent == nullptr) return; missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_SMASH, 14718); CollectSample(self, sender->GetObjectID()); sender->ScheduleKillAfterUpdate(); } } void MaestromExtracticatorServer::CollectSample(Entity* self, LWOOBJID sampleObj) { PlayAnimAndReturnTime(self, collectAnim); self->AddTimer("RemoveSample", defaultTime); } void MaestromExtracticatorServer::PlayAnimAndReturnTime(Entity* self, std::string animID) { GameMessages::SendPlayAnimation(self, GeneralUtils::ASCIIToUTF16(animID)); } void MaestromExtracticatorServer::OnTimerDone(Entity* self, std::string timerName) { if (timerName == "RemoveSample") { self->ScheduleKillAfterUpdate(); } if (timerName == "PlayFail") { GameMessages::SendPlayAnimation(self, GeneralUtils::ASCIIToUTF16(failAnim)); } }