--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua Tue Aug 20 06:07:58 2013 +0300
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua Wed Aug 21 02:06:31 2013 +0300
@@ -27,11 +27,9 @@
[dialog04] = {missionName, loc("Return to the Surface"), loc("Go to the surface!").."|"..loc("Attack the assasins before they attack back"), 1, 4000},
}
-- crates
-local crates = {
- {name = amDEagle, x = 1680, y = 1650},
- {name = amGirder, x = 1680, y = 1160},
- {name = amRope, x = 1400, y = 1870},
-}
+local eagleCrate = {name = amDEagle, x = 1680, y = 1650}
+local girderCrate = {name = amGirder, x = 1680, y = 1160}
+local ropeCrate = {name = amRope, x = 1400, y = 1870}
local weaponCrate = { x = 1360, y = 1870}
-- hogs
local hero = {}
@@ -85,21 +83,21 @@
WriteLnToConsole("CHECKPOINT IS "..checkPointReached)
-- load checkpoints, problem getting the campaign variable
- --local h = GetCampaignVar("Desert01CheckPoint")
- --WriteLnToCosnole("HERE "..GetCampaignVar("Fruit02CheckPoint"))
+ local health = 100
if tonumber(GetCampaignVar("Fruit02CheckPoint")) then
WriteLnToConsole("**TRUE**")
checkPointReached = tonumber(GetCampaignVar("Fruit02CheckPoint"))
- if checkPointReached == 2 or checkPointReached == 3 then
+ if checkPointReached ~= 1 then
WriteLnToConsole("++++++++++++++HEEEEEEEREEEEEEEEEEEEE")
loadHogsPositions()
+ health = tonumber(GetCampaignVar("HeroHealth"))
end
end
WriteLnToConsole("CHECKPOINT IS "..checkPointReached)
-- Hog Solo and Green Bananas
AddTeam(teamA.name, teamA.color, "Bone", "Island", "HillBilly", "cm_birdy")
- hero.gear = AddHog(hero.name, 0, 100, "war_desertgrenadier1")
+ hero.gear = AddHog(hero.name, 0, health, "war_desertgrenadier1")
AnimSetGearPosition(hero.gear, hero.x, hero.y)
HogTurnLeft(hero.gear, true)
green2.gear = AddHog(green2.name, 0, 100, "war_desertgrenadier1")
@@ -153,16 +151,6 @@
HideHog(redHedgehogs[i].gear)
end
- -- place crates
- for i=1,table.getn(crates) do
- SpawnAmmoCrate(crates[i].x, crates[i].y, crates[i].name)
- end
- if tookPartInBattle then
- SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amWatermelon)
- else
- SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amSniperRifle)
- end
-
-- explosives
-- I wanted to use FindPlace but doesn't accept height values...
local x1 = 950
@@ -194,24 +182,56 @@
AddGear(3105, 1680, gtMine, 0, 0, 0, 0)
AddGear(3095, 1680, gtMine, 0, 0, 0, 0)
AddGear(3085, 1680, gtMine, 0, 0, 0, 0)
- AddGear(3075, 1680, gtMine, 0, 0, 0, 0)
-
- if tookPartInBattle then
- AddAnim(dialog01)
- else
- AddAnim(dialog02)
- end
+ AddGear(3075, 1680, gtMine, 0, 0, 0, 0)
+
WriteLnToConsole("CHECKPOINT IS "..checkPointReached)
if checkPointReached == 1 then
AddAmmo(hero.gear, amFirePunch, 3)
AddEvent(onCheckPoint1, {hero.gear}, checkPoint1, {hero.gear}, 0)
- AddEvent(onCheckPoint2, {hero.gear}, checkPoint2, {hero.gear}, 0)
+ AddEvent(onCheckPoint2, {hero.gear}, checkPoint2, {hero.gear}, 0)
+ AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0)
+ AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
+ if tookPartInBattle then
+ AddAnim(dialog01)
+ else
+ AddAnim(dialog02)
+ end
elseif checkPointReached == 2 then
- loadWeapons()
AddEvent(onCheckPoint2, {hero.gear}, checkPoint2, {hero.gear}, 0)
+ AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0)
+ AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
elseif checkPointReached == 3 then
+ AddEvent(onCheckPoint1, {hero.gear}, checkPoint1, {hero.gear}, 0)
+ AddEvent(onCheckPoint3, {hero.gear}, checkPoint3, {hero.gear}, 0)
+ AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
+ elseif checkPointReached == 4 then
+ AddEvent(onCheckPoint4, {hero.gear}, checkPoint4, {hero.gear}, 0)
+ elseif checkPointReached == 5 then
+ -- EMPTY
+ end
+ if checkPointReached ~= 1 then
loadWeapons()
- AddEvent(onCheckPoint1, {hero.gear}, checkPoint1, {hero.gear}, 0)
+ end
+
+ -- girders
+ if checkPointReached > 1 then
+ PlaceGirder(1580, 875, 4)
+ PlaceGirder(1800, 875, 4)
+ end
+
+ -- place crates
+ if checkPointReached < 2 then
+ SpawnAmmoCrate(girderCrate.x, girderCrate.y, girderCrate.name)
+ end
+ if checkPointReached < 5 then
+ SpawnAmmoCrate(eagleCrate.x, eagleCrate.y, eagleCrate.name)
+ end
+ SpawnAmmoCrate(ropeCrate.x, ropeCrate.y, ropeCrate.name)
+
+ if tookPartInBattle then
+ SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amWatermelon)
+ else
+ SpawnAmmoCrate(weaponCrate.x, weaponCrate.y, amSniperRifle)
end
SendHealthStatsOff()
@@ -285,7 +305,7 @@
end
function onDeviceCrates(gear)
- if not hero.dead and GetY(hero.gear)>1850 and GetX(hero.gear)>1340 then
+ if not hero.dead and GetY(hero.gear)>1850 and GetX(hero.gear)>1340 and GetX(hero.gear)<1640 then
return true
end
return false
@@ -318,8 +338,8 @@
function onCheckPoint1(gear)
-- before barrel jump
- if GetX(hero.gear) > 2850 and GetX(hero.gear) < 2945 and GetY(hero.gear) > 808 and GetY(hero.gear) < 852
- and not isHeroAtWrongPlace() then
+ if not hero.dead and GetX(hero.gear) > 2850 and GetX(hero.gear) < 2945
+ and GetY(hero.gear) > 808 and GetY(hero.gear) < 852 and not isHeroAtWrongPlace() then
return true
end
return false
@@ -327,14 +347,33 @@
function onCheckPoint2(gear)
-- before barrel jump
- if ((GetX(green2.gear) > 2850 and GetX(green2.gear) < 2945 and GetY(green2.gear) > 808 and GetY(green2.gear) < 852)
- or (GetX(green3.gear) > 2850 and GetX(green3.gear) < 2945 and GetY(green3.gear) > 808 and GetY(green3.gear) < 852))
+ if ((GetHealth(green2.gear) and GetX(green2.gear) > 2850 and GetX(green2.gear) < 2945 and GetY(green2.gear) > 808 and GetY(green2.gear) < 852)
+ or (GetHealth(green3.gear) and GetX(green3.gear) > 2850 and GetX(green3.gear) < 2945 and GetY(green3.gear) > 808 and GetY(green3.gear) < 852))
and not isHeroAtWrongPlace() then
return true
end
return false
end
+function onCheckPoint3(gear)
+ -- after barrel jump
+ if ((GetHealth(green2.gear) and GetY(green2.gear) > 1550 and GetX(green2.gear) < 3000 and StoppedGear(green2.gear))
+ or (GetHealth(green3.gear) and GetY(green3.gear) > 1550 and GetX(green3.gear) < 3000 and StoppedGear(green2.gear)))
+ and not isHeroAtWrongPlace() then
+ return true
+ end
+ return false
+end
+
+function onCheckPoint4(gear)
+ -- hero at crates
+ if not hero.dead and GetX(hero.gear) > 1288 and GetX(hero.gear) < 1420
+ and GetY(hero.gear) > 1840 and not isHeroAtWrongPlace() then
+ return true
+ end
+ return false
+end
+
-------------- ACTIONS ------------------
function heroDeath(gear)
@@ -407,17 +446,19 @@
end
function checkPoint1(gear)
- AnimCaption(hero.gear, loc("Checkpoint reached!"), 3000)
- SaveCampaignVar("Fruit02CheckPoint", 2)
- saveHogsPositions()
- saveWeapons()
+ saveCheckPoint(2)
end
function checkPoint2(gear)
- AnimCaption(hero.gear, loc("Checkpoint reached!"), 3000)
- SaveCampaignVar("Fruit02CheckPoint", 3)
- saveHogsPositions()
- saveWeapons()
+ saveCheckPoint(3)
+end
+
+function checkPoint3(gear)
+ saveCheckPoint(4)
+end
+
+function checkPoint4(gear)
+ saveCheckPoint(5)
end
-------------- ANIMATIONS ------------------
@@ -521,6 +562,7 @@
if positions[5] then
green3.x = tonumber(positions[5])
green3.y = tonumber(positions[6])
+ WriteLnToConsole("---------"..green3.y)
end
end
@@ -528,16 +570,15 @@
-- firepunch - gilder - deagle - watermelon - sniper
WriteLnToConsole("SAVE WEAPONS TRIGGERED: "..GetAmmoCount(hero.gear, amFirePunch)..GetAmmoCount(hero.gear, amGilder)..
GetAmmoCount(hero.gear, amDEagle)..GetAmmoCount(hero.gear, amWatermelon)..GetAmmoCount(hero.gear, amSniperRifle))
- SaveCampaignVar("HeroAmmo", GetAmmoCount(hero.gear, amFirePunch)..GetAmmoCount(hero.gear, amGilder)..
+ SaveCampaignVar("HeroAmmo", GetAmmoCount(hero.gear, amFirePunch)..GetAmmoCount(hero.gear, amGirder)..
GetAmmoCount(hero.gear, amDEagle)..GetAmmoCount(hero.gear, amWatermelon)..GetAmmoCount(hero.gear, amSniperRifle))
end
function loadWeapons()
local ammo = GetCampaignVar("HeroAmmo")
- WriteLnToConsole("LOAD WEAPONS "..ammo)
- WriteLnToConsole("LOAD WEAPONS "..ammo:sub(1,1))
+ WriteLnToConsole("GILDER "..tonumber(ammo:sub(2,2)))
AddAmmo(hero.gear, amFirePunch, tonumber(ammo:sub(1,1)))
- AddAmmo(hero.gear, amGilder, tonumber(ammo:sub(2,2)))
+ AddAmmo(hero.gear, amGirder, tonumber(ammo:sub(2,2)))
AddAmmo(hero.gear, amDEagle, tonumber(ammo:sub(3,3)))
AddAmmo(hero.gear, amWatermelon, tonumber(ammo:sub(4,4)))
AddAmmo(hero.gear, amSniperRifle, tonumber(ammo:sub(5,5)))
@@ -563,5 +604,16 @@
end
s = s:sub(2)
end
+ if first:len() > 0 then
+ table.insert(res, tonumber(first))
+ end
return res
end
+
+function saveCheckPoint(cpoint)
+ AnimCaption(hero.gear, loc("Checkpoint reached!"), 3000)
+ SaveCampaignVar("Fruit02CheckPoint", cpoint)
+ SaveCampaignVar("HeroHealth", GetHealth(hero.gear))
+ saveHogsPositions()
+ saveWeapons()
+end