--- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/journey.lua Mon Jul 01 22:28:42 2013 +0300
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,1077 +0,0 @@
-HedgewarsScriptLoad("/Scripts/Locale.lua")
-HedgewarsScriptLoad("/Scripts/Animate.lua")
-
---///////////////////////////////CONSTANTS///////////////////////////
-
-choiceAccepted = 1
-choiceRefused = 2
-choiceAttacked = 3
-
-endStage = 1
-
-cannibalNum = 8
-cannibalNames = {loc("John"), loc("Flesh for Brainz"), loc("Eye Chewer"), loc("Torn Muscle"),
- loc("Nom-Nom"), loc("Vedgies"), loc("Brain Blower"), loc("Gorkij")}
-cannibalPos = {{2471, 1174}, {939, 1019}, {1953, 902}, {3055, 1041},
- {1121, 729}, {1150, 718}, {1149, 680}, {1161, 773}}
-
-startLeaksPosDuo = {3572, 1426}
-startEventXDuo = 3300
-startDensePosDuo = {3454, 1471}
-startCyborgPosDuo = {3202, 1307}
-midDensePosDuo = {1464, 1410}
-midCyborgPosDuo = {1264, 1390}
-
---///////////////////////////////VARIABLES///////////////////////////
-
-m2Choice = 0
-m2DenseDead = 0
-m2RamonDead = 0
-m2SpikyDead = 0
-
-TurnsLeft = 0
-stage = 0
-
---cyborgHidden = false
---princessHidden = false
-blowTaken = false
-fireTaken = false
-gravityTaken = false
-sniperTaken = false
-girderTaken = false
-girder1Taken = false
-girder2Taken = false
-leaksDead = false
-denseDead = false
-princessDead = false
-cyborgDead = false
-cannibalDead = {}
-hedgeHidden = {}
-
-startAnim = {}
-startAnimAD = {}
-startAnimAL = {}
-startAnimRL = {}
-
-pastFlowerAnimAL = {}
-pastFlowerAnimRL = {}
-pastFlowerAnim = {}
-
-outPitAnimAL = {}
-outPitAnimRL = {}
-outPitAnim = {}
-
-midAnim = {}
-midAnimAD = {}
-
-failAnim = {}
-failAnimAD = {}
-
-endAnim = {}
-endAnimAD = {}
-endAnimAL = {}
-endAnimRL = {}
-
-endFailAnim = {}
-endFailAnimAD = {}
-
-winAnim = {}
-winAnimAD = {}
-
---/////////////////////////Animation Functions///////////////////////
-function AfterMidFailAnim()
- ParseCommand("teamgone " .. loc("Natives"))
- TurnTimeLeft = 0
-end
-
-function AfterMidAnimAlone()
- SetupCourse()
- for i = 5, 8 do
- RestoreHedge(cannibals[i])
- AnimSetGearPosition(cannibals[i], unpack(cannibalPos[i]))
- end
-
- AddAmmo(cannibals[5], amDEagle, 0)
-
- AddEvent(CheckGirderTaken, {}, DoGirderTaken, {}, 0)
- AddEvent(CheckOnFirstGirder, {}, DoOnFirstGirder, {}, 0)
- AddEvent(CheckTookSniper, {}, DoTookSniper, {}, 0)
- AddEvent(CheckFailedCourse, {}, DoFailedCourse, {}, 0)
- SetGearMessage(leaks, 0)
- TurnsLeft = 12
- TurnTimeLeft = TurnTime
- ShowMission(loc("The Journey Back"), loc("Collateral Damage"), loc("Save the princess by collecting the crate in under 12 turns!"), 0, 6000)
- -----------------------///////////////------------
- --AnimSetGearPosition(leaks, 417, 1800)
-end
-
-function SkipEndAnimAlone()
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- AnimSetGearPosition(cyborg, 437, 1700)
- AnimSetGearPosition(princess, 519, 1722)
-end
-
-function SkipEndAnimDuo()
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- if princessHidden then
- RestoreHog(princess)
- princessHidden = false
- end
- AnimSetGearPosition(cyborg, 437, 1700)
- AnimSetGearPosition(princess, 519, 1722)
- AnimSetGearPosition(leaks, 763, 1760)
- AnimSetGearPosition(dense, 835, 1519)
- HogTurnLeft(leaks, true)
- HogTurnLeft(dense, true)
-end
-
-function AfterEndAnimAlone()
- stage = endStage
- SwitchHog(leaks)
- SetGearMessage(leaks, 0)
- TurnTimeLeft = -1
- ShowMission(loc("The Journey Back"), loc("Collateral Damage II"), loc("Save Fell From Heaven!"), 1, 4000)
- AddEvent(CheckLost, {}, DoLost, {}, 0)
- AddEvent(CheckWon, {}, DoWon, {}, 0)
- RemoveEventFunc(CheckFailedCourse)
-end
-
-function AfterEndAnimDuo()
- stage = endStage
- SwitchHog(leaks)
- SetGearMessage(leaks, 0)
- SetGearMessage(dense, 0)
- TurnTimeLeft = -1
- ShowMission(loc("The Journey Back"), loc("Collateral Damage II"), loc("Save Fell From Heaven!"), 1, 4000)
- AddEvent(CheckLost, {}, DoLost, {}, 0)
- AddEvent(CheckWon, {}, DoWon, {}, 0)
-end
-
-function SkipMidAnimAlone()
- AnimSetGearPosition(leaks, 2656, 1842)
- AnimSwitchHog(leaks)
- SetInputMask(0xFFFFFFFF)
- AnimWait(dense, 1)
- AddFunction({func = HideHedge, args = {princess}})
- AddFunction({func = HideHedge, args = {cyborg}})
-end
-
-function AfterStartAnim()
- SetGearMessage(leaks, 0)
- TurnTimeLeft = TurnTime
- local goal = loc("Get the crate on the other side of the island!|")
- local hint = loc("Hint: you might want to stay out of sight and take all the crates...|")
- local stuck = loc("If you get stuck, use your Desert Eagle or restart the mission!|")
- local conds = loc("Leaks A Lot must survive!")
- if m2DenseDead == 0 then
- conds = loc("Your hogs must survive!")
- end
- ShowMission(loc("The Journey Back"), loc("Adventurous"), goal .. hint .. stuck .. conds, 0, 7000)
-end
-
-function SkipStartAnim()
- AnimSwitchHog(leaks)
-end
-
-function PlaceCratesDuo()
- SpawnAmmoCrate(3090, 827, amBaseballBat)
- girderCrate1 = SpawnUtilityCrate(2466, 1814, amGirder)
- girderCrate2 = SpawnUtilityCrate(2630, 1278, amGirder)
- SpawnUtilityCrate(2422, 1810, amParachute)
- SpawnUtilityCrate(3157, 1009, amLowGravity)
- sniperCrate = SpawnAmmoCrate(784, 1715, amSniperRifle)
-end
-
-function PlaceMinesDuo()
- SetTimer(AddGear(2920, 1448, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2985, 1338, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(3005, 1302, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(3030, 1270, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(3046, 1257, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2954, 1400, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2967, 1385, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2849, 1449, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2811, 1436, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2773, 1411, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2732, 1390, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2700, 1362, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2642, 1321, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2172, 1417, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2190, 1363, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2219, 1332, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1201, 1207, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1247, 1205, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1295, 1212, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1356, 1209, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1416, 1201, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1466, 1201, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1678, 1198, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1738, 1198, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1796, 1198, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1637, 1217, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1519, 1213, gtMine, 0, 0, 0, 0), 5000)
-end
-
-function AfterPastFlowerAnim()
- PlaceMinesDuo()
- AddEvent(CheckDensePit, {}, DoDensePit, {}, 0)
- AddEvent(CheckTookGirder1, {}, DoTookGirder1, {}, 0)
- AddEvent(CheckTookGirder2, {}, DoTookGirder2, {}, 0)
- SetGearMessage(leaks, 0)
- SetGearMessage(dense, 0)
- TurnTimeLeft = 0
- ShowMission(loc("The Journey Back"), loc("The Savior"), loc("Get Dense Cloud out of the pit!"), 1, 5000)
-end
-
-function SkipPastFlowerAnim()
- AnimSetGearPosition(dense, 2656, 1842)
- AnimSwitchHog(dense)
- AnimWait(dense, 1)
- AddFunction({func = HideHedge, args = {cyborg}})
-end
-
-function AfterOutPitAnim()
- SetupCourseDuo()
- RestoreHedge(cannibals[5])
- AddAmmo(cannibals[5], amDEagle, 0)
- HideHedge(cannibals[5])
- AddEvent(CheckTookFire, {}, DoTookFire, {}, 0)
- SetGearMessage(leaks, 0)
- SetGearMessage(dense, 0)
- TurnTimeLeft = 0
- ShowMission(loc("The Journey Back"), loc("They never learn"), loc("Free Dense Cloud and continue the mission!"), 1, 5000)
-end
-
-function SkipOutPitAnim()
- AnimSetGearPosition(dense, unpack(midDensePosDuo))
- AnimSwitchHog(dense)
- AnimWait(dense, 1)
- AddFunction({func = HideHedge, args = {cyborg}})
-end
-
-function RestoreCyborg(x, y, xx, yy)
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- AnimOutOfNowhere(cyborg, x, y)
- AnimOutOfNowhere(princess, xx, yy)
- HogTurnLeft(princess, false)
- return true
-end
-
-function RestoreCyborgOnly(x, y)
- RestoreHedge(cyborg)
- SetState(cyborg, 0)
- AnimOutOfNowhere(cyborg, x, y)
- return true
-end
-
-function TargetPrincess()
- ParseCommand("setweap " .. string.char(amDEagle))
- SetGearMessage(cyborg, gmUp)
- return true
-end
-
-function HideCyborg()
- HideHedge(cyborg)
- HideHedge(princess)
-end
-
-function HideCyborgOnly()
- HideHedge(cyborg)
-end
-
-function SetupKillRoom()
- PlaceGirder(2342, 1814, 2)
- PlaceGirder(2294, 1783, 0)
- PlaceGirder(2245, 1814, 2)
-end
-
-function SetupCourseDuo()
- PlaceGirder(1083, 1152, 6)
- PlaceGirder(1087, 1150, 6)
- PlaceGirder(1133, 1155, 0)
- PlaceGirder(1135, 1152, 0)
- PlaceGirder(1135, 1078, 0)
- PlaceGirder(1087, 1016, 2)
- PlaceGirder(1018, 921, 5)
- PlaceGirder(1016, 921, 5)
- PlaceGirder(962, 782, 6)
- PlaceGirder(962, 662, 2)
- PlaceGirder(962, 661, 2)
- PlaceGirder(962, 650, 2)
- PlaceGirder(962, 630, 2)
- PlaceGirder(1033, 649, 0)
- PlaceGirder(952, 650, 0)
-
- fireCrate = SpawnAmmoCrate(1846, 1100, amFirePunch)
- SpawnUtilityCrate(1900, 1100, amPickHammer)
- SpawnAmmoCrate(950, 674, amDynamite)
- SpawnUtilityCrate(994, 825, amRope)
- SpawnUtilityCrate(570, 1357, amLowGravity)
-end
-
-function DumpMines()
- SetTimer(AddGear(2261, 1835, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2280, 1831, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2272, 1809, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2290, 1815, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2278, 1815, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2307, 1811, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2286, 1820, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2309, 1813, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2303, 1822, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2317, 1827, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2312, 1816, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2316, 1812, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2307, 1802, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2276, 1818, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2284, 1816, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2292, 1811, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2295, 1814, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2306, 1811, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2292, 1815, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2314, 1815, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2286, 1813, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2275, 1813, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2269, 1814, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2273, 1812, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2300, 1808, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2322, 1812, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2323, 1813, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2311, 1811, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2303, 1809, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2287, 1808, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2282, 1808, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2277, 1809, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2296, 1809, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(2314, 1818, gtMine, 0, 0, 0, 0), 5000)
-end
-
-function SetupAnimRefusedDied()
- SetupAnimAcceptedDied()
- table.insert(startAnim, {func = AnimSay, args = {leaks, loc("I just wonder where Ramon and Spiky disappeared..."), SAY_THINK, 6000}})
-end
-
-function SetupAnimAttacked()
- SetupAnimAcceptedDied()
- startAnim = {}
- table.insert(startAnim, {func = AnimWait, args = {leaks, 3000}})
- table.insert(startAnim, {func = AnimTurn, args = {leaks, "Left"}})
- table.insert(startAnim, {func = AnimSay, args = {leaks, loc("I wonder where Dense Cloud is..."), SAY_THINK, 4000}})
- table.insert(startAnim, {func = AnimSay, args = {leaks, loc("He must be in the village already."), SAY_THINK, 4000}})
- table.insert(startAnim, {func = AnimSay, args = {leaks, loc("I'd better get going myself."), SAY_THINK, 4000}})
-
- midAnim = {}
- table.insert(midAnim, {func = AnimWait, args = {leaks, 500}})
- table.insert(midAnim, {func = AnimCustomFunction, swh = false, args = {leaks, RestoreCyborg, {1300, 1200, 1390, 1200}}})
- table.insert(midAnim, {func = AnimSwitchHog, args = {cyborg}})
- table.insert(midAnim, {func = AnimCustomFunction, args = {cyborg, TargetPrincess, {}}})
- table.insert(midAnim, {func = AnimSay, args = {cyborg, loc("Welcome, Leaks A Lot!"), SAY_SAY, 3000}})
- table.insert(midAnim, {func = AnimSay, args = {cyborg, loc("I want to play a game..."), SAY_SAY, 3000}})
- table.insert(midAnim, {func = AnimSay, args = {princess, loc("Help me, please!!!"), SAY_SHOUT, 3000}})
- table.insert(midAnim, {func = AnimSay, args = {cyborg, loc("If you can get that crate fast enough, your beloved \"princess\" may go free."), SAY_SAY, 7000}})
- table.insert(midAnim, {func = AnimSay, args = {cyborg, loc("However, if you fail to do so, she dies a most violent death! Muahahaha!"), SAY_SAY, 8000}})
- table.insert(midAnim, {func = AnimSay, args = {cyborg, loc("Good luck...or else!"), SAY_SAY, 4000}})
- table.insert(midAnim, {func = AnimTeleportGear, args = {leaks, 2656, 1842}})
- table.insert(midAnim, {func = AnimCustomFunction, args = {cyborg, HideCyborg, {}}, swh = false})
- table.insert(midAnim, {func = AnimSay, args = {leaks, loc("Hey! This is cheating!"), SAY_SHOUT, 4000}})
- AddSkipFunction(midAnim, SkipMidAnimAlone, {})
-end
-
-function SetupAnimAcceptedDied()
- table.insert(startAnimAD, {func = AnimWait, args = {leaks, 3000}})
- table.insert(startAnimAD, {func = AnimTurn, args = {leaks, "Left"}})
- table.insert(startAnimAD, {func = AnimSay, args = {leaks, loc("I need to get to the other side of this island, fast!"), SAY_THINK, 5000}})
- table.insert(startAnimAD, {func = AnimSay, args = {leaks, loc("With Dense Cloud on the land of shadows, I'm the village's only hope..."), SAY_THINK, 7000}})
-
- table.insert(midAnimAD, {func = AnimWait, args = {leaks, 500}})
- table.insert(midAnimAD, {func = AnimCustomFunction, swh = false, args = {leaks, RestoreCyborg, {1300, 1200, 1390, 1200}}})
- table.insert(midAnimAD, {func = AnimSwitchHog, args = {cyborg}})
- table.insert(midAnimAD, {func = AnimCustomFunction, args = {cyborg, TargetPrincess, {}}})
- table.insert(midAnimAD, {func = AnimSay, args = {cyborg, loc("Welcome, Leaks A Lot!"), SAY_SAY, 3000}})
- table.insert(midAnimAD, {func = AnimSay, args = {cyborg, loc("I want to play a game..."), SAY_SAY, 3000}})
- table.insert(midAnimAD, {func = AnimSay, args = {princess, loc("Help me, please!!!"), SAY_SHOUT, 3000}})
- table.insert(midAnimAD, {func = AnimSay, args = {cyborg, loc("If you can get that crate fast enough, your beloved \"princess\" may go free."), SAY_SAY, 7000}})
- table.insert(midAnimAD, {func = AnimSay, args = {cyborg, loc("However, if you fail to do so, she dies a most violent death, just like your friend! Muahahaha!"), SAY_SAY, 8000}})
- table.insert(midAnimAD, {func = AnimSay, args = {cyborg, loc("Good luck...or else!"), SAY_SAY, 4000}})
- table.insert(midAnimAD, {func = AnimTeleportGear, args = {leaks, 2656, 1842}})
- table.insert(midAnimAD, {func = AnimCustomFunction, args = {cyborg, HideCyborg, {}}, swh = false})
- table.insert(midAnimAD, {func = AnimSay, args = {leaks, loc("Hey! This is cheating!"), SAY_SHOUT, 4000}})
- AddSkipFunction(midAnimAD, SkipMidAnimAlone, {})
-
- table.insert(failAnimAD, {func = AnimCustomFunction, swh = false, args = {leaks, RestoreCyborg, {2299, 1687, 2294, 1841}}})
- table.insert(failAnimAD, {func = AnimTeleportGear, args = {leaks, 2090, 1841}})
- table.insert(failAnimAD, {func = AnimCustomFunction, swh = false, args = {cyborg, SetupKillRoom, {}}})
- table.insert(failAnimAD, {func = AnimTurn, swh = false, args = {cyborg, "Left"}})
- table.insert(failAnimAD, {func = AnimTurn, swh = false, args = {princess, "Left"}})
- table.insert(failAnimAD, {func = AnimTurn, swh = false, args = {leaks, "Right"}})
- table.insert(failAnimAD, {func = AnimWait, args = {cyborg, 1000}})
- table.insert(failAnimAD, {func = AnimSay, args = {cyborg, loc("You have failed to complete your task, young one!"), SAY_SAY, 6000}})
- table.insert(failAnimAD, {func = AnimSay, args = {cyborg, loc("It's time you learned that your actions have consequences!"), SAY_SAY, 7000}})
- table.insert(failAnimAD, {func = AnimSay, args = {princess, loc("No! Please, help me!"), SAY_SAY, 4000}})
- table.insert(failAnimAD, {func = AnimSwitchHog, args = {cyborg}})
- table.insert(failAnimAD, {func = AnimCustomFunction, args = {cyborg, DumpMines, {}}})
- table.insert(failAnimAD, {func = AnimCustomFunction, args = {cyborg, KillPrincess, {}}})
- table.insert(failAnimAD, {func = AnimWait, args = {cyborg, 12000}})
- table.insert(failAnimAD, {func = AnimSay, args = {leaks, loc("No! What have I done?! What have YOU done?!"), SAY_SHOUT, 6000}})
-
- table.insert(endAnimAD, {func = AnimCustomFunction, swh = false, args = {leaks, RestoreCyborg, {437, 1700, 519, 1722}}})
- table.insert(endAnimAD, {func = AnimTurn, swh = false, args = {cyborg, "Right"}})
- table.insert(endAnimAD, {func = AnimTurn, swh = false, args = {princess, "Right"}})
- table.insert(endAnimAD, {func = AnimSay, args = {princess, loc("Help me, Leaks!"), SAY_SHOUT, 3000}})
- table.insert(endAnimAD, {func = AnimSay, args = {leaks, loc("But you said you'd let her go!"), SAY_SHOUT, 5000}})
- table.insert(endAnimAD, {func = AnimSay, args = {cyborg, loc("And you believed me? Oh, god, that's cute!"), SAY_SHOUT, 7000}})
- table.insert(endAnimAD, {func = AnimSay, args = {leaks, loc("I won't let you kill her!"), SAY_SHOUT, 4000}})
- AddSkipFunction(endAnimAD, SkipEndAnimAlone, {})
-
- table.insert(endFailAnim, {func = AnimCaption, args = {leaks, loc("Leaks A Lot, depressed for killing his loved one, failed to save the village..."), 3000}})
-
- table.insert(winAnimAD, {func = AnimCustomFunction, args = {princess, CondNeedToTurn, {leaks, princess}}})
- table.insert(winAnimAD, {func = AnimSay, args = {princess, loc("Thank you, oh, thank you, Leaks A Lot!"), SAY_SAY, 5000}})
- table.insert(winAnimAD, {func = AnimSay, args = {princess, loc("How can I ever repay you for saving my life?"), SAY_SAY, 6000}})
- table.insert(winAnimAD, {func = AnimSay, args = {leaks, loc("There's nothing more satisfying for me than seeing you share your beauty with the world every morning, my princess!"), SAY_SAY, 10000}})
- table.insert(winAnimAD, {func = AnimSay, args = {leaks, loc("Let's go home!"), SAY_SAY, 3000}})
- table.insert(winAnimAD, {func = AnimCaption, args = {leaks, loc("And so they discovered that cyborgs weren't invulnerable..."), 2000}})
-
- startAnim = startAnimAD
- midAnim = midAnimAD
- failAnim = failAnimAD
- endAnim = endAnimAD
- endFailAnim = endFailAnimAD
- winAnim = winAnimAD
-end
-
-function SetupAnimAcceptedLived()
- table.insert(startAnimAL, {func = AnimWait, args = {leaks, 3000}})
- table.insert(startAnimAL, {func = AnimCustomFunction, args = {dense, CondNeedToTurn, {leaks, dense}}})
- table.insert(startAnimAL, {func = AnimSay, args = {leaks, loc("All right, we just need to get to the other side of the island!"), SAY_SAY, 8000}})
- table.insert(startAnimAL, {func = AnimSay, args = {dense, loc("We have no time to waste..."), SAY_SAY, 4000}})
- table.insert(startAnimAL, {func = AnimSwitchHog, args = {leaks}})
- AddSkipFunction(startAnimAL, SkipStartAnim, {})
-
- table.insert(pastFlowerAnimAL, {func = AnimCustomFunction, args = {dense, RestoreCyborgOnly, {unpack(startCyborgPosDuo)}}, swh = false})
- table.insert(pastFlowerAnimAL, {func = AnimTurn, args = {cyborg, "Right"}})
- table.insert(pastFlowerAnimAL, {func = AnimSay, args = {cyborg, loc("Well, well! Isn't that the cutest thing you've ever seen?"), SAY_SAY, 7000}})
- table.insert(pastFlowerAnimAL, {func = AnimSay, args = {cyborg, loc("Two little hogs cooperating, getting past obstacles..."), SAY_SAY, 7000}})
- table.insert(pastFlowerAnimAL, {func = AnimSay, args = {cyborg, loc("Let me test your skills a little, will you?"), SAY_SAY, 6000}})
- table.insert(pastFlowerAnimAL, {func = AnimTeleportGear, args = {cyborg, 2456, 1842}})
- table.insert(pastFlowerAnimAL, {func = AnimTeleportGear, args = {dense, 2656, 1842}})
- table.insert(pastFlowerAnimAL, {func = AnimCustomFunction, args = {dense, CondNeedToTurn, {cyborg, dense}}})
- table.insert(pastFlowerAnimAL, {func = AnimSay, args = {dense, loc("Why are you doing this?"), SAY_SAY, 4000}})
- table.insert(pastFlowerAnimAL, {func = AnimSay, args = {cyborg, loc("To help you, of course!"), SAY_SAY, 4000}})
- table.insert(pastFlowerAnimAL, {func = AnimSwitchHog, args = {dense}})
- table.insert(pastFlowerAnimAL, {func = AnimDisappear, swh = false, args = {cyborg, 3781, 1583}})
- table.insert(pastFlowerAnimAL, {func = AnimCustomFunction, swh = false, args = {cyborg, HideCyborgOnly, {}}})
- AddSkipFunction(pastFlowerAnimAL, SkipPastFlowerAnim, {})
-
- table.insert(outPitAnimAL, {func = AnimCustomFunction, args = {dense, RestoreCyborgOnly, {unpack(midCyborgPosDuo)}}, swh = false})
- table.insert(outPitAnimAL, {func = AnimTurn, args = {cyborg, "Right"}})
- table.insert(outPitAnimAL, {func = AnimTeleportGear, args = {dense, unpack(midDensePosDuo)}})
- table.insert(outPitAnimAL, {func = AnimTurn, args = {dense, "Left"}})
- table.insert(outPitAnimAL, {func = AnimSay, args = {dense, loc("OH, COME ON!"), SAY_SHOUT, 3000}})
- table.insert(outPitAnimAL, {func = AnimSay, args = {cyborg, loc("Let's see what your comrade does now!"), SAY_SAY, 5000}})
- table.insert(outPitAnimAL, {func = AnimSwitchHog, args = {dense}})
- table.insert(outPitAnimAL, {func = AnimDisappear, swh = false, args = {cyborg, 3781, 1583}})
- table.insert(outPitAnimAL, {func = AnimCustomFunction, swh = false, args = {cyborg, HideCyborgOnly, {}}})
- AddSkipFunction(outPitAnimAL, SkipOutPitAnim, {})
-
- table.insert(endAnim, {func = AnimCustomFunction, swh = false, args = {leaks, RestoreCyborg, {437, 1700, 519, 1722}}})
- table.insert(endAnim, {func = AnimTeleportGear, args = {leaks, 763, 1760}})
- table.insert(endAnim, {func = AnimTeleportGear, args = {dense, 835, 1519}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {leaks, "Left"}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {dense, "Left"}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {cyborg, "Right"}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {princess, "Right"}})
- table.insert(endAnim, {func = AnimSay, args = {princess, loc("Help me, please!"), SAY_SHOUT, 3000}})
- table.insert(endAnim, {func = AnimSay, args = {leaks, loc("What are you doing? Let her go!"), SAY_SHOUT, 5000}})
- table.insert(endAnim, {func = AnimSay, args = {cyborg, loc("Yeah? Watcha gonna do? Cry?"), SAY_SHOUT, 5000}})
- table.insert(endAnim, {func = AnimSay, args = {leaks, loc("We won't let you hurt her!"), SAY_SHOUT, 4000}})
- AddSkipFunction(endAnim, SkipEndAnimDuo, {})
-
- table.insert(endFailAnim, {func = AnimCaption, args = {leaks, loc("Leaks A Lot, depressed for killing his loved one, failed to save the village..."), 3000}})
-
- table.insert(winAnim, {func = AnimCustomFunction, args = {princess, CondNeedToTurn, {leaks, princess}}})
- table.insert(winAnim, {func = AnimSay, args = {princess, loc("Thank you, oh, thank you, my heroes!"), SAY_SAY, 5000}})
- table.insert(winAnim, {func = AnimSay, args = {princess, loc("How can I ever repay you for saving my life?"), SAY_SAY, 6000}})
- table.insert(winAnim, {func = AnimSay, args = {leaks, loc("There's nothing more satisfying to us than seeing you share your beauty..."), SAY_SAY, 7000}})
- table.insert(winAnim, {func = AnimSay, args = {leaks, loc("... share your beauty with the world every morning, my princess!"), SAY_SAY, 7000}})
- table.insert(winAnim, {func = AnimSay, args = {leaks, loc("Let's go home!"), SAY_SAY, 3000}})
- table.insert(winAnim, {func = AnimCaption, args = {leaks, loc("And so they discovered that cyborgs weren't invulnerable..."), 2000}})
-
- startAnim = startAnimAL
- pastFlowerAnim = pastFlowerAnimAL
- outPitAnim = outPitAnimAL
-end
-
-function SetupAnimRefusedLived()
- table.insert(startAnimRL, {func = AnimWait, args = {leaks, 3000}})
- table.insert(startAnimRL, {func = AnimCustomFunction, args = {dense, CondNeedToTurn, {leaks, dense}}})
- table.insert(startAnimRL, {func = AnimSay, args = {leaks, loc("All right, we just need to get to the other side of the island!"), SAY_SAY, 7000}})
- table.insert(startAnimRL, {func = AnimSay, args = {dense, loc("Dude, can you see Ramon and Spiky?"), SAY_SAY, 5000}})
- table.insert(startAnimRL, {func = AnimSay, args = {leaks, loc("No...I wonder where they disappeared?!"), SAY_SAY, 5000}})
- AddSkipFunction(startAnimRL, SkipStartAnim, {})
-
- table.insert(pastFlowerAnimRL, {func = AnimCustomFunction, args = {dense, RestoreCyborgOnly, {unpack(startCyborgPosDuo)}}, swh = false})
- table.insert(pastFlowerAnimRL, {func = AnimTurn, args = {cyborg, "Right"}})
- table.insert(pastFlowerAnimRL, {func = AnimSay, args = {cyborg, loc("Well, well! Isn't that the cutest thing you've ever seen?"), SAY_SAY, 7000}})
- table.insert(pastFlowerAnimRL, {func = AnimSay, args = {cyborg, loc("Two little hogs cooperating, getting past obstacles..."), SAY_SAY, 7000}})
- table.insert(pastFlowerAnimRL, {func = AnimSay, args = {cyborg, loc("Let me test your skills a little, will you?"), SAY_SAY, 6000}})
- table.insert(pastFlowerAnimRL, {func = AnimTeleportGear, args = {cyborg, 2456, 1842}})
- table.insert(pastFlowerAnimRL, {func = AnimTeleportGear, args = {dense, 2656, 1842}})
- table.insert(pastFlowerAnimRL, {func = AnimCustomFunction, args = {dense, CondNeedToTurn, {cyborg, dense}}})
- table.insert(pastFlowerAnimRL, {func = AnimSay, args = {dense, loc("Why are you doing this?"), SAY_SAY, 4000}})
- table.insert(pastFlowerAnimRL, {func = AnimSay, args = {cyborg, loc("You couldn't possibly believe that after refusing my offer I'd just let you go!"), SAY_SAY, 9000}})
- table.insert(pastFlowerAnimRL, {func = AnimSay, args = {cyborg, loc("You're funny!"), SAY_SAY, 4000}})
- table.insert(pastFlowerAnimRL, {func = AnimSwitchHog, args = {dense}})
- table.insert(pastFlowerAnimRL, {func = AnimDisappear, swh = false, args = {cyborg, 3781, 1583}})
- table.insert(pastFlowerAnimRL, {func = AnimCustomFunction, swh = false, args = {cyborg, HideCyborgOnly, {}}})
- AddSkipFunction(pastFlowerAnimRL, SkipPastFlowerAnim, {})
-
- table.insert(outPitAnimRL, {func = AnimCustomFunction, args = {dense, RestoreCyborgOnly, {unpack(midCyborgPosDuo)}}, swh = false})
- table.insert(outPitAnimRL, {func = AnimTurn, args = {cyborg, "Right"}})
- table.insert(outPitAnimRL, {func = AnimTeleportGear, args = {dense, unpack(midDensePosDuo)}})
- table.insert(outPitAnimRL, {func = AnimTurn, args = {dense, "Left"}})
- table.insert(outPitAnimRL, {func = AnimSay, args = {dense, loc("OH, COME ON!"), SAY_SHOUT, 3000}})
- table.insert(outPitAnimRL, {func = AnimSay, args = {cyborg, loc("Let's see what your comrade does now!"), SAY_SAY, 5000}})
- table.insert(outPitAnimRL, {func = AnimSwitchHog, args = {dense}})
- table.insert(outPitAnimRL, {func = AnimDisappear, swh = false, args = {cyborg, 3781, 1583}})
- table.insert(outPitAnimRL, {func = AnimCustomFunction, swh = false, args = {cyborg, HideCyborgOnly, {}}})
- AddSkipFunction(outPitAnimRL, SkipOutPitAnim, {})
-
- table.insert(endAnim, {func = AnimCustomFunction, args = {leaks, RestoreCyborg, {437, 1700, 519, 1722}}})
- table.insert(endAnim, {func = AnimTeleportGear, args = {leaks, 763, 1760}})
- table.insert(endAnim, {func = AnimTeleportGear, args = {dense, 835, 1519}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {leaks, "Left"}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {dense, "Left"}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {cyborg, "Right"}})
- table.insert(endAnim, {func = AnimTurn, swh = false, args = {princess, "Right"}})
- table.insert(endAnim, {func = AnimSay, args = {princess, loc("Help me, please!"), SAY_SHOUT, 3000}})
- table.insert(endAnim, {func = AnimSay, args = {leaks, loc("What are you doing? Let her go!"), SAY_SHOUT, 5000}})
- table.insert(endAnim, {func = AnimSay, args = {cyborg, loc("Yeah? Watcha gonna do? Cry?"), SAY_SHOUT, 5000}})
- table.insert(endAnim, {func = AnimSay, args = {leaks, loc("We won't let you hurt her!"), SAY_SHOUT, 4000}})
- AddSkipFunction(endAnim, SkipEndAnimDuo, {})
-
- table.insert(endFailAnim, {func = AnimCaption, args = {leaks, loc("Leaks A Lot, depressed for killing his loved one, failed to save the village..."), 3000}})
-
- table.insert(winAnim, {func = AnimCustomFunction, args = {princess, CondNeedToTurn, {leaks, princess}}})
- table.insert(winAnim, {func = AnimSay, args = {princess, loc("Thank you, oh, thank you, my heroes!"), SAY_SAY, 5000}})
- table.insert(winAnim, {func = AnimSay, args = {princess, loc("How can I ever repay you for saving my life?"), SAY_SAY, 6000}})
- table.insert(winAnim, {func = AnimSay, args = {leaks, loc("There's nothing more satisfying to us than seeing you share your beauty with the world every morning, my princess!"), SAY_SAY, 10000}})
- table.insert(winAnim, {func = AnimSay, args = {leaks, loc("Let's go home!"), SAY_SAY, 3000}})
- table.insert(winAnim, {func = AnimCaption, args = {leaks, loc("And so they discovered that cyborgs weren't invulnerable..."), 2000}})
-
- startAnim = startAnimRL
- pastFlowerAnim = pastFlowerAnimRL
- outPitAnim = outPitAnimRL
-end
-
-function KillPrincess()
- ParseCommand("teamgone " .. loc("Cannibal Sentry"))
- TurnTimeLeft = 0
-end
---/////////////////////////////Misc Functions////////////////////////
-
-function HideHedge(hedge)
- if hedgeHidden[hedge] ~= true then
- HideHog(hedge)
- hedgeHidden[hedge] = true
- end
-end
-
-function RestoreHedge(hedge)
- if hedgeHidden[hedge] == true then
- RestoreHog(hedge)
- hedgeHidden[hedge] = false
- end
-end
-
-function CondNeedToTurn(hog1, hog2)
- xl, xd = GetX(hog1), GetX(hog2)
- if xl > xd then
- AnimInsertStepNext({func = AnimTurn, args = {hog1, "Left"}})
- AnimInsertStepNext({func = AnimTurn, args = {hog2, "Right"}})
- elseif xl < xd then
- AnimInsertStepNext({func = AnimTurn, args = {hog2, "Left"}})
- AnimInsertStepNext({func = AnimTurn, args = {hog1, "Right"}})
- end
-end
-
-function SetupPlaceAlone()
- ------ AMMO CRATE LIST ------
- --SpawnAmmoCrate(3122, 994, amShotgun)
- SpawnAmmoCrate(3124, 952, amBaseballBat)
- SpawnAmmoCrate(2508, 1110, amFirePunch)
- ------ UTILITY CRATE LIST ------
- blowCrate = SpawnUtilityCrate(3675, 1480, amBlowTorch)
- gravityCrate = SpawnUtilityCrate(3448, 1349, amLowGravity)
- SpawnUtilityCrate(3212, 1256, amGirder)
- SpawnUtilityCrate(3113, 911, amParachute)
- sniperCrate = SpawnAmmoCrate(784, 1715, amSniperRifle)
- ------ MINE LIST ------
- SetTimer(AddGear(3328, 1399, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(3028, 1262, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2994, 1274, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2956, 1277, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2925, 1282, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2838, 1276, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2822, 1278, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2786, 1283, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2766, 1270, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2749, 1231, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2717, 1354, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2167, 1330, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2201, 1321, gtMine, 0, 0, 0, 0), 3000)
- SetTimer(AddGear(2239, 1295, gtMine, 0, 0, 0, 0), 3000)
-
- AnimSetGearPosition(leaks, 3781, 1583)
- --AnimSetGearPosition(leaks, 1650, 1583)
- AddAmmo(cannibals[1], amShotgun, 100)
- AddAmmo(leaks, amSwitch, 0)
-end
-
-function SetupPlaceDuo()
- PlaceCratesDuo()
- AnimSetGearPosition(leaks, unpack(startLeaksPosDuo))
- AnimSetGearPosition(dense, unpack(startDensePosDuo))
-end
-
-function SetupEventsDuo()
- AddEvent(CheckPastFlower, {}, DoPastFlower, {}, 0)
- AddEvent(CheckLeaksDead, {}, DoLeaksDead, {}, 0)
- AddEvent(CheckDenseDead, {}, DoDenseDead, {}, 0)
- AddEvent(CheckTookSniper2, {}, DoTookSniper2, {}, 0)
-end
-
-function SetupEventsAlone()
- AddEvent(CheckLeaksDead, {}, DoLeaksDead, {}, 0)
- AddEvent(CheckTookBlowTorch, {}, DoTookBlowTorch, {}, 0)
- AddEvent(CheckTookLowGravity, {}, DoTookLowGravity, {}, 0)
- AddEvent(CheckOnBridge, {}, DoOnBridge, {}, 0)
-end
-
-function StartMission()
- if m2DenseDead == 1 then
- DeleteGear(dense)
- if m2Choice == choiceAccepted then
- SetupAnimAcceptedDied()
- elseif m2Choice == choiceRefused then
- SetupAnimRefusedDied()
- else
- SetupAnimAttacked()
- end
- SetupPlaceAlone()
- SetupEventsAlone()
- AddAnim(startAnim)
- AddFunction({func = AfterStartAnim, args = {}})
- else
- if m2Choice == choiceAccepted then
- SetupAnimAcceptedLived()
- else
- SetupAnimRefusedLived()
- end
- SetupPlaceDuo()
- SetupEventsDuo()
- AddAnim(startAnim)
- AddFunction({func = AfterStartAnim, args = {}})
- end
- HideHedge(cyborg)
- HideHedge(princess)
- for i = 5, 8 do
- HideHedge(cannibals[i])
- end
-
-end
-
-function SetupCourse()
-
- ------ GIRDER LIST ------
- PlaceGirder(1091, 1150, 6)
- PlaceGirder(1091, 989, 6)
- PlaceGirder(1091, 829, 6)
- PlaceGirder(1091, 669, 6)
- PlaceGirder(1091, 668, 6)
- PlaceGirder(1091, 669, 6)
- PlaceGirder(1088, 667, 6)
- PlaceGirder(1091, 658, 6)
- PlaceGirder(1091, 646, 6)
- PlaceGirder(1091, 607, 6)
- PlaceGirder(1091, 571, 6)
- PlaceGirder(1376, 821, 6)
- PlaceGirder(1145, 1192, 1)
- PlaceGirder(1169, 1076, 3)
- PlaceGirder(1351, 1082, 4)
- PlaceGirder(1469, 987, 3)
- PlaceGirder(1386, 951, 0)
- PlaceGirder(1465, 852, 3)
- PlaceGirder(1630, 913, 0)
- PlaceGirder(1733, 856, 7)
- PlaceGirder(1688, 713, 5)
- PlaceGirder(1556, 696, 2)
- PlaceGirder(1525, 696, 2)
- PlaceGirder(1457, 697, 2)
- PlaceGirder(1413, 700, 3)
- PlaceGirder(1270, 783, 2)
- PlaceGirder(1207, 825, 2)
- PlaceGirder(1135, 775, 1)
-
- ------ UTILITY CRATE LIST ------
- SpawnUtilityCrate(1590, 628, amParachute)
- SpawnAmmoCrate(1540, 100, amDynamite)
- SpawnUtilityCrate(2175, 1815, amLowGravity)
- SpawnUtilityCrate(2210, 1499, amFirePunch)
- girderCrate = SpawnUtilityCrate(2300, 1663, amGirder)
- SpawnUtilityCrate(610, 1394, amPickHammer)
-
- ------ BARREL LIST ------
- SetHealth(AddGear(1148, 736, gtExplosives, 0, 0, 0, 0), 20)
-
-end
-
-function PlaceCourseMines()
- SetTimer(AddGear(1215, 1193, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1259, 1199, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1310, 1198, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1346, 1196, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1383, 1192, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1436, 1196, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1487, 1199, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1651, 1209, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1708, 1209, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1759, 1190, gtMine, 0, 0, 0, 0), 5000)
- SetTimer(AddGear(1815, 1184, gtMine, 0, 0, 0, 0), 5000)
-end
-
-
---////////////////////////////Event Functions////////////////////////
-function CheckTookFire()
- return fireTaken
-end
-
-function DoTookFire()
- AddAmmo(leaks, amFirePunch, 100)
-end
-
-function CheckTookGirder1()
- return girder1Taken
-end
-
-function CheckTookGirder2()
- return girder2Taken
-end
-
-function DoTookGirder1()
- AddAmmo(dense, amGirder, 2)
-end
-
-function DoTookGirder2()
- AddAmmo(dense, amGirder, 3)
-end
-
-function CheckDensePit()
- return GetY(dense) < 1250 and StoppedGear(dense)
-end
-
-function DoDensePit()
- TurnTimeLeft = 0
- RestoreHedge(cyborg)
- AnimWait(cyborg, 1)
- AddFunction({func = AddAnim, args = {outPitAnim}})
- AddFunction({func = AddFunction, args = {{func = AfterOutPitAnim, args = {}}}})
-end
-
-function CheckPastFlower()
- if denseDead == true or leaksDead == true then
- return false
- end
- return (GetX(dense) < startEventXDuo and StoppedGear(dense))
- or (GetX(leaks) < startEventXDuo and StoppedGear(leaks))
-end
-
-function DoPastFlower()
- TurnTimeLeft = 0
- RestoreHedge(cyborg)
- AnimWait(cyborg, 1)
- AddFunction({func = AddAnim, args = {pastFlowerAnim}})
- AddFunction({func = AddFunction, args = {{func = AfterPastFlowerAnim, args = {}}}})
-end
-
-
-function CheckLeaksDead()
- return leaksDead
-end
-
-function DoLeaksDead()
- AddCaption(loc("The village, unprepared, was destroyed by the cyborgs..."))
- ParseCommand("teamgone " .. loc("Natives"))
-end
-
-function CheckDenseDead()
- return denseDead
-end
-
-function DoDenseDead()
- AddCaption(loc("The village, unprepared, was destroyed by the cyborgs..."))
- ParseCommand("teamgone " .. loc("Natives"))
-end
-
-function CheckTookBlowTorch()
- return blowTaken
-end
-
-function DoTookBlowTorch()
- ShowMission(loc("The Journey Back"), loc("The Tunnel Maker"), loc("Hint: Select the BlowTorch, aim and press [Fire]. Press [Fire] again to stop.|Don't blow up the crate."), 0, 6000)
-end
-
-function CheckTookLowGravity()
- return gravityTaken
-end
-
-function DoTookLowGravity()
- ShowMission(loc("The Journey Back"), loc("The Moonwalk"), loc("Hint: Select the LowGravity and press [Fire]."), 0, 6000)
-end
-
-function CheckOnBridge()
- return leaksDead == false and GetX(leaks) < 1651 and StoppedGear(leaks)
-end
-
-function DoOnBridge()
- TurnTimeLeft = 0
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- AnimWait(cyborg, 1)
- AddFunction({func = AddAnim, args = {midAnim}})
- AddFunction({func = AddFunction, args = {{func = AfterMidAnimAlone, args = {}}}})
-end
-
-function CheckGirderTaken()
- return girderTaken
-end
-
-function DoGirderTaken()
- AddAmmo(leaks, amGirder, 2)
--- AddAmmo(leaks, amGirder, 3)
-end
-
-function CheckOnFirstGirder()
- return leaksDead == false and GetX(leaks) < 1160 and StoppedGear(leaks)
-end
-
-function DoOnFirstGirder()
- PlaceCourseMines()
- ShowMission(loc("The Journey Back"), loc("Slippery"), loc("You'd better watch your steps..."), 0, 4000)
-end
-
-function CheckTookSniper()
- return sniperTaken and StoppedGear(leaks)
-end
-
-function DoTookSniper()
- TurnTimeLeft = 0
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- AnimWait(cyborg, 1)
- AddFunction({func = AddAnim, args = {endAnim}})
- AddFunction({func = AddFunction, args = {{func = AfterEndAnimAlone, args = {}}}})
-end
-
-function CheckTookSniper2()
- return sniperTaken and StoppedGear(leaks) and StoppedGear(dense)
-end
-
-function DoTookSniper2()
- TurnTimeLeft = 0
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- AnimWait(cyborg, 1)
- AddFunction({func = AddAnim, args = {endAnim}})
- AddFunction({func = AddFunction, args = {{func = AfterEndAnimDuo, args = {}}}})
-end
-
-function CheckLost()
- return princessDead
-end
-
-function DoLost()
- AddAnim(endFailAnim)
- AddFunction({func = ParseCommand, args = {'teamgone ' .. loc('Natives')}})
-end
-
-function CheckWon()
- return cyborgDead and not princessDead
-end
-
-function DoWon()
- if progress and progress<3 then
- SaveCampaignVar("Progress", "3")
- end
- AddAnim(winAnim)
- AddFunction({func = FinishWon, args = {}})
-end
-
-function FinishWon()
- SwitchHog(leaks)
- ParseCommand("teamgone " .. loc("Cannibal Sentry"))
- ParseCommand("teamgone " .. loc("011101001"))
- TurnTimeLeft = 0
-end
-
-function CheckFailedCourse()
- return TurnsLeft == 0
-end
-
-function DoFailedCourse()
- TurnTimeLeft = 0
- RestoreHedge(cyborg)
- RestoreHedge(princess)
- AnimWait(cyborg, 1)
- AddFunction({func = AddAnim, args = {failAnim}})
- AddFunction({func = AddFunction, args = {{func = AfterMidFailAnim, args = {}}}})
-end
-
---////////////////////////////Main Functions/////////////////////////
-
-function onGameInit()
- Seed = 0
- GameFlags = gfSolidLand + gfDisableWind
- TurnTime = 40000
- CaseFreq = 0
- MinesNum = 0
- MinesTime = 3000
- Explosives = 0
- Delay = 5
- Map = "A_Classic_Fairytale_journey"
- Theme = "Nature"
-
- SuddenDeathTurns = 3000
-
- AddTeam(loc("Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
- leaks = AddHog(loc("Leaks A Lot"), 0, 100, "Rambo")
- dense = AddHog(loc("Dense Cloud"), 0, 100, "RobinHood")
-
- AddTeam(loc("Cannibal Sentry"), 14483456, "Skull", "Island", "Pirate","cm_vampire")
- cannibals = {}
- for i = 1, 4 do
- cannibals[i] = AddHog(cannibalNames[i], 3, 40, "Zombi")
- AnimSetGearPosition(cannibals[i], unpack(cannibalPos[i]))
- end
-
- for i = 5, 8 do
- cannibals[i] = AddHog(cannibalNames[i], 3, 40, "Zombi")
- AnimSetGearPosition(cannibals[i], 0, 0)
- end
-
- AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star")
- cyborg = AddHog(loc("Y3K1337"), 0, 200, "cyborg1")
- princess = AddHog(loc("Fell From Heaven"), 0, 200, "tiara")
-
- AnimSetGearPosition(dense, 0, 0)
- AnimSetGearPosition(leaks, 0, 0)
- AnimSetGearPosition(cyborg, 0, 0)
- AnimSetGearPosition(princess, 0, 0)
-
- AnimInit()
-end
-
-function onGameStart()
- progress = tonumber(GetCampaignVar("Progress"))
- m2Choice = tonumber(GetCampaignVar("M2Choice"))
- m2DenseDead = tonumber(GetCampaignVar("M2DenseDead"))
- m2RamonDead = tonumber(GetCampaignVar("M2RamonDead"))
- m2SpikyDead = tonumber(GetCampaignVar("M2SpikyDead"))
- StartMission()
-end
-
-function onGameTick()
- AnimUnWait()
- if ShowAnimation() == false then
- return
- end
- ExecuteAfterAnimations()
- CheckEvents()
-end
-
-function onGearDelete(gear)
- if gear == blowCrate then
- blowTaken = true
- elseif gear == fireCrate then
- fireTaken = true
- elseif gear == gravityCrate then
- gravityTaken = true
- elseif gear == leaks then
- leaksDead = true
- elseif gear == dense then
- denseDead = true
- elseif gear == cyborg then
- cyborgDead = true
- elseif gear == princess then
- princessDead = true
- elseif gear == girderCrate then
- girderTaken = true
- elseif gear == girderCrate1 then
- girder1Taken = true
- elseif gear == girderCrate2 then
- girder2Taken = true
- elseif gear == sniperCrate then
- sniperTaken = true
- else
- for i = 1, 4 do
- if gear == cannibals[i] then
- cannibalDead[i] = true
- end
- end
- end
-end
-
-function onAmmoStoreInit()
- SetAmmo(amBlowTorch, 0, 0, 0, 1)
- SetAmmo(amParachute, 0, 0, 0, 1)
- SetAmmo(amGirder, 0, 0, 0, 3)
- SetAmmo(amLowGravity, 0, 0, 0, 1)
- SetAmmo(amBaseballBat, 0, 0, 0, 1)
- SetAmmo(amFirePunch, 1, 0, 0, 1)
- SetAmmo(amSkip, 9, 0, 0, 0)
- SetAmmo(amSwitch, 9, 0, 0, 0)
- SetAmmo(amDEagle, 9, 0, 0, 0)
- SetAmmo(amRope, 0, 0, 0, 1)
- SetAmmo(amSniperRifle, 0, 0, 0, 1)
- SetAmmo(amDynamite, 0, 0, 0, 1)
- SetAmmo(amPickHammer, 0, 0, 0, 1)
-end
-
-function onNewTurn()
- if AnimInProgress() then
- TurnTimeLeft = -1
- elseif stage == endStage and CurrentHedgehog ~= leaks then
- AnimSwitchHog(leaks)
- SetGearMessage(leaks, 0)
- TurnTimeLeft = -1
- elseif GetHogTeamName(CurrentHedgehog) ~= loc("Natives") then
- for i = 1, 4 do
- if cannibalDead[i] ~= true then
- if GetX(cannibals[i]) < GetX(leaks) then
- HogTurnLeft(cannibals[i], false)
- else
- HogTurnLeft(cannibals[i], true)
- end
- end
- end
- SetInputMask(band(0xFFFFFFFF, bnot(gmLeft + gmRight + gmLJump + gmHJump)))
- TurnTimeLeft = 20000
- else
- SetInputMask(0xFFFFFFFF)
- TurnsLeft = TurnsLeft - 1
- end
-end
-
-function onPrecise()
- if GameTime > 2500 and AnimInProgress() then
- SetAnimSkip(true)
- return
- end
--- AddAmmo(leaks, amRope, 100)
--- RemoveEventFunc(CheckPastFlower)
--- DeleteGear(sniperCrate)
-end
-