include "TriggerLibs/HeroesLib"



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

// Library: Auriel

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

// Constants

const fixed libHAUR_gv_heroAurielBestowHopeEmpathicLinkStoredPercentage = 0.25;

const fixed libHAUR_gv_heroAurielRayofHeavenGlimmerofHopeStoredPercentage = 0.75;

const fixed libHAUR_gv_heroAurielRayofHeavenSearingLightFractionOfEnergyConvertedToDamage = 0.3;

const fixed libHAUR_gv_heroAurielResurrectShowRezPanelDuration = 2.0;

const fixed libHAUR_gv_heroAurielResurrectTargetUnresurrectableTime = 3.6;

const int libHAUR_gv_heroAurielResurrectVitalScale = 100;

const int libHAUR_gv_heroAurielResurrectEnergyPercentage = 100;

const fixed libHAUR_gv_heroAurielResurrectResurrectTime = 3.0;



// Structures

struct libHAUR_gs_AurielUI {

    int lv_traitPanel;

    int lv_traitLabel;

    int lv_aurielBestowHopeTargetStatus;

    int lv_aurielBestowHopeTargetDisplayName;

    int lv_aurielBestowHopeTargetPortrait;

    int lv_traitImageBar;

    int lv_traitImageMaxBar;

};



struct libHAUR_gs_HeroAurielResurrectFrameRecord {

    int lv_heroAurielResurrectTargetTeam;

    int lv_heroAurielResurrectTargetFrameIndex;

    timer lv_heroAurielResurrectProgressTimer;

};



struct libHAUR_gs_HeroAurielRessurectLostVikingsData {

    unit lv_vikingUnit;

    unit lv_spiritUnit;

};



// Variable Declarations

int libHAUR_gv_heroAurielTriggerRegistrationVariable;

libHAUR_gs_AurielUI libHAUR_gv_aurielUI;

fixed libHAUR_gv_heroAurielBestowHopeNonHeroicDamageStoredFraction;

fixed libHAUR_gv_heroAurielBestowHopeHeroicDamageStoredFraction;

unit[libCore_gv_bALMaxEnginePlayerCount + 1] libHAUR_gv_heroAurielBestowHopeProxy;

int[libCore_gv_bALMaxEnginePlayerCount + 1] libHAUR_gv_heroAurielBestowHopeProxyOwner;

int libHAUR_gv_heroAurielBestowHopeNumberofActiveProxies;

fixed libHAUR_gv_heroAurielRayofHeavenReservoirofHopeHealingPerStack;

fixed libHAUR_gv_heroAurielRayofHeavenNonHeroicDamageStoredFraction;

fixed libHAUR_gv_heroAurielRayofHeavenHeroicDamageStoredFraction;

int libHAUR_gv_heroAurielResurrectActiveSpirits;

unit[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectSpirit;

int[libCore_gv_bALMaxTeams + 1] libHAUR_gv_heroAurielResurrectRezzersOnTeam;

bool[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectShowSpiritTimer;

int[libCore_gv_bALMaxPlayers + 1][4] libHAUR_gv_heroAurielResurrectDeadPlayerSpiritTimerTextTag;

int[libCore_gv_bALMaxPlayers + 1][4] libHAUR_gv_heroAurielResurrectAurielSpiritTimerTextTag;

int[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectRevivingNotification;

int[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectCastingAuriel;

timer[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectCastingTimer;

int[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectRevivingDialog;

unit[11] libHAUR_gv_heroAurielResurrectLeoricUnit;

libHAUR_gs_HeroAurielResurrectFrameRecord[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectFrameRecords;

int libHAUR_gv_heroAurielResurrectTotalActiveResurrectActions;

libHAUR_gs_HeroAurielRessurectLostVikingsData[libCore_gv_bALMaxPlayers + 1][4] libHAUR_gv_heroAurielResurrectLostVikingsArray;

timer[libCore_gv_bALMaxPlayers + 1] libHAUR_gv_heroAurielResurrectNotifyTargetPlayerReviveInterruptedTimer;



// Function Declarations

void libHAUR_gf_HeroAurielIncrementHeroCountFunction ();

void libHAUR_gf_HeroAurielDecrementHeroCountFunction ();

string libHAUR_gf_BestowHopeGetPortraitPathforUnit (unit lp_unit);

void libHAUR_gf_AurielUIBestowHope (int lp_aurielPlayer, unit lp_bestowHopeTarget);

text libHAUR_gf_AurielUIUnitDisplayName (unit lp_unit);

void libHAUR_gf_HeroAurielRayofHeavenPopulateValuesfromData ();

void libHAUR_gf_HeroAurielResurrectRevealSpirittoAurielandDeadPlayer (int lp_deadPlayer, unit lp_deadHero);

void libHAUR_gf_HeroAurielResurrectCheckActiveSpirits (bool lp_targetHeroDead);

int libHAUR_gf_HeroAurielResurrectCreateDeadPlayerSpiritTimer (int lp_aurielPlayer, int lp_deadPlayer, int lp_vikingNumber);



// Trigger Declarations

trigger libHAUR_gt_AurielUIInitialize;

trigger libHAUR_gt_HeroAurielShieldofHopeSetShieldStrength;

trigger libHAUR_gt_HeroAurielBestowHopeBestowHopeCast;

trigger libHAUR_gt_HeroAurielBestowHopeSetProxy;

trigger libHAUR_gt_HeroAurielBestowHopeRemoveProxy;

trigger libHAUR_gt_HeroAurielBestowHopeToggleBestowHopeProxyDamageDealtTrigger;

trigger libHAUR_gt_HeroAurielBestowHopeHealingStoredFromProxyDamageDealt;

trigger libHAUR_gt_HeroAurielBestowHopeHealingStoredFromProxyDamageTaken;

trigger libHAUR_gt_HeroAurielBestowHopeProxyUnitSwapped;

trigger libHAUR_gt_HeroAurielRayofHeavenAbilityUsed;

trigger libHAUR_gt_HeroAurielCrystalAegisOverlayController;

trigger libHAUR_gt_HeroAurielResurrectPlayerUnlocksResurrect;

trigger libHAUR_gt_HeroAurielResurrectPlayerRespecs;

trigger libHAUR_gt_HeroAurielResurrectCreateSpirit;

trigger libHAUR_gt_HeroAurielResurrectMurkyEggDeathSpiritReveal;

trigger libHAUR_gt_HeroAurielResurrectLeoricSpiritFollow;

trigger libHAUR_gt_HeroAurielResurrectRevivePlayer;

trigger libHAUR_gt_HeroAurielResurrectPlayerRespawns;

trigger libHAUR_gt_HeroAurielResurrectLostVikingRespawns;

trigger libHAUR_gt_HeroAurielResurrectLostVikingsPlayAgainComplete;

trigger libHAUR_gt_HeroAurielResurrectLostVikingsPlayAgainStart;

trigger libHAUR_gt_HeroAurielResurrectNotifyTargetPlayerReviveStart;

trigger libHAUR_gt_HeroAurielResurrectNotifyTargetPlayerReviveInterrupted;

trigger libHAUR_gt_HeroAurielResurrectNotifyTargetPlayerReviveInterruptedTimerExpired;

trigger libHAUR_gt_HeroAurielResurrectSpiritTimerController;

trigger libHAUR_gt_HeroAurielResurrectEndofGameHideRevivingDialog;



// Library Initialization

void libHAUR_InitVariables ();