mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-10 02:08:20 +00:00
71 lines
2.0 KiB
C++
71 lines
2.0 KiB
C++
|
#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<MissionComponent>();
|
||
|
|
||
|
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<int32_t>(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);
|
||
|
});
|
||
|
}
|