--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua Thu Aug 01 01:47:30 2013 +0300
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/desert01.lua Thu Aug 01 16:34:18 2013 +0300
@@ -91,9 +91,19 @@
Map = "desert01_map"
Theme = "Desert"
+ -- get the check point
+ if tonumber(GetCampaignVar("Desert01CheckPoint")) then
+ checkPointReached = tonumber(GetCampaignVar("Desert01CheckPoint"))
+ end
+ -- get hero health
+ local heroHealth = 100
+ if checkPointReached > 1 and tonumber(GetCampaignVar("HeroHealth")) then
+ heroHealth = tonumber(GetCampaignVar("HeroHealth"))
+ end
+
-- Hog Solo
AddTeam(teamC.name, teamC.color, "Bone", "Island", "HillBilly", "cm_birdy")
- hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
+ hero.gear = AddHog(hero.name, 0, heroHealth, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
HogTurnLeft(hero.gear, true)
-- PAotH undercover scientist and chief Sandologist
@@ -109,6 +119,13 @@
smuggler3.gear = AddHog(smuggler3.name, 1, 100, "tophats")
AnimSetGearPosition(smuggler3.gear, smuggler3.x, smuggler3.y)
+ if checkPointReached == 1 then
+ -- Start of the game
+ elseif checkPointReached == 2 then
+ AnimSetGearPosition(hero.gear, 1050, 615)
+ HogTurnLeft(hero.gear, true)
+ end
+
AnimInit()
AnimationSetup()
end
@@ -120,13 +137,8 @@
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
AddEvent(onHeroAtFirstBattle, {hero.gear}, heroAtFirstBattle, {hero.gear}, 1)
AddEvent(onHeroFleeFirstBattle, {hero.gear}, heroFleeFirstBattle, {hero.gear}, 1)
+ AddEvent(onHeroAtCheckpoint2, {hero.gear}, heroAtCheckpoint2, {hero.gear}, 0)
- -- hero ammo
- AddAmmo(hero.gear, amRope, 2)
- AddAmmo(hero.gear, amBazooka, 3)
- AddAmmo(hero.gear, amParachute, 1)
- AddAmmo(hero.gear, amGrenade, 6)
- AddAmmo(hero.gear, amDEagle, 4)
-- smugglers ammo
AddAmmo(smuggler1.gear, amBazooka, 2)
AddAmmo(smuggler1.gear, amGrenade, 2)
@@ -174,8 +186,33 @@
x = x + math.random(8,20)
end
+ if checkPointReached == 1 then
+ -- hero ammo
+ AddAmmo(hero.gear, amRope, 2)
+ AddAmmo(hero.gear, amBazooka, 3)
+ AddAmmo(hero.gear, amParachute, 1)
+ AddAmmo(hero.gear, amGrenade, 6)
+ AddAmmo(hero.gear, amDEagle, 4)
+
+ AddAnim(dialog01)
+ elseif checkPointReached == 2 then
+ ShowMission(campaignName, missionName, loc("The part is hidden in one of the crates! Go and get it!"), -amSkip, 0)
+ -- hero ammo
+ local ammo = GetCampaignVar("HeroAmmo")
+ AddAmmo(hero.gear, amRope, tonumber(ammo:sub(3,3)))
+ AddAmmo(hero.gear, amBazooka, tonumber(ammo:sub(1,1)))
+ AddAmmo(hero.gear, amParachute, tonumber(ammo:sub(4,4)))
+ AddAmmo(hero.gear, amGrenade, tonumber(ammo:sub(2,2)))
+ AddAmmo(hero.gear, amDEagle, tonumber(ammo:sub(5,5)))
+ AddAmmo(hero.gear, amBlowTorch, tonumber(ammo:sub(6,6)))
+ -- weird, if 0 bazooka isn't displayed in the weapons menu
+ if tonumber(ammo:sub(7,7)) > 0 then
+ AddAmmo(hero.gear, amConstruction, tonumber(ammo:sub(7,7)))
+ end
+ AddAmmo(hero.gear, amPortalGun, tonumber(ammo:sub(8,8)))
+ end
+
SendHealthStatsOff()
- AddAnim(dialog01)
end
function onNewTurn()
@@ -239,7 +276,15 @@
function onHeroFleeFirstBattle(gear)
if not hero.dead and GetHealth(smuggler1.gear) and heroIsInBattle and ongoingBattle == 1 and (GetX(hero.gear) > 1450
- or (GetY(hero.gear) < GetY(smuggler1.gear)-80 or GetY(hero.gear) > GetY(smuggler1.gear)+300)) then
+ or (GetY(hero.gear) < GetY(smuggler1.gear)-80 or GetY(hero.gear) > smuggler1.y+300)) then
+ return true
+ end
+ return false
+end
+
+function onHeroAtCheckpoint2(gear)
+ if not hero.dead and GetX(hero.gear) > 1000 and GetX(hero.gear) < 1100
+ and GetY(hero.gear) > 590 then
return true
end
return false
@@ -259,6 +304,7 @@
function heroAtFirstBattle(gear)
WriteLnToConsole("**HERO AT FIRST BATTLE")
+ AnimCaption(hero.gear, loc("A smuggler! Prepare for battle"), 5000)
TurnTimeLeft = 0
heroIsInBattle = true
ongoingBattle = 1
@@ -268,11 +314,22 @@
function heroFleeFirstBattle(gear)
WriteLnToConsole("++HERO FLEE FIRST BATTLE")
+ AnimSay(smuggler1.gear, loc("Run away you coward!"), SAY_SHOUT, 4000)
TurnTimeLeft = 0
heroIsInBattle = false
ongoingBattle = 0
end
+function heroAtCheckpoint2(gear)
+ SaveCampaignVar("Desert01CheckPoint", "2")
+ SaveCampaignVar("HeroHealth", GetHealth(hero.gear))
+ -- bazooka - grenade - rope - parachute - deagle - btorch - construct - portal
+ SaveCampaignVar("HeroAmmo", GetAmmoCount(hero.gear, amBazooka)..GetAmmoCount(hero.gear, amGrenade)..
+ GetAmmoCount(hero.gear, amRope)..GetAmmoCount(hero.gear, amParachute)..GetAmmoCount(hero.gear, amDEagle)..
+ GetAmmoCount(hero.gear, amBlowTorch)..GetAmmoCount(hero.gear, amConstruction)..GetAmmoCount(hero.gear, amPortalGun))
+ AnimCaption(hero.gear, loc("Checkpoint reached!"), 5000)
+end
+
-------------- ANIMATIONS ------------------
function Skipanim(anim)
@@ -304,5 +361,5 @@
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}})
+ table.insert(dialog01, {func = AnimSwitchHog, args = {hero.gear}})
end