#include "NjColeNPC.h"
#include "MissionComponent.h"
#include "InventoryComponent.h"

void NjColeNPC::OnEmoteReceived(Entity* self, int32_t emote, Entity* target) 
{
    if (emote != 393)
    {
        return;
    }

    auto* inventoryComponent = target->GetComponent<InventoryComponent>();

    if (inventoryComponent == nullptr)
    {
        return;
    }

    if (!inventoryComponent->IsEquipped(14499) && !inventoryComponent->IsEquipped(16644))
    {
        return;
    }

    auto* missionComponent = target->GetComponent<MissionComponent>();

    if (missionComponent == nullptr)
    {
        return;
    }

    missionComponent->ForceProgressTaskType(1818, 1, 1);
}

void NjColeNPC::OnMissionDialogueOK(Entity* self, Entity* target, int missionID, MissionState missionState) 
{
    NjNPCMissionSpinjitzuServer::OnMissionDialogueOK(self, target, missionID, missionState);

    if (missionID == 1818 && missionState >= MissionState::MISSION_STATE_READY_TO_COMPLETE)
    {
        auto* missionComponent = target->GetComponent<MissionComponent>();
        auto* inventoryComponent = target->GetComponent<InventoryComponent>();

        if (missionComponent == nullptr || inventoryComponent == nullptr)
        {
            return;
        }

        if (inventoryComponent->GetLotCount(14499) > 0)
        {
            inventoryComponent->RemoveItem(14499, 1);
        }
        else
        {
            return;
        }

        inventoryComponent->AddItem(16644, 1);
    }
}
