include "TriggerLibs/NativeLib"



include "LibHVAL_h"



//--------------------------------------------------------------------------------------------------

// Library: Valeera

//--------------------------------------------------------------------------------------------------

// External Library Initialization

void libHVAL_InitLibraries () {

    libNtve_InitVariables();

}



// Variable Initialization

bool libHVAL_InitVariables_completed = false;



void libHVAL_InitVariables () {

    if (libHVAL_InitVariables_completed) {

        return;

    }



    libHVAL_InitVariables_completed = true;



}



// Functions

void libHVAL_gf_HeroValeeraIncrementHeroCountFunction () {

    // Automatic Variable Declarations

    // Implementation

    libHVAL_gv_heroValeeraTriggerRegistrationVariable += 1;

    if ((libHVAL_gv_heroValeeraTriggerRegistrationVariable == 1)) {

        TriggerEnable(libHVAL_gt_HeroValeeraGainAComboPoint, true);

    }



}



void libHVAL_gf_HeroValeeraDecrementHeroCountFunction () {

    // Automatic Variable Declarations

    // Implementation

    libHVAL_gv_heroValeeraTriggerRegistrationVariable -= 1;

    if ((libHVAL_gv_heroValeeraTriggerRegistrationVariable < 0)) {

        libHVAL_gv_heroValeeraTriggerRegistrationVariable = 0;

    }



    if ((libHVAL_gv_heroValeeraTriggerRegistrationVariable == 0)) {

        TriggerEnable(libHVAL_gt_HeroValeeraGainAComboPoint, false);

    }



}



// Triggers

//--------------------------------------------------------------------------------------------------

// Trigger: Hero - Valeera - Gain A Combo Point

//--------------------------------------------------------------------------------------------------

bool libHVAL_gt_HeroValeeraGainAComboPoint_Func (bool testConds, bool runActions) {

    // Variable Declarations

    unit lv_valeera;

    int lv_totalCP;

    int lv_player;

    unit lv_target;



    // Automatic Variable Declarations

    // Variable Initialization



    // Actions

    if (!runActions) {

        return true;

    }



    lv_valeera = EventPlayerEffectUsedUnit(c_effectUnitCaster);

    lv_player = UnitGetOwner(lv_valeera);

    lv_target = EventPlayerEffectUsedUnit(c_effectUnitTarget);

    lv_totalCP = FixedToInt(UnitGetTokenCount(lv_valeera, "ValeeraComboPointsToken"));

    if ((lv_totalCP <= 2)) {

        TextExpressionSetToken("Param/Expression/lib_HVAL_F0820B46", "A", IntToText(lv_totalCP));

        FloatingCombatElementCreateTextAtPoint(PlayerGroupSingle(lv_player), "FloatingCombatElements/FloatingCombatNormalAmountReceived", "ShieldState", PointWithOffset(UnitGetPosition(lv_target), -0.75, 0.75), TextExpressionAssemble("Param/Expression/lib_HVAL_F0820B46"), libNtve_gv_FloatingCombatTextAutoRandomSeed);

    }

    else {

        TextExpressionSetToken("Param/Expression/lib_HVAL_9E361351", "A", IntToText(lv_totalCP));

        FloatingCombatElementCreateTextAtPoint(PlayerGroupSingle(lv_player), "FloatingCombatElements/FloatingCombatNormalAmountReceived", "ShieldState", PointWithOffset(UnitGetPosition(lv_target), -0.75, 0.75), TextExpressionAssemble("Param/Expression/lib_HVAL_9E361351"), libNtve_gv_FloatingCombatTextAutoRandomSeed);

    }

    return true;

}



//--------------------------------------------------------------------------------------------------

void libHVAL_gt_HeroValeeraGainAComboPoint_Init () {

    libHVAL_gt_HeroValeeraGainAComboPoint = TriggerCreate("libHVAL_gt_HeroValeeraGainAComboPoint_Func");

    TriggerEnable(libHVAL_gt_HeroValeeraGainAComboPoint, false);

    TriggerAddEventPlayerEffectUsed(libHVAL_gt_HeroValeeraGainAComboPoint, c_playerAny, "ValeeraComboPointsModifyToken");

}



void libHVAL_InitTriggers () {

    libHVAL_gt_HeroValeeraGainAComboPoint_Init();

}



//--------------------------------------------------------------------------------------------------

// Library Initialization

//--------------------------------------------------------------------------------------------------

bool libHVAL_InitLib_completed = false;



void libHVAL_InitLib () {

    if (libHVAL_InitLib_completed) {

        return;

    }



    libHVAL_InitLib_completed = true;



    libHVAL_InitLibraries();

    libHVAL_InitVariables();

    libHVAL_InitTriggers();

}