diff -r 7dd85fe00de3 -r 1de4d6b35748 share/hedgewars/Data/Missions/Challenge/User_Mission_-_That_Sinking_Feeling.lua --- /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