--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua Wed Apr 13 14:39:17 2016 +0200
@@ -0,0 +1,301 @@
+
+
+HedgewarsScriptLoad("/Scripts/Locale.lua")
+
+local player
+local hh = {}
+local hhCount = 8
+local GameOver = false
+local introStage = 0
+local genCounter = 0
+local waterCounter = 0
+local waterPix = 0
+local frig = 0
+local watGear = nil
+local cinematic = false
+
+-- allow skipping of the intro via hitting precise key
+function onPrecise()
+ if introStage < 100 then
+ introStage = 110
+ genCounter = 0
+ FollowGear(CurrentHedgehog)
+ AddCaption(loc("Good luck out there!"))
+ ShowMission(loc("That Sinking Feeling"), loc("Challenge"), loc("Save as many hapless hogs as possible!"), 4, 0)
+ SetInputMask(0xFFFFFFFF)
+ end
+end
+
+function onGameInit()
+
+ Seed = 0
+ GameFlags = gfInfAttack + gfInvulnerable + gfOneClanMode
+ TurnTime = 90000
+ CaseFreq = 0
+ MinesNum = 0
+ MinesTime = 3000
+ Explosives = 0
+ Delay = 10
+ Map = "Islands"
+ Theme = "City"
+ SuddenDeathTurns = 1
+
+ AddTeam(loc("Hapless Hogs"), 14483456, "Simple", "Island", "Default")
+ hh[0] = AddHog(loc("Sinky"), 1, 100, "fr_lemon")
+ hh[1] = AddHog(loc("Drowner"), 1, 100, "fr_orange")
+ hh[2] = AddHog(loc("Heavy"), 1, 100, "dish_Teapot")
+ hh[3] = AddHog(loc("Clumsy"), 1, 100, "dish_SauceBoatSilver")
+ hh[4] = AddHog(loc("Silly"), 1, 100, "dish_Ladle")
+ hh[5] = AddHog(loc("Careless"), 1, 100, "StrawHatEyes")
+ hh[6] = AddHog(loc("Sponge"), 1, 100, "sf_chunli")
+ hh[7] = AddHog(loc("Deadweight"), 1, 100, "dish_Teacup")
+
+ AddTeam(loc("Nameless Heroes"), 14483456, "Simple", "Island", "Default", "cm_crossedswords")
+ player = AddHog(loc("The Nameless One"), 0, 1, "NoHat")
+
+ SetGearPosition(player, 3992, 733)
+ SetGearPosition(hh[0], 938, 1369)
+ SetGearPosition(hh[1], 1301, 1439)
+ SetGearPosition(hh[2], 2093, 447)
+ SetGearPosition(hh[3], 2971, 926)
+ SetGearPosition(hh[4], 719, 545)
+ SetGearPosition(hh[5], 1630, 821)
+ SetGearPosition(hh[6], 2191, 810)
+ SetGearPosition(hh[7], 3799, 945)
+
+ -- Disable all input except [Precise] for the intro
+ SetInputMask(gmPrecise)
+end
+
+
+function onGameStart()
+ cinematic = true
+ SetCinematicMode(true)
+ SendHealthStatsOff()
+
+ ShowMission(loc("That Sinking Feeling"), loc("Challenge"), loc("Save as many hapless hogs as possible!"), 4, 1)
+
+ HogTurnLeft(hh[0], false)
+ HogTurnLeft(hh[1], true)
+
+ SpawnUtilityCrate(148,265,amLowGravity)
+ SpawnUtilityCrate(2124,1516,amJetpack)
+
+end
+
+
+function onNewTurn()
+ TurnTimeLeft = -1
+end
+
+function onGameTick()
+
+ -- intro sequence
+ if introStage < 100 then
+
+ frig = frig + 1
+ if frig == 50 then
+ frig = 0
+ AddCaption(loc("Press [Precise] to skip intro"))
+ if watGear ~= nil then
+ FollowGear(watGear)
+ end
+ end
+
+
+ --AddCaption(loc("Press [Precise] to skip intro"))
+ genCounter = genCounter + 1
+
+ if introStage == 0 then
+
+
+ --FollowGear(hh[0])
+
+ if genCounter == 2000 then
+ watGear = hh[0]
+ HogSay(hh[0], loc("This rain is really something..."), SAY_SAY,2)
+ elseif genCounter == 5000 then
+ introStage = 1
+ genCounter = 0
+ end
+
+ elseif introStage == 1 then
+
+ --FollowGear(hh[1])
+
+ if genCounter == 2000 then
+ watGear = hh[1]
+ HogSay(hh[1], loc("Heh, it's not that bad."), SAY_SAY,2)
+ elseif genCounter == 5000 then
+ introStage = 2
+ genCounter = 0
+ end
+
+ elseif introStage == 2 then
+
+ --FollowGear(hh[0])
+
+ if genCounter == 2000 then
+ watGear = hh[0]
+ HogSay(hh[0], loc("You'd almost swear the water was rising!"), SAY_SHOUT,2)
+ elseif genCounter == 6000 then
+ introStage = 3
+ genCounter = 0
+ end
+
+ elseif introStage == 3 then
+
+ --FollowGear(hh[1])
+
+ if genCounter == 2000 then
+ watGear = hh[1]
+ HogSay(hh[1], loc("Haha, now THAT would be something!"), SAY_SAY,2)
+ elseif genCounter == 6000 then
+ introStage = 4
+ genCounter = 0
+ end
+
+ elseif introStage == 4 then
+
+ --FollowGear(hh[0])
+
+ if genCounter == 2000 then
+ watGear = hh[0]
+ HogSay(hh[0], loc("Hahahaha!"), SAY_SHOUT,2)
+ HogSay(hh[1], loc("Hahahaha!"), SAY_SHOUT,2)
+ elseif genCounter == 3000 then
+ introStage = 5
+ genCounter = 0
+ end
+
+ elseif introStage == 5 then
+
+ --FollowGear(hh[1])
+
+ if genCounter == 2000 then
+ watGear = hh[1]
+ HogSay(hh[0], loc("..."), SAY_THINK,2)
+ HogSay(hh[1], loc("..."), SAY_THINK,2)
+ elseif genCounter == 5000 then
+ introStage = 6
+ genCounter = 0
+ end
+
+ elseif introStage == 6 then
+
+ --FollowGear(hh[0])
+
+ if genCounter == 2000 then
+ watGear = hh[0]
+ HogSay(hh[0], loc("It's a good thing SUDDEN DEATH is 99 turns away..."), SAY_THINK,2)
+ elseif genCounter == 6000 then
+ introStage = 7
+ genCounter = 0
+ end
+
+
+ elseif introStage == 7 then
+
+ if genCounter == 2000 then
+ introStage = 110
+ FollowGear(CurrentHedgehog)
+ ShowMission(loc("That Sinking Feeling"), loc("User Challenge"), loc("Save as many hapless hogs as possible!"), 4, 0)
+ SetInputMask(0xFFFFFFFF)
+ end
+
+ end
+
+ end
+
+ -- start the water rising when the intro is finished
+ if introStage == 110 then
+
+ if cinematic then
+ SetCinematicMode(false)
+ cinematic = false
+ end
+
+ waterCounter = waterCounter + 1
+ if (waterCounter == 100) and (waterPix < 1615) then
+ waterCounter = 0
+ SetTag(AddGear(0, 0, gtWaterUp, 0, 0, 0, 0), 1)
+ waterPix = waterPix +1
+ --AddCaption(waterPix)
+
+ if (waterPix >= 1615) and (GameOver == false) then
+ GameOver = true
+ AddCaption(loc("The flood has stopped! Challenge over."))
+ SendStat(siGameResult, loc("Challenge completed!"))
+ SendStat(siPlayerKills, tostring(hhCount), loc("Nameless Heroes"))
+ SendStat(siPointType, loc("rescues"))
+
+ -- Do not count drowning hedgehogs
+ local hhLeft = hhCount
+ for i=1,#hh do
+ local isDrowning = band(GetState(hh[i]),gstDrowning) ~= 0
+ if isDrowning then
+ hhLeft = hhLeft - 1
+ end
+ end
+
+ SendStat(siCustomAchievement, string.format(loc("You saved %d of 8 Hapless Hogs."), hhLeft))
+
+ if hhLeft == 8 then
+ AddCaption(loc("Achievement obtained: Lively Lifeguard"),0xffba00ff,capgrpMessage2)
+ SendStat(siCustomAchievement, loc("You have obtained an achievement: Lively Lifeguard"))
+ end
+ EndGame()
+
+ end
+
+ end
+
+ end
+end
+
+
+function onAmmoStoreInit()
+
+ SetAmmo(amBazooka, 9, 0, 0, 0)
+
+ SetAmmo(amRope, 9, 0, 0, 0)
+ SetAmmo(amParachute, 9, 0, 0, 0)
+ SetAmmo(amJetpack, 2, 0, 0, 2)
+
+ SetAmmo(amGirder, 9, 0, 0, 0)
+ SetAmmo(amBaseballBat, 9, 0, 0, 0)
+
+ SetAmmo(amTeleport, 1, 0, 0, 1)
+ SetAmmo(amPortalGun, 3, 0, 0, 1)
+
+ SetAmmo(amLowGravity, 0, 0, 0, 1)
+
+end
+
+function onGearDelete(gear)
+
+ if GetGearType(gear) == gtHedgehog then
+ if GetHogTeamName(gear) == loc("Hapless Hogs") then
+ hhCount = hhCount - 1
+ AddCaption(string.format(loc("%d Hapless Hogs left"), hhCount))
+ end
+ end
+
+ if ((gear == player) or (hhCount == 0)) and (GameOver == false) then
+ SetHealth(player, 0)
+ AddCaption(loc("Disqualified!"))
+ if gear == player then
+ SendStat(siCustomAchievement, loc("Your hedgehog died!"))
+ SendStat(siCustomAchievement, loc("You must survive the flood in order to score."))
+ else
+ SendStat(siCustomAchievement, loc("You haven't rescued anyone."))
+ end
+ SendStat(siPlayerKills, "0", loc("Nameless Heroes"))
+ SendStat(siPointType, loc("points"))
+
+ SendStat(siGameResult, loc("Disqualified!"))
+ GameOver = true
+ EndGame()
+ end
+
+end