#include "LootBuffBehavior.h" void LootBuffBehavior::Handle(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { auto target = EntityManager::Instance()->GetEntity(context->caster); if (!target) return; auto* controllablePhysicsComponent = target->GetComponent(); if (!controllablePhysicsComponent) return; controllablePhysicsComponent->AddPickupRadiusScale(m_Scale); EntityManager::Instance()->SerializeEntity(target); if (branch.duration > 0) context->RegisterTimerBehavior(this, branch); } void LootBuffBehavior::Calculate(BehaviorContext* context, RakNet::BitStream* bitStream, BehaviorBranchContext branch) { Handle(context, bitStream, branch); } void LootBuffBehavior::UnCast(BehaviorContext* context, BehaviorBranchContext branch) { auto target = EntityManager::Instance()->GetEntity(context->caster); if (!target) return; auto* controllablePhysicsComponent = target->GetComponent(); if (!controllablePhysicsComponent) return; controllablePhysicsComponent->RemovePickupRadiusScale(m_Scale); EntityManager::Instance()->SerializeEntity(target); } void LootBuffBehavior::Timer(BehaviorContext* context, BehaviorBranchContext branch, LWOOBJID second) { UnCast(context, branch); } void LootBuffBehavior::Load() { this->m_Scale = GetFloat("scale"); }