mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2024-11-27 16:07:22 +00:00
8cdb388915
* Implement Precompiled Headers * First volume of optimizations * Scripts A-B Gonna be doing this in alphabetical order now. * C Scripts and remove unneeded includes from base cppscripts header Remove the MissionComponent and Loot includes from all base scripts and place their needed includes in the respective scripts. * D scripts * F scripts * F scripts 2 Finish up removing extraneous includes from scripts that start with the letter F * G scripts Removing extraneous includes from scripts that start with the letter G * I scripts Removing extraneous includes from scripts that start with the letter I * M-Z scripts Removing extraneous includes from scripts that start with the letter M-Z * Revert "Implement Precompiled Headers" This reverts commitd79d8d4991
. * Revert "Revert "Implement Precompiled Headers"" This reverts commit0597faf308
. * Add back in PCH Add back in PCH * Fix CMake Whitespace Remove duplicate file glob Remove newline
131 lines
2.3 KiB
C++
131 lines
2.3 KiB
C++
#include "AgJetEffectServer.h"
|
|
#include "GameMessages.h"
|
|
#include "EntityManager.h"
|
|
#include "SkillComponent.h"
|
|
|
|
void AgJetEffectServer::OnUse(Entity* self, Entity* user)
|
|
{
|
|
if (inUse)
|
|
{
|
|
return;
|
|
}
|
|
|
|
GameMessages::SendNotifyClientObject(
|
|
self->GetObjectID(),
|
|
u"isInUse",
|
|
0,
|
|
0,
|
|
LWOOBJID_EMPTY,
|
|
"",
|
|
UNASSIGNED_SYSTEM_ADDRESS
|
|
);
|
|
|
|
inUse = true;
|
|
|
|
auto entities = EntityManager::Instance()->GetEntitiesInGroup("Jet_FX");
|
|
|
|
if (entities.empty())
|
|
{
|
|
return;
|
|
}
|
|
|
|
auto* effect = entities[0];
|
|
|
|
GameMessages::SendPlayFXEffect(effect, 641, u"create", "radarDish", LWOOBJID_EMPTY, 1, 1, true);
|
|
|
|
self->AddTimer("radarDish", 2);
|
|
self->AddTimer("CineDone", 9);
|
|
}
|
|
|
|
void AgJetEffectServer::OnRebuildComplete(Entity* self, Entity* target)
|
|
{
|
|
auto entities = EntityManager::Instance()->GetEntitiesInGroup("Jet_FX");
|
|
|
|
if (entities.empty())
|
|
{
|
|
return;
|
|
}
|
|
|
|
auto* effect = entities[0];
|
|
|
|
auto groups = self->GetGroups();
|
|
|
|
if (groups.empty())
|
|
{
|
|
return;
|
|
}
|
|
|
|
builder = target->GetObjectID();
|
|
|
|
const auto group = groups[0];
|
|
|
|
GameMessages::SendPlayAnimation(effect, u"jetFX");
|
|
|
|
self->AddTimer("PlayEffect", 2.5f);
|
|
|
|
if (group == "Base_Radar")
|
|
{
|
|
self->AddTimer("CineDone", 5);
|
|
}
|
|
}
|
|
|
|
void AgJetEffectServer::OnTimerDone(Entity* self, std::string timerName)
|
|
{
|
|
if (timerName == "radarDish")
|
|
{
|
|
GameMessages::SendStopFXEffect(self, true, "radarDish");
|
|
|
|
return;
|
|
}
|
|
|
|
if (timerName == "PlayEffect")
|
|
{
|
|
auto entities = EntityManager::Instance()->GetEntitiesInGroup("mortarMain");
|
|
|
|
if (entities.empty())
|
|
{
|
|
return;
|
|
}
|
|
|
|
const auto size = entities.size();
|
|
|
|
if (size == 0)
|
|
{
|
|
return;
|
|
}
|
|
|
|
const auto selected = GeneralUtils::GenerateRandomNumber<int>(0, size - 1);
|
|
|
|
auto* mortar = entities[selected];
|
|
|
|
Game::logger->Log("AgJetEffectServer", "Mortar (%i) (&d)\n", mortar->GetLOT(), mortar->HasComponent(COMPONENT_TYPE_SKILL));
|
|
|
|
mortar->SetOwnerOverride(builder);
|
|
|
|
SkillComponent* skillComponent;
|
|
if (!mortar->TryGetComponent(COMPONENT_TYPE_SKILL, skillComponent))
|
|
{
|
|
return;
|
|
}
|
|
|
|
skillComponent->CalculateBehavior(318, 3727, LWOOBJID_EMPTY, true);
|
|
|
|
return;
|
|
}
|
|
|
|
if (timerName == "CineDone")
|
|
{
|
|
GameMessages::SendNotifyClientObject(
|
|
self->GetObjectID(),
|
|
u"toggleInUse",
|
|
-1,
|
|
0,
|
|
LWOOBJID_EMPTY,
|
|
"",
|
|
UNASSIGNED_SYSTEM_ADDRESS
|
|
);
|
|
|
|
inUse = false;
|
|
}
|
|
}
|