#include "NtParadoxPanelServer.h" #include "GameMessages.h" #include "MissionComponent.h" #include "EntityManager.h" #include "Character.h" void NtParadoxPanelServer::OnUse(Entity* self, Entity* user) { GameMessages::SendNotifyClientObject(self->GetObjectID(), u"bActive", 1, 0, user->GetObjectID(), "", user->GetSystemAddress()); GameMessages::SendTerminateInteraction(user->GetObjectID(), eTerminateType::FROM_INTERACTION, self->GetObjectID()); self->SetVar(u"bActive", true); auto* missionComponent = user->GetComponent(); const auto playerID = user->GetObjectID(); for (const auto mission : tPlayerOnMissions) { if (missionComponent->GetMissionState(mission) != MissionState::MISSION_STATE_ACTIVE) { continue; } self->AddCallbackTimer(2, [this, self, playerID] () { auto* player = EntityManager::Instance()->GetEntity(playerID); if (player == nullptr) { return; } const auto flag = self->GetVar(u"flag"); player->GetCharacter()->SetPlayerFlag(flag, true); GameMessages::SendPlayAnimation(player, u"rebuild-celebrate"); GameMessages::SendNotifyClientObject(self->GetObjectID(), u"SparkStop", 0, 0, player->GetObjectID(), "", player->GetSystemAddress()); self->SetVar(u"bActive", false); }); return; } GameMessages::SendPlayAnimation(user, shockAnim); const auto dir = self->GetRotation().GetRightVector(); GameMessages::SendKnockback(user->GetObjectID(), self->GetObjectID(), self->GetObjectID(), 0, {dir.x * 15, 5, dir.z * 15}); GameMessages::SendPlayFXEffect(self, 6432, u"create", "console_sparks", LWOOBJID_EMPTY, 1.0, 1.0, true); self->AddCallbackTimer(2, [this, self, playerID] () { auto* player = EntityManager::Instance()->GetEntity(playerID); if (player == nullptr) { return; } GameMessages::SendNotifyClientObject(self->GetObjectID(), u"bActive", 0, 0, player->GetObjectID(), "", player->GetSystemAddress()); GameMessages::SendStopFXEffect(self, true, "console_sparks"); self->SetVar(u"bActive", false); }); }