share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua
branchspacecampaign
changeset 9428 b483a2683d08
parent 9426 f89c512925da
child 9430 ab809b0be800
equal deleted inserted replaced
9426:f89c512925da 9428:b483a2683d08
    89 	Delay = 3
    89 	Delay = 3
    90 	HealthCaseAmount = 30
    90 	HealthCaseAmount = 30
    91 	Map = "desert01_map"
    91 	Map = "desert01_map"
    92 	Theme = "Desert"
    92 	Theme = "Desert"
    93 	
    93 	
       
    94 	-- get the check point
       
    95 	if tonumber(GetCampaignVar("Desert01CheckPoint")) then
       
    96 		checkPointReached = tonumber(GetCampaignVar("Desert01CheckPoint"))
       
    97 	end
       
    98 	-- get hero health
       
    99 	local heroHealth = 100
       
   100 	if checkPointReached > 1 and tonumber(GetCampaignVar("HeroHealth")) then
       
   101 		heroHealth = tonumber(GetCampaignVar("HeroHealth"))
       
   102 	end
       
   103 	
    94 	-- Hog Solo
   104 	-- Hog Solo
    95 	AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
   105 	AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
    96 	hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
   106 	hero.gear = AddHog(hero.name, 0, heroHealth, "war_desertgrenadier1")
    97 	AnimSetGearPosition(hero.gear, hero.x, hero.y)
   107 	AnimSetGearPosition(hero.gear, hero.x, hero.y)
    98 	HogTurnLeft(hero.gear, true)
   108 	HogTurnLeft(hero.gear, true)
    99 	-- PAotH undercover scientist and chief Sandologist
   109 	-- PAotH undercover scientist and chief Sandologist
   100 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
   110 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
   101 	ally.gear = AddHog(ally.name, 0, 100, "war_desertgrenadier1")
   111 	ally.gear = AddHog(ally.name, 0, 100, "war_desertgrenadier1")
   107 	smuggler2.gear = AddHog(smuggler2.name, 1, 100, "tophats")
   117 	smuggler2.gear = AddHog(smuggler2.name, 1, 100, "tophats")
   108 	AnimSetGearPosition(smuggler2.gear, smuggler2.x, smuggler2.y)	
   118 	AnimSetGearPosition(smuggler2.gear, smuggler2.x, smuggler2.y)	
   109 	smuggler3.gear = AddHog(smuggler3.name, 1, 100, "tophats")
   119 	smuggler3.gear = AddHog(smuggler3.name, 1, 100, "tophats")
   110 	AnimSetGearPosition(smuggler3.gear, smuggler3.x, smuggler3.y)	
   120 	AnimSetGearPosition(smuggler3.gear, smuggler3.x, smuggler3.y)	
   111 	
   121 	
       
   122 	if checkPointReached == 1 then
       
   123 		-- Start of the game
       
   124 	elseif checkPointReached == 2 then
       
   125 		AnimSetGearPosition(hero.gear, 1050, 615)
       
   126 		HogTurnLeft(hero.gear, true)
       
   127 	end
       
   128 	
   112 	AnimInit()
   129 	AnimInit()
   113 	AnimationSetup()	
   130 	AnimationSetup()	
   114 end
   131 end
   115 
   132 
   116 function onGameStart()
   133 function onGameStart()
   118 	FollowGear(hero.gear)
   135 	FollowGear(hero.gear)
   119 	
   136 	
   120 	AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
   137 	AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
   121 	AddEvent(onHeroAtFirstBattle, {hero.gear}, heroAtFirstBattle, {hero.gear}, 1)
   138 	AddEvent(onHeroAtFirstBattle, {hero.gear}, heroAtFirstBattle, {hero.gear}, 1)
   122 	AddEvent(onHeroFleeFirstBattle, {hero.gear}, heroFleeFirstBattle, {hero.gear}, 1)
   139 	AddEvent(onHeroFleeFirstBattle, {hero.gear}, heroFleeFirstBattle, {hero.gear}, 1)
   123 	
   140 	AddEvent(onHeroAtCheckpoint2, {hero.gear}, heroAtCheckpoint2, {hero.gear}, 0)
   124 	-- hero ammo
   141 	
   125 	AddAmmo(hero.gear, amRope, 2)
       
   126 	AddAmmo(hero.gear, amBazooka, 3)
       
   127 	AddAmmo(hero.gear, amParachute, 1)
       
   128 	AddAmmo(hero.gear, amGrenade, 6)
       
   129 	AddAmmo(hero.gear, amDEagle, 4)
       
   130 	-- smugglers ammo
   142 	-- smugglers ammo
   131 	AddAmmo(smuggler1.gear, amBazooka, 2)
   143 	AddAmmo(smuggler1.gear, amBazooka, 2)
   132 	AddAmmo(smuggler1.gear, amGrenade, 2)
   144 	AddAmmo(smuggler1.gear, amGrenade, 2)
   133 	AddAmmo(smuggler1.gear, amDEagle, 2)
   145 	AddAmmo(smuggler1.gear, amDEagle, 2)
   134 	
   146 	
   172 	while x < 2900 do
   184 	while x < 2900 do
   173 		AddGear(x, 470, gtMine, 0, 0, 0, 0)
   185 		AddGear(x, 470, gtMine, 0, 0, 0, 0)
   174 		x = x + math.random(8,20)
   186 		x = x + math.random(8,20)
   175 	end
   187 	end
   176 	
   188 	
       
   189 	if checkPointReached == 1 then
       
   190 		-- hero ammo
       
   191 		AddAmmo(hero.gear, amRope, 2)
       
   192 		AddAmmo(hero.gear, amBazooka, 3)
       
   193 		AddAmmo(hero.gear, amParachute, 1)
       
   194 		AddAmmo(hero.gear, amGrenade, 6)
       
   195 		AddAmmo(hero.gear, amDEagle, 4)
       
   196 	
       
   197 		AddAnim(dialog01)
       
   198 	elseif checkPointReached == 2 then
       
   199 		ShowMission(campaignName, missionName, loc("The part is hidden in one of the crates! Go and get it!"), -amSkip, 0)
       
   200 		-- hero ammo
       
   201 		local ammo = GetCampaignVar("HeroAmmo")
       
   202 		AddAmmo(hero.gear, amRope, tonumber(ammo:sub(3,3)))
       
   203 		AddAmmo(hero.gear, amBazooka, tonumber(ammo:sub(1,1)))
       
   204 		AddAmmo(hero.gear, amParachute, tonumber(ammo:sub(4,4)))
       
   205 		AddAmmo(hero.gear, amGrenade, tonumber(ammo:sub(2,2)))
       
   206 		AddAmmo(hero.gear, amDEagle, tonumber(ammo:sub(5,5)))
       
   207 		AddAmmo(hero.gear, amBlowTorch, tonumber(ammo:sub(6,6)))
       
   208 		-- weird, if 0 bazooka isn't displayed in the weapons menu
       
   209 		if tonumber(ammo:sub(7,7)) > 0 then
       
   210 			AddAmmo(hero.gear, amConstruction, tonumber(ammo:sub(7,7)))
       
   211 		end
       
   212 		AddAmmo(hero.gear, amPortalGun, tonumber(ammo:sub(8,8)))
       
   213 	end
       
   214 	
   177 	SendHealthStatsOff()
   215 	SendHealthStatsOff()
   178 	AddAnim(dialog01)
       
   179 end
   216 end
   180 
   217 
   181 function onNewTurn()
   218 function onNewTurn()
   182 	if CurrentHedgehog ~= hero.gear and not heroIsInBattle then
   219 	if CurrentHedgehog ~= hero.gear and not heroIsInBattle then
   183 		TurnTimeLeft = 0
   220 		TurnTimeLeft = 0
   237 	return false
   274 	return false
   238 end
   275 end
   239 
   276 
   240 function onHeroFleeFirstBattle(gear)
   277 function onHeroFleeFirstBattle(gear)
   241 	if not hero.dead and GetHealth(smuggler1.gear) and heroIsInBattle and ongoingBattle == 1 and (GetX(hero.gear) > 1450 
   278 	if not hero.dead and GetHealth(smuggler1.gear) and heroIsInBattle and ongoingBattle == 1 and (GetX(hero.gear) > 1450 
   242 			or (GetY(hero.gear) < GetY(smuggler1.gear)-80 or GetY(hero.gear) > GetY(smuggler1.gear)+300)) then
   279 			or (GetY(hero.gear) < GetY(smuggler1.gear)-80 or GetY(hero.gear) > smuggler1.y+300)) then
       
   280 		return true
       
   281 	end
       
   282 	return false
       
   283 end
       
   284 
       
   285 function onHeroAtCheckpoint2(gear)
       
   286 	if not hero.dead and GetX(hero.gear) > 1000 and GetX(hero.gear) < 1100
       
   287 			and GetY(hero.gear) > 590 then
   243 		return true
   288 		return true
   244 	end
   289 	end
   245 	return false
   290 	return false
   246 end
   291 end
   247 
   292 
   257 	EndGame()
   302 	EndGame()
   258 end
   303 end
   259 
   304 
   260 function heroAtFirstBattle(gear)
   305 function heroAtFirstBattle(gear)
   261 	WriteLnToConsole("**HERO AT FIRST BATTLE")
   306 	WriteLnToConsole("**HERO AT FIRST BATTLE")
       
   307 	AnimCaption(hero.gear, loc("A smuggler! Prepare for battle"), 5000)
   262 	TurnTimeLeft = 0
   308 	TurnTimeLeft = 0
   263 	heroIsInBattle = true
   309 	heroIsInBattle = true
   264 	ongoingBattle = 1	
   310 	ongoingBattle = 1	
   265 	AnimSwitchHog(smuggler1.gear)
   311 	AnimSwitchHog(smuggler1.gear)
   266 	TurnTimeLeft = 0
   312 	TurnTimeLeft = 0
   267 end
   313 end
   268 
   314 
   269 function heroFleeFirstBattle(gear)
   315 function heroFleeFirstBattle(gear)
   270 	WriteLnToConsole("++HERO FLEE FIRST BATTLE")
   316 	WriteLnToConsole("++HERO FLEE FIRST BATTLE")
       
   317 	AnimSay(smuggler1.gear, loc("Run away you coward!"), SAY_SHOUT, 4000)
   271 	TurnTimeLeft = 0
   318 	TurnTimeLeft = 0
   272 	heroIsInBattle = false
   319 	heroIsInBattle = false
   273 	ongoingBattle = 0
   320 	ongoingBattle = 0
       
   321 end
       
   322 
       
   323 function heroAtCheckpoint2(gear)
       
   324 	SaveCampaignVar("Desert01CheckPoint", "2")	
       
   325 	SaveCampaignVar("HeroHealth", GetHealth(hero.gear))
       
   326 	-- bazooka - grenade - rope - parachute - deagle - btorch - construct - portal
       
   327 	SaveCampaignVar("HeroAmmo", GetAmmoCount(hero.gear, amBazooka)..GetAmmoCount(hero.gear, amGrenade)..
       
   328 			GetAmmoCount(hero.gear, amRope)..GetAmmoCount(hero.gear, amParachute)..GetAmmoCount(hero.gear, amDEagle)..
       
   329 			GetAmmoCount(hero.gear, amBlowTorch)..GetAmmoCount(hero.gear, amConstruction)..GetAmmoCount(hero.gear, amPortalGun))
       
   330 	AnimCaption(hero.gear, loc("Checkpoint reached!"), 5000)	
   274 end
   331 end
   275 
   332 
   276 -------------- ANIMATIONS ------------------
   333 -------------- ANIMATIONS ------------------
   277 
   334 
   278 function Skipanim(anim)
   335 function Skipanim(anim)
   302 	table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("OK, I'll be extra careful!"), SAY_SAY, 4000}})
   359 	table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("OK, I'll be extra careful!"), SAY_SAY, 4000}})
   303 	table.insert(dialog01, {func = AnimWait, args = {ally.gear, 2000}})
   360 	table.insert(dialog01, {func = AnimWait, args = {ally.gear, 2000}})
   304 	table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("There is the tunnel entrance"), SAY_SAY, 3000}})
   361 	table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("There is the tunnel entrance"), SAY_SAY, 3000}})
   305 	table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Good luck!"), SAY_SAY, 3000}})
   362 	table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Good luck!"), SAY_SAY, 3000}})
   306 	table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
   363 	table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
   307 	table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})
   364 	table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})	
   308 end
   365 end