------------------- ABOUT ----------------------
--
-- In the desert planet Hero will have to explore
-- the dunes below the surface and find the hidden
-- crates. It is told that one crate contains the
-- lost part.
-- TODO
-- maybe use same name in missionName and frontend mission name..
-- in this map I have to track the weapons the player has in checkpoints
-- GENRAL NOTE: change hats :D
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
----------------- VARIABLES --------------------
-- globals
local campaignName = loc("A Space Adventure")
local missionName = loc("Desert planet, lost in sand!")
local checkPointReached = 1 -- 1 is normal spawn
-- dialogs
local dialog01 = {}
-- mission objectives
local goals = {
[dialog01] = {missionName, loc("Getting ready"), loc("The part is hidden in one of the crates! Go and get it!"), 1, 4500},
}
-- crates
local btorch1Y = 60
local btorch1X = 2700
local btorch2Y = 1800
local btorch2X = 1010
local rope1Y = 970
local rope1X = 3200
local rope2Y = 1900
local rope2X = 680
local rope3Y = 1850
local rope3X = 2460
local portalY = 480
local portalX = 1465
local constructY = 1630
local constructX = 3350
-- hogs
local hero = {}
local ally = {}
local smuggler1 = {}
local smuggler2 = {}
local smuggler3 = {}
-- teams
local teamA = {}
local teamB = {}
local teamC = {}
-- hedgehogs values
hero.name = "Hog Solo"
hero.x = 1740
hero.y = 40
hero.dead = false
ally.name = "Chief Sandologist"
ally.x = 1660
ally.y = 40
smuggler1.name = "Sanndy"
smuggler1.x = 320
smuggler1.y = 235
smuggler2.name = "Spike"
smuggler2.x = 736
smuggler2.y = 860
smuggler3.name = "Sandstorm"
smuggler3.x = 1940
smuggler3.y = 1625
teamA.name = loc("PAotH")
teamA.color = tonumber("FF0000",16) -- red
teamB.name = loc("Smugglers")
teamB.color = tonumber("0033FF",16) -- blues
teamC.name = loc("Hog Solo")
teamC.color = tonumber("38D61C",16) -- green
-------------- LuaAPI EVENT HANDLERS ------------------
function onGameInit()
Seed = 1
TurnTime = 25000
CaseFreq = 0
MinesNum = 0
MinesTime = 1
Explosives = 0
Delay = 3
HealthCaseAmount = 30
Map = "desert01_map"
Theme = "Desert"
-- Hog Solo
AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
HogTurnLeft(hero.gear, true)
-- PAotH undercover scientist and chief Sandologist
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
ally.gear = AddHog(ally.name, 0, 100, "war_desertgrenadier1")
AnimSetGearPosition(ally.gear, ally.x, ally.y)
-- Smugglers
AddTeam(teamB.name, teamB.color, "Bone", "Island", "HillBilly", "cm_birdy")
smuggler1.gear = AddHog(smuggler1.name, 1, 120, "tophats")
AnimSetGearPosition(smuggler1.gear, smuggler1.x, smuggler1.y)
smuggler2.gear = AddHog(smuggler2.name, 1, 120, "tophats")
AnimSetGearPosition(smuggler2.gear, smuggler2.x, smuggler2.y)
smuggler3.gear = AddHog(smuggler3.name, 1, 120, "tophats")
AnimSetGearPosition(smuggler3.gear, smuggler3.x, smuggler3.y)
AnimInit()
AnimationSetup()
end
function onGameStart()
AnimWait(hero.gear, 3000)
FollowGear(hero.gear)
AddAmmo(hero.gear, amRope, 10)
-- spawn crates
SpawnAmmoCrate(btorch1X, btorch1Y, amBlowTorch)
SpawnAmmoCrate(btorch2X, btorch2Y, amBlowTorch)
SpawnAmmoCrate(rope1X, rope1Y, amRope)
SpawnAmmoCrate(rope2X, rope2Y, amRope)
SpawnAmmoCrate(rope3X, rope3Y, amRope)
SpawnAmmoCrate(portalX, portalY, amPortalGun)
SpawnAmmoCrate(constructX, constructY, amConstruction)
SpawnHealthCrate(3300, 970)
-- adding mines - BOOM!
AddGear(1280, 460, gtMine, 0, 0, 0, 0)
AddGear(270, 460, gtMine, 0, 0, 0, 0)
AddGear(3460, 60, gtMine, 0, 0, 0, 0)
AddGear(3500, 240, gtMine, 0, 0, 0, 0)
AddGear(3410, 670, gtMine, 0, 0, 0, 0)
AddGear(3450, 720, gtMine, 0, 0, 0, 0)
local x = 800
while x < 1650 do
AddGear(x, 900, gtMine, 0, 0, 0, 0)
x = x + math.random(8,20)
end
x = 1890
while x < 2988 do
AddGear(x, 760, gtMine, 0, 0, 0, 0)
x = x + math.random(8,20)
end
x = 2480
while x < 3300 do
AddGear(x, 1450, gtMine, 0, 0, 0, 0)
x = x + math.random(8,20)
end
AddAnim(dialog01)
end
function onGameTick()
AnimUnWait()
if ShowAnimation() == false then
return
end
ExecuteAfterAnimations()
CheckEvents()
end
function onAmmoStoreInit()
SetAmmo(amBlowTorch, 0, 0, 0, 1)
SetAmmo(amRope, 0, 0, 0, 1)
SetAmmo(amPortalGun, 0, 0, 0, 1)
SetAmmo(amConstruction, 0, 0, 0, 1)
end
function onGearDelete(gear)
if gear == hero.gear then
hero.dead = true
end
end
function onPrecise()
if GameTime > 3000 then
SetAnimSkip(true)
end
end
-------------- ANIMATIONS ------------------
function Skipanim(anim)
if goals[anim] ~= nil then
ShowMission(unpack(goals[anim]))
end
end
function AnimationSetup()
-- DIALOG 01 - Start, getting info about the device
AddSkipFunction(dialog01, Skipanim, {dialog01})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 3000}})
table.insert(dialog01, {func = AnimCaption, args = {hero.gear, loc("In the planet of sand, you have to double check your moves..."), 5000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Finaly you are here..."), SAY_SAY, 2000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 2000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("Thank you for meeting me in such a short notice!"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimWait, args = {ally.gear, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("No problem, I would do anything for M!"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Now listen carefully! Below us there are tunnels that have been created naturally over the years"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("I have heared the local tribes saying that many years ago some PAotH scientists were dumping their waste here"), SAY_SAY, 5000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("M confimed that there isn't such a PAotH activity logged"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("So, I believe that it's a good place to start"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Beware though! Many smugglers come often to explore these tunnels and scavage whatever valuable item they can find"), SAY_SAY, 5000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("They won't hesitate to attack you in order to take your valuables!"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 6000}})
table.insert(dialog01, {func = AnimSay, args = {hero.gear, loc("OK, I'll be extra careful!"), SAY_SAY, 4000}})
table.insert(dialog01, {func = AnimWait, args = {ally.gear, 2000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("There is the tunnel entrance"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimSay, args = {ally.gear, loc("Good luck!"), SAY_SAY, 3000}})
table.insert(dialog01, {func = AnimWait, args = {hero.gear, 500}})
table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})
end