--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua Thu Aug 15 05:37:31 2013 +0300
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/fruit02.lua Fri Aug 16 04:56:06 2013 +0300
@@ -16,19 +16,21 @@
local dialog01 = {}
local dialog02 = {}
local dialog03 = {}
+local dialog04 = {}
-- mission objectives
local goals = {
[dialog01] = {missionName, loc("Getting the Device"), loc("With the help of the other hogs search for the device").."|"..loc("Hog Solo has to reach the last crates"), 1, 4000},
- [dialog02] = {missionName, loc("Battle Starts Now!"), loc("You have choose to fight! Lead the Green Bananas to battle and try not to let them be killed"), 1, 4000},
- [dialog03] = {missionName, loc("Ready for Battle?"), loc("You have choose to flee... Unfortunately the only place where you can launch your saucer is in the most left side of the map"), 1, 4000},
+ [dialog02] = {missionName, loc("Getting the Device"), loc("Explore the tunnel with the other hogs and search for the device").."|"..loc("Hog Solo has to reach the last crates"), 1, 4000},
+ [dialog03] = {missionName, loc("Return to the Surface"), loc("Go to the surface!").."|"..loc("Attack Captain Lime before he attacks back"), 1, 4000},
+ [dialog04] = {missionName, loc("Return to the Surface"), loc("Go to the surface!").."|"..loc("Attack the assasins before they attack back"), 1, 4000},
}
-- crates types=[0:ammo,1:utility,2:health]
local crates = {
{type = 0, name = amDEagle, x = 1680, y = 1650},
{type = 0, name = amGirder, x = 1680, y = 1160},
- {type = 0, name = amWatermelon, x = 1360, y = 1870},
{type = 0, name = amRope, x = 1400, y = 1870},
}
+local weaponCrate = { x = 1360, y = 1870}
-- hogs
local hero = {}
local green1 = {}
@@ -114,10 +116,12 @@
end
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
+ AddEvent(onDeviceCrates, {hero.gear}, deviceCrates, {hero.gear}, 0)
-- Hog Solo and GB weapons
AddAmmo(hero.gear, amFirePunch, 3)
AddAmmo(hero.gear, amSwitch, 100)
+ AddAmmo(hero.gear, amTeleport, 100)
-- Assasins weapons
AddAmmo(redHedgehogs[1].gear, amBazooka, 6)
AddAmmo(redHedgehogs[1].gear, amGrenade, 6)
@@ -129,6 +133,11 @@
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...
@@ -172,8 +181,19 @@
end
function onNewTurn()
- if CurrentHedgehog == green1.gear then
+ WriteLnToConsole("TURNS "..TotalRounds.." and hog: "..CurrentHedgehog)
+ if not inBattle and CurrentHedgehog == green1.gear then
TurnTimeLeft = 0
+ elseif CurrentHedgehog == green2.gear or CurrentHedgehog == green3.gear then
+ if inBattle then
+ SwitchHog(hero.gear)
+ TurnTimeLeft = 20000
+ else
+ TurnTimeLeft = 0
+ end
+ elseif inBattle then
+ WriteLnToConsole("IN BATTLE")
+ TurnTimeLeft = 20000
elseif not inBattle then
TurnTimeLeft = -1
end
@@ -199,6 +219,7 @@
SetAmmo(amGirder, 0, 0, 0, 3)
SetAmmo(amRope, 0, 0, 0, 1)
SetAmmo(amWatermelon, 0, 0, 0, 1)
+ SetAmmo(amSniperRifle, 0, 0, 0, 1)
end
function onPrecise()
@@ -223,6 +244,13 @@
return false
end
+function onSurface(gear)
+ if not hero.dead and GetY(hero.gear)<850 and StoppedGear(hero.gear) then
+ return true
+ end
+ return false
+end
+
-------------- ACTIONS ------------------
function heroDeath(gear)
@@ -230,11 +258,24 @@
end
function deviceCrates(gear)
+ TurnTimeLeft = 0
if not tookPartInBattle then
AddAnim(dialog03)
else
-
+ for i=1,table.getn(redHedgehogs) do
+ RestoreHog(redHedgehogs[i].gear)
+ end
+ AddAnim(dialog04)
end
+ AddAmmo(hero.gear, amSwitch, 0)
+ AddEvent(onSurface, {hero.gear}, surface, {hero.gear}, 0)
+end
+
+function surface(gear)
+ -- TODO: after going to the surface first round must be played by the player
+ AnimSwitchHog(hero.gear)
+ TurnTimeLeft = 20000
+ inBattle = true
end
-------------- ANIMATIONS ------------------
@@ -243,6 +284,7 @@
if goals[anim] ~= nil then
ShowMission(unpack(goals[anim]))
end
+ TurnTimeLeft = 0
end
function AnimationSetup()
@@ -273,11 +315,24 @@
table.insert(dialog02, {func = AnimSwitchHog, args = {hero.gear}})
-- DIALOG03 - At crates, hero learns that Captain Lime is bad
AddSkipFunction(dialog03, Skipanim, {dialog03})
+ table.insert(dialog03, {func = AnimWait, args = {hero.gear, 4000}})
+ table.insert(dialog03, {func = FollowGear, args = {hero.gear}})
table.insert(dialog03, {func = AnimSay, args = {hero.gear, loc("Hoo Ray! I've found it, now I have to get back to Captain Lime!"), SAY_SAY, 4000}})
table.insert(dialog03, {func = AnimWait, args = {green1.gear, 4000}})
- table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("This Hog Solo is so naive! I am gonna shout him when he returns and keep his device for me!"), SAY_THINK, 4000}})
- table.insert(dialog03, {func = AnimSwitchHog, args = {hero.gear}})
+ table.insert(dialog03, {func = AnimSay, args = {green1.gear, loc("This Hog Solo is so naive! I am gonna shoot him when he returns and keep his device for me!"), SAY_THINK, 4000}})
+ table.insert(dialog03, {func = goToThesurface, args = {hero.gear}})
+ -- DIALOG04 - At crates, hero learns about the assasins ambush
+ AddSkipFunction(dialog04, Skipanim, {dialog04})
+ table.insert(dialog04, {func = AnimWait, args = {hero.gear, 4000}})
+ table.insert(dialog04, {func = FollowGear, args = {hero.gear}})
+ table.insert(dialog04, {func = AnimSay, args = {hero.gear, loc("Hoo Ray! I've found it, now I have to get back to Captain Lime!"), SAY_SAY, 4000}})
+ table.insert(dialog04, {func = AnimWait, args = {redHedgehogs[1].gear, 4000}})
+ table.insert(dialog04, {func = AnimSay, args = {redHedgehogs[1].gear, loc("We have spotted the enemy! We'll attack when the enemies start gathering!"), SAY_THINK, 4000}})
+ table.insert(dialog04, {func = goToThesurface, args = {hero.gear}})
end
------------- OTHER FUNCTIONS ---------------
+function goToThesurface()
+ TurnTimeLeft = 0
+end