#include "FvPandaServer.h" #include "PetComponent.h" #include "Character.h" #include "ePetTamingNotifyType.h" void FvPandaServer::OnStartup(Entity* self) { const auto* petComponent = self->GetComponent(); if (petComponent != nullptr && petComponent->GetOwner() == nullptr) { self->SetNetworkVar(u"pandatamer", std::to_string(self->GetVar(u"tamer"))); self->AddTimer("killSelf", 45); } } void FvPandaServer::OnNotifyPetTamingMinigame(Entity* self, Entity* tamer, ePetTamingNotifyType type) { if (type == ePetTamingNotifyType::BEGIN) { self->CancelAllTimers(); } else if (type == ePetTamingNotifyType::QUIT || type == ePetTamingNotifyType::FAILED) { self->Smash(); } else if (type == ePetTamingNotifyType::SUCCESS) { // A tamed panda no longer counts against the spawner's limit or the tamer's one panda (live script) self->RemoveFromGroup("pandas"); self->RemoveFromGroup("panda" + std::to_string(tamer->GetObjectID())); auto* character = tamer->GetCharacter(); if (character != nullptr) { character->SetPlayerFlag(82, true); } } } void FvPandaServer::OnTimerDone(Entity* self, std::string timerName) { if (timerName == "killSelf") { const auto* petComponent = self->GetComponent(); if (petComponent != nullptr && petComponent->GetOwner() == nullptr) { self->Smash(self->GetObjectID(), eKillType::SILENT); } } }