share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice01.lua
branchspacecampaign
changeset 9390 9956b1fbac8b
parent 9388 790d4f7d57d1
child 9392 0dd0adee6831
equal deleted inserted replaced
9388:790d4f7d57d1 9390:9956b1fbac8b
    20 -- globals
    20 -- globals
    21 local campaignName = loc("A Space Adventure")
    21 local campaignName = loc("A Space Adventure")
    22 local missionName = loc("Ice planet, a frozen adventure!")
    22 local missionName = loc("Ice planet, a frozen adventure!")
    23 local heroAtAntiFlyArea = false
    23 local heroAtAntiFlyArea = false
    24 local heroVisitedAntiFlyArea = false
    24 local heroVisitedAntiFlyArea = false
    25 local heroAtFinaleStep = false
    25 local heroAtFinalStep = false
    26 local iceGunTaken = false
    26 local iceGunTaken = false
    27 local checkPointReached = 1 -- 1 is normal spawn
    27 local checkPointReached = 1 -- 1 is normal spawn
    28 -- dialogs
    28 -- dialogs
    29 local dialog01 = {}
    29 local dialog01 = {}
    30 -- mission objectives
    30 -- mission objectives
    57 ally.y = 1840
    57 ally.y = 1840
    58 bandit1.name = "Thanta"
    58 bandit1.name = "Thanta"
    59 bandit1.x = 3240
    59 bandit1.x = 3240
    60 bandit1.y = 1280
    60 bandit1.y = 1280
    61 bandit1.dead = false
    61 bandit1.dead = false
       
    62 bandit1.frozen = false
       
    63 bandit1.roundsToUnfreeze = 0
    62 bandit2.name = "Billy Frost"
    64 bandit2.name = "Billy Frost"
    63 bandit2.x = 1480
    65 bandit2.x = 1480
    64 bandit2.y = 1990
    66 bandit2.y = 1990
    65 bandit3.name = "Ice Jake"
    67 bandit3.name = "Ice Jake"
    66 bandit3.x = 1860
    68 bandit3.x = 1860
    67 bandit3.y = 1150
    69 bandit3.y = 1150
    68 bandit4.name = "John Snow"
    70 bandit4.name = "John Snow"
    69 bandit4.x = 3200
    71 bandit4.x = 3200
    70 bandit4.y = 970
    72 bandit4.y = 970
       
    73 bandit4.frozen = false
       
    74 bandit4.roundsToUnfreeze = 0
    71 bandit5.name = "White Tee"
    75 bandit5.name = "White Tee"
    72 bandit5.x = 3280
    76 bandit5.x = 3280
    73 bandit5.y = 600
    77 bandit5.y = 600
       
    78 bandit5.frozen = false
       
    79 bandit5.roundsToUnfreeze = 0
    74 teamA.name = loc("Allies")
    80 teamA.name = loc("Allies")
    75 teamA.color = tonumber("FF0000",16) -- red
    81 teamA.color = tonumber("FF0000",16) -- red
    76 teamB.name = loc("Frozen Bandits")
    82 teamB.name = loc("Frozen Bandits")
    77 teamB.color = tonumber("0033FF",16) -- blues
    83 teamB.color = tonumber("0033FF",16) -- blues
    78 teamC.name = loc("Hog Solo")
    84 teamC.name = loc("Hog Solo")
   101 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
   107 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
   102 	ally.gear = AddHog(ally.name, 0, 100, "tophats")
   108 	ally.gear = AddHog(ally.name, 0, 100, "tophats")
   103 	AnimSetGearPosition(ally.gear, ally.x, ally.y)
   109 	AnimSetGearPosition(ally.gear, ally.x, ally.y)
   104 	-- Frozen Bandits
   110 	-- Frozen Bandits
   105 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
   111 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
   106 	bandit1.gear = AddHog(bandit1.name, 1, 100, "tophats")
   112 	bandit1.gear = AddHog(bandit1.name, 1, 120, "tophats")
   107 	AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y)	
   113 	AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y)	
   108 	HogTurnLeft(bandit1.gear, true)
   114 	HogTurnLeft(bandit1.gear, true)
   109 	bandit2.gear = AddHog(bandit2.name, 1, 100, "tophats")
   115 	bandit2.gear = AddHog(bandit2.name, 1, 100, "tophats")
   110 	AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y)
   116 	AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y)
   111 	bandit3.gear = AddHog(bandit3.name, 1, 100, "tophats")
   117 	bandit3.gear = AddHog(bandit3.name, 1, 100, "tophats")
   127 	elseif checkPointReached == 2 then
   133 	elseif checkPointReached == 2 then
   128 		iceGunTaken = true
   134 		iceGunTaken = true
   129 		AnimSetGearPosition(hero.gear, 840, 1650)
   135 		AnimSetGearPosition(hero.gear, 840, 1650)
   130 	elseif checkPointReached == 3 then		
   136 	elseif checkPointReached == 3 then		
   131 		iceGunTaken = true
   137 		iceGunTaken = true
   132 		heroAtFinaleStep = true
   138 		heroAtFinalStep = true
   133 		heroVisitedAntiFlyArea = true
   139 		heroVisitedAntiFlyArea = true
   134 		AnimSetGearPosition(hero.gear, 1450, 910)
   140 		AnimSetGearPosition(hero.gear, 1450, 910)
   135 	end
   141 	end
   136 	
   142 	
   137 	AnimInit()
   143 	AnimInit()
   211 end
   217 end
   212 
   218 
   213 function onNewTurn()		
   219 function onNewTurn()		
   214 	-- round has to start if hero goes near the column
   220 	-- round has to start if hero goes near the column
   215 	if not heroVisitedAntiFlyArea and CurrentHedgehog ~= hero.gear then
   221 	if not heroVisitedAntiFlyArea and CurrentHedgehog ~= hero.gear then
       
   222 		WriteLnToConsole("NEW TURN 1")
   216 		TurnTimeLeft = 0
   223 		TurnTimeLeft = 0
   217 	elseif not heroVisitedAntiFlyArea and CurrentHedgehog == hero.gear then
   224 	elseif not heroVisitedAntiFlyArea and CurrentHedgehog == hero.gear then
       
   225 		WriteLnToConsole("NEW TURN 2")
   218 		TurnTimeLeft = -1
   226 		TurnTimeLeft = -1
   219 	elseif not heroAtFinaleStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then		
   227 	elseif not heroAtFinalStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then		
       
   228 		WriteLnToConsole("NEW TURN 3")
   220 		AnimSwitchHog(hero.gear)
   229 		AnimSwitchHog(hero.gear)
   221 		TurnTimeLeft = 0
   230 		TurnTimeLeft = 0
   222 	elseif heroAtFinaleStep and (CurrentHedgehog == bandit2.gear or CurrentHedgehog == bandit3.gear) then
   231 	elseif heroAtFinalStep and (CurrentHedgehog == bandit2.gear or CurrentHedgehog == bandit3.gear) then
   223 		AnimSwitchHog(hero.gear)
   232 		WriteLnToConsole("NEW TURN 4")
       
   233 		-- have to check if all next hogs are frozen, then switch to hero
       
   234 		if (GetHealth(bandit1.gear) and GetEffect(bandit1.gear,heFrozen) > 256) and
       
   235 			((GetHealth(bandit4.gear) and GetEffect(bandit4.gear,heFrozen) > 256) or not GetHealth(bandit4.gear)) and
       
   236 			((GetHealth(bandit5.gear) and GetEffect(bandit5.gear,heFrozen) > 256) or not GetHealth(bandit5.gear)) then
       
   237 			AnimSwitchHog(hero.gear)
       
   238 		else
       
   239 			AnimSwitchHog(hero.gear)
       
   240 			TurnTimeLeft = 0
       
   241 		end
       
   242 	elseif CurrentHedgehog == ally.gear then
       
   243 		WriteLnToConsole("NEW TURN 6")
   224 		TurnTimeLeft = 0
   244 		TurnTimeLeft = 0
   225 	elseif CurrentHedgehog == ally.gear then
   245 	end
   226 		TurnTimeLeft = 0
   246 	WriteLnToConsole("THIS IS THE TURN OF THE "..CurrentHedgehog)
       
   247 	if heroAtFinalStep then
       
   248 		WriteLnToConsole("hero at final step TRUE")
       
   249 	else
       
   250 		WriteLnToConsole("hero at final step FALSE")
       
   251 	end
       
   252 	WriteLnToConsole("Turn time left is "..TurnTimeLeft)
       
   253 	WriteLnToConsole("BANDIT 1 TO UNFREEZE "..bandit1.roundsToUnfreeze)
       
   254 	-- frozen hogs accounting
       
   255 	if CurrentHedgehog == hero.gear and heroAtFinalStep and TurnTimeLeft > 0 then
       
   256 		WriteLnToConsole("HEEEEEEEEEEEEEEEREEEEEEEEEEEEEEEEE")
       
   257 		if bandit1.frozen then
       
   258 			if bandit1.roundsToUnfreeze == 0 then
       
   259 				SetEffect(bandit1.gear, heFrozen, 255)
       
   260 				bandit1.frozen = false
       
   261 			else
       
   262 				bandit1.roundsToUnfreeze = bandit1.roundsToUnfreeze - 1
       
   263 			end
       
   264 		end
       
   265 		if bandit4.frozen then
       
   266 			if bandit4.roundsToUnfreeze == 0 then
       
   267 				SetEffect(bandit4.gear, heFrozen, 255)
       
   268 				bandit4.frozen = false
       
   269 			else
       
   270 				bandit4.roundsToUnfreeze = bandit4.roundsToUnfreeze - 1
       
   271 			end
       
   272 		end
       
   273 		if bandit5.frozen then
       
   274 			if bandit5.roundsToUnfreeze == 0 then
       
   275 				SetEffect(bandit5.gear, heFrozen, 255)
       
   276 				bandit5.frozen = false
       
   277 			else
       
   278 				bandit5.roundsToUnfreeze = bandit5.roundsToUnfreeze - 1
       
   279 			end
       
   280 		end
       
   281 	else	
       
   282 		WriteLnToConsole("EEEEEEEEELSSSSSSSEEEEEEEEEEEEEEE")
       
   283 		if bandit1.frozen then
       
   284 			SetEffect(bandit1.gear, heFrozen, 9999999999)
       
   285 		end
       
   286 		if bandit4.frozen then
       
   287 			SetEffect(bandit4.gear, heFrozen, 9999999999)
       
   288 		end
       
   289 		if bandit5.frozen then
       
   290 			SetEffect(bandit5.gear, heFrozen, 9999999999)
       
   291 		end
   227 	end
   292 	end
   228 end
   293 end
   229 
   294 
   230 function onGameTick()
   295 function onGameTick()
   231 	AnimUnWait()
   296 	AnimUnWait()
   232 	if ShowAnimation() == false then
   297 	if ShowAnimation() == false then
   233 		return
   298 		return
   234 	end
   299 	end
   235 	ExecuteAfterAnimations()
   300 	ExecuteAfterAnimations()
   236 	CheckEvents()
   301 	CheckEvents()
       
   302 	
       
   303 	if GetEffect(bandit1.gear, heFrozen) > 256 and not bandit1.frozen then
       
   304 		WriteLnToConsole("IN TICK FROZEN!!!")
       
   305 		bandit1.frozen = true
       
   306 		SetEffect(bandit1.gear, heFrozen, 9999999999)
       
   307 		bandit1.roundsToUnfreeze = 1
       
   308 	end
       
   309 	if GetEffect(bandit4.gear, heFrozen) > 256 and not bandit4.frozen then
       
   310 		bandit4.frozen = true
       
   311 		SetEffect(bandit4.gear, heFrozen, 9999999999)
       
   312 		bandit4.roundsToUnfreeze = 2
       
   313 	end
       
   314 	if GetEffect(bandit5.gear, heFrozen) > 256 and not bandit5.frozen then
       
   315 		bandit5.frozen = true
       
   316 		SetEffect(bandit5.gear, heFrozen, 9999999999)
       
   317 		bandit5.roundsToUnfreeze = 2
       
   318 	end
   237 end
   319 end
   238 
   320 
   239 function onAmmoStoreInit()
   321 function onAmmoStoreInit()
   240 	SetAmmo(amIceGun, 0, 0, 0, 8)
   322 	SetAmmo(amIceGun, 0, 0, 0, 8)
   241 end
   323 end
   332 	-- more custom stats
   414 	-- more custom stats
   333 	EndGame()
   415 	EndGame()
   334 end
   416 end
   335 
   417 
   336 function heroFinalStep(gear)
   418 function heroFinalStep(gear)
   337 	heroAtFinaleStep = true
   419 	heroAtFinalStep = true
   338 	SaveCampaignVar("Ice01CheckPoint", "3")
   420 	SaveCampaignVar("Ice01CheckPoint", "3")
   339 	SaveCampaignVar("HeroHealth", GetHealth(hero.gear))	
   421 	SaveCampaignVar("HeroHealth", GetHealth(hero.gear))	
   340 	WriteLnToConsole("Final Step")
   422 	WriteLnToConsole("Final Step")
   341 end
   423 end
   342 
   424