include "TriggerLibs/HeroesLib"



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

// Library: Tracer

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

// Constants

const int libTrac_gv_tracerRecallTrackCountMax = 8;



// Structures

struct libTrac_gs_MurkyUI {

    int lv_tracerPulseBombFrame;

    int lv_tracerStuckTextImage;

};



struct libTrac_gs_TracerRecallRecord {

    point lv_position;

    bool lv_positionPathable;

    fixed lv_health;

    int lv_tempTextTag;

    unit lv_debugUnit;

};



// Variable Declarations

int libTrac_gv_heroTracerTriggerRegistrationVariable;

libTrac_gs_MurkyUI libTrac_gv_tracerUI;

unit[libCore_gv_bALMaxPlayers + 1] libTrac_gv_heroTracerCurrentAttackTarget;

unit[libCore_gv_bALMaxPlayers + 1] libTrac_gv_heroTracerFocusFireTarget;

int[libCore_gv_bALMaxPlayers + 1] libTrac_gv_heroTracerFocusFireTargetInteger;

bool libTrac_gv_tracerRecallDebugMode;

libTrac_gs_TracerRecallRecord[libCore_gv_bALMaxPlayers + 1][libTrac_gv_tracerRecallTrackCountMax + 1] libTrac_gv_tracerRecallRecordVariable;

unit[libCore_gv_bALMaxPlayers + 1] libTrac_gv_tracerRecallUnit;



// Function Declarations

void libTrac_gf_HeroTracerIncrementHeroCountFunction ();

void libTrac_gf_HeroTracerDecrementHeroCountFunction ();

int libTrac_gf_HeroTracerRecallDetermineIndex (int lp_player);

void libTrac_gf_HeroTracerResetAllRecallPointstoCurrentPosition (int lp_player, unit lp_tracer);

void libTrac_gf_HeroTracerCreateorUpdateAIRecallTrackerUnit (unit lp_tracerUnit);



// Trigger Declarations

trigger libTrac_gt_HeroTracerSpawned;

trigger libTrac_gt_HeroTracerHeroWeaponUIInitialize;

trigger libTrac_gt_HeroTracerPulseBombStuckOverlayOn;

trigger libTrac_gt_HeroTracerPulseBombStuckOverlayOff;

trigger libTrac_gt_HeroTracerCustomKillVO;

trigger libTrac_gt_HeroTracerReloadRestoreAmmoOnHearthMount;

trigger libTrac_gt_HeroTracerUntouchableProc;

trigger libTrac_gt_HeroTracerSpatialEchoProc;

trigger libTrac_gt_HeroTracerPulseBombSetFacing;

trigger libTrac_gt_HeroTracerFocusFireCleanup;

trigger libTrac_gt_HeroTracerFocusFireSetTarget;

trigger libTrac_gt_HeroTracerFocusFireIncrementCooldown;

trigger libTrac_gt_HeroTracerHeroWeaponApplyTargetingUnit;

trigger libTrac_gt_HeroTracerTargetAcquired;

trigger libTrac_gt_HeroTracerForceAcquireTargetTaunt;

trigger libTrac_gt_HeroTracerHoldFire;

trigger libTrac_gt_HeroTracerClearTargetViaEffect;

trigger libTrac_gt_HeroTracerUpdateRecallRecord;

trigger libTrac_gt_HeroTracerUpdateRecallonTracerHearth;

trigger libTrac_gt_HeroTracerRecallCast;

trigger libTrac_gt_HeroTracerRecallCameraLock;

trigger libTrac_gt_HeroTracerRecallDebugMode;

trigger libTrac_gt_HeroTracerUltimateEvolutionRecall;

trigger libTrac_gt_HeroTracerUltimateEvolutionKillRecallTracker;

trigger libTrac_gt_HeroTracerUpdateRecallPointsonRevive;

trigger libTrac_gt_HeroTracerMeleeSetFacing;



// Library Initialization

void libTrac_InitVariables ();