#include "WaveBossApe.h"
#include "BaseCombatAIComponent.h"

void WaveBossApe::OnStartup(Entity *self) {
    BaseWavesGenericEnemy::OnStartup(self);

    self->SetVar<LOT>(u"QuickbuildAnchorLOT", 12900);
    self->SetVar<uint32_t>(u"GroundPoundSkill", 725);
    self->SetVar<float_t>(u"reviveTime", 12);
    self->SetVar<float_t>(u"AnchorDamageDelayTime", 0.5f);
    self->SetVar<float_t>(u"spawnQBTime", 5.0f);

    auto* combatAIComponent = self->GetComponent<BaseCombatAIComponent>();
    if (combatAIComponent != nullptr) {
        combatAIComponent->SetDisabled(true);
        combatAIComponent->SetStunImmune(true);
    }

    self->AddToGroup("boss");

    BaseEnemyApe::OnStartup(self);
}

void WaveBossApe::OnDie(Entity *self, Entity *killer) {
    BaseWavesGenericEnemy::OnDie(self, killer);
    BaseEnemyApe::OnDie(self, killer);
}

void WaveBossApe::OnFireEventServerSide(Entity *self, Entity *sender, std::string args, int32_t param1, int32_t param2,
                                        int32_t param3) {
    if (args == "startAI") {
        auto* combatAIComponent = self->GetComponent<BaseCombatAIComponent>();
        if (combatAIComponent != nullptr) {
            combatAIComponent->SetDisabled(false);
            combatAIComponent->SetStunImmune(false);
        }
    } else {
        BaseEnemyApe::OnFireEventServerSide(self, sender, args, param1, param2, param3);
    }
}