ASA: Inform the player about a checkpoint reset
authorWuzzy <almikes@aol.com>
Mon, 25 Sep 2017 22:25:10 +0200
changeset 12529 a5ddc6b4abbd
parent 12528 f2a19a6056be
child 12530 767920fd03a1
ASA: Inform the player about a checkpoint reset
share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua
share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/global_functions.lua
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua	Mon Sep 25 21:41:38 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/cosmos.lua	Mon Sep 25 22:25:10 2017 +0200
@@ -55,6 +55,8 @@
 local teamC = {}
 -- to check if flying saucer is active
 local saucerGear = nil
+-- if player abandoned any incomplete planet mission
+local abandonedPlanetMission = false
 -- hedgehogs values
 hero.name = loc("Hog Solo")
 hero.x = 1450
@@ -156,6 +158,12 @@
 		end
 	end
 	AnimInit(startSequence)
+
+	-- Reset checkpoint of other missions when entering this mission.
+	-- The player has left the planet, so we count that “abandoning” any incomplete missions.
+	-- This also allows the player (indirectly) to reset the checkpointed missions.
+	abandonedPlanetMission = resetCheckpoint()
+
 	AnimationSetup()
 end
 
@@ -191,11 +199,6 @@
 		AddAmmo(hero.gear, amJetpack, 100)
 	end
 
-	-- Reset checkpoint of other missions when entering this mission.
-	-- The player has left the planet, so we count that “abandoning” any incomplete missions.
-	-- This also allows the player (indirectly) to reset the checkpointed missions.
-	abandoned = resetCheckpoint()
-
 	AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
 	AddEvent(onNoFuelAtLand, {hero.gear}, noFuelAtLand, {hero.gear}, 0)
 	-- always check for landings
@@ -255,7 +258,16 @@
 	SetAmmo(amJetpack, 0, 0, 0, 1)
 end
 
+local abandonCheck = false
+
 function onNewTurn()
+	if not abandonCheck and checkPointReached == 5 then
+		if abandonedPlanetMission then
+			HogSay(hero.gear, loc("I just forgot all checkpoints of incomplete missions."), SAY_THINK)
+		end
+		abandonCheck = false
+	end
+
 	if guard1.keepTurning then
 		AnimSwitchHog(hero.gear)
 		TurnTimeLeft = -1
@@ -598,6 +610,10 @@
 	-- DIALOG 05 - Hero returned from moon without fuels
 	AddSkipFunction(dialog05, Skipanim, {dialog05})
 	table.insert(dialog05, {func = AnimSay, args = {hero.gear, loc("I guess I can't go far without fuel!"), SAY_THINK, 6000}})
+	if abandonedPlanetMission then
+		-- Hog solo is mad he has to play the moon main mission from start. Very sarcastic tone. ;-)
+		table.insert(dialog05, {func = AnimSay, args = {hero.gear, loc("And I just forgot the checkpoint of my main mission. Great, just great!"), SAY_THINK, 7000}})
+	end
 	table.insert(dialog05, {func = AnimSay, args = {hero.gear, loc("Got to go back."), SAY_THINK, 2000}})
 	table.insert(dialog05, {func = sendStatsOnRetry, args = {hero.gear}})
 	-- DIALOG 06 - Landing on wrong planet or on earth if not enough fuels
--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/global_functions.lua	Mon Sep 25 21:41:38 2017 +0200
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/global_functions.lua	Mon Sep 25 22:25:10 2017 +0200
@@ -124,8 +124,13 @@
 	return checkPoint
 end
 
+-- Reset mission checkpoint to 1
+-- Returns true if the player reached a checkpoint before, false otherwise.
 function resetCheckpoint(mission)
+	local cp = tonumber(GetCampaignVar("CurrentMissionCheckpoint"))
 	SaveCampaignVar("CurrentMissionCheckpoint", 1)
+
+	return (type(cp) == "number" and cp > 1)
 end
 
 function saveCheckpoint(cp)