include "TriggerLibs/HeroesLib"



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

// Library: Zarya

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

// Constants

const fixed libHZAR_gv_heroZaryaEnergyEnergytoDamageConversionRate = 2.0;

const fixed libHZAR_gv_heroZaryaEnergyHitMeModifier = 1.2;

const fixed libHZAR_gv_heroZaryaEnergyMaximumChargeThreshold = 50.0;

const fixed libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionCap = 40.0;



// Structures

struct libHZAR_gs_ZaryaUI {

    int lv_mainPanel;

    int lv_traitLabel;

};



// Variable Declarations

libHZAR_gs_ZaryaUI libHZAR_gv_zaryaUI;

unit[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_triggeringHeroZarya;

int libHZAR_gv_heroZaryaTriggerRegistrationVariable;

int[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaShieldCasterOwner;

fixed[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaShieldNumbers;

fixed[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaExpulsionZoneClearOutNumbers;

fixed libHZAR_gv_heroZaryaExpulsionZoneClearOutAmountPerStack;

int[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaGravitonSurgeCaster;

unitgroup[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaGravitonSurgeCameraTarget;

int[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaCurrentTintStage;

fixed libHZAR_gv_heroZaryaTintStage1EnergyMax;

fixed libHZAR_gv_heroZaryaTintStage2EnergyMax;

fixed libHZAR_gv_heroZaryaTintStage3EnergyMax;

fixed libHZAR_gv_heroZaryaTintStage4EnergyMax;

fixed libHZAR_gv_heroZaryaUnscaledDamagetoEnergyConversionRate;

fixed libHZAR_gv_heroZaryaTogetherWeAreStrongUnscaledDamagetoEnergyConversionRate;

fixed[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaCurrentDamagetoEnergyConversionRate;

fixed[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongContributionRemaining;

trigger[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyTrigger;

int[libCore_gv_bALMaxPlayers + 1] libHZAR_gv_heroZaryaEnergyTogetherWeAreStrongShieldedAllyUnitCount;

fixed libHZAR_gv_heroZaryaBaseAttackPeriod;



// Function Declarations

void libHZAR_gf_HeroZaryaHeroSpecificStatusFrameUpdate (int lp_player, fixed lp_damageBoost);

void libHZAR_gf_HeroZaryaIncrementHeroCountFunction ();

void libHZAR_gf_HeroZaryaDecrementHeroCountFunction ();

void libHZAR_gf_HeroZaryaCustomFCT (unit lp_unit, int lp_player, fixed lp_amount, bool lp_isShield, bool lp_deepBurnOverride);



// Trigger Declarations

trigger libHZAR_gt_HeroZaryaPainIsTemporary;

trigger libHZAR_gt_HeroZaryaCustomKillVO;

trigger libHZAR_gt_HeroZaryaUIInitialize;

trigger libHZAR_gt_HeroZaryaUIActivate;

trigger libHZAR_gt_HeroZaryaRespawnUIShow;

trigger libHZAR_gt_HeroZaryaDeathUIHide;

trigger libHZAR_gt_HeroZaryaShieldingFCT;

trigger libHZAR_gt_HeroZaryaExpulsionZoneClearOutFCT;

trigger libHZAR_gt_HeroZaryaGravitonSurgeCameraTargetAcquisition;

trigger libHZAR_gt_HeroZaryaGravitonSurgeStunDisplayManager;

trigger libHZAR_gt_HeroZaryaGravityKillsTalentSilenceDisplay;

trigger libHZAR_gt_HeroZaryaGravitonSurgeCameraPan;

trigger libHZAR_gt_HeroZaryaGravitonSurgeTargetCache;

trigger libHZAR_gt_HeroZaryaGravitonSurgeTargetRelease;

trigger libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerCreate;

trigger libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongTriggerDestroy;

trigger libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongGain;

trigger libHZAR_gt_HeroZaryaEnergyTogetherWeAreStrongRelease;

trigger libHZAR_gt_HeroZaryaEnergyMaximumChargeFCT;

trigger libHZAR_gt_HeroZaryaEnergyDecay;

trigger libHZAR_gt_HeroZaryaEnergyGain;

trigger libHZAR_gt_HeroZaryaDeepBurnTalentEnergyGain;

trigger libHZAR_gt_HeroZaryaRefreshConversionRates;

trigger libHZAR_gt_HeroZaryaHeroGainsAttackSpeedBuff;



// Library Initialization

void libHZAR_InitVariables ();