include "TriggerLibs/HeroesLib"



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

// Library: Samuro

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

// Preset Declarations

const int libHSAM_ge_MirrorImageState_Leashing = 0;

const int libHSAM_ge_MirrorImageState_Idle = 1;

const int libHSAM_ge_MirrorImageState_Aggro = 2;



// Structures

struct libHSAM_gs_SamuroUI {

    int lv_samuroControlGroupIcon0;

    int lv_samuroControlGroupIcon1;

    int lv_samuroControlGroupIcon2;

    int lv_samuroControlGroupIcon3;

    int lv_samuroControlGroupIconHealth1;

    int lv_samuroControlGroupIconHealth2;

};



// Variable Declarations

int libHSAM_gv_heroSamuroTriggerRegistrationVariable;

unitgroup[libCore_gv_bALMaxPlayers + 1] libHSAM_gv_mirrorImageUnitGroup;

unitgroup[libCore_gv_bALMaxPlayers + 1] libHSAM_gv_mirrorImageUnitGroup2;

unitgroup[libCore_gv_bALMaxPlayers + 1] libHSAM_gv_mirrorImageUnitGroup3;

int libHSAM_gv_samuro_ControlGroupPanel;

libHSAM_gs_SamuroUI libHSAM_gv_samuroUI;



// Function Declarations

void libHSAM_gf_HeroSamuroIncrementHeroCountFunction ();

void libHSAM_gf_HeroSamuroDecrementHeroCountFunction ();

void libHSAM_gf_HeroSamuroMirrorImageAI (unit lp_samuro, unit lp_mirrorImage, int lp_samuroPlayer);

void libHSAM_gf_SamuroUISetup (unit lp_CreatedUnit);

void libHSAM_gf_SamuroMirrorImagesTransferDurations (unit lp_samuro, unit lp_mirrorImage);

void libHSAM_gf_SamuroMirrorImageAIActivationRetainOrderDelay (unit lp_mirrorImageUnit);

void libHSAM_gf_SamuroKawarimi (unit lp_imageUnit);

void libHSAM_gf_SamuroUIUnSetupUIForPlayer (int lp_player);



// Trigger Declarations

trigger libHSAM_gt_ForceIncludeDataMods;

trigger libHSAM_gt_SamuroSelectionChange;

trigger libHSAM_gt_SamuroRespawn;

trigger libHSAM_gt_SamuroPort;

trigger libHSAM_gt_SamuroDebugSwap;

trigger libHSAM_gt_SamuroRespecsTalents;

trigger libHSAM_gt_SamuroSamuroDies;

trigger libHSAM_gt_SamuroUsesTransport;

trigger libHSAM_gt_SamuroGainsMapMechanicStack;

trigger libHSAM_gt_SamuroMirrorImageSelectedOn;

trigger libHSAM_gt_SamuroMirrorImageSelectedOff;

trigger libHSAM_gt_SamuroMirrorImageSwap;

trigger libHSAM_gt_SamuroMirrorImageMountDismountPort;

trigger libHSAM_gt_SamuroMirrorImageCreated;

trigger libHSAM_gt_SamuroMirrorImageDies;

trigger libHSAM_gt_SamuroMirrorImageController;

trigger libHSAM_gt_SamuroMirrorImageIllusionMasterAIToggleOn;

trigger libHSAM_gt_SamuroMirrorImageIllusionMasterAIToggleOff;

trigger libHSAM_gt_SamuroMirrorImageAttackOrderRedirectAI;

trigger libHSAM_gt_SamuroMirrorImageDamageTakenDuplication;

trigger libHSAM_gt_SamuroCriticalStrike;

trigger libHSAM_gt_SamuroBladestorm;

trigger libHSAM_gt_SamuroWayofIllusion;

trigger libHSAM_gt_SamuroGainsWayofIllusion;

trigger libHSAM_gt_SamuroLosesWayofIllusion;

trigger libHSAM_gt_SamuroGainsThreeBladeStyleTalent;

trigger libHSAM_gt_SamuroGainsCrushingBlowTalent;

trigger libHSAM_gt_SamuroMirage;

trigger libHSAM_gt_SamuroGainsR2Talent;

trigger libHSAM_gt_SamuroControlGroupPanelInitialize;

trigger libHSAM_gt_SamuroUICleanUpUIForDebugHeroSwap;

trigger libHSAM_gt_SamuroUIInitialize;

trigger libHSAM_gt_SamuroControlGroupHighlightSelectionController;

trigger libHSAM_gt_SamuroMirrorImageHealthTrackerCreate;

trigger libHSAM_gt_SamuroMirrorImageHealthTrackerCreateTalentTaken;

trigger libHSAM_gt_SamuroMirrorImageHealthTrackerUpdate;



// Library Initialization

void libHSAM_InitVariables ();