# HG changeset patch # User Wuzzy # Date 1546551849 -3600 # Node ID b54ba97c02d7c97de48795d429d504b5a9a024f0 # Parent 5ac181cb2396e2eb50fc6be195ba28f8b78f9563 ASA ice02: Clean up some subtle weirdness on timeout When time's up or player lost, do this: - Remove all rings - Don't give time or saucer bonus when touching ring *after* timeout - Prevent next turn from starting diff -r 5ac181cb2396 -r b54ba97c02d7 share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua --- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua Thu Jan 03 19:46:48 2019 +0100 +++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice02.lua Thu Jan 03 22:44:09 2019 +0100 @@ -127,6 +127,12 @@ AddAnim(dialog01) end +function onEndTurn() + if not hero.dead and CurrentHedgehog == hero.gear and challengeStarted then + heroLost() + end +end + function onNewTurn() if not hero.dead and CurrentHedgehog == ally.gear and challengeStarted then heroLost() @@ -185,6 +191,13 @@ local time = totalTime - TurnTimeLeft local timePrinted = time / 1000 SetTeamLabel(teamA.name, string.format(loc("%.1fs"), timePrinted)) + if TurnTimeLeft <= 0 then + local wp = waypoints[currentWaypoint-1] + if wp ~= nil then + DeleteVisualGear(wp.gear) + DeleteVisualGear(wp.gear2) + end + end end end @@ -251,6 +264,9 @@ end function placeNextWaypoint() + if gameEnded then + return + end if currentWaypoint > 1 then local wp = waypoints[currentWaypoint-1] DeleteVisualGear(wp.gear) @@ -308,7 +324,7 @@ end function checkIfHeroInWaypoint() - if not hero.dead then + if (not hero.dead) and (TurnTimeLeft > 0) then local wp = waypoints[currentWaypoint-1] if gearIsInCircle(hero.gear, wp.x, wp.y, radius+4, false) then SetWind(GetRandom(201)-100) @@ -325,5 +341,6 @@ SendStat(siCustomAchievement, loc("Green double rings also give you a new flying saucer.")) SendStat(siCustomAchievement, loc("Use the attack key twice to change the flying saucer while being in air.")) sendSimpleTeamRankings({teamA.name}) + gameEnded = true EndGame() end