share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/ice01.lua
branchspacecampaign
changeset 9346 1245c7636380
parent 9344 f8e7e9858a8c
child 9384 557ae509547b
equal deleted inserted replaced
9344:f8e7e9858a8c 9346:1245c7636380
     3 -- In this cold planet hero seeks for a part of the
     3 -- In this cold planet hero seeks for a part of the
     4 -- antigravity device. He has to capture Icy Pit who
     4 -- antigravity device. He has to capture Icy Pit who
     5 -- knows where the device is hidden. Hero will be
     5 -- knows where the device is hidden. Hero will be
     6 -- able to use only the ice gun for this mission.
     6 -- able to use only the ice gun for this mission.
     7 
     7 
       
     8 -- TODO
       
     9 -- alter map so hero may climb to the higher place
       
    10 -- maybe use rope challenge to go there
       
    11 -- add checkpoints
       
    12 -- fix the stats
       
    13 -- add mines to the higher place/final stage
       
    14 
     8 HedgewarsScriptLoad("/Scripts/Locale.lua")
    15 HedgewarsScriptLoad("/Scripts/Locale.lua")
     9 HedgewarsScriptLoad("/Scripts/Animate.lua")
    16 HedgewarsScriptLoad("/Scripts/Animate.lua")
    10 
    17 
    11 ----------------- VARIABLES --------------------
    18 ----------------- VARIABLES --------------------
    12 -- globals
    19 -- globals
    13 local heroAtAntiFlyArea = false
    20 local heroAtAntiFlyArea = false
       
    21 local heroVisitedAntiFlyArea = false
       
    22 local heroAtFinaleStep = false
    14 -- crates
    23 -- crates
    15 local icegunY = 1950
    24 local icegunY = 1950
    16 local icegunX = 260
    25 local icegunX = 260
    17 -- hogs
    26 -- hogs
    18 local hero = {}
    27 local hero = {}
    80 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
    89 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
    81 	ally.gear = AddHog(ally.name, 0, 100, "tophats")
    90 	ally.gear = AddHog(ally.name, 0, 100, "tophats")
    82 	AnimSetGearPosition(ally.gear, ally.x, ally.y)
    91 	AnimSetGearPosition(ally.gear, ally.x, ally.y)
    83 	-- Frozen Bandits
    92 	-- Frozen Bandits
    84 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
    93 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
    85 	bandit1.gear = AddHog(bandit1.name, 0, 100, "tophats")
    94 	bandit1.gear = AddHog(bandit1.name, 1, 100, "tophats")
    86 	AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y)	
    95 	AnimSetGearPosition(bandit1.gear, bandit1.x, bandit1.y)	
    87 	HogTurnLeft(bandit1.gear, true)
    96 	HogTurnLeft(bandit1.gear, true)
    88 	bandit2.gear = AddHog(bandit2.name, 0, 100, "tophats")
    97 	bandit2.gear = AddHog(bandit2.name, 1, 100, "tophats")
    89 	AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y)
    98 	AnimSetGearPosition(bandit2.gear, bandit2.x, bandit2.y)
    90 	bandit3.gear = AddHog(bandit3.name, 0, 100, "tophats")
    99 	bandit3.gear = AddHog(bandit3.name, 1, 100, "tophats")
    91 	AnimSetGearPosition(bandit3.gear, bandit3.x, bandit3.y)
   100 	AnimSetGearPosition(bandit3.gear, bandit3.x, bandit3.y)
    92 	bandit4.gear = AddHog(bandit4.name, 0, 100, "tophats")
   101 	bandit4.gear = AddHog(bandit4.name, 1, 100, "tophats")
    93 	AnimSetGearPosition(bandit4.gear, bandit4.x, bandit4.y)
   102 	AnimSetGearPosition(bandit4.gear, bandit4.x, bandit4.y)
    94 	HogTurnLeft(bandit4.gear, true)
   103 	HogTurnLeft(bandit4.gear, true)
    95 	bandit5.gear = AddHog(bandit5.name, 0, 100, "tophats")
   104 	bandit5.gear = AddHog(bandit5.name, 1, 100, "tophats")
    96 	AnimSetGearPosition(bandit5.gear, bandit5.x, bandit5.y)
   105 	AnimSetGearPosition(bandit5.gear, bandit5.x, bandit5.y)
    97 	HogTurnLeft(bandit5.gear, true)
   106 	HogTurnLeft(bandit5.gear, true)
    98 	
   107 	
    99 	AnimInit()
   108 	AnimInit()
   100 	AnimationSetup()	
   109 	AnimationSetup()	
   103 function onGameStart()
   112 function onGameStart()
   104 	AnimWait(hero.gear, 3000)
   113 	AnimWait(hero.gear, 3000)
   105 	FollowGear(hero.gear)
   114 	FollowGear(hero.gear)
   106 	
   115 	
   107 	AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 1)
   116 	AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 1)
       
   117 	AddEvent(onHeroFinalStep, {hero.gear}, heroFinalStep, {hero.gear}, 0)
   108 	AddEvent(onAntiFlyArea, {hero.gear}, antiFlyArea, {hero.gear}, 1)
   118 	AddEvent(onAntiFlyArea, {hero.gear}, antiFlyArea, {hero.gear}, 1)
   109 	AddEvent(onNonAntiFlyArea, {hero.gear}, nonAntiFlyArea, {hero.gear}, 1)
   119 	AddEvent(onNonAntiFlyArea, {hero.gear}, nonAntiFlyArea, {hero.gear}, 1)
   110 	
   120 	
   111 	AddAmmo(hero.gear, amJetpack, 99)
   121 	AddAmmo(hero.gear, amJetpack, 99)
   112 	AddAmmo(hero.gear, amBazooka, 1)
   122 	AddAmmo(hero.gear, amBazooka, 1)
       
   123 	AddAmmo(bandit1.gear, amBazooka, 5)
       
   124 	AddAmmo(bandit2.gear, amBazooka, 4)
       
   125 	AddAmmo(bandit3.gear, amMine, 2)
       
   126 	AddAmmo(bandit3.gear, amGrenade, 3)
       
   127 	AddAmmo(bandit4.gear, amBazooka, 5)
       
   128 	AddAmmo(bandit5.gear, amBazooka, 5)
   113 	SpawnAmmoCrate(icegunX, icegunY, amIceGun)
   129 	SpawnAmmoCrate(icegunX, icegunY, amIceGun)
   114 	
   130 	
   115 end
   131 end
   116 
   132 
   117 function onNewTurn()		
   133 function onNewTurn()		
   118 	-- rounds start if hero got his weapons or got near the enemies
   134 	-- round has to start if hero goes near the column
   119 	if not heroAtAntiFlyArea and CurrentHedgehog ~= hero.gear then
   135 	if not heroVisitedAntiFlyArea and CurrentHedgehog ~= hero.gear then
   120 	WriteLnToConsole(" IF 1")
   136 		TurnTimeLeft = 0
   121 		TurnTimeLeft = 0
   137 	elseif not heroVisitedAntiFlyArea and CurrentHedgehog == hero.gear then
   122 	elseif not heroAtAntiFlyArea and CurrentHedgehog == hero.gear then
       
   123 	WriteLnToConsole(" IF 2")
       
   124 		TurnTimeLeft = -1
   138 		TurnTimeLeft = -1
       
   139 	elseif not heroAtFinaleStep and (CurrentHedgehog == bandit1.gear or CurrentHedgehog == bandit4.gear or CurrentHedgehog == bandit5.gear) then		
       
   140 		AnimSwitchHog(hero.gear)
       
   141 		TurnTimeLeft = 0
       
   142 	elseif CurrentHedgehog == ally.gear then
       
   143 		TurnTimeLeft = 0
   125 	end
   144 	end
   126 end
   145 end
   127 
   146 
   128 function onGameTick()
   147 function onGameTick()
   129 	AnimUnWait()
   148 	AnimUnWait()
   133 	ExecuteAfterAnimations()
   152 	ExecuteAfterAnimations()
   134 	CheckEvents()
   153 	CheckEvents()
   135 end
   154 end
   136 
   155 
   137 function onAmmoStoreInit()
   156 function onAmmoStoreInit()
   138 	SetAmmo(amIceGun, 0, 0, 0, 1)
   157 	SetAmmo(amIceGun, 0, 0, 0, 8)
   139 end
   158 end
   140 
   159 
   141 function onGearDelete(gear)
   160 function onGearDelete(gear)
   142 	if gear == hero.gear then
   161 	if gear == hero.gear then
   143 		hero.dead = true
   162 		hero.dead = true
   165 		return true
   184 		return true
   166 	end
   185 	end
   167 	return false
   186 	return false
   168 end
   187 end
   169 
   188 
       
   189 function onHeroFinalStep(gear)
       
   190 	if not hero.dead and GetY(gear) < 900 and GetX(gear) > 1400 then
       
   191 		return true
       
   192 	end
       
   193 	return false
       
   194 end
       
   195 
   170 -------------- OUTCOMES ------------------
   196 -------------- OUTCOMES ------------------
   171 
   197 
   172 function antiFlyArea(gear)
   198 function antiFlyArea(gear)
   173 	heroAtAntiFlyArea = true
   199 	heroAtAntiFlyArea = true
   174 	TurnTimeLeft = 0	
   200 	if TurnTimeLeft < -1 then
   175 	FollowGear(hero.gear)
   201 		heroVisitedAntiFlyArea = true
   176 	AddAmmo(hero.gear, amJetpack, 0)
   202 		TurnTimeLeft = 0	
   177 	AnimSwitchHog(bandit1.gear)	
   203 		FollowGear(hero.gear)
   178 	FollowGear(hero.gear)
   204 		AddAmmo(hero.gear, amJetpack, 0)
   179 	TurnTimeLeft = 0
   205 		AnimSwitchHog(bandit1.gear)	
       
   206 		FollowGear(hero.gear)
       
   207 		TurnTimeLeft = 0
       
   208 	else
       
   209 		AddAmmo(hero.gear, amJetpack, 0)	
       
   210 	end
   180 end
   211 end
   181 
   212 
   182 function nonAntiFlyArea(gear)
   213 function nonAntiFlyArea(gear)
   183 	heroAtAntiFlyArea = false
   214 	heroAtAntiFlyArea = false
   184 	TurnTimeLeft = 0	
       
   185 	FollowGear(hero.gear)
       
   186 	AddAmmo(hero.gear, amJetpack, 99)
   215 	AddAmmo(hero.gear, amJetpack, 99)
   187 	AnimSwitchHog(bandit1.gear)	
       
   188 	FollowGear(hero.gear)
       
   189 	TurnTimeLeft = 0	
       
   190 end
   216 end
   191 
   217 
   192 function heroDeath(gear)
   218 function heroDeath(gear)
   193 	SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1
   219 	SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1
   194 	-- more custom stats
   220 	-- more custom stats
   195 	EndGame()
   221 	EndGame()
   196 end
   222 end
   197 
   223 
       
   224 function heroFinalStep(gear)
       
   225 	heroAtFinaleStep = true
       
   226 end
       
   227 
   198 -------------- ANIMATIONS ------------------
   228 -------------- ANIMATIONS ------------------
   199 
   229 
   200 function AnimationSetup()
   230 function AnimationSetup()
   201 
   231 
   202 end
   232 end