share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua
branchspacecampaign
changeset 9538 51596e01c5df
parent 9536 7456b28a3421
child 9540 92329918463f
equal deleted inserted replaced
9536:7456b28a3421 9538:51596e01c5df
    49 hero.y = 820
    49 hero.y = 820
    50 hero.dead = false
    50 hero.dead = false
    51 green1.name = "Captain Lime"
    51 green1.name = "Captain Lime"
    52 green1.x = 1050
    52 green1.x = 1050
    53 green1.y = 820
    53 green1.y = 820
       
    54 green1.dead = false
    54 green2.name = "Mister Pear"
    55 green2.name = "Mister Pear"
    55 green2.x = 1350
    56 green2.x = 1350
    56 green2.y = 820
    57 green2.y = 820
    57 green3.name = "Lady Mango"
    58 green3.name = "Lady Mango"
    58 green3.x = 1450
    59 green3.x = 1450
    64 	{ name = "Deadly Grape" }
    65 	{ name = "Deadly Grape" }
    65 }
    66 }
    66 teamA.name = loc("Hog Solo and GB")
    67 teamA.name = loc("Hog Solo and GB")
    67 teamA.color = tonumber("38D61C",16) -- green
    68 teamA.color = tonumber("38D61C",16) -- green
    68 teamB.name = loc("Captain Lime")
    69 teamB.name = loc("Captain Lime")
    69 teamB.color = tonumber("38D61C",16) -- green
    70 teamB.color = tonumber("38D61D",16) -- greenish
    70 teamC.name = loc("Fruit Assasins")
    71 teamC.name = loc("Fruit Assasins")
    71 teamC.color = tonumber("FF0000",16) -- red
    72 teamC.color = tonumber("FF0000",16) -- red
    72 
    73 
    73 function onGameInit()
    74 function onGameInit()
       
    75 	GameFlags = gfDisableWind
    74 	Seed = 1
    76 	Seed = 1
    75 	TurnTime = 20000
    77 	TurnTime = 20000
    76 	CaseFreq = 0
    78 	CaseFreq = 0
    77 	MinesNum = 0
    79 	MinesNum = 0
    78 	MinesTime = 1
    80 	MinesTime = 1
    79 	Explosives = 0
    81 	Explosives = 0
    80 	Delay = 3
    82 	Delay = 3
    81 	SuddenDeathTurns = 100
    83 	SuddenDeathTurns = 200
    82 	HealthCaseAmount = 50
       
    83 	Map = "fruit02_map"
    84 	Map = "fruit02_map"
    84 	Theme = "Fruit"
    85 	Theme = "Fruit"
    85 	
    86 	
    86 	-- Hog Solo and Green Bananas
    87 	-- Hog Solo and Green Bananas
    87 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
    88 	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
    94 	green3.gear = AddHog(green3.name, 0, 100, "war_desertgrenadier1")
    95 	green3.gear = AddHog(green3.name, 0, 100, "war_desertgrenadier1")
    95 	AnimSetGearPosition(green3.gear, green3.x, green3.y)
    96 	AnimSetGearPosition(green3.gear, green3.x, green3.y)
    96 	HogTurnLeft(green3.gear, true)
    97 	HogTurnLeft(green3.gear, true)
    97 	-- Captain Lime
    98 	-- Captain Lime
    98 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
    99 	AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
    99 	green1.gear =  AddHog(green1.name, 0, 100, "war_desertgrenadier1")
   100 	green1.human = AddHog(green1.name, 0, 100, "war_desertgrenadier1")
   100 	AnimSetGearPosition(green1.gear, green1.x, green1.y)
   101 	AnimSetGearPosition(green1.human, green1.x, green1.y)
       
   102 	green1.bot = AddHog(green1.name, 1, 100, "war_desertgrenadier1")
       
   103 	AnimSetGearPosition(green1.bot, green1.x, green1.y)
       
   104 	green1.gear = green1.human
   101 	-- Fruit Assasins
   105 	-- Fruit Assasins
   102 	AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
   106 	AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
   103 	for i=1,table.getn(redHedgehogs) do
   107 	for i=1,table.getn(redHedgehogs) do
   104 		redHedgehogs[i].gear =  AddHog(redHedgehogs[i].name, 0, 100, "war_desertgrenadier1")
   108 		redHedgehogs[i].gear =  AddHog(redHedgehogs[i].name, 0, 100, "war_desertgrenadier1")
   105 		AnimSetGearPosition(redHedgehogs[i].gear, 2010 + 50*i, 630)
   109 		AnimSetGearPosition(redHedgehogs[i].gear, 2010 + 50*i, 630)
   122 	
   126 	
   123 	-- Hog Solo and GB weapons
   127 	-- Hog Solo and GB weapons
   124 	AddAmmo(hero.gear, amFirePunch, 3)
   128 	AddAmmo(hero.gear, amFirePunch, 3)
   125 	AddAmmo(hero.gear, amSwitch, 100)
   129 	AddAmmo(hero.gear, amSwitch, 100)
   126 	AddAmmo(hero.gear, amTeleport, 100)
   130 	AddAmmo(hero.gear, amTeleport, 100)
       
   131 	-- Captain Lime weapons
       
   132 	AddAmmo(green1.bot, amBazooka, 6)
       
   133 	AddAmmo(green1.bot, amGrenade, 6)
       
   134 	AddAmmo(green1.bot, amDEagle, 2)
       
   135 	HideHog(green1.bot)
   127 	-- Assasins weapons
   136 	-- Assasins weapons
   128 	AddAmmo(redHedgehogs[1].gear, amBazooka, 6)
   137 	AddAmmo(redHedgehogs[1].gear, amBazooka, 6)
   129 	AddAmmo(redHedgehogs[1].gear, amGrenade, 6)
   138 	AddAmmo(redHedgehogs[1].gear, amGrenade, 6)
   130 	for i=1,table.getn(redHedgehogs) do
   139 	for i=1,table.getn(redHedgehogs) do
   131 		HideHog(redHedgehogs[i].gear)
   140 		HideHog(redHedgehogs[i].gear)
   142 	end
   151 	end
   143 	
   152 	
   144 	-- explosives
   153 	-- explosives
   145 	-- I wanted to use FindPlace but doesn't accept height values...
   154 	-- I wanted to use FindPlace but doesn't accept height values...
   146 	local x1 = 950
   155 	local x1 = 950
   147 	local x2 = 1305
   156 	local x2 = 1306
   148 	local y1 = 1210
   157 	local y1 = 1210
   149 	local y2 = 1620
   158 	local y2 = 1620
   150 	while true do
   159 	while true do
   151 		if y2<y1 then
   160 		if y2<y1 then
   152 			break
   161 			break
   153 		end
   162 		end
   154 		if x2<x1 then
   163 		if x2<x1 then
   155 			x2 = 1305
   164 			x2 = 1305
   156 			y2 = y2 -60
   165 			y2 = y2 - 50
   157 		end
   166 		end
   158 		if not TestRectForObstacle(x2+25, y2+25, x2-25, y2-25, true) then
   167 		if not TestRectForObstacle(x2+25, y2+25, x2-25, y2-25, true) then
   159 			AddGear(x2, y2, gtExplosives, 0, 0, 0, 0)
   168 			AddGear(x2, y2, gtExplosives, 0, 0, 0, 0)
   160 		end
   169 		end
   161 		x2 = x2 - 30
   170 		x2 = x2 - 25
   162 	end
   171 	end
   163 	AddGear(3128, 1680, gtExplosives, 0, 0, 0, 0)
   172 	AddGear(3128, 1680, gtExplosives, 0, 0, 0, 0)
       
   173 	
   164 	--mines
   174 	--mines
   165 	AddGear(3135, 1680, gtMine, 0, 0, 0, 0)
   175 	AddGear(3135, 1680, gtMine, 0, 0, 0, 0)
   166 	AddGear(3145, 1680, gtMine, 0, 0, 0, 0)
   176 	AddGear(3145, 1680, gtMine, 0, 0, 0, 0)
   167 	AddGear(3155, 1680, gtMine, 0, 0, 0, 0)
   177 	AddGear(3155, 1680, gtMine, 0, 0, 0, 0)
   168 	AddGear(3165, 1680, gtMine, 0, 0, 0, 0)
   178 	AddGear(3165, 1680, gtMine, 0, 0, 0, 0)
   196 			TurnTimeLeft = 0
   206 			TurnTimeLeft = 0
   197 			return
   207 			return
   198 		end
   208 		end
   199 		WriteLnToConsole("IN BATTLE")
   209 		WriteLnToConsole("IN BATTLE")
   200 		TurnTimeLeft = 20000
   210 		TurnTimeLeft = 20000
       
   211 		wind()
   201 	elseif not inBattle then
   212 	elseif not inBattle then
   202 	WriteLnToConsole("4")
   213 	WriteLnToConsole("4")
   203 		TurnTimeLeft = -1
   214 		TurnTimeLeft = -1
       
   215 		wind()
   204 	else
   216 	else
   205 		WriteLnToConsole("6")
   217 		WriteLnToConsole("6")
   206 		TurnTimeLeft = 0
   218 		TurnTimeLeft = 0
   207 	end
   219 	end
   208 	previousHog = CurrentHedgehog
   220 	previousHog = CurrentHedgehog
   219 end
   231 end
   220 
   232 
   221 function onGearDelete(gear)
   233 function onGearDelete(gear)
   222 	if gear == hero.gear then
   234 	if gear == hero.gear then
   223 		hero.dead = true
   235 		hero.dead = true
       
   236 	elseif gear == green1.bot then
       
   237 		green1.dead = true
   224 	end
   238 	end
   225 end
   239 end
   226 
   240 
   227 function onAmmoStoreInit()
   241 function onAmmoStoreInit()
   228 	SetAmmo(amDEagle, 0, 0, 0, 6)
   242 	SetAmmo(amDEagle, 0, 0, 0, 6)
   259 		return true
   273 		return true
   260 	end
   274 	end
   261 	return false
   275 	return false
   262 end
   276 end
   263 
   277 
       
   278 function onGaptainLimeDeath(gear)
       
   279 	if green1.dead then
       
   280 		return true
       
   281 	end
       
   282 	return false
       
   283 end
       
   284 
   264 -------------- ACTIONS ------------------
   285 -------------- ACTIONS ------------------
   265 
   286 
   266 function heroDeath(gear)
   287 function heroDeath(gear)
   267 	EndGame()
   288 	EndGame()
   268 end
   289 end
   280 	AddAmmo(hero.gear, amSwitch, 0)
   301 	AddAmmo(hero.gear, amSwitch, 0)
   281 	AddEvent(onSurface, {hero.gear}, surface, {hero.gear}, 0)
   302 	AddEvent(onSurface, {hero.gear}, surface, {hero.gear}, 0)
   282 end
   303 end
   283 
   304 
   284 function surface(gear)
   305 function surface(gear)
   285 	-- TODO: after going to the surface first round must be played by the player
       
   286 	WriteLnToConsole("surface first round")
   306 	WriteLnToConsole("surface first round")
   287 	previousHog = -1
   307 	previousHog = -1
   288 	if firstRoundAfterBattle then
   308 	if tookPartInBattle then
   289 		WriteLnToConsole("TRUE IT IS!")
   309 	
       
   310 	else
       
   311 		if GetHealth(green2.gear) then
       
   312 			HideHog(green2.gear)
       
   313 		end
       
   314 		if GetHealth(green3.gear) then
       
   315 			HideHog(green3.gear)
       
   316 		end
       
   317 		DeleteGear(green1.human)
       
   318 		RestoreHog(green1.bot)
       
   319 		green1.gear = green1.bot
       
   320 		AddEvent(onGaptainLimeDeath, {green1.gear}, captainLimeDeath, {green1.gear}, 0)
   290 	end
   321 	end
   291 	WriteLnToConsole("surface in battle")
   322 	WriteLnToConsole("surface in battle")
   292 	inBattle = true
   323 	inBattle = true
   293 end
   324 end
   294 
   325 
       
   326 function captainLimeDeath(gear)
       
   327 	-- hero win in scenario of escape in 1st part
       
   328 	EndGame()
       
   329 end
   295 -------------- ANIMATIONS ------------------
   330 -------------- ANIMATIONS ------------------
   296 
   331 
   297 function Skipanim(anim)
   332 function Skipanim(anim)
   298 	if goals[anim] ~= nil then
   333 	if goals[anim] ~= nil then
   299 		ShowMission(unpack(goals[anim]))
   334 		ShowMission(unpack(goals[anim]))
   348 ------------- OTHER FUNCTIONS ---------------
   383 ------------- OTHER FUNCTIONS ---------------
   349 
   384 
   350 function goToThesurface()
   385 function goToThesurface()
   351 	TurnTimeLeft = 0
   386 	TurnTimeLeft = 0
   352 end
   387 end
       
   388 
       
   389 function wind()
       
   390 	if GetY(CurrentHedgehog) > 1350 then
       
   391 		WriteLnToConsole("INTO WIND -40")
       
   392 		SetWind(-40)
       
   393 	else
       
   394 		SetWind(math.random(-100,100))
       
   395 	end
       
   396 end