Ticket #3102: t3102_survival_letsvar.diff
File t3102_survival_letsvar.diff, 5.9 KB (added by , 8 years ago) |
---|
-
binaries/data/mods/public/maps/random/survivalofthefittest_triggers.js
87 87 88 88 Trigger.prototype.StartAnEnemyWave = function() 89 89 { 90 varcmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer);91 varattackerEntities = attackerEntityTemplates[Math.floor(Math.random() * attackerEntityTemplates.length)];90 let cmpTimer = Engine.QueryInterface(SYSTEM_ENTITY, IID_Timer); 91 let attackerEntities = attackerEntityTemplates[Math.floor(Math.random() * attackerEntityTemplates.length)]; 92 92 // A soldier for each 2-3 minutes of the game. Should be waves of 20 soldiers after an hour 93 varnextTime = Math.round(120000 + Math.random() * 60000);94 varattackerCount = Math.round(cmpTimer.GetTime() / nextTime / attackerEntities.length);93 let nextTime = Math.round(120000 + Math.random() * 60000); 94 let attackerCount = Math.round(cmpTimer.GetTime() / nextTime / attackerEntities.length); 95 95 96 96 // spawn attackers 97 varattackers = [];97 let attackers = []; 98 98 for (let attackerEntity of attackerEntities) 99 99 attackers.push(TriggerHelper.SpawnUnitsFromTriggerPoints("A", attackerEntity, attackerCount, 0)); 100 100 101 for ( varentityType of attackers)101 for (let entityType of attackers) 102 102 { 103 for ( varorigin in entityType)103 for (let origin in entityType) 104 104 { 105 varcmpPlayer = QueryOwnerInterface(+origin, IID_Player);105 let cmpPlayer = QueryOwnerInterface(+origin, IID_Player); 106 106 if (cmpPlayer.GetState() != "active") 107 107 continue; 108 108 109 varcmpPosition = Engine.QueryInterface(this.playerCivicCenter[cmpPlayer.GetPlayerID()], IID_Position);109 let cmpPosition = Engine.QueryInterface(this.playerCivicCenter[cmpPlayer.GetPlayerID()], IID_Position); 110 110 // this shouldn't happen if the player is still active 111 111 if (!cmpPosition || !cmpPosition.IsInWorld) 112 112 continue; 113 113 114 114 // store the x and z coordinates in the command 115 varcmd = cmpPosition.GetPosition();115 let cmd = cmpPosition.GetPosition(); 116 116 cmd.type = "attack-walk"; 117 117 cmd.entities = entityType[origin]; 118 118 cmd.queued = true; … … 122 122 } 123 123 } 124 124 125 varcmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);125 let cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface); 126 126 cmpGUIInterface.PushNotification({ 127 127 "players": [1,2,3,4,5,6,7,8], 128 128 "message": markForTranslation("An enemy wave is attacking!"), … … 133 133 134 134 Trigger.prototype.InitGame = function() 135 135 { 136 varnumberOfPlayers = TriggerHelper.GetNumberOfPlayers();136 let numberOfPlayers = TriggerHelper.GetNumberOfPlayers(); 137 137 // Find all of the civic centers, disable some structures 138 for ( vari = 1; i < numberOfPlayers; ++i)138 for (let i = 1; i < numberOfPlayers; ++i) 139 139 { 140 varcmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager);141 varplayerEntities = cmpRangeManager.GetEntitiesByPlayer(i); // Get all of each player's entities140 let cmpRangeManager = Engine.QueryInterface(SYSTEM_ENTITY, IID_RangeManager); 141 let playerEntities = cmpRangeManager.GetEntitiesByPlayer(i); // Get all of each player's entities 142 142 143 143 for (let entity of playerEntities) 144 144 if (TriggerHelper.EntityHasClass(entity, "CivilCentre")) … … 147 147 148 148 // Fix alliances 149 149 /* Until we can do something about limiting the victory conditions available for this map to "None" 150 for ( vari = 1; i < numberOfPlayers; ++i)150 for (let i = 1; i < numberOfPlayers; ++i) 151 151 { 152 varcmpPlayer = QueryPlayerIDInterface(i);153 for ( varj = 1; j < numberOfPlayers; ++j)152 let cmpPlayer = QueryPlayerIDInterface(i); 153 for (let j = 1; j < numberOfPlayers; ++j) 154 154 if (i != j) 155 155 cmpPlayer.SetAlly(j); 156 156 cmpPlayer.SetLockTeams(true); … … 163 163 this.PlaceTreasures(); 164 164 165 165 // Disable farms, civic centers and walls for all players 166 for ( vari = 1; i < numberOfPlayers; ++i)166 for (let i = 1; i < numberOfPlayers; ++i) 167 167 { 168 168 let cmpPlayer = QueryPlayerIDInterface(i); 169 varciv = cmpPlayer.GetCiv();169 let civ = cmpPlayer.GetCiv(); 170 170 cmpPlayer.SetDisabledTemplates([ 171 171 "structures/" + civ + "_field", 172 172 "structures/" + civ + "_corral", … … 181 181 Trigger.prototype.PlaceTreasures = function() 182 182 { 183 183 let point = ["B", "C", "D"][Math.floor(Math.random() * 3)]; 184 vartriggerPoints = cmpTrigger.GetTriggerPoints(point);185 for ( varpoint of triggerPoints)184 let triggerPoints = cmpTrigger.GetTriggerPoints(point); 185 for (let point of triggerPoints) 186 186 { 187 vartemplate = treasures[Math.floor(Math.random() * treasures.length)]187 let template = treasures[Math.floor(Math.random() * treasures.length)] 188 188 TriggerHelper.SpawnUnits(point, template, 1, 0); 189 189 } 190 190 cmpTrigger.DoAfterDelay(4*60*1000, "PlaceTreasures", {}); //Place more treasures after 4 minutes … … 192 192 193 193 Trigger.prototype.InitializeEnemyWaves = function() 194 194 { 195 vartime = (5 + Math.round(Math.random() * 10)) * 60 * 1000;196 varcmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface);195 let time = (5 + Math.round(Math.random() * 10)) * 60 * 1000; 196 let cmpGUIInterface = Engine.QueryInterface(SYSTEM_ENTITY, IID_GuiInterface); 197 197 cmpGUIInterface.AddTimeNotification({ 198 198 "players": [1,2,3,4,5,6,7,8], 199 199 "message": markForTranslation("The first wave will start in %(time)s!"), … … 210 210 TriggerHelper.DefeatPlayer(data.from); 211 211 212 212 // Check if only one player remains. He will be the winner. 213 varlastPlayerStanding = 0;214 varnumPlayersStanding = 0;215 varnumberOfPlayers = TriggerHelper.GetNumberOfPlayers();216 for ( vari = 1; i < numberOfPlayers; ++i)213 let lastPlayerStanding = 0; 214 let numPlayersStanding = 0; 215 let numberOfPlayers = TriggerHelper.GetNumberOfPlayers(); 216 for (let i = 1; i < numberOfPlayers; ++i) 217 217 { 218 218 if (QueryPlayerIDInterface(i).GetState() == "active") 219 219 {