--- a/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon01.lua Tue Jul 09 18:37:36 2013 +0300
+++ b/share/hedgewars/Data/Missions/Campaign/A_Space_Adventure/moon01.lua Tue Jul 09 19:54:26 2013 +0300
@@ -8,11 +8,11 @@
-- there is and rescue them.
-- TODO
--- Fix some glitches when gaining control on animations
+-- Fix some glitches when gaining control on animations, on skip I get control of the talking hog
-- Round time after check point 2
-- Check if enemy weapons are good
--- Create event to end game if professor killed
--- Continue with the rest :P
+-- Stats
+-- check points
HedgewarsScriptLoad("/Scripts/Locale.lua")
HedgewarsScriptLoad("/Scripts/Animate.lua")
@@ -22,17 +22,19 @@
local campaignName = loc("A Space Adventure")
local missionName = loc("Moon, stop for fuels!")
local weaponsAcquired = false
-local battleZone = false
+local battleZoneReached = false
local checkPointReached = 1 -- 1 is start of the game
-- dialogs
local dialog01 = {}
local dialog02 = {}
local dialog03 = {}
+local dialog04 = {}
-- mission objectives
local goals = {
[dialog01] = {missionName, loc("Getting ready"), loc("Go to the upper platform and get the weapons in the crates!"), 1, 4500},
[dialog02] = {missionName, loc("Prepare to fight"), loc("Go down and save these PAoTH hogs!"), 1, 5000},
- [dialog03] = {missionName, loc("The fight begins!"), loc("Neutralize your enemies and be careful!"), 1, 5000}
+ [dialog03] = {missionName, loc("The fight begins!"), loc("Neutralize your enemies and be careful!"), 1, 5000},
+ [dialog04] = dialog03
}
-- crates
local weaponsY = 100
@@ -77,6 +79,8 @@
professor.name = "Pr.Hogevil"
professor.x = 3710
professor.y = 1650
+professor.dead = false
+professor.health = 100
minion1.name = "Minion"
minion1.x = 2460
minion1.y = 1450
@@ -179,7 +183,9 @@
-- check for death has to go first
AddEvent(onHeroDeath, {hero.gear}, heroDeath, {hero.gear}, 0)
+ AddEvent(onProfessorDeath, {professor.gear}, professorDeath, {professor.gear}, 0)
AddEvent(onBattleZone, {hero.gear}, battleZone, {hero.gear}, 0)
+ AddEvent(onProfessorHit, {professor.gear}, professorHit, {professor.gear}, 1)
if checkPointReached == 1 then
AddAmmo(hero.gear, amRope, 2)
@@ -226,11 +232,20 @@
function onNewTurn()
WriteLnToConsole("ON NEW TURN")
WriteLnToConsole("HOG IS "..CurrentHedgehog.." minion 1 is "..minion1.gear)
+
+ if weaponsAcquired then
+ WriteLnToConsole("weapons acq+++")
+ end
+
+ if battleZoneReached then
+ WriteLnToConsole("battleZone acq+++")
+ end
- if not weaponsAcquired and not battleZone and CurrentHedgehog ~= hero.gear then
+ -- rounds start if hero got his weapons or got near the enemies
+ if not weaponsAcquired and not battleZoneReached and CurrentHedgehog ~= hero.gear then
WriteLnToConsole("TURN CASE 1")
TurnTimeLeft = 0
- elseif not weaponsAcquired and not battleZone and CurrentHedgehog == hero.gear then
+ elseif not weaponsAcquired and not battleZoneReached and CurrentHedgehog == hero.gear then
WriteLnToConsole("TURN CASE 2")
TurnTimeLeft = -1
elseif CurrentHedgehog == paoth1.gear or CurrentHedgehog == paoth2.gear
@@ -238,6 +253,7 @@
WriteLnToConsole("TURN CASE 3")
TurnTimeLeft = 0
elseif CurrentHedgehog == professor.gear then
+ WriteLnToConsole("TURN CASE 4")
AnimSwitchHog(hero.gear)
TurnTimeLeft = 0
end
@@ -253,6 +269,8 @@
function onGearDelete(gear)
if gear == hero.gear then
hero.dead = true
+ elseif gear == professor.dead then
+ professor.dead = true
end
end
@@ -275,6 +293,23 @@
function onBattleZone(gear)
if not hero.dead and GetX(gear) > 1900 and StoppedGear(gear) then
+ WriteLnToConsole("ON BATTLE ZONE!!!")
+ return true
+ end
+ return false
+end
+
+function onProfessorHit(gear)
+ -- TODO NOT TALK ON HERO'S TURN...
+ if not professor.dead and GetHealth(gear) < professor.health and CurrentHedgehog ~= hero.gear then
+ professor.health = GetHealth(gear)
+ return true
+ end
+ return false
+end
+
+function onProfessorDeath(gear)
+ if professor.dead then
return true
end
return false
@@ -292,14 +327,29 @@
end
function heroDeath(gear)
-
+ -- do stats stuff here
EndGame()
end
function battleZone(gear)
TurnTimeLeft = 0
- battleZone = true
- AddAnim(dialog03)
+ battleZoneReached = true
+ if weaponsAqcuired then
+ AddAnim(dialog04)
+ else
+ AddAnim(dialog03)
+ end
+end
+
+function professorHit(gear)
+ if currentHedgehog ~= hero.gear then
+ AnimSay(professor.gear,loc("Don't hit me you fools!"), SAY_SHOUT, 2000)
+ end
+end
+
+function professorDeath(gear)
+ -- do stats stuff here
+ EndGame()
end
-------------- ANIMATIONS ------------------
@@ -310,6 +360,9 @@
end
if anim == dialog03 then
startCombat()
+ else
+ --TODO check if this is ok
+ AnimSwitchHog(hero.gear)
end
end
@@ -342,12 +395,21 @@
table.insert(dialog03, {func = AnimSay, args = {professor.gear, loc("Prepare for battle!"), SAY_SHOUT, 4000}})
table.insert(dialog03, {func = AnimSay, args = {hero.gear, loc("Oops, I've been spotted and I have no weapons! I am doomed!"), SAY_THINK, 4000}})
table.insert(dialog03, {func = startCombat, args = {hero.gear}})
+ -- DIALOG 04 - Hero spotted and *HAS* weapons
+ AddSkipFunction(dialog04, Skipanim, {dialog04})
+ table.insert(dialog04, {func = AnimCaption, args = {hero.gear, loc("Get ready to fight!"), 4000}})
+ table.insert(dialog04, {func = AnimSay, args = {minion1.gear, loc("Look boss! There is the target!"), SAY_SHOUT, 4000}})
+ table.insert(dialog04, {func = AnimSay, args = {professor.gear, loc("Prepare for battle!"), SAY_SHOUT, 4000}})
+ table.insert(dialog04, {func = AnimSay, args = {hero.gear, loc("Here we go!"), SAY_THINK, 4000}})
+ table.insert(dialog04, {func = startCombat, args = {hero.gear}})
end
------------------- custom "animation" functions --------------------------
function startCombat()
-- use this so guard2 will gain control
+ HealthCaseProb = 100
+ HealthCaseAmount = 50
AnimSwitchHog(minion3.gear)
TurnTimeLeft = 0
end