mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-08-06 10:44:08 +00:00
Implement some scripts for alpha FV (#1049)
* Implement maelstrom fog for alpha FV add OnOffCollisionPhantom call to cppscripts Add physics shape for gas blocking volume * Add Ninja Sensie Script for alpha FV and migration * Fix private var casing * And ninja wild scripts they keep making me add more things * address feedback --------- Co-authored-by: Gie "Max" Vanommeslaeghe <gievanom@hotmail.com>
This commit is contained in:
49
dScripts/ai/FV/TriggerGas.cpp
Normal file
49
dScripts/ai/FV/TriggerGas.cpp
Normal file
@@ -0,0 +1,49 @@
|
||||
#include "TriggerGas.h"
|
||||
#include "InventoryComponent.h"
|
||||
#include "SkillComponent.h"
|
||||
#include "Entity.h"
|
||||
#include "dLogger.h"
|
||||
|
||||
|
||||
void TriggerGas::OnStartup(Entity* self) {
|
||||
self->AddTimer(this->m_TimerName, this->m_Time);
|
||||
}
|
||||
|
||||
void TriggerGas::OnCollisionPhantom(Entity* self, Entity* target) {
|
||||
if (!target->IsPlayer()) return;
|
||||
auto players = self->GetVar<std::vector<Entity*>>(u"players");
|
||||
players.push_back(target);
|
||||
self->SetVar(u"players", players);
|
||||
}
|
||||
|
||||
void TriggerGas::OnOffCollisionPhantom(Entity* self, Entity* target) {
|
||||
auto players = self->GetVar<std::vector<Entity*>>(u"players");
|
||||
if (!target->IsPlayer() || players.empty()) return;
|
||||
auto position = std::find(players.begin(), players.end(), target);
|
||||
if (position != players.end()) players.erase(position);
|
||||
self->SetVar(u"players", players);
|
||||
}
|
||||
|
||||
void TriggerGas::OnTimerDone(Entity* self, std::string timerName) {
|
||||
if (timerName != this->m_TimerName) return;
|
||||
auto players = self->GetVar<std::vector<Entity*>>(u"players");
|
||||
for (auto player : players) {
|
||||
if (player->GetIsDead() || !player){
|
||||
auto position = std::find(players.begin(), players.end(), player);
|
||||
if (position != players.end()) players.erase(position);
|
||||
continue;
|
||||
}
|
||||
auto inventoryComponent = player->GetComponent<InventoryComponent>();
|
||||
if (inventoryComponent) {
|
||||
if (!inventoryComponent->IsEquipped(this->m_MaelstromHelmet)) {
|
||||
auto* skillComponent = self->GetComponent<SkillComponent>();
|
||||
if (skillComponent) {
|
||||
skillComponent->CastSkill(this->m_FogDamageSkill, player->GetObjectID());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
self->SetVar(u"players", players);
|
||||
self->AddTimer(this->m_TimerName, this->m_Time);
|
||||
}
|
||||
|
Reference in New Issue
Block a user