share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit01.lua
branchspacecampaign
changeset 9496 ffab82d05785
parent 9494 e515962d7af4
child 9498 54bfc44f9554
equal deleted inserted replaced
9494:e515962d7af4 9496:ffab82d05785
    22 local goals = {
    22 local goals = {
    23 	[dialog01] = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer"), 1, 7000},
    23 	[dialog01] = {missionName, loc("Ready for Battle?"), loc("Walk left if you want to join Captain Lime or right if you want to decline his offer"), 1, 7000},
    24 	[dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have choose to fight! Lead the Green Bananas to battle and try not to let them be killed"), 1, 7000},
    24 	[dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have choose to fight! Lead the Green Bananas to battle and try not to let them be killed"), 1, 7000},
    25 	[dialog03] = {missionName, loc("Ready for Battle?"), loc("You have choose to flee... Unfortunately the only place where you can launch your saucer is in the most left side of the map"), 1, 7000},
    25 	[dialog03] = {missionName, loc("Ready for Battle?"), loc("You have choose to flee... Unfortunately the only place where you can launch your saucer is in the most left side of the map"), 1, 7000},
    26 }
    26 }
       
    27 -- crates
       
    28 local crateWMX = 2170
       
    29 local crateWMY = 1950
       
    30 local health1X = 2680
       
    31 local health1Y = 716
    27 -- hogs
    32 -- hogs
    28 local hero = {}
    33 local hero = {}
    29 local yellow1 = {}
    34 local yellow1 = {}
    30 local green1 = {}
    35 local green1 = {}
    31 local green2 = {}
    36 local green2 = {}
    41 hero.y = 95
    46 hero.y = 95
    42 hero.dead = false
    47 hero.dead = false
    43 green1.name = "Captain Lime"
    48 green1.name = "Captain Lime"
    44 green1.x = 3600
    49 green1.x = 3600
    45 green1.y = 95
    50 green1.y = 95
       
    51 green1.dead = false
    46 green2.name = "Mister Pear"
    52 green2.name = "Mister Pear"
    47 green2.x = 3600
    53 green2.x = 3600
    48 green2.y = 1570
    54 green2.y = 1570
    49 green3.name = "Lady Mango"
    55 green3.name = "Lady Mango"
    50 green3.x = 2170
    56 green3.x = 2170
    54 green4.y = 1650
    60 green4.y = 1650
    55 yellow1.name = "General Lemon"
    61 yellow1.name = "General Lemon"
    56 yellow1.x = 140
    62 yellow1.x = 140
    57 yellow1.y = 1980
    63 yellow1.y = 1980
    58 local yellowArmy = {
    64 local yellowArmy = {
    59 	[1] = {name = "Robert Yellow Apple", x = 710, y = 1780},
    65 	{name = "Robert Yellow Apple", x = 710, y = 1780},
    60 	[2] = {name = "Summer Squash", x = 315 , y = 1960},
    66 	{name = "Summer Squash", x = 315 , y = 1960},
    61 	[3] = {name = "Tall Potato", x = 830 , y = 1748},
    67 	{name = "Tall Potato", x = 830 , y = 1748},
    62 	[4] = {name = "Yellow Pepper", x = 285 , y = 1960},
    68 	{name = "Yellow Pepper", x = 285 , y = 1960},
    63 	[5] = {name = "Corn", x = 1320 , y = 540},
    69 	{name = "Corn", x = 1320 , y = 540},
    64 	[6] = {name = "Max Citrus", x = 1900 , y = 1700},
    70 	{name = "Max Citrus", x = 1900 , y = 1700},
    65 	[7] = {name = "Naranja Jed", x = 960 , y = 316},
    71 	{name = "Naranja Jed", x = 960 , y = 316},
    66 }
    72 }
    67 teamA.name = loc("Hog Solo")
    73 teamA.name = loc("Hog Solo")
    68 teamA.color = tonumber("38D61C",16) -- green  
    74 teamA.color = tonumber("38D61C",16) -- green  
    69 teamB.name = loc("Green Bananas")
    75 teamB.name = loc("Green Bananas")
    70 teamB.color = tonumber("38D61C",16) -- green
    76 teamB.color = tonumber("38D61C",16) -- green
    77 	CaseFreq = 0
    83 	CaseFreq = 0
    78 	MinesNum = 0
    84 	MinesNum = 0
    79 	MinesTime = 1
    85 	MinesTime = 1
    80 	Explosives = 0
    86 	Explosives = 0
    81 	Delay = 3
    87 	Delay = 3
    82 	HealthCaseAmount = 30
    88 	HealthCaseAmount = 50
    83 	Map = "fruit01_map"
    89 	Map = "fruit01_map"
    84 	Theme = "Fruit"
    90 	Theme = "Fruit"
    85 	
    91 	
    86 	-- Hog Solo
    92 	-- Hog Solo
    87 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
    93 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
    90 	HogTurnLeft(hero.gear, true)
    96 	HogTurnLeft(hero.gear, true)
    91 	-- Green Bananas
    97 	-- Green Bananas
    92 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
    98 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
    93 	green1.gear = AddHog(green1.name, 0, 100, "war_desertgrenadier1")
    99 	green1.gear = AddHog(green1.name, 0, 100, "war_desertgrenadier1")
    94 	AnimSetGearPosition(green1.gear, green1.x, green1.y)
   100 	AnimSetGearPosition(green1.gear, green1.x, green1.y)
       
   101 	green2.gear = AddHog(green2.name, 0, 100, "war_desertgrenadier1")
       
   102 	AnimSetGearPosition(green2.gear, green2.x, green2.y)
       
   103 	HogTurnLeft(green2.gear, true)
       
   104 	green3.gear = AddHog(green3.name, 0, 100, "war_desertgrenadier1")
       
   105 	AnimSetGearPosition(green3.gear, green3.x, green3.y)
       
   106 	HogTurnLeft(green3.gear, true)
       
   107 	green4.gear = AddHog(green4.name, 0, 100, "war_desertgrenadier1")
       
   108 	AnimSetGearPosition(green4.gear, green4.x, green4.y)
       
   109 	HogTurnLeft(green4.gear, true)
    95 	-- Yellow Watermellons
   110 	-- Yellow Watermellons
    96 	AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
   111 	AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
    97 	yellow1.gear = AddHog(yellow1.name, 1, 100, "war_desertgrenadier1")
   112 	yellow1.gear = AddHog(yellow1.name, 1, 100, "war_desertgrenadier1")
    98 	AnimSetGearPosition(yellow1.gear, yellow1.x, yellow1.y)
   113 	AnimSetGearPosition(yellow1.gear, yellow1.x, yellow1.y)
    99 	-- the rest of the Yellow Watermellons
   114 	-- the rest of the Yellow Watermellons
   117 	AddAmmo(hero.gear, amRope, 2)
   132 	AddAmmo(hero.gear, amRope, 2)
   118 	AddAmmo(hero.gear, amBazooka, 3)
   133 	AddAmmo(hero.gear, amBazooka, 3)
   119 	AddAmmo(hero.gear, amParachute, 1)
   134 	AddAmmo(hero.gear, amParachute, 1)
   120 	AddAmmo(hero.gear, amGrenade, 6)
   135 	AddAmmo(hero.gear, amGrenade, 6)
   121 	AddAmmo(hero.gear, amDEagle, 4)
   136 	AddAmmo(hero.gear, amDEagle, 4)
   122 	-- Other team wapons
   137 	-- Green team weapons
       
   138 	local greenTeam = {	green1, green2, green3, green4 }
       
   139 	for i=1,4 do
       
   140 		AddAmmo(greenTeam[i].gear, amBlowTorch, 1)
       
   141 		AddAmmo(greenTeam[i].gear, amRope, 1)
       
   142 		AddAmmo(greenTeam[i].gear, amBazooka, 4)
       
   143 		AddAmmo(greenTeam[i].gear, amGrenade, 3)
       
   144 		AddAmmo(greenTeam[i].gear, amFirePunch, 2)
       
   145 		AddAmmo(greenTeam[i].gear, amDrill, 1)
       
   146 	end
       
   147 	-- Yellow team weapons
   123 	AddAmmo(yellow1.gear, amBlowTorch, 1)
   148 	AddAmmo(yellow1.gear, amBlowTorch, 1)
   124 	AddAmmo(yellow1.gear, amRope, 1)
   149 	AddAmmo(yellow1.gear, amRope, 1)
   125 	AddAmmo(yellow1.gear, amBazooka, 3)
   150 	AddAmmo(yellow1.gear, amBazooka, 3)
   126 	AddAmmo(yellow1.gear, amGrenade, 1)
   151 	AddAmmo(yellow1.gear, amGrenade, 1)
   127 	AddAmmo(yellow1.gear, amFirePunch, 1)
   152 	AddAmmo(yellow1.gear, amFirePunch, 1)
   128 	AddAmmo(yellow1.gear, amDrill, 1)
   153 	AddAmmo(yellow1.gear, amDrill, 1)
   129 	for i=1,7 do
   154 	for i=1,7 do
   130 		AddAmmo(yellowArmy[i].gear, amBlowTorch, 1)
   155 		AddAmmo(yellowArmy[i].gear, amBlowTorch, 1)
   131 		AddAmmo(yellowArmy[i].gear, amRope, 1)
   156 		AddAmmo(yellowArmy[i].gear, amRope, 1)
   132 		AddAmmo(yellowArmy[i].gear, amBazooka, 3)
   157 		AddAmmo(yellowArmy[i].gear, amBazooka, 3)
   133 		AddAmmo(yellowArmy[i].gear, amGrenade, 1)
   158 		AddAmmo(yellowArmy[i].gear, amGrenade, 3)
   134 		AddAmmo(yellowArmy[i].gear, amFirePunch, 1)
   159 		AddAmmo(yellowArmy[i].gear, amFirePunch, 1)
   135 		AddAmmo(yellowArmy[i].gear, amDrill, 1)	
   160 		AddAmmo(yellowArmy[i].gear, amDrill, 3)	
       
   161 		AddAmmo(yellowArmy[i].gear, amBee, 1)	
       
   162 		AddAmmo(yellowArmy[i].gear, amMortar, 2)	
       
   163 		AddAmmo(yellowArmy[i].gear, amSniperRifle, 3)	
       
   164 		AddAmmo(yellowArmy[i].gear, amDEagle, 2)	
       
   165 		AddAmmo(yellowArmy[i].gear, amDynamite, 1)	
   136 		if i>2 then
   166 		if i>2 then
   137 			HideHog(yellowArmy[i].gear)
   167 			HideHog(yellowArmy[i].gear)
   138 		end
   168 		end
   139 	end
   169 	end
   140 	
   170 	
   141 	AddAnim(dialog01)
   171 	AddAnim(dialog01)
   142 	SendHealthStatsOff()
   172 	SendHealthStatsOff()
   143 end
   173 end
   144 
   174 
   145 function onNewTurn()
   175 function onNewTurn()
       
   176 	if CurrentHedgehog == green1.gear then
       
   177 		TotalRounds = TotalRounds - 1
       
   178 		if GetHealth(green2.gear) then
       
   179 			SwitchHog(green2.gear)
       
   180 		elseif GetHealth(green3.gear) then
       
   181 			SwitchHog(green3.gear)
       
   182 		elseif GetHealth(green4.gear) then
       
   183 			SwitchHog(green4.gear)
       
   184 		end
       
   185 	end
   146 	getNextWave()
   186 	getNextWave()
   147 end
   187 end
   148 
   188 
   149 function onGameTick()
   189 function onGameTick()
   150 	AnimUnWait()
   190 	AnimUnWait()
   156 end
   196 end
   157 
   197 
   158 function onGearDelete(gear)
   198 function onGearDelete(gear)
   159 	if gear == hero.gear then
   199 	if gear == hero.gear then
   160 		hero.dead = true
   200 		hero.dead = true
       
   201 	elseif gear == green1.gear then
       
   202 		green1.dead = true
   161 	end
   203 	end
   162 end
   204 end
   163 
   205 
   164 function onPrecise()
   206 function onPrecise()
   165 	if GameTime > 3000 then
   207 	if GameTime > 3000 then
   166 		SetAnimSkip(true)   
   208 		SetAnimSkip(true)   
   167 	end
   209 	end
   168 end
   210 end
   169 
   211 
       
   212 function onHogHide(gear)
       
   213 	for i=3,7 do
       
   214 		if gear == yellowArmy[i].gear then
       
   215 			yellowArmy[i].hidden = true
       
   216 			break
       
   217 		end
       
   218 	end
       
   219 end
       
   220 
       
   221 function onHogRestore(gear)
       
   222 	for i=3,7 do
       
   223 		if gear == yellowArmy[i].gear then
       
   224 			yellowArmy[i].hidden = false
       
   225 			break
       
   226 		end
       
   227 	end
       
   228 end
       
   229 
   170 -------------- EVENTS ------------------
   230 -------------- EVENTS ------------------
   171 
   231 
   172 function onHeroDeath(gear)
   232 function onHeroDeath(gear)
   173 	if hero.dead then
   233 	if hero.dead then
   174 		return true
   234 		return true
   175 	end
   235 	end
   176 	return false
   236 	return false
   177 end
   237 end
   178 
   238 
       
   239 function onGreen1Death(gear)
       
   240 	if green1.dead then
       
   241 		return true
       
   242 	end
       
   243 	return false
       
   244 end
       
   245 
       
   246 function onBattleWin(gear)
       
   247 	local win = true
       
   248 	for i=1,7 do
       
   249 		if i<3 then
       
   250 			if GetHealth(yellowArmy[i].gear) then
       
   251 				win = false
       
   252 			end
       
   253 		else
       
   254 			if GetHealth(yellowArmy[i].gear) and not yellowArmy[i].hidden then
       
   255 				win = false
       
   256 			end
       
   257 		end
       
   258 	end
       
   259 	if GetHealth(yellow1.gear) then
       
   260 		win = false
       
   261 	end
       
   262 	return win
       
   263 end
       
   264 
   179 function onHeroSelect(gear)
   265 function onHeroSelect(gear)
   180 	if GetX(hero.gear) ~= hero.x then
   266 	if GetX(hero.gear) ~= hero.x then
   181 		return true
   267 		return true
   182 	end
   268 	end
   183 	return false
   269 	return false
   184 end
   270 end
   185 
   271 
   186 -------------- OUTCOMES ------------------ I should really s/OUTCOMES/ACTIONS/
   272 -------------- OUTCOMES ------------------ I should really s/OUTCOMES/ACTIONS/
   187 
   273 
   188 function heroDeath(gear)
   274 function heroDeath(gear)
   189 	SendStat('siGameResult', loc("Green Bananas lost, try again!")) --1
   275 	gameLost()
   190 	SendStat('siCustomAchievement', loc("Tips...")) --11
   276 end
   191 	SendStat('siPlayerKills','1',teamC.name)
   277 
   192 	SendStat('siPlayerKills','0',teamA.name)
   278 function green1Death(gear)
   193 	SendStat('siPlayerKills','0',teamB.name)
   279 	gameLost()
       
   280 end
       
   281 
       
   282 function battleWin(gear)
       
   283 	-- add stats
   194 	EndGame()
   284 	EndGame()
   195 end
   285 end
   196 
   286 
   197 function heroSelect(gear)
   287 function heroSelect(gear)
       
   288 	TurnTimeLeft = 0
   198 	FollowGear(hero.gear)
   289 	FollowGear(hero.gear)
   199 	TurnTimeLeft = 0
       
   200 	if GetX(hero.gear) < hero.x then
   290 	if GetX(hero.gear) < hero.x then
   201 		chooseToBattle = true
   291 		chooseToBattle = true		
       
   292 		AddEvent(onGreen1Death, {green1.gear}, green1Death, {green1.gear}, 0)
       
   293 		AddEvent(onBattleWin, {hero.gear}, battleWin, {hero.gear}, 0)
   202 		AddAnim(dialog02)
   294 		AddAnim(dialog02)
   203 	elseif GetX(hero.gear) > hero.x then
   295 	elseif GetX(hero.gear) > hero.x then
   204 		AddAnim(dialog03)
   296 		AddAnim(dialog03)
   205 	end
   297 	end
   206 end
   298 end
   264 function startBattle()
   356 function startBattle()
   265 	AnimSwitchHog(yellow1.gear)
   357 	AnimSwitchHog(yellow1.gear)
   266 	TurnTimeLeft = 0
   358 	TurnTimeLeft = 0
   267 end
   359 end
   268 
   360 
       
   361 function gameLost()	
       
   362 	SendStat('siGameResult', loc("Green Bananas lost, try again!")) --1
       
   363 	SendStat('siCustomAchievement', loc("Tips...")) --11
       
   364 	SendStat('siPlayerKills','1',teamC.name)
       
   365 	SendStat('siPlayerKills','0',teamA.name)
       
   366 	SendStat('siPlayerKills','0',teamB.name)
       
   367 	EndGame()
       
   368 end
       
   369 
   269 function getNextWave()
   370 function getNextWave()
   270 	if TotalRounds == 4 then
   371 	if TotalRounds == 4 then
   271 		RestoreHog(yellowArmy[3].gear)
   372 		RestoreHog(yellowArmy[3].gear)
   272 		AnimCaption(hero.gear, loc("Next wave in 3 turns"), 5000)
   373 		AnimCaption(hero.gear, loc("Next wave in 3 turns"), 5000)
   273 	elseif TotalRounds == 7 then
   374 	elseif TotalRounds == 7 then