#include "CharacterComponent.h" #include "DestroyableComponent.h" #include "EntityManager.h" #include "GameMessages.h" #include "PossessableComponent.h" #include "RaceImagineCrateServer.h" #include "RacingTaskParam.h" #include "SkillComponent.h" void RaceImagineCrateServer::OnDie(Entity* self, Entity* killer) { if (self->GetVar(u"bIsDead")) { return; } self->SetVar(u"bIsDead", true); if (killer == nullptr) { return; } auto* skillComponent = killer->GetComponent(); if (skillComponent == nullptr) { return; } auto* destroyableComponent = killer->GetComponent(); if (destroyableComponent != nullptr) { destroyableComponent->SetImagination(60); EntityManager::Instance()->SerializeEntity(killer); } // Find possessor of race car to progress missions and update stats. auto* possessableComponent = killer->GetComponent(); if (possessableComponent != nullptr) { auto* possessor = EntityManager::Instance()->GetEntity(possessableComponent->GetPossessor()); if (possessor != nullptr) { auto* missionComponent = possessor->GetComponent(); auto* characterComponent = possessor->GetComponent(); if (characterComponent != nullptr) { characterComponent->UpdatePlayerStatistic(RacingImaginationCratesSmashed); characterComponent->UpdatePlayerStatistic(RacingSmashablesSmashed); } // Progress racing smashable missions if(missionComponent == nullptr) return; missionComponent->Progress(MissionTaskType::MISSION_TASK_TYPE_RACING, 0, (LWOOBJID)RacingTaskParam::RACING_TASK_PARAM_SMASHABLES); } } }