mirror of
https://github.com/DarkflameUniverse/DarkflameServer.git
synced 2025-10-27 02:22:04 +00:00
35 lines
1.1 KiB
C++
35 lines
1.1 KiB
C++
#include "GfBananaCluster.h"
|
|
#include "Entity.h"
|
|
#include "dpWorld.h"
|
|
#include "dNavMesh.h"
|
|
#include "Loot.h"
|
|
#include "DestroyableComponent.h"
|
|
|
|
void GfBananaCluster::OnStartup(Entity* self) {
|
|
self->AddTimer("startup", 100);
|
|
}
|
|
|
|
void GfBananaCluster::OnTimerDone(Entity* self, std::string timerName) {
|
|
if (timerName == "startup") {
|
|
self->ScheduleKillAfterUpdate(nullptr);
|
|
}
|
|
}
|
|
|
|
// Hack in banana loot dropping from tree area since it seemed to do that in live for some reason
|
|
void GfBananaCluster::OnHit(Entity* self, Entity* attacker) {
|
|
auto* parentEntity = self->GetParentEntity();
|
|
GameMessages::GetPosition posMsg{};
|
|
if (parentEntity) {
|
|
posMsg.target = parentEntity->GetObjectID();
|
|
}
|
|
posMsg.Send();
|
|
|
|
const auto rotation = parentEntity ? parentEntity->GetRotation() : self->GetRotation();
|
|
|
|
if (dpWorld::GetNavMesh()) posMsg.pos.y = dpWorld::GetNavMesh()->GetHeightAtPoint(posMsg.pos) + 3.0f;
|
|
else posMsg.pos = posMsg.pos - (NiPoint3Constant::UNIT_Y * 8);
|
|
posMsg.pos.x -= QuatUtils::Right(rotation).x * 5;
|
|
posMsg.pos.z -= QuatUtils::Right(rotation).z * 5;
|
|
self->SetPosition(posMsg.pos);
|
|
}
|