include "TriggerLibs/HeroesLib"
//--------------------------------------------------------------------------------------------------
// Library: Garden of Terror
//--------------------------------------------------------------------------------------------------
// Preset Declarations
const int libMDNC_ge_MMGardenTerrorCampHibernateState_None = 0;
const int libMDNC_ge_MMGardenTerrorCampHibernateState_Full = 1;
const int libMDNC_ge_MMGardenTerrorCampHibernateState_Partial = 2;
const int libMDNC_ge_MMGardenTerrorState_Idle = 0;
const int libMDNC_ge_MMGardenTerrorState_Preparing = 1;
const int libMDNC_ge_MMGardenTerrorState_Night = 2;
const int libMDNC_ge_MMGardenTerrorState_Day = 3;
// Constants
const string libMDNC_gv_mMGardenTerrorMechanicName_C = "GardenOfTerror_Old";
const fixed libMDNC_gv_mMGardenTerrorStartTime_C = 150.0;
const fixed libMDNC_gv_mMGardenTerrorDayDuration_C = 200.0;
const fixed libMDNC_gv_mMGardenTerrorNightDuration_C = 120.0;
const fixed libMDNC_gv_mMGardenTerrorNightStartsWarningDuration_C = 30.0;
const fixed libMDNC_gv_mMGardenTerrorNightEndsWarningDuration_C = 30.0;
const int libMDNC_gv_mMGardenTerrorSeedsRequested_C = 100;
const int libMDNC_gv_mMGardenTerrorDropSeedsBossFinalDrop_C = 20;
const int libMDNC_gv_mMGardenTerrorDropSeedsBossStartHPPercent_C = 80;
const fixed libMDNC_gv_mMGardenTerrorDropSeedsBossPerHPPercent_C = 10.0;
const int libMDNC_gv_mMGardenTerrorDropSeedsBossPerHPDrop_C = 5;
const int libMDNC_gv_mMGardenTerrorDropSeedsMinionFinalDrop_C = 2;
const int libMDNC_gv_mMGardenTerrorDropSeedsMinionStartHPPercent_C = 80;
const fixed libMDNC_gv_mMGardenTerrorDropSeedsMinionPerHPPercent_C = 30.0;
const int libMDNC_gv_mMGardenTerrorDropSeedsMinionPerHPDrop_C = 1;
const int libMDNC_gv_mMGardenTerrorDropSeedsWalker_C = 1;
const int libMDNC_gv_mMGardenTerrorGardenCooldown_C = 30;
const int libMDNC_gv_mMGardenTerrorGardenGrowDuration_C = 15;
const int libMDNC_gv_mMGardenTerrorGardenLifeDuration_C = 60;
// Structures
struct libMDNC_gs_MMGardenTerrorNightMinionGroup {
point[16] lv_positions;
string[16] lv_minionType;
int lv_minionCount;
unitgroup lv_units;
region lv_area;
int lv_camp;
unit lv_bannerSconce;
};
struct libMDNC_gs_MMGardenTerrorNightBoss {
point lv_positions;
unit lv_unit;
unit lv_unit2;
region lv_area;
unit lv_bannerSconce;
};
struct libMDNC_gs_MMGardenTerrorGarden {
point lv_positions;
fixed lv_facing;
region lv_region;
unit lv_units;
int[3] lv_ping;
unit lv_pingUnit;
int lv_summonPing;
int[libCore_gv_bALMaxPlayers + 1] lv_hintTextTag;
actor lv_gardenLight;
unit lv_fertileSoil;
bool lv_growing;
bool lv_readyToControl;
};
struct libMDNC_gs_MMGardenTerrorZombieWalkerSpawnInfo {
point lv_spawnPoint;
point lv_goalPoint;
};
// Variable Declarations
libMDNC_gs_MMGardenTerrorNightMinionGroup[11] libMDNC_gv_mMGardenTerrorNightMinionGroups;
unit[11] libMDNC_gv_mMGardenTerrorNightMinionGroupIcons;
int[11] libMDNC_gv_mMGardenTerrorNightMinionGroupDefendIndex;
int libMDNC_gv_mMGardenTerrorNightMinionGroupsCount;
libMDNC_gs_MMGardenTerrorNightBoss[6] libMDNC_gv_mMGardenTerrorNightBosses;
int libMDNC_gv_mMGardenTerrorNightBossesCount;
unitgroup libMDNC_gv_mMGardenTerrorNightMonsters;
int libMDNC_gv_mMGardenTerrorNightMonstersTotalCount;
libMDNC_gs_MMGardenTerrorGarden[3] libMDNC_gv_mMGardenTerrorGarden;
libMDNC_gs_MMGardenTerrorZombieWalkerSpawnInfo[5] libMDNC_gv_mMGardenTerrorSpawnInfo;
unit[libCore_gv_bALMaxTeams + 1] libMDNC_gv_mMGardenTerrorSummonedBoss;
fixed libMDNC_gv_mMGardenTerrorVehicleChannelTime_C;
bool libMDNC_gv_mMGardenTerrorOpenFirstTime;
timer libMDNC_gv_mMGardenTerrorPrepTimer;
int libMDNC_gv_mMGardenTerrorNightTimes;
timer libMDNC_gv_mMGardenTerrorNightTimer;
int[3] libMDNC_gv_mMGardenTerrorSeedsCollected;
int[3] libMDNC_gv_mMGardenTerrorSeedsCollectedTonight;
bool libMDNC_gv_mMGardenTerrorNightFallen;
bool[libCore_gv_bALMaxTeams + 1] libMDNC_gv_mMGardenTerrorBossSummoned;
int libMDNC_gv_mMGardenTerrorNumberOfBossesSummoned;
int libMDNC_gv_mMGardenTerrorCampsHibernateState;
fixed[libCore_gv_bALMaxPlayers + 1] libMDNC_gv_mMGardenTerrorPlantDamageTotal;
int libMDNC_gv_mMGardenTerrorDays;
int[3] libMDNC_gv_mMGardenTerrorHintTextTag;
timer[libCore_gv_bALMaxTeams + 1] libMDNC_gv_mMGardenTerrorGolemCooldownTimer;
bool[libCore_gv_bALMaxPlayers + 1] libMDNC_gv_mMGardenTerrorPlayerSummoned;
sound libMDNC_gv_mMGardenTerrorGolemAmbientSound;
int libMDNC_gv_mMGardenTerrorDebugAlways;
bool libMDNC_gv_mMGardenTerrorTransmissionNightStartsWarningFirstTime;
fixed libMDNC_gv_mMGardenTerrorOvergrowthSelfHealthDecay_C;
int libMDNC_gv_plantHorrorOvergrowthPlantScaling;
int libMDNC_gv_vehiclePlantHorrorVineShieldBuffCount;
fixed libMDNC_gv_vehiclePlantHorrorDamageReduction;
unitgroup libMDNC_gv_nightMinionActiveGroup;
// Function Declarations
void libMDNC_gf_MMGardenTerrorAddNightMinionInfo (region lp_groupArea, unit lp_bannerSconceUnit);
void libMDNC_gf_MMGardenTerrorAddNightBoss (region lp_groupArea, unit lp_bannerSconceUnit);
void libMDNC_gf_MMGardenTerrorAddGarden (point lp_gardenOrder, region lp_gardenAreaOrder, point lp_gardenChaos, region lp_gardenAreaChaos, unit lp_gardenFertileSoilOrder, unit lp_gardenFertileSoilChaos);
void libMDNC_gf_MMGardenTerrorAddZombieWalkerSpawnInfo (int lp_groupArea3, point lp_groupArea, point lp_groupArea2);
void libMDNC_gf_MMGardenTerrorNightPrepare ();
void libMDNC_gf_MMGardenTerrorNightStarts ();
void libMDNC_gf_MMGardenTerrorNightEnds ();
void libMDNC_gf_MMGardenTerrorNightEndsRemoveBoss (int lp_bossIndex);
void libMDNC_gf_MMGardenTerrorCreateHauntedGardens ();
void libMDNC_gf_MMGardenTerrorCreateHauntedGarden (int lp_team, bool lp_respawn);
void libMDNC_gf_MMGardenTerrorUpdateHauntedGarden (int lp_team);
void libMDNC_gf_MMGardenTerrorManageSummonBossPing (int lp_team);
void libMDNC_gf_MMGardenTerrorRemoveSummonBossPing (int lp_team);
void libMDNC_gf_MMGardenTerrorUpdateCampHibernating ();
void libMDNC_gf_MMGardenTerrorHibernateCamps (int lp_hibernate);
void libMDNC_gf_MMGardenTerrorSpawnNightMonsters ();
void libMDNC_gf_MMGardenTerrorSpawnNightMinionSingleGroup (int lp_groupIndex);
void libMDNC_gf_MMGardenTerrorNightMonstersDroppingSeeds ();
void libMDNC_gf_MMGardenTerrorNightBossDropsSeeds (int lp_bossIndex);
int libMDNC_gf_MMGardenTerrorNightPerBossTotalSeeds ();
int libMDNC_gf_MMGardenTerrorNightMinionGroupIndex (unit lp_minion);
void libMDNC_gf_MMGardenTerrorNightMinionDropsSeeds (unit lp_minion);
int libMDNC_gf_MMGardenTerrorNightPerMinionTotalSeeds ();
int libMDNC_gf_MMGardenTerrorNightSeedsTotal ();
void libMDNC_gf_MMGardenTerrorDropSeeds (point lp_location, int lp_count, bool lp_forBoss);
int libMDNC_gf_MMGardenTerrorNightSeedsLeft ();
unit libMDNC_gf_MMGardenTerrorPlayerHeroUnit (int lp_player);
fixed libMDNC_gf_MMGardenTerrorSummonedGolemDuration ();
void libMDNC_gf_MMGardenTerrorGardenGrow (int lp_team);
void libMDNC_gf_MMGardenTerrorAddInteractGoalAfterDelay (unit lp_vehicleUnit);
void libMDNC_gf_MMGardenTerrorGardenCooldown (int lp_team);
void libMDNC_gf_MMGardenTerrorUIUpdateText ();
void libMDNC_gf_MMGardenTerrorUIUpdateGolemPanel ();
void libMDNC_gf_MMGardenTerrorUIGardenTerrorGrow (int lp_team);
void libMDNC_gf_MMGardenTerrorGolemSummonedArt ();
void libMDNC_gf_MMGardenTerrorGolemKilledExpiredArt ();
void libMDNC_gf_MMDragonballsTransmissionDragonExpireQ2 ();
void libMDNC_gf_MMDragonballsTransmissionDragonExpireQ3 ();
void libMDNC_gf_MMDragonballsTransmissionDragonExpireQ5 ();
void libMDNC_gf_MMDragonballsTransmissionDragonExpireQ4 ();
void libMDNC_gf_MMGardenTerrorTransmissionNightEndsQ ();
void libMDNC_gf_MMGardenTerrorTransmissionGolemStartGrowingQ (int lp_team);
void libMDNC_gf_MMGardenTerrorTransmissionGolemWaitingQ (int lp_team, int lp_stage);
void libMDNC_gf_MMGardenTerrorTransmissionGolemWastedQ (int lp_team);
void libMDNC_gf_MMDragonballsTransmissionDragonActiveQ2 (int lp_activeTeam);
void libMDNC_gf_MMDragonballsTransmissionDragonActiveQ3 (int lp_activeTeam);
bool libMDNC_gf_IsNightTime ();
// Trigger Declarations
trigger libMDNC_gt_MMGardenTerrorInit;
trigger libMDNC_gt_MMGardenTerrorPingDataInit;
trigger libMDNC_gt_MMGardenTerrorAnnouncerInit;
trigger libMDNC_gt_MMGardenTerrorGatesOpened;
trigger libMDNC_gt_MMGardenTerrorNightStarts;
trigger libMDNC_gt_MMGardenTerrorNightStartLightTransition;
trigger libMDNC_gt_MMGardenTerrorNightEndLightTransition;
trigger libMDNC_gt_MMGardenTerrorNightMonsterDies;
trigger libMDNC_gt_MMGardenTerrorSeedDropped;
trigger libMDNC_gt_MMGardenTerrorSeedPickup;
trigger libMDNC_gt_MMGardenTerrorNightVignette;
trigger libMDNC_gt_MMGardenTerrorPlantDamageCalculation;
trigger libMDNC_gt_MMGardenTerrorPlantDamageReport;
trigger libMDNC_gt_MMGardenTerrorChannelStarted;
trigger libMDNC_gt_MMGardenTerrorChannelCompleted;
trigger libMDNC_gt_MMGardenTerrorGolemSummonStarted;
trigger libMDNC_gt_MMGardenTerrorGolemSummoned;
trigger libMDNC_gt_MMGardenTerrorSummonedGolemKilled;
trigger libMDNC_gt_MMGardenTerrorUIHandler;
trigger libMDNC_gt_MMGardenTerrorUIUpdateSummonedBossBar;
trigger libMDNC_gt_MMGardenTerrorDisableEvent;
trigger libMDNC_gt_MMGardenTerrorDebugTemp;
trigger libMDNC_gt_MMGardenTerrorDebugStart1;
trigger libMDNC_gt_MMGardenTerrorDebugStart;
trigger libMDNC_gt_MMGardenTerrorDebugNightEnds;
trigger libMDNC_gt_MMGardenTerrorDebugAlwaysDay;
trigger libMDNC_gt_MMGardenTerrorDebugAlwaysNight;
trigger libMDNC_gt_PlantHorrorOvergrowthApplyXP;
trigger libMDNC_gt_PlantHorrorOvergrowthPlantScaling;
trigger libMDNC_gt_NightMinionBecomesIdleDuringDay;
trigger libMDNC_gt_LignifyHero;
trigger libMDNC_gt_LignifyHeroOff;
trigger libMDNC_gt_VehiclePlantHorrorVineShieldDamageResponse;
trigger libMDNC_gt_VehiclePlantHorrorVineShieldIncrement;
trigger libMDNC_gt_VehiclePlantHorrorVineShieldDecrement;
trigger libMDNC_gt_VehiclePlantHorrorVineGrabActivate;
trigger libMDNC_gt_JunglePlantHorrorDefenderSpells;
// Library Initialization
void libMDNC_InitVariables ();