//================================================================================================== // // Generated Map Script // // Name: Burning Tide // Author: Blizzard Entertainment // //================================================================================================== include "TriggerLibs/NativeLib" include "TriggerLibs/LibertyLib" //-------------------------------------------------------------------------------------------------- // Library Initialization //-------------------------------------------------------------------------------------------------- void InitLibs () { libNtve_InitLib(); libLbty_InitLib(); } //-------------------------------------------------------------------------------------------------- // Global Variables //-------------------------------------------------------------------------------------------------- timer gv_lavaTimer; timer gv_warning01Timer; timer gv_warning02Timer; fixed gv_lavaInterval; bool gv_lowGroundIsSafe; int gv_lavaDeathsBoard; int gv_lavaDeaths; int gv_lavaSurgeCounter; int gv_tempLavaDeaths; int gv_randomPickedRegion; region[25] gv_mineralRegions; int gv_maxMineralRegions; int gv_mINERALS_NEEDED; int gv_minerals_Needed_Board; int gv_northTeamMinerals; int gv_southTeamMinerals; playergroup gv_northTeam; playergroup gv_southTeam; text gv_textInitialWarning; void InitGlobals () { int init_i; gv_lavaTimer = TimerCreate(); gv_warning01Timer = TimerCreate(); gv_warning02Timer = TimerCreate(); gv_lavaInterval = 240.0; gv_lowGroundIsSafe = true; gv_lavaDeathsBoard = c_boardNone; gv_lavaDeaths = 0; gv_lavaSurgeCounter = 0; gv_tempLavaDeaths = 0; gv_randomPickedRegion = 0; init_i = 0; while (init_i <= 24) { gv_mineralRegions[init_i] = null; init_i = init_i + 1; } gv_maxMineralRegions = 0; gv_mINERALS_NEEDED = 0; gv_minerals_Needed_Board = c_boardNone; gv_northTeamMinerals = 0; gv_southTeamMinerals = 0; gv_northTeam = PlayerGroupEmpty(); gv_southTeam = PlayerGroupEmpty(); gv_textInitialWarning = StringExternal("Param/Value/DAF9D2DE"); } //-------------------------------------------------------------------------------------------------- // Global Function Declarations //-------------------------------------------------------------------------------------------------- void gf_SpawnRandomMineralShard (region lp_chosenRegion); //-------------------------------------------------------------------------------------------------- // Trigger Variables //-------------------------------------------------------------------------------------------------- trigger gt_MeleeInitialization; trigger gt_InitHelpPanel; trigger gt_LavaSurgeMusic; trigger gt_CameraShakeWeak; trigger gt_CameraShakeStrong; trigger gt_CameraShakeDuringLava; trigger gt_CreateLavaDeathsLeaderboard; trigger gt_UpdateLavaDeathsBoard; trigger gt_PlayLavaDeathSound; trigger gt_LavaTurnsON; trigger gt_LavaTurnsOFF; trigger gt_LavaDamage; trigger gt_TransmissionLavaWarning01Q; trigger gt_TransmissionLavaWarning02Q; trigger gt_TransmissionItsSafeQ; trigger gt_CreateMineralCountBoard; trigger gt_UpdateMineralCountBoard; trigger gt_InitLavaMineralRegions; trigger gt_SpawnRandomMinerals; trigger gt_WarningNTeamCloseToVictory; trigger gt_WarningSTeamCloseToVictory; trigger gt_ResourcePickups; trigger gt_TipLavaMechanic; trigger gt_TipMineralPickups; //-------------------------------------------------------------------------------------------------- // Custom Script: AI Basic Custom Logic //-------------------------------------------------------------------------------------------------- //================================================================================================== // Custom AI Logic for Burning Tide (stay at home and gather resources). //-------------------------------------------------------------------------------------------------- //-------------------------------------------------------------------------------------------------- // AINewUnitDefaultBT //-------------------------------------------------------------------------------------------------- void AINewUnitDefaultBT (int player, unit u) { wave w = AIWaveGet(player, c_waveMain); AIMergeUnit(player, u, w); } //-------------------------------------------------------------------------------------------------- // AIWaveThinkDefaultBT //-------------------------------------------------------------------------------------------------- void AIWaveThinkDefaultBT (int player, wave w, int type) { // all waves should just guard home on this map int state = AIWaveState(w); if (state != c_waveStateDefend) { AIWaveSetType(w, c_waveStateDefend, AIWaveTargetMeleeDefend(player)); } } //-------------------------------------------------------------------------------------------------- // AINeedsDefendingBT //-------------------------------------------------------------------------------------------------- bool AINeedsDefendingBT (int player) { return false; } //-------------------------------------------------------------------------------------------------- // GiveRemoteHarvestOrderBT //-------------------------------------------------------------------------------------------------- void GiveRemoteHarvestOrderBT (int player, unit curUnit) { int mineralCount; point unitPos; point minPos; fixed curDist; fixed closestDist = 250; unit closestMin; unit curMin; unit bestDropOff; unitgroup minerals; unitgroup dropOffs; abilcmd harvestAbilDropOff; abilcmd harvestAbilGather; string curType = UnitGetType(curUnit); if (curType == c_ZU_Drone) { harvestAbilGather= AbilityCommand("DroneHarvest", 0); harvestAbilDropOff= AbilityCommand("DroneHarvest", 1); } else if (curType == c_PU_Probe) { harvestAbilGather= AbilityCommand("ProbeHarvest", 0); harvestAbilDropOff= AbilityCommand("ProbeHarvest", 1); } else if (curType == c_TU_SCV) { harvestAbilGather= AbilityCommand("SCVHarvest", 0); harvestAbilDropOff= AbilityCommand("SCVHarvest", 1); } else if (curType == "MULE") { harvestAbilGather= AbilityCommand("MULEGather", 0); harvestAbilDropOff= AbilityCommand("MULEGather", 1); } else { // unknown worker type? return; } unitPos = AIGetGatherLocation(player, c_townMain); //UnitGetPosition(curUnit); minerals = UnitGroup("RichMineralField", 0, null, null, c_noMaxCount); mineralCount = UnitGroupCount(minerals, c_unitCountAll); while (mineralCount > 0) { curMin = UnitGroupUnit(minerals, mineralCount ); minPos = UnitGetPosition(curMin); curDist = DistanceBetweenPoints(unitPos, minPos); if (curDist < closestDist ) { if (PointPathingIsConnected(unitPos, minPos)) { closestDist = curDist; closestMin = curMin; } } mineralCount = mineralCount - 1; } if (closestDist < 250) { // found a best mineral, try to harvest it AISetUnitScriptControlled(curUnit,true); UnitIssueOrder(curUnit,Order(AbilityCommand("stop", 0)),c_orderQueueReplace); // go to the closest dropoff first in case we were holding something dropOffs = AIGetBuildingGroup(player, c_buildingTypeTownHall); bestDropOff = AIGetClosestUnit(curUnit, dropOffs, true); UnitIssueOrder(curUnit,Order(harvestAbilDropOff),c_orderQueueReplace); UnitIssueOrder(curUnit,OrderTargetingUnit(harvestAbilGather,closestMin),c_orderQueueAddToEnd); } } //-------------------------------------------------------------------------------------------------- // AIManageRemoteMiningAndFleeLavaBT //-------------------------------------------------------------------------------------------------- void AIManageRemoteMiningAndFleeLavaBT (int player) { int desiredNormalWorkers; int currentNormalWorkers; int unitCount; unitgroup playerUnits; unit curUnit; unit normalWorker = c_nullUnit; unit scriptWorker = c_nullUnit; bool isLavaDanger; bool isInDanger; string curUnitType; order ord; isLavaDanger = (TimerGetRemaining(gv_lavaTimer) < 20.0); desiredNormalWorkers = 3 * (AIGetHarvestableGasNumSpots(player, c_townMain) + AIGetMineralNumSpots(player, c_townMain)); currentNormalWorkers = 0; playerUnits = UnitGroup(null, player, null, null, c_noMaxCount); unitCount= UnitGroupCount(playerUnits , c_unitCountAll); while (unitCount > 0) { curUnit = UnitGroupUnit(playerUnits , unitCount); curUnitType = UnitGetType(curUnit); isInDanger = false; if (isLavaDanger) { if (WorldHeight(c_heightMapGround, UnitGetPosition(curUnit)) <= 9.7) { // unit is in danger, tell it to move to high ground isInDanger = true; AISetUnitScriptControlled(curUnit,true); UnitIssueOrder( curUnit, OrderTargetingPoint(AbilityCommand("move", 0), AIGetGatherDefLocation(player, c_townMain)), c_orderQueueReplace); } } if (UnitTypeTestFlag(curUnitType, c_unitFlagWorker)) { // logic for workers if (!AIIsScriptControlled(curUnit)) { currentNormalWorkers += 1; if (!UnitTestState(curUnit, c_unitStateHidden)) { normalWorker = curUnit; } } else { // script controlled worker logic scriptWorker = curUnit; if (isLavaDanger) { // flee from lava and wait UnitIssueOrder( curUnit, OrderTargetingPoint(AbilityCommand("move", 0), AIGetGatherDefLocation(player, c_townMain)), c_orderQueueReplace); } else { if (!UnitTestState(curUnit, c_unitStateHidden)) { // no lava danger, give it a harvest order if idle if (UnitOrder(curUnit, 0) == null) { GiveRemoteHarvestOrderBT(player, curUnit); } } } } } else { if (!isInDanger) { if (AIIsScriptControlled(curUnit)) { AISetUnitScriptControlled(curUnit,false); } } } unitCount = unitCount- 1; } if (currentNormalWorkers > desiredNormalWorkers) { if (!isLavaDanger && normalWorker != c_nullUnit) { // I have excess normal harvesting peons start one remote mining GiveRemoteHarvestOrderBT(player, normalWorker); } } else if (currentNormalWorkers < desiredNormalWorkers) { if (scriptWorker != c_nullUnit) { // I have too few normal harvesting peons, return some to normal control UnitIssueOrder(scriptWorker, OrderTargetingPoint(AbilityCommand("move", 0), AIGetGatherDefLocation(player, c_townMain)), c_orderQueueReplace); AISetUnitScriptControlled(scriptWorker, false); } } } //-------------------------------------------------------------------------------------------------- // Default startup routine //-------------------------------------------------------------------------------------------------- void AIMeleeStartBT (int player) { point targDPoint; point targOPoint; wavetarget targD; wavetarget targO; //TriggerDebugOutput( // 1, // StringToText("[") + // PlayerColorName(PlayerGetColorIndex(player, false)) + // StringToText("] ") + // StringToText("AI Started with BT"), // true //); AIStart(player, false, DifficultyAPM(c_skirVeryHard)); AISetDifficulty(player, c_diffNormalVision, true); AISetDifficulty(player, c_diffLimitAPM, true); AISetDifficulty(player, c_diffSpotChangelings, true); AISetDifficulty(player, c_diffWaveAvoidDanger, true); AISetDifficulty(player, c_diffFleeDamage, true); AISetDifficulty(player, c_diffEarlyDefenseScout, true); AISetDifficulty(player, c_diffUseExtraScouts, true); AISetDifficulty(player, c_diffHoldAtIdleChokes, true); AISetDifficulty(player, c_diffPressForward, true); AISetDifficulty(player, c_diffFleeWorkers, true); AISetDifficulty(player, c_diffFleeDanger, true); AISetDifficulty(player, c_diffRepairDamage, true); AISetDifficulty(player, c_diffOptimizeGas, true); AISetDifficulty(player, c_diffDefendWithPeons, true); AISetDifficulty(player, c_diffEnableDangerMap, true); AISetDifficulty(player, c_diffNormalTargetPrio, true); AISetDifficulty(player, c_diffAllowResourceReq, true); AISetDifficulty(player, c_diffUseRetreatLogic, true); AISetDifficulty(player, c_diffAutoLoadBunkers, false); AISetDifficulty(player, c_diffEarlyGameRepair, false); AISetFlag(player, e_flagsRunScared, true); AISetFlag(player, e_flagsLateScout, false); AISetFlag(player, e_flagsClearObs, false); AIDeclareTown(player, c_townOne, PlayerStartLocation(player)); AISetMainTown(player, c_townOne); AIHarvest(player, c_townOne); AISetAllStates(player, 1); targDPoint = AIWaveTargetGatherDPoint(player, c_townMain); targOPoint = AIWaveTargetGatherOPoint(player, c_townMain); targD = AIWaveTargetGatherD(player, c_townMain); targO = AIWaveTargetGatherO(player, c_townMain); AIWaveSet(player, c_waveMain, AIWaveCreate(AIWaveInfoCreate(), player, targOPoint)); AIWaveSet(player, c_waveAttack, AIWaveCreate(AIWaveInfoCreate(), player, targOPoint)); AIWaveSet(player, c_waveDivert1, AIWaveCreate(AIWaveInfoCreate(), player, targOPoint)); AIWaveSet(player, c_waveDivert2, AIWaveCreate(AIWaveInfoCreate(), player, targOPoint)); AIWaveSet(player, c_waveClearObs, AIWaveCreate(AIWaveInfoCreate(), player, targOPoint)); AIWaveSet(player, c_waveHome, AIWaveCreate(AIWaveInfoCreate(), player, targDPoint)); AIWaveSet(player, c_waveDefend, AIWaveCreate(AIWaveInfoCreate(), player, targDPoint)); AIWaveSetType(AIWaveGet(player, c_waveMain), c_waveStateIdle, targO); AIWaveSetType(AIWaveGet(player, c_waveAttack), c_waveStateIdle, targO); AIWaveSetType(AIWaveGet(player, c_waveDivert1), c_waveStateIdle, targO); AIWaveSetType(AIWaveGet(player, c_waveDivert2), c_waveStateIdle, targO); AIWaveSetType(AIWaveGet(player, c_waveClearObs), c_waveStateIdle, targO); AIWaveSetType(AIWaveGet(player, c_waveHome), c_waveStateIdle, targD); AIWaveSetType(AIWaveGet(player, c_waveDefend), c_waveStateIdle, targD); AISetMaxBestAttackersLimit(player, AIMeleeDiffSelect(player, 1, 2, 4, 8, 16, 32)); AITransportIgnore(player, "VikingAssault"); AITransportSetPanic(player, 0.6); AITransportSetReturn(player, targDPoint); AISetNumScouts(player, 0); AISpecifiedMakers(); AISpecifiedHealers(player); AIAddDetectionDangerUnits(player); AISetNukeConstants(player); // - AISetDefaultCombatFlags(player, true); AICombatDiffFlagCatSpecialHighPrio (player, c_combatFlagEnable); AICombatDiffFlagCatSplashHighPrio (player, c_combatFlagEnable); AICombatDiffFlagCatTimedLowPrio (player, c_combatFlagEnable); AICombatDiffFlagCatWorkersNormalPrio (player, c_combatFlagEnable); AICombatDiffFlagCatSortBuildingsPrio (player, c_combatFlagEnable); AICombatDiffFlagTieBreakHealers (player, c_combatFlagEnable); AICombatDiffFlagTieBreakBonusDamage (player, c_combatFlagEnable); AICombatDiffFlagTieBreakLowHP (player, c_combatFlagEnable); AICombatDiffFlagTieBreakInjured (player, c_combatFlagEnable); AICombatDiffFlagTieBreakDetector (player, c_combatFlagEnable); AICombatDiffFlagTieBreakRange (player, c_combatFlagEnable); } //-------------------------------------------------------------------------------------------------- // Custom Script: Protoss Custom Logic //-------------------------------------------------------------------------------------------------- //================================================================================================== // Custom Protoss AI for Burning Tide //================================================================================================== //-------------------------------------------------------------------------------------------------- // AINewUnitProtBT //-------------------------------------------------------------------------------------------------- void AINewUnitProtBT (int player, unit u) { string type = UnitGetType(u); // ignored units // if (UnitTypeTestAttribute(type, c_unitAttributeStructure)) { return; } if (UnitTypeTestFlag(type, c_unitFlagWorker)) { return; } AINewUnitDefaultBT(player, u); } //-------------------------------------------------------------------------------------------------- // AIGetScoutProtBT //-------------------------------------------------------------------------------------------------- unit AIGetScoutProtBT (int player, int index, unit prev, bool allowWorkers) { return c_nullUnit; } //-------------------------------------------------------------------------------------------------- // AIEarlyDefScoutProtBT //-------------------------------------------------------------------------------------------------- unit AIEarlyDefScoutProtBT (int player, unit prev, bool allowWorkers) { return c_nullUnit; } //-------------------------------------------------------------------------------------------------- // AIWaveThinkProtBT //-------------------------------------------------------------------------------------------------- void AIWaveThinkProtBT (int player, wave w, int type) { AIWaveThinkDefaultBT(player, w, type); } //-------------------------------------------------------------------------------------------------- // ProtInitBT //-------------------------------------------------------------------------------------------------- static void ProtInitBT (int player) { int state; AISetFlag(player, e_flagsEarlyDefScout, false); AISetPowerBuilding(player, c_PB_Pylon); AISetMainState(player, e_mainState_OpenGnd0, e_mainSubState_Unset); } //-------------------------------------------------------------------------------------------------- // AIMeleeProtBT //-------------------------------------------------------------------------------------------------- void AIMeleeProtBT (int player) { int mainState = AIState(player, e_mainState); if (mainState == e_mainState_Init) { ProtInitBT(player); } // full game set stock for burning tide: // it basically makes peons and harvests with a token defense // i.e. pure win by minerals (greed) strategy AIClearStock(player); AISetStock( player, 1, c_PB_Nexus ); AISetStock( player, 9, c_PU_Probe ); AISetStock( player, 1, c_PB_Pylon ); AISetStock( player, 13, c_PU_Probe ); AISetStock( player, 1, c_PB_Gateway ); AISetStock( player, 14, c_PU_Probe ); AISetStock( player, 1, c_PB_Assimilator ); AISetStock( player, 16, c_PU_Probe ); AISetStock( player, 2, c_PB_Pylon ); AISetStock( player, 18, c_PU_Probe ); AISetStock( player, 1, c_PB_CyberneticsCore ); AISetStock( player, 1, c_PU_Zealot ); AISetStock( player, 20, c_PU_Probe ); AISetStock( player, 2, c_PU_Zealot ); AISetStock( player, 1, c_PR_WarpGateResearch ); AISetStock( player, 1, c_PU_Stalker ); AISetStockEx(player, c_townMain, 3, c_PB_Pylon, c_makeExpanPower, 0); AISetStock( player, 2, c_PB_Gateway ); AISetStock( player, 4, c_PU_Stalker ); AISetStockEx(player, c_townMain, 4, c_PB_Pylon, c_makeExpanPower, 0); AISetStock( player, 8, c_PU_Stalker ); AISetStock( player, 2, c_PB_PhotonCannon ); // just in case, default econ AIDefaultEconomy(player, c_PB_Nexus, c_PB_Assimilator, c_PB_Pylon, c_PU_Probe, 40, c_stockAlways); AIEnableStock(player); AIManageRemoteMiningAndFleeLavaBT (player); } //-------------------------------------------------------------------------------------------------- // Custom Script: Terran Custom Logic //-------------------------------------------------------------------------------------------------- //================================================================================================== // Custom Terran AI for Burning Tide //================================================================================================== //-------------------------------------------------------------------------------------------------- // AINewUnitTerrBT //-------------------------------------------------------------------------------------------------- void AINewUnitTerrBT (int player, unit u) { string type = UnitGetType(u); // ignored units // if (UnitTypeTestAttribute(type, c_unitAttributeStructure)) { return; } if (UnitTypeTestFlag(type, c_unitFlagWorker)) { return; } AINewUnitDefaultBT(player, u); } //-------------------------------------------------------------------------------------------------- // AIGetScoutTerrBT //-------------------------------------------------------------------------------------------------- unit AIGetScoutTerrBT (int player, int index, unit prev, bool allowWorkers) { return c_nullUnit; } //-------------------------------------------------------------------------------------------------- // AIEarlyDefScoutTerrBT //-------------------------------------------------------------------------------------------------- unit AIEarlyDefScoutTerrBT (int player, unit prev, bool allowWorkers) { return c_nullUnit; } //-------------------------------------------------------------------------------------------------- // AIWaveThinkTerrBT //-------------------------------------------------------------------------------------------------- void AIWaveThinkTerrBT (int player, wave w, int type) { AIWaveThinkDefaultBT(player, w, type); } //-------------------------------------------------------------------------------------------------- // TerrInitBT //-------------------------------------------------------------------------------------------------- static void TerrInitBT (int player) { int state; AISetFlag(player, e_flagsEarlyDefScout, false); AITechCountFixupEither(player, c_TB_CommandCenter, c_TB_OrbitalCommand, c_TB_PlanetaryFortress); AISetMainState(player, e_mainState_OpenGnd0, e_mainSubState_Unset); } //-------------------------------------------------------------------------------------------------- // AIMeleeTerrBT //-------------------------------------------------------------------------------------------------- void AIMeleeTerrBT (int player) { int mainState = AIState(player, e_mainState); if (mainState == e_mainState_Init) { TerrInitBT(player); } // full game set stock for burning tide: // it basically makes peons and harvests with a token defense // i.e. pure win by minerals (greed) strategy AIClearStock(player); AISetStock( player, 1, c_TB_CommandCenter_Alias ); AISetStock( player, 10, c_TU_SCV ); AISetStock( player, 1, c_TB_SupplyDepot ); AISetStock( player, 12, c_TU_SCV ); AISetStock( player, 1, c_TB_Barracks ); AISetStock( player, 16, c_TU_SCV ); AISetStock( player, 1, c_TB_OrbitalCommand ); AISetStock( player, 2, c_TU_Marine ); AISetStock( player, 2, c_TB_SupplyDepot ); AISetStock( player, 1, c_TB_Refinery ); AISetStock( player, 18, c_TU_SCV ); AISetStock( player, 4, c_TU_Marine ); AISetStock( player, 20, c_TU_SCV ); AISetStock( player, 2, c_TB_Barracks ); AISetStock( player, 3, c_TB_SupplyDepot ); AISetStock( player, 10, c_TU_Marine ); AISetStock( player, 1, c_TR_MarineShield); AISetStock( player, 15, c_TU_Marine ); AISetStock( player, 2, c_TB_MissileTurret); AISetStock( player, 1, c_TR_MissileTurretRange); AISetStock( player, 1, c_TR_MarineStimPack ); // just in case, default econ AIDefaultEconomy(player, c_TB_CommandCenter_Alias, c_TB_Refinery, c_TB_SupplyDepot, c_TU_SCV, 40, c_stockAlways); AIEnableStock(player); AIManageRemoteMiningAndFleeLavaBT (player); } //-------------------------------------------------------------------------------------------------- // Custom Script: Zerg Custom Logic //-------------------------------------------------------------------------------------------------- //================================================================================================== // Custom Zerg AI for Burning Tide //================================================================================================== //-------------------------------------------------------------------------------------------------- // AINewUnitZergBT //-------------------------------------------------------------------------------------------------- void AINewUnitZergBT (int player, unit u) { string type = UnitGetType(u); // ignored units // if (type == c_ZU_Larva || type == c_ZU_Broodling || type == c_ZU_Mantaling) { return; } if (UnitTypeTestAttribute(type, c_unitAttributeStructure)) { return; } if (UnitTypeTestFlag(type, c_unitFlagWorker)) { return; } if (type == c_ZU_Overlord || type == c_ZU_OverlordCocoon ) { AIWaveAddUnitPriority(AIWaveGet(player, c_waveHome), u, c_prioWavePeon); return; } if (type == c_ZB_SpineCrawler || type == c_ZB_SporeCrawler) { AIWaveAddUnitPriority(AIWaveGet(player, c_waveHome), u, c_prioWavePeon); return; } if (type == c_ZU_Queen) { AIWaveAddUnitPriority(AIWaveGet(player, c_waveHome), u, c_prioWavePeon); return; } AINewUnitDefaultBT(player, u); } //-------------------------------------------------------------------------------------------------- // AIGetScoutZergBT //-------------------------------------------------------------------------------------------------- unit AIGetScoutZergBT (int player, int index, unit prev, bool allowWorkers) { return c_nullUnit; } //-------------------------------------------------------------------------------------------------- // AIEarlyDefScoutZergBT //-------------------------------------------------------------------------------------------------- unit AIEarlyDefScoutZergBT (int player, unit prev, bool allowWorkers) { return c_nullUnit; } //-------------------------------------------------------------------------------------------------- // AIWaveThinkZergBT //-------------------------------------------------------------------------------------------------- void AIWaveThinkZergBT (int player, wave w, int type) { AIWaveThinkDefaultBT(player, w, type); } //-------------------------------------------------------------------------------------------------- // Zerg InitBT //-------------------------------------------------------------------------------------------------- static void ZergInitBT (int player) { int state; AISetFlag(player, e_flagsEarlyDefScout, false); AIReqCountAsBuiltObject(player, c_ZU_Larva); AITechCountFixupSingle(player, c_ZB_Spire, c_ZB_GreaterSpire); AITechCountFixupInOrder(player, c_ZB_Hatchery, c_ZB_Lair, c_ZB_Hive); AISetCreepBuilding(player, c_ZB_CreepTumor, "ZergBuildingNotOnCreep"); AISetMainState(player, e_mainState_OpenGnd0, e_mainSubState_Unset); } //-------------------------------------------------------------------------------------------------- // AIMeleeZergBT //-------------------------------------------------------------------------------------------------- void AIMeleeZergBT (int player) { int mainState = AIState(player, e_mainState); if (mainState == e_mainState_Init) { ZergInitBT(player); } // full game set stock for burning tide: // it basically makes peons and harvests with a token defense // i.e. pure win by minerals (greed) strategy AIClearStock(player); AISetStock( player, 1, c_ZB_Hatchery_Alias ); AISetStock( player, 2, c_ZU_Drone ); AISetStock( player, 1, c_ZU_Overlord ); AISetStock( player, 10, c_ZU_Drone ); AISetStock( player, 2, c_ZU_Overlord ); AISetStock( player, 13, c_ZU_Drone ); AISetStock( player, 1, c_ZB_SpawningPool ); AISetStock( player, 16, c_ZU_Drone ); AISetStock( player, 1, c_ZU_Queen ); AISetStock( player, 1, c_ZB_Extractor ); AISetStock( player, 3, c_ZU_Overlord ); AISetStock( player, 8, c_ZU_Zergling ); AISetStock( player, 20, c_ZU_Drone ); AISetStock( player, 1, c_ZB_Lair_Alias ); AISetStock( player, 4, c_ZU_Overlord ); AISetStock( player, 1, c_ZB_HydraliskDen ); AISetStock( player, 4, c_ZU_Hydralisk ); AISetStock( player, 1, c_ZR_HydraliskRange ); AISetStock( player, 2, c_ZB_SporeCrawler ); AISetStock( player, 1, c_ZU_Overseer ); AISetStock( player, 5, c_ZU_Overlord_Alias ); AISetStock( player, 8, c_ZU_Hydralisk ); // just in case, default econ AIDefaultEconomy(player, c_ZB_Hatchery_Alias, c_ZB_Extractor, c_ZU_Overlord_Alias, c_ZU_Drone, 40, c_stockAlways); AIEnableStock(player); AIManageRemoteMiningAndFleeLavaBT (player); } //-------------------------------------------------------------------------------------------------- // Custom Script Initialization //-------------------------------------------------------------------------------------------------- void InitCustomScript () { } //-------------------------------------------------------------------------------------------------- // Global Functions //-------------------------------------------------------------------------------------------------- void gf_SpawnRandomMineralShard (region lp_chosenRegion) { // Implementation UnitCreate(1, "NaturalMinerals", 0, 0, RegionRandomPoint(lp_chosenRegion), libNtve_gf_RandomAngle()); } //-------------------------------------------------------------------------------------------------- // Trigger: Melee Initialization //-------------------------------------------------------------------------------------------------- bool gt_MeleeInitialization_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } MeleeInitResources(); MeleeInitUnits(); MeleeInitAI(); MeleeInitOptions(); gv_lowGroundIsSafe = true; gv_mINERALS_NEEDED = 15000; IntLoopBegin(1, 6); while (!IntLoopDone()) { if (((PlayerType(IntLoopCurrent()) == c_playerTypeUser) || (PlayerType(IntLoopCurrent()) == c_playerTypeComputer))) { if (((PlayerStartLocation(IntLoopCurrent()) == PointFromId(49)) || (PlayerStartLocation(IntLoopCurrent()) == PointFromId(50)) || (PlayerStartLocation(IntLoopCurrent()) == PointFromId(51)))) { PlayerGroupAdd(gv_northTeam, IntLoopCurrent()); } else { } if (((PlayerStartLocation(IntLoopCurrent()) == PointFromId(112)) || (PlayerStartLocation(IntLoopCurrent()) == PointFromId(115)) || (PlayerStartLocation(IntLoopCurrent()) == PointFromId(116)))) { PlayerGroupAdd(gv_southTeam, IntLoopCurrent()); } else { } } else { } IntLoopStep(); } IntLoopEnd(); TimerStart(gv_warning01Timer, (60.0 - 30.0), false, c_timeGame); TimerStart(gv_warning02Timer, (60.0 - 10.0), false, c_timeGame); TimerStart(gv_lavaTimer, 60.0, false, c_timeGame); libNtve_gf_PlayAnimationOnDoodadsInRegion(RegionEntireMap(), "CharAshWeather", c_animNameDefault, "Death", c_animFlagPlayForever, c_animTimeDefault); TriggerExecute(gt_InitHelpPanel, true, false); TriggerExecute(gt_CreateMineralCountBoard, true, false); TriggerExecute(gt_CreateLavaDeathsLeaderboard, true, false); Wait(30.0, c_timeGame); TriggerExecute(gt_TipLavaMechanic, true, false); return true; } //-------------------------------------------------------------------------------------------------- void gt_MeleeInitialization_Init () { gt_MeleeInitialization = TriggerCreate("gt_MeleeInitialization_Func"); TriggerAddEventMapInit(gt_MeleeInitialization); } //-------------------------------------------------------------------------------------------------- // Trigger: Init Help Panel //-------------------------------------------------------------------------------------------------- bool gt_InitHelpPanel_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } PlayerGroupLoopBegin(PlayerGroupAll()); while (!PlayerGroupLoopDone()) { TechTreeUnitHelpDefault(PlayerGroupLoopCurrent(), false); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "SCV", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "MULE", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "PlanetaryFortress", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Marine", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Marauder", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Reaper", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Ghost", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Hellion", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Bunker", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "MissileTurret", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Hellion", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "SiegeTankSieged", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "SiegeTank", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Thor", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "VikingAssault", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "VikingFighter", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Medivac", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Banshee", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Raven", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "AutoTurret", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "PointDefenseDrone", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Battlecruiser", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Larva", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Drone", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Overlord", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Queen", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Zergling", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Baneling", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Roach", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Overseer", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Hydralisk", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "InfestorTerran", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Changeling", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "NydusCanal", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Mutalisk", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Corruptor", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Infestor", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Ultralisk", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "BroodLord", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Broodling", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "SpineCrawler", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "SporeCrawler", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Probe", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Zealot", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Stalker", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Sentry", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Immortal", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "DarkTemplar", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "HighTemplar", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Archon", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "PhotonCannon", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Observer", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Colossus", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "WarpPrism", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Phoenix", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "VoidRay", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Carrier", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Interceptor", true); TechTreeUnitHelp(PlayerGroupLoopCurrent(), "Mothership", true); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); return true; } //-------------------------------------------------------------------------------------------------- void gt_InitHelpPanel_Init () { gt_InitHelpPanel = TriggerCreate("gt_InitHelpPanel_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Lava Surge Music //-------------------------------------------------------------------------------------------------- bool gt_LavaSurgeMusic_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } SoundtrackPlay(PlayerGroupAll(), c_soundtrackCategoryMusic, "TTosh01MusicEventA", c_soundtrackCueAny, c_soundtrackIndexAny, false); SoundtrackWait("TTosh01MusicEventA"); return true; } //-------------------------------------------------------------------------------------------------- void gt_LavaSurgeMusic_Init () { gt_LavaSurgeMusic = TriggerCreate("gt_LavaSurgeMusic_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Camera Shake - Weak //-------------------------------------------------------------------------------------------------- bool gt_CameraShakeWeak_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } PlayerGroupLoopBegin(PlayerGroupAll()); while (!PlayerGroupLoopDone()) { CameraShakeStart(PlayerGroupLoopCurrent(), c_cameraPositionTarget, c_cameraDirectionZ, 0.05, 2.0, 100.0, 3.0); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); WaterSetState("Template 1|Alternate Setting 1", 15.0, c_wtcLinear); GameSetLighting("TTosh01Warning", 15.0); Wait(2.0, c_timeGame); libNtve_gf_PlayAnimationOnDoodadsInRegion(RegionEntireMap(), "TTosh01FlameGeyser", "StandWork", "Stand Work", c_animFlagPlayForever, c_animTimeDefault); return true; } //-------------------------------------------------------------------------------------------------- void gt_CameraShakeWeak_Init () { gt_CameraShakeWeak = TriggerCreate("gt_CameraShakeWeak_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Camera Shake - Strong //-------------------------------------------------------------------------------------------------- bool gt_CameraShakeStrong_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } PlayerGroupLoopBegin(PlayerGroupAll()); while (!PlayerGroupLoopDone()) { CameraShakeStart(PlayerGroupLoopCurrent(), c_cameraPositionTarget, c_cameraDirectionZ, 0.1, 2.0, 100.0, 4.0); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); return true; } //-------------------------------------------------------------------------------------------------- void gt_CameraShakeStrong_Init () { gt_CameraShakeStrong = TriggerCreate("gt_CameraShakeStrong_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Camera Shake - During Lava //-------------------------------------------------------------------------------------------------- bool gt_CameraShakeDuringLava_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } PlayerGroupLoopBegin(PlayerGroupAll()); while (!PlayerGroupLoopDone()) { CameraShakeStart(PlayerGroupLoopCurrent(), c_cameraPositionTarget, c_cameraDirectionZ, 0.1, 2.0, 100.0, 4.0); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); Wait(4.0, c_timeGame); PlayerGroupLoopBegin(PlayerGroupAll()); while (!PlayerGroupLoopDone()) { CameraShakeStart(PlayerGroupLoopCurrent(), c_cameraPositionTarget, c_cameraDirectionZ, 0.06, 2.0, 100.0, 2.0); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); return true; } //-------------------------------------------------------------------------------------------------- void gt_CameraShakeDuringLava_Init () { gt_CameraShakeDuringLava = TriggerCreate("gt_CameraShakeDuringLava_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Create Lava Deaths Leaderboard //-------------------------------------------------------------------------------------------------- bool gt_CreateLavaDeathsLeaderboard_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } BoardCreate(2, 1, StringExternal("Param/Value/5C98627F"), Color(100.00, 100.00, 100.00)); gv_lavaDeathsBoard = BoardLastCreated(); BoardSetState(gv_lavaDeathsBoard, PlayerGroupAll(), c_boardStateShowTitle, false); BoardSetState(gv_lavaDeathsBoard, PlayerGroupAll(), c_boardStateShowHeader, false); BoardSetPosition(gv_lavaDeathsBoard, 475, 50); BoardItemSetText(gv_lavaDeathsBoard, 1, 1, StringExternal("Param/Value/474382AE")); BoardItemSetText(gv_lavaDeathsBoard, 2, 1, IntToText(gv_lavaDeaths)); BoardItemSetTextColor(gv_lavaDeathsBoard, 2, 1, Color(100.00, 0.00, 0.00)); BoardMinimizeShow(gv_lavaDeathsBoard, PlayerGroupAll(), false); BoardSetState(gv_lavaDeathsBoard, PlayerGroupAll(), c_boardStateShowing, false); return true; } //-------------------------------------------------------------------------------------------------- void gt_CreateLavaDeathsLeaderboard_Init () { gt_CreateLavaDeathsLeaderboard = TriggerCreate("gt_CreateLavaDeathsLeaderboard_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Update Lava Deaths Board //-------------------------------------------------------------------------------------------------- bool gt_UpdateLavaDeathsBoard_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((EventUnitDamageSourcePlayer() == 15))) { return false; } } // Actions if (!runActions) { return true; } gv_lavaDeaths=gv_lavaDeaths + 1; gv_tempLavaDeaths=gv_tempLavaDeaths + 1; BoardItemSetText(gv_lavaDeathsBoard, 2, 1, IntToText(gv_lavaDeaths)); TriggerExecute(gt_PlayLavaDeathSound, true, false); return true; } //-------------------------------------------------------------------------------------------------- void gt_UpdateLavaDeathsBoard_Init () { gt_UpdateLavaDeathsBoard = TriggerCreate("gt_UpdateLavaDeathsBoard_Func"); TriggerAddEventUnitDied(gt_UpdateLavaDeathsBoard, null); } //-------------------------------------------------------------------------------------------------- // Trigger: Play Lava Death Sound //-------------------------------------------------------------------------------------------------- bool gt_PlayLavaDeathSound_Func (bool testConds, bool runActions) { int auto381A303C_val; // Variable Declarations int lv_random; // Variable Initialization lv_random = 0; // Actions if (!runActions) { return true; } if ((gv_tempLavaDeaths == 20)) { lv_random = RandomInt(1, 3); auto381A303C_val = lv_random; if (auto381A303C_val == 1) { Wait(0.5, c_timeGame); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryCombat, 20.0, 0.2); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryDeath, 20.0, 0.2); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 20.0, 0.2); SoundPlay(SoundLink("ModUtilityVoiceModUtilityVoice00153", -1), PlayerGroupAll(), 200.0, 0.0); SoundWait(SoundLastPlayed(), 0.0, c_soundOffsetEnd); libNtve_gf_SetAllSoundChannelVolumes(2, PlayerGroupAll(), 0.0); gv_tempLavaDeaths = 0; } else if (auto381A303C_val == 2) { Wait(0.5, c_timeGame); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryCombat, 20.0, 0.2); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryDeath, 20.0, 0.2); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 20.0, 0.2); SoundPlay(SoundLink("ModUtilityVoiceModUtilityVoice00154", -1), PlayerGroupAll(), 200.0, 0.0); SoundWait(SoundLastPlayed(), 0.0, c_soundOffsetEnd); libNtve_gf_SetAllSoundChannelVolumes(2, PlayerGroupAll(), 0.0); gv_tempLavaDeaths = 0; } else if (auto381A303C_val == 3) { Wait(0.5, c_timeGame); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryCombat, 20.0, 0.2); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryDeath, 20.0, 0.2); SoundChannelSetVolume(PlayerGroupAll(), c_soundCategoryMusic, 20.0, 0.2); SoundPlay(SoundLink("ModUtilityVoiceModUtilityVoice00149", -1), PlayerGroupAll(), 200.0, 0.0); SoundWait(SoundLastPlayed(), 0.0, c_soundOffsetEnd); libNtve_gf_SetAllSoundChannelVolumes(2, PlayerGroupAll(), 0.0); gv_tempLavaDeaths = 0; } else { } } else { } return true; } //-------------------------------------------------------------------------------------------------- void gt_PlayLavaDeathSound_Init () { gt_PlayLavaDeathSound = TriggerCreate("gt_PlayLavaDeathSound_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Lava Turns ON //-------------------------------------------------------------------------------------------------- bool gt_LavaTurnsON_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((gv_lowGroundIsSafe == true))) { return false; } if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) { return false; } } // Actions if (!runActions) { return true; } TriggerEnable(TriggerGetCurrent(), false); gv_lavaSurgeCounter=gv_lavaSurgeCounter + 1; BoardSetState(gv_lavaDeathsBoard, PlayerGroupAll(), c_boardStateShowing, true); TriggerExecute(gt_CameraShakeDuringLava, true, false); SoundPlay(SoundLink("TUILavaRising", -1), PlayerGroupAll(), 100.0, 0.0); WaterSetState("Template 1|Alternate Setting 2", 4.0, c_wtcLinear); GameSetLighting("TTosh01Eruption", 4.0); libNtve_gf_ClearAnimationOnDoodadsInRegion(RegionEntireMap(), "TTosh01FlameGeyser", "StandWork"); libNtve_gf_PlayAnimationOnDoodadsInRegion(RegionEntireMap(), "CharAshWeather", c_animNameDefault, "Stand", c_animFlagPlayForever, c_animTimeDefault); Wait(2.0, c_timeGame); UnitGroupLoopBegin(UnitGroup("NaturalMinerals", 0, RegionPlayableMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32))), 0)); while (!UnitGroupLoopDone()) { UnitRemove(UnitGroupLoopCurrent()); UnitGroupLoopStep(); } UnitGroupLoopEnd(); gv_lowGroundIsSafe = false; TriggerEnable(gt_LavaDamage, true); TimerStart(gv_lavaTimer, 15.0, false, c_timeGame); Wait(2.0, c_timeGame); TriggerEnable(gt_LavaTurnsOFF, true); return true; } //-------------------------------------------------------------------------------------------------- void gt_LavaTurnsON_Init () { gt_LavaTurnsON = TriggerCreate("gt_LavaTurnsON_Func"); TriggerAddEventTimer(gt_LavaTurnsON, gv_lavaTimer); } //-------------------------------------------------------------------------------------------------- // Trigger: Lava Turns OFF //-------------------------------------------------------------------------------------------------- bool gt_LavaTurnsOFF_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((gv_lowGroundIsSafe == false))) { return false; } if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) { return false; } } // Actions if (!runActions) { return true; } TriggerEnable(TriggerGetCurrent(), false); SoundPlay(SoundLink("TUILavaRising", -1), PlayerGroupAll(), 100.0, 0.0); WaterSetState("Template 1|[Default]", 10.0, c_wtcLinear); GameSetLighting("TTosh01Normal", 10.0); libNtve_gf_PlayAnimationOnDoodadsInRegion(RegionEntireMap(), "CharAshWeather", c_animNameDefault, "Death", c_animFlagPlayForever, c_animTimeDefault); Wait(2.0, c_timeGame); gv_lowGroundIsSafe = true; TriggerEnable(gt_LavaDamage, false); gv_lavaInterval = RandomFixed(120.0, 240.0); TimerStart(gv_warning01Timer, (gv_lavaInterval - 30.0), false, c_timeGame); TimerStart(gv_warning02Timer, (gv_lavaInterval - 10.0), false, c_timeGame); TimerStart(gv_lavaTimer, gv_lavaInterval, false, c_timeGame); BoardSetState(gv_lavaDeathsBoard, PlayerGroupAll(), c_boardStateShowing, false); BoardItemSetText(gv_lavaDeathsBoard, 2, 1, IntToText(gv_lavaDeaths)); TriggerExecute(gt_InitLavaMineralRegions, true, false); TriggerExecute(gt_SpawnRandomMinerals, true, false); Wait(2.0, c_timeGame); TriggerEnable(gt_LavaTurnsON, true); TriggerExecute(gt_TransmissionItsSafeQ, true, false); return true; } //-------------------------------------------------------------------------------------------------- void gt_LavaTurnsOFF_Init () { gt_LavaTurnsOFF = TriggerCreate("gt_LavaTurnsOFF_Func"); TriggerEnable(gt_LavaTurnsOFF, false); TriggerAddEventTimer(gt_LavaTurnsOFF, gv_lavaTimer); } //-------------------------------------------------------------------------------------------------- // Trigger: Lava Damage //-------------------------------------------------------------------------------------------------- bool gt_LavaDamage_Func (bool testConds, bool runActions) { // Variable Declarations unitgroup lv_tempGroup; // Variable Initialization lv_tempGroup = UnitGroupEmpty(); // Conditions if (testConds) { if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) { return false; } } // Actions if (!runActions) { return true; } lv_tempGroup = UnitGroup(null, c_playerAny, RegionEntireMap(), UnitFilter((1 << c_targetFilterGround), 0, (1 << c_targetFilterRawResource) | (1 << c_targetFilterHarvestableResource) | (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterInvulnerable - 32))), 0); UnitGroupLoopBegin(UnitGroup("Colossus", c_playerAny, RegionEntireMap(), UnitFilter(0, 0, (1 << c_targetFilterMissile), (1 << (c_targetFilterDead - 32)) | (1 << (c_targetFilterHidden - 32)) | (1 << (c_targetFilterInvulnerable - 32))), 0)); while (!UnitGroupLoopDone()) { UnitGroupAdd(lv_tempGroup, UnitGroupLoopCurrent()); UnitGroupLoopStep(); } UnitGroupLoopEnd(); UnitGroupLoopBegin(lv_tempGroup); while (!UnitGroupLoopDone()) { if ((WorldHeight(c_heightMapGround, UnitGetPosition(UnitGroupLoopCurrent())) <= 8.8)) { UnitBehaviorAddPlayer(UnitGroupLoopCurrent(), "LavaDamage", 15, 1); } else { } UnitGroupLoopStep(); } UnitGroupLoopEnd(); return true; } //-------------------------------------------------------------------------------------------------- void gt_LavaDamage_Init () { gt_LavaDamage = TriggerCreate("gt_LavaDamage_Func"); TriggerEnable(gt_LavaDamage, false); TriggerAddEventTimePeriodic(gt_LavaDamage, 0.5, c_timeGame); } //-------------------------------------------------------------------------------------------------- // Trigger: Transmission - Lava Warning 01 Q //-------------------------------------------------------------------------------------------------- bool gt_TransmissionLavaWarning01Q_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } TriggerExecute(gt_CameraShakeWeak, true, false); TriggerExecute(gt_LavaSurgeMusic, true, false); TriggerQueueEnter(); SoundPlay(SoundLink("UI_TerranKlaxonAlert", -1), PlayerGroupAll(), 100.0, 0.0); SoundWait(SoundLastPlayed(), 1.0, c_soundOffsetEnd); libNtve_gf_SetAllSoundChannelVolumes(1, PlayerGroupAll(), 0.0); libLbty_gf_PlayTransmissionCueSound(PlayerGroupAll()); // Transmission - SoundLink("TTosh01Adjutant00010", -1) libNtve_gf_SendTransmissionSimple(TransmissionSourceFromModel(null), libNtve_gf_CinematicPortrait(4), SoundLink("TTosh01Adjutant00010", -1), 0.0, c_transmissionDurationAdd, true); libNtve_gf_SetAllSoundChannelVolumes(2, PlayerGroupAll(), 0.0); TriggerQueueExit(); return true; } //-------------------------------------------------------------------------------------------------- void gt_TransmissionLavaWarning01Q_Init () { gt_TransmissionLavaWarning01Q = TriggerCreate("gt_TransmissionLavaWarning01Q_Func"); TriggerAddEventTimer(gt_TransmissionLavaWarning01Q, gv_warning01Timer); } //-------------------------------------------------------------------------------------------------- // Trigger: Transmission - Lava Warning 02 Q //-------------------------------------------------------------------------------------------------- bool gt_TransmissionLavaWarning02Q_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } TriggerExecute(gt_CameraShakeStrong, true, false); TriggerQueueEnter(); libNtve_gf_SetAllSoundChannelVolumes(1, PlayerGroupAll(), 0.0); libLbty_gf_PlayTransmissionCueSound(PlayerGroupAll()); // Transmission - SoundLink("TTosh01Adjutant00013", -1) libNtve_gf_SendTransmissionSimple(TransmissionSourceFromModel(null), libNtve_gf_CinematicPortrait(4), SoundLink("TTosh01Adjutant00013", -1), 0.0, c_transmissionDurationAdd, true); libNtve_gf_SetAllSoundChannelVolumes(2, PlayerGroupAll(), 0.0); TriggerQueueExit(); return true; } //-------------------------------------------------------------------------------------------------- void gt_TransmissionLavaWarning02Q_Init () { gt_TransmissionLavaWarning02Q = TriggerCreate("gt_TransmissionLavaWarning02Q_Func"); TriggerAddEventTimer(gt_TransmissionLavaWarning02Q, gv_warning02Timer); } //-------------------------------------------------------------------------------------------------- // Trigger: Transmission - "It's Safe" Q //-------------------------------------------------------------------------------------------------- bool gt_TransmissionItsSafeQ_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } TriggerQueueEnter(); libNtve_gf_SetAllSoundChannelVolumes(1, PlayerGroupAll(), 0.0); libLbty_gf_PlayTransmissionCueSound(PlayerGroupAll()); // Transmission - SoundLink("TTosh01Adjutant00037", -1) libNtve_gf_SendTransmissionSimple(TransmissionSourceFromModel(null), libNtve_gf_CinematicPortrait(4), SoundLink("TTosh01Adjutant00037", -1), 0.0, c_transmissionDurationAdd, true); libNtve_gf_SetAllSoundChannelVolumes(2, PlayerGroupAll(), 0.0); TriggerQueueExit(); return true; } //-------------------------------------------------------------------------------------------------- void gt_TransmissionItsSafeQ_Init () { gt_TransmissionItsSafeQ = TriggerCreate("gt_TransmissionItsSafeQ_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Create Mineral Count Board //-------------------------------------------------------------------------------------------------- bool gt_CreateMineralCountBoard_Func (bool testConds, bool runActions) { // Variable Declarations int lv_i; // Variable Initialization lv_i = 0; // Actions if (!runActions) { return true; } BoardCreate(1, 8, StringExternal("Param/Value/36969D24"), Color(0.00, 100.00, 0.00)); gv_minerals_Needed_Board = BoardLastCreated(); BoardSetState(gv_minerals_Needed_Board, PlayerGroupAll(), c_boardStateShowTitle, false); BoardItemSetText(gv_minerals_Needed_Board, 1, c_boardRowHeader, (StringExternal("Param/Value/8F6014FB") + FormatNumber(gv_mINERALS_NEEDED))); BoardItemSetFontSize(gv_minerals_Needed_Board, 1, c_boardRowHeader, 18); BoardItemSetText(gv_minerals_Needed_Board, 1, 1, (StringExternal("Param/Value/C1073027") + IntToText(gv_northTeamMinerals))); BoardItemSetTextColor(gv_minerals_Needed_Board, 1, 1, Color(100.00, 100.00, 100.00)); BoardItemSetFontSize(gv_minerals_Needed_Board, 1, 1, 16); BoardItemSetProgressShow(gv_minerals_Needed_Board, 1, 1, true); BoardItemSetProgressRange(gv_minerals_Needed_Board, 1, 1, 0.0, IntToFixed(gv_mINERALS_NEEDED)); BoardItemSetProgressColor(gv_minerals_Needed_Board, 1, 1, Color(0.00, 100.00, 100.00), 1); lv_i = 2; PlayerGroupLoopBegin(gv_northTeam); while (!PlayerGroupLoopDone()) { BoardItemSetText(gv_minerals_Needed_Board, 1, lv_i, (TextWithColor(PlayerName(PlayerGroupLoopCurrent()), libNtve_gf_ConvertPlayerColorToColor(PlayerGetColorIndex(PlayerGroupLoopCurrent(), false))) + StringExternal("Param/Value/5D3134AB") + IntToText(PlayerGetPropertyInt(PlayerGroupLoopCurrent(), c_playerPropMinerals)))); BoardItemSetFontSize(gv_minerals_Needed_Board, 1, lv_i, 16); lv_i=lv_i + 1; PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); BoardItemSetText(gv_minerals_Needed_Board, 1, 5, (StringExternal("Param/Value/89F97838") + IntToText(gv_southTeamMinerals))); BoardItemSetTextColor(gv_minerals_Needed_Board, 1, 5, Color(100.00, 100.00, 100.00)); BoardItemSetFontSize(gv_minerals_Needed_Board, 1, 5, 16); BoardItemSetProgressShow(gv_minerals_Needed_Board, 1, 5, true); BoardItemSetProgressRange(gv_minerals_Needed_Board, 1, 5, 0.0, IntToFixed(gv_mINERALS_NEEDED)); BoardItemSetProgressColor(gv_minerals_Needed_Board, 1, 5, Color(100.00, 0.00, 0.00), 1); BoardItemSetProgressValue(gv_minerals_Needed_Board, 1, 2, IntToFixed(gv_northTeamMinerals)); BoardItemSetProgressValue(gv_minerals_Needed_Board, 1, 5, IntToFixed(gv_southTeamMinerals)); BoardItemSetIcon(gv_minerals_Needed_Board, 1, 1, "Assets\\Textures\\icon-mineral-terran.dds", false); BoardItemSetIcon(gv_minerals_Needed_Board, 1, 5, "Assets\\Textures\\icon-mineral-zerg.dds", false); lv_i = 6; PlayerGroupLoopBegin(gv_southTeam); while (!PlayerGroupLoopDone()) { BoardItemSetText(gv_minerals_Needed_Board, 1, lv_i, (TextWithColor(PlayerName(PlayerGroupLoopCurrent()), libNtve_gf_ConvertPlayerColorToColor(PlayerGetColorIndex(PlayerGroupLoopCurrent(), false))) + StringExternal("Param/Value/D62E6A43") + IntToText(PlayerGetPropertyInt(PlayerGroupLoopCurrent(), c_playerPropMinerals)))); BoardItemSetFontSize(gv_minerals_Needed_Board, 1, lv_i, 16); lv_i=lv_i + 1; PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); BoardMinimizeShow(gv_minerals_Needed_Board, PlayerGroupAll(), true); SoundPlay(SoundLink("TUI_StarmapMenuPopup", -1), PlayerGroupAll(), 100.0, 0.0); TriggerEnable(gt_UpdateMineralCountBoard, true); return true; } //-------------------------------------------------------------------------------------------------- void gt_CreateMineralCountBoard_Init () { gt_CreateMineralCountBoard = TriggerCreate("gt_CreateMineralCountBoard_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Update Mineral Count Board //-------------------------------------------------------------------------------------------------- bool gt_UpdateMineralCountBoard_Func (bool testConds, bool runActions) { // Variable Declarations int lv_i; // Variable Initialization lv_i = 0; // Actions if (!runActions) { return true; } gv_northTeamMinerals = 0; gv_southTeamMinerals = 0; PlayerGroupLoopBegin(gv_northTeam); while (!PlayerGroupLoopDone()) { gv_northTeamMinerals=gv_northTeamMinerals + PlayerGetPropertyInt(PlayerGroupLoopCurrent(), c_playerPropMinerals); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); PlayerGroupLoopBegin(gv_southTeam); while (!PlayerGroupLoopDone()) { gv_southTeamMinerals=gv_southTeamMinerals + PlayerGetPropertyInt(PlayerGroupLoopCurrent(), c_playerPropMinerals); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); BoardItemSetProgressValue(gv_minerals_Needed_Board, 1, 1, IntToFixed(gv_northTeamMinerals)); BoardItemSetProgressValue(gv_minerals_Needed_Board, 1, 5, IntToFixed(gv_southTeamMinerals)); BoardItemSetText(gv_minerals_Needed_Board, 1, 1, (StringExternal("Param/Value/34518CBD") + IntToText(gv_northTeamMinerals))); BoardItemSetText(gv_minerals_Needed_Board, 1, 5, (StringExternal("Param/Value/75B50308") + IntToText(gv_southTeamMinerals))); lv_i = 2; PlayerGroupLoopBegin(gv_northTeam); while (!PlayerGroupLoopDone()) { BoardItemSetText(gv_minerals_Needed_Board, 1, lv_i, (TextWithColor(PlayerName(PlayerGroupLoopCurrent()), libNtve_gf_ConvertPlayerColorToColor(PlayerGetColorIndex(PlayerGroupLoopCurrent(), false))) + StringExternal("Param/Value/8AA24866") + IntToText(PlayerGetPropertyInt(PlayerGroupLoopCurrent(), c_playerPropMinerals)))); lv_i=lv_i + 1; PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); lv_i = 6; PlayerGroupLoopBegin(gv_southTeam); while (!PlayerGroupLoopDone()) { BoardItemSetText(gv_minerals_Needed_Board, 1, lv_i, (TextWithColor(PlayerName(PlayerGroupLoopCurrent()), libNtve_gf_ConvertPlayerColorToColor(PlayerGetColorIndex(PlayerGroupLoopCurrent(), false))) + StringExternal("Param/Value/3FB472E7") + IntToText(PlayerGetPropertyInt(PlayerGroupLoopCurrent(), c_playerPropMinerals)))); lv_i=lv_i + 1; PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); if ((gv_northTeamMinerals >= 10000)) { TriggerExecute(gt_WarningNTeamCloseToVictory, true, false); } else { } if ((gv_southTeamMinerals >= 10000)) { TriggerExecute(gt_WarningSTeamCloseToVictory, true, false); } else { } if ((gv_northTeamMinerals >= gv_mINERALS_NEEDED)) { TriggerEnable(TriggerGetCurrent(), false); PlayerGroupLoopBegin(gv_northTeam); while (!PlayerGroupLoopDone()) { GameOver(PlayerGroupLoopCurrent(), c_gameOverVictory, true, true); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); PlayerGroupLoopBegin(gv_southTeam); while (!PlayerGroupLoopDone()) { GameOver(PlayerGroupLoopCurrent(), c_gameOverDefeat, true, true); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); } else { if ((gv_southTeamMinerals >= gv_mINERALS_NEEDED)) { TriggerEnable(TriggerGetCurrent(), false); PlayerGroupLoopBegin(gv_southTeam); while (!PlayerGroupLoopDone()) { GameOver(PlayerGroupLoopCurrent(), c_gameOverVictory, true, true); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); PlayerGroupLoopBegin(gv_northTeam); while (!PlayerGroupLoopDone()) { GameOver(PlayerGroupLoopCurrent(), c_gameOverDefeat, true, true); PlayerGroupLoopStep(); } PlayerGroupLoopEnd(); } else { } } return true; } //-------------------------------------------------------------------------------------------------- void gt_UpdateMineralCountBoard_Init () { gt_UpdateMineralCountBoard = TriggerCreate("gt_UpdateMineralCountBoard_Func"); TriggerAddEventTimePeriodic(gt_UpdateMineralCountBoard, 0.25, c_timeGame); } //-------------------------------------------------------------------------------------------------- // Trigger: Init Lava Mineral Regions //-------------------------------------------------------------------------------------------------- bool gt_InitLavaMineralRegions_Func (bool testConds, bool runActions) { // Actions if (!runActions) { return true; } gv_maxMineralRegions = 0; gv_mineralRegions[1] = RegionFromId(1); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[2] = RegionFromId(4); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[3] = RegionFromId(12); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[4] = RegionFromId(2); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[5] = RegionFromId(5); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[6] = RegionFromId(6); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[7] = RegionFromId(3); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[8] = RegionFromId(21); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[9] = RegionFromId(8); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[10] = RegionFromId(9); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[11] = RegionFromId(23); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[12] = RegionFromId(11); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[13] = RegionFromId(13); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[14] = RegionFromId(15); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[15] = RegionFromId(14); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[16] = RegionFromId(22); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[17] = RegionFromId(17); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[18] = RegionFromId(16); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[19] = RegionFromId(7); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[20] = RegionFromId(10); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[21] = RegionFromId(18); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[22] = RegionFromId(19); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[23] = RegionFromId(20); gv_maxMineralRegions=gv_maxMineralRegions + 1; gv_mineralRegions[24] = RegionFromId(24); gv_maxMineralRegions=gv_maxMineralRegions + 1; return true; } //-------------------------------------------------------------------------------------------------- void gt_InitLavaMineralRegions_Init () { gt_InitLavaMineralRegions = TriggerCreate("gt_InitLavaMineralRegions_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Spawn Random Minerals //-------------------------------------------------------------------------------------------------- bool gt_SpawnRandomMinerals_Func (bool testConds, bool runActions) { int auto87042992_n; int auto87042992_i; // Variable Declarations region lv_currentRegion; int lv_mineralSpawnsNumber; // Variable Initialization lv_currentRegion = null; lv_mineralSpawnsNumber = 0; // Actions if (!runActions) { return true; } if ((gv_lavaSurgeCounter == 1)) { lv_mineralSpawnsNumber = 8; TriggerExecute(gt_TipMineralPickups, true, false); } else if ((gv_lavaSurgeCounter == 2)) { lv_mineralSpawnsNumber = 10; } else if ((gv_lavaSurgeCounter >= 3)) { lv_mineralSpawnsNumber = 12; } auto87042992_n = lv_mineralSpawnsNumber; auto87042992_i = 1; while (auto87042992_i <= auto87042992_n) { gv_randomPickedRegion = RandomInt(1, gv_maxMineralRegions); lv_currentRegion = gv_mineralRegions[gv_randomPickedRegion]; gf_SpawnRandomMineralShard(lv_currentRegion); gv_mineralRegions[gv_randomPickedRegion] = gv_mineralRegions[gv_maxMineralRegions]; gv_maxMineralRegions=gv_maxMineralRegions - 1; auto87042992_i = auto87042992_i + 1; } return true; } //-------------------------------------------------------------------------------------------------- void gt_SpawnRandomMinerals_Init () { gt_SpawnRandomMinerals = TriggerCreate("gt_SpawnRandomMinerals_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Warning - N Team Close To Victory //-------------------------------------------------------------------------------------------------- bool gt_WarningNTeamCloseToVictory_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) { return false; } } // Actions if (!runActions) { return true; } TriggerEnable(TriggerGetCurrent(), false); SoundPlay(SoundLink("UI_TerranKlaxonAlert", -1), gv_southTeam, 100.0, 0.0); UIDisplayMessage(gv_southTeam, c_messageAreaSubtitle, gv_textInitialWarning); return true; } //-------------------------------------------------------------------------------------------------- void gt_WarningNTeamCloseToVictory_Init () { gt_WarningNTeamCloseToVictory = TriggerCreate("gt_WarningNTeamCloseToVictory_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Warning - S Team Close To Victory //-------------------------------------------------------------------------------------------------- bool gt_WarningSTeamCloseToVictory_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((TriggerIsEnabled(TriggerGetCurrent()) == true))) { return false; } } // Actions if (!runActions) { return true; } TriggerEnable(TriggerGetCurrent(), false); SoundPlay(SoundLink("UI_TerranKlaxonAlert", -1), gv_northTeam, 100.0, 0.0); UIDisplayMessage(gv_northTeam, c_messageAreaSubtitle, gv_textInitialWarning); return true; } //-------------------------------------------------------------------------------------------------- void gt_WarningSTeamCloseToVictory_Init () { gt_WarningSTeamCloseToVictory = TriggerCreate("gt_WarningSTeamCloseToVictory_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Resource Pickups //-------------------------------------------------------------------------------------------------- bool gt_ResourcePickups_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((UnitGetType(EventUnit()) == "NaturalMinerals"))) { return false; } if (!(((UnitGetOwner(EventUnitTargetUnit()) == 1) || (UnitGetOwner(EventUnitTargetUnit()) == 2) || (UnitGetOwner(EventUnitTargetUnit()) == 3) || (UnitGetOwner(EventUnitTargetUnit()) == 4) || (UnitGetOwner(EventUnitTargetUnit()) == 5) || (UnitGetOwner(EventUnitTargetUnit()) == 6)))) { return false; } } // Actions if (!runActions) { return true; } UnitRemove(EventUnit()); SoundPlay(SoundLink("UI_ResourcePickupLocal", -1), PlayerGroupSingle(UnitGetOwner(EventUnitTargetUnit())), 100.0, 0.0); PlayerModifyPropertyInt(UnitGetOwner(EventUnitTargetUnit()), c_playerPropMinerals, c_playerPropOperAdd, 100); PlayerScoreValueSetFromInt(UnitGetOwner(EventUnitTargetUnit()), "MineralsCollected", 100); TextTagCreate(StringExternal("Param/Value/06F4E395"), 28, UnitGetPosition(EventUnit()), 1.5, true, false, PlayerGroupSingle(UnitGetOwner(EventUnitTargetUnit()))); TextTagSetVelocity(TextTagLastCreated(), 0.5, 90.0); Wait(3.0, c_timeGame); TextTagDestroy(TextTagLastCreated()); return true; } //-------------------------------------------------------------------------------------------------- void gt_ResourcePickups_Init () { gt_ResourcePickups = TriggerCreate("gt_ResourcePickups_Func"); TriggerAddEventUnitAbility(gt_ResourcePickups, null, AbilityCommand("Pickup", 0), c_unitAbilStageExecute, false); } //-------------------------------------------------------------------------------------------------- // Trigger: Tip - Lava Mechanic //-------------------------------------------------------------------------------------------------- bool gt_TipLavaMechanic_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((TriggerGetExecCount(TriggerGetCurrent()) == 0))) { return false; } } // Actions if (!runActions) { return true; } HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/8A7D213F"), 0), StringExternal("Param/Value/AF16FE78"), StringExternal("Param/Value/44C6CEFF"), "Assets\\Textures\\btn-tips-walloffire.dds"); return true; } //-------------------------------------------------------------------------------------------------- void gt_TipLavaMechanic_Init () { gt_TipLavaMechanic = TriggerCreate("gt_TipLavaMechanic_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger: Tip - Mineral Pickups //-------------------------------------------------------------------------------------------------- bool gt_TipMineralPickups_Func (bool testConds, bool runActions) { // Conditions if (testConds) { if (!((TriggerGetExecCount(TriggerGetCurrent()) == 0))) { return false; } } // Actions if (!runActions) { return true; } HelpPanelAddTip(PlayerGroupAll(), libNtve_gf_FormatTipTitle(StringExternal("Param/Value/376965C2"), 0), StringExternal("Param/Value/E27DB8D7"), StringExternal("Param/Value/1E7D8049"), "Assets\\Textures\\btn-tips-resourcecaches.dds"); return true; } //-------------------------------------------------------------------------------------------------- void gt_TipMineralPickups_Init () { gt_TipMineralPickups = TriggerCreate("gt_TipMineralPickups_Func"); } //-------------------------------------------------------------------------------------------------- // Trigger Initialization //-------------------------------------------------------------------------------------------------- void InitTriggers () { gt_MeleeInitialization_Init(); gt_InitHelpPanel_Init(); gt_LavaSurgeMusic_Init(); gt_CameraShakeWeak_Init(); gt_CameraShakeStrong_Init(); gt_CameraShakeDuringLava_Init(); gt_CreateLavaDeathsLeaderboard_Init(); gt_UpdateLavaDeathsBoard_Init(); gt_PlayLavaDeathSound_Init(); gt_LavaTurnsON_Init(); gt_LavaTurnsOFF_Init(); gt_LavaDamage_Init(); gt_TransmissionLavaWarning01Q_Init(); gt_TransmissionLavaWarning02Q_Init(); gt_TransmissionItsSafeQ_Init(); gt_CreateMineralCountBoard_Init(); gt_UpdateMineralCountBoard_Init(); gt_InitLavaMineralRegions_Init(); gt_SpawnRandomMinerals_Init(); gt_WarningNTeamCloseToVictory_Init(); gt_WarningSTeamCloseToVictory_Init(); gt_ResourcePickups_Init(); gt_TipLavaMechanic_Init(); gt_TipMineralPickups_Init(); } //-------------------------------------------------------------------------------------------------- // Map Initialization //-------------------------------------------------------------------------------------------------- void InitMap () { InitLibs(); InitGlobals(); InitCustomScript(); InitTriggers(); }