share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert03.lua
author Periklis Ntanasis <pntanasis@gmail.com>
Wed, 04 Sep 2013 03:32:31 +0300
branchspacecampaign
changeset 9605 66cd14e5bdad
child 9606 1d088cc31ff8
permissions -rw-r--r--
part of desert03 side mission - map not finished yet, will be commited later

------------------- ABOUT ----------------------
--
-- Hero has to use the rc plane end perform some
-- flying tasks

HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
HedgewarsScriptLoad("/Missions/Campaign/A_Space_Adventure/global_functions.lua")

-- globals
local missionName = loc("Precise flying")
local challengeObjectives = loc("Use the rc plane and destroy the all the targets").."|"..
	loc("Each time you destroy your level targets you'll get teleported to the next level").."|"..
	loc("You'll have only one rc plane at the start of the mission").."|"..
	loc("During the game you can get new plane by getting the weapon crates")
local currentTarget = 1
-- hogs
local hero = {
	name = loc("Hog Solo"),
	x = 100,
	y = 170
}
-- teams
local teamA = {
	name = loc("Hog Solo"),
	color = tonumber("38D61C",16) -- green
}
-- creates & targets
local rcCrates = {
	{ x = 1680, y = 240},
	{ x = 2810, y = 720},
}
local targets = {
	{ x = 2070, y = 410},
	{ x = 3880, y = 1430},
	{ x = 4030, y = 1430},
}

-------------- LuaAPI EVENT HANDLERS ------------------

function onGameInit()
	GameFlags = gfOneClanMode
	Seed = 1
	TurnTime = -1
	CaseFreq = 0
	MinesNum = 0
	MinesTime = 1
	Explosives = 0
	Map = "desert03_map"
	Theme = "Desert"
	
	-- Hog Solo
	AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
	hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
	AnimSetGearPosition(hero.gear, hero.x, hero.y)
	
	initCheckpoint("desert03")
	
	AnimInit()
	--AnimationSetup()
end

function onGameStart()
	AnimWait(hero.gear, 3000)
	FollowGear(hero.gear)
	ShowMission(missionName, loc("Challenge Objectives"), challengeObjectives, -amSkip, 0)

	AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)

	-- original crates and targets
	SpawnAmmoCrate(rcCrates[1].x, rcCrates[1].y, amRCPlane)
	targets[1].gear = AddGear(targets[1].x, targets[1].y, gtTarget, 0, 0, 0, 0)
	
	-- hero ammo
	AddAmmo(hero.gear, amRCPlane, 1)

	SendHealthStatsOff()
end

function onGameTick20()
	checkTargetsDestroied()
end

function onAmmoStoreInit()
	if currentTarget == 1 then
		SetAmmo(amRCPlane, 0, 0, 0, 1)
	end
end

-------------- EVENTS ------------------

function onHeroDeath(gear)
	if not GetHealth(hero.gear) then
		return true
	end
	return false
end

-------------- ACTIONS ------------------

function heroDeath(gear)
	SendStat('siGameResult', loc("Hog Solo lost, try again!")) --1
	SendStat('siCustomAchievement', loc("You have to destroy all the targets")) --11			
	SendStat('siCustomAchievement', loc("Read the Challenge Objectives from within the mission for more details")) --11		
	SendStat('siPlayerKills','1',teamB.name)
	SendStat('siPlayerKills','0',teamA.name)
	EndGame()
end

----------------- Other Functions -----------------

function checkTargetsDestroied()
	if currentTarget == 1 then
		if not GetHealth(targets[1].gear) then
			AddCaption(loc("Level 1 clear!"))
			SetGearPosition(hero.gear, 3590, 90)
			currentTarget = 2
			setTargets(currentTarget)
		end
	elseif currentTarget == 2 then
		
	else
		win()
	end
end

function setTargets(ct)
	if ct == 2 then
		SpawnAmmoCrate(rcCrates[2].x, rcCrates[2].y, amRCPlane)
		for i=2,3 do
			targets[i].gear = AddGear(targets[i].x, targets[i].y, gtTarget, 0, 0, 0, 0)
		end
	end
end

function win()
	EndGame()
end