diff -r 92af50454cf2 -r 8054d9d775fd share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua --- a/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/backstab.lua Fri Oct 11 11:55:31 2013 +0200 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,1101 +0,0 @@ -HedgewarsScriptLoad("/Scripts/Locale.lua") -HedgewarsScriptLoad("/Scripts/Animate.lua") - ------------------------------Constants--------------------------------- -choiceAccepted = 1 -choiceRefused = 2 -choiceAttacked = 3 - -choiceEliminate = 1 -choiceSpare = 2 - -leaksNum = 1 -denseNum = 2 -waterNum = 3 -buffaloNum = 4 -chiefNum = 5 -girlNum = 6 -wiseNum = 7 - -spyKillStage = 1 -platformStage = 2 -wave3Stage = 3 - -tmpVar = 0 - -nativeNames = {loc("Leaks A Lot"), loc("Dense Cloud"), loc("Fiery Water"), - loc("Raging Buffalo"), loc("Righteous Beard"), loc("Fell From Grace"), - loc("Wise Oak"), loc("Eagle Eye"), loc("Flaming Worm")} - -nativeHats = {"Rambo", "RobinHood", "pirate_jack", "zoo_Bunny", "IndianChief", - "tiara", "AkuAku", "None", "None"} - -nativePos = {{887, 329}, {1050, 288}, {1731, 707}, - {830, 342}, {1001, 290}, {773, 340}, - {953, 305}, {347, 648}, {314, 647}} - -nativeDir = {"Right", "Left", "Left", - "Right", "Left", "Right", - "Left", "Right", "Right"} - -cannibalNames = {loc("Brain Teaser"), loc("Bone Jackson"), loc("Gimme Bones"), - loc("Hedgibal Lecter"), loc("Bloodpie"), loc("Scalp Muncher"), - loc("Back Breaker"), loc("Dahmer"), loc("Meiwes"), - loc("Ear Sniffer"), loc("Regurgitator"), loc("Muriel")} - -cannibalPos = {{3607, 1472}, {3612, 1487}, {3646, 1502}, - {3507, 195}, {3612, 1487}, {840, 1757}, - {3056, 1231}, {2981, 1222}, {2785, 1258}} - -cannibalDir = {"Left", "Left", "Left", - "Left", "Right", "Right", - "Left", "Left", "Left"} - -cyborgPos = {1369, 574} -cyborgPos2 = {1308, 148} - -deployedPos = {2522, 1365} ------------------------------Variables--------------------------------- -natives = {} -nativeDead = {} -nativeHidden = {} -nativeRevived = {} -nativesNum = 0 - -cannibals = {} -cannibalDead = {} -cannibalHidden = {} - -speakerHog = nil -spyHog = nil -deployedHog = nil -deployedDead = false - -cyborgHidden = false -needToAct = 0 - -m2Choice = 0 -m2DenseDead = 0 -m4DenseDead = 0 -m4BuffaloDead = 0 -m4WaterDead = 0 -m4ChiefDead = 0 -m4LeaksDead = 0 - -needRevival = false -gearr = nil -startElimination = 0 -stage = 0 -choice = 0 -highJumped = false -TurnsLeft = 0 -startNativesNum = 0 - -startAnim = {} -afterChoiceAnim = {} -wave2Anim = {} -wave2DeadAnim = {} -wave3DeadAnim = {} - -vCircs = {} ------------------------------Animations-------------------------------- -function Wave2Reaction() - local i = 1 - local gearr = nil - while nativeDead[i] == true do - i = i + 1 - end - gearr = natives[i] - if nativeDead[denseNum] ~= true and band(GetState(natives[denseNum]), gstDrowning) == 0 then - AnimInsertStepNext({func = AnimCustomFunction, args = {dense, EmitDenseClouds, {"Left"}}}) - AnimInsertStepNext({func = AnimTurn, args = {dense, "Left"}}) - end - if nativeDead[buffaloNum] ~= true and band(GetState(natives[buffaloNum]), gstDrowning) == 0 then - AnimInsertStepNext({func = AnimSay, args = {natives[buffaloNum], loc("Let them have a taste of my fury!"), SAY_SHOUT, 6000}}) - end - AnimInsertStepNext({func = AnimSay, args = {gearr, loc("There's more of them? When did they become so hungry?"), SAY_SHOUT, 8000}}) -end - -function EmitDenseClouds(dir) - local dif - if dir == "Left" then - dif = 10 - else - dif = -10 - end - AnimInsertStepNext({func = AnimVisualGear, args = {natives[denseNum], GetX(natives[denseNum]) + dif, GetY(natives[denseNum]) + dif, vgtSteam, 0, true}, swh = false}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[denseNum], GetX(natives[denseNum]) + dif, GetY(natives[denseNum]) + dif, vgtSteam, 0, true}, swh = false}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[denseNum], GetX(natives[denseNum]) + dif, GetY(natives[denseNum]) + dif, vgtSteam, 0, true}, swh = false}) - AnimInsertStepNext({func = AnimWait, args = {natives[denseNum], 800}}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[denseNum], GetX(natives[denseNum]) + dif, GetY(natives[denseNum]) + dif, vgtSteam, 0, true}, swh = false}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[denseNum], GetX(natives[denseNum]) + dif, GetY(natives[denseNum]) + dif, vgtSteam, 0, true}, swh = false}) - AnimInsertStepNext({func = AnimWait, args = {natives[denseNum], 800}}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[denseNum], GetX(natives[denseNum]) + dif, GetY(natives[denseNum]) + dif, vgtSteam, 0, true}, swh = false}) -end - -function SaySafe() - local i = 1 - while gearr == nil do - if nativeDead[i] ~= true and nativeHidden[i] ~= true then - gearr = natives[i] - end - i = i + 1 - end - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("We are indeed."), SAY_SAY, 2500}}) - AnimInsertStepNext({func = AnimSay, args = {gearr, loc("I think we are safe here."), SAY_SAY, 4000}}) -end - -function ReviveNatives() - for i = 1, 7 do - if nativeHidden[i] == true and nativeDead[i] ~= true then - RestoreHog(natives[i]) - nativeHidden[i] = false - nativeRevived[i] = true - AnimInsertStepNext({func = AnimOutOfNowhere, args = {natives[i], unpack(nativePos[i])}}) - end - end -end - -function WonderAlive() - if nativeRevived[waterNum] == true then - AnimInsertStepNext({func = AnimSay, args = {natives[waterNum], loc("I'm...alive? How? Why?"), SAY_THINK, 3500}}) - AnimInsertStepNext({func = AnimWait, args = {natives[waterNum], 800}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[waterNum], "Left"}}) - AnimInsertStepNext({func = AnimWait, args = {natives[waterNum], 800}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[waterNum], "Right"}}) - end - if nativeRevived[leaksNum] == true and nativeRevived[denseNum] == true then - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("But why would they help us?"), SAY_SAY, 4000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("It must be the aliens!"), SAY_SAY, 3500}}) - AnimInsertStepNext({func = AnimSay, args = {natives[girlNum], loc("You just appeared out of thin air!"), SAY_SAY, 5000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("But...we died!"), SAY_SAY, 2500}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("This must be the caves!"), SAY_SAY, 3500}}) - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("Dude, where are we?"), SAY_SAY, 3000}}) - AnimInsertStepNext({func = AnimWait, args = {natives[leaksNum], 800}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[leaksNum], "Right"}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[denseNum], "Left"}}) - AnimInsertStepNext({func = AnimWait, args = {natives[leaksNum], 800}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[leaksNum], "Left"}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[denseNum], "Right"}}) - AnimInsertStepNext({func = AnimWait, args = {natives[leaksNum], 800}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[leaksNum], "Right"}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[denseNum], "Left"}}) - AnimInsertStepNext({func = AnimWait, args = {natives[leaksNum], 800}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[leaksNum], "Left"}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[denseNum], "Right"}}) - AnimInsertStepNext({func = AnimCustomFunction, swh = false, args = {natives[leaksNum], CondNeedToTurn, {natives[leaksNum], natives[girlNum]}}}) - if nativeDead[chiefNum] ~= true then - AnimInsertStepNext({func = AnimTurn, args = {natives[chiefNum], "Right"}}) - end - elseif nativeRevived[leaksNum] == true then - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Why would they do this?"), SAY_SAY, 6000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("It must be the aliens' deed."), SAY_SAY, 5000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("Do not laugh, inexperienced one, for he speaks the truth!"), SAY_SAY, 10000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Yeah, sure! I died. Hillarious!"), SAY_SAY, 6000}}) - AnimInsertStepNext({func = AnimSay, args = {gearr, loc("You're...alive!? But we saw you die!"), SAY_SAY, 6000}}) - AnimInsertStepNext({func = AnimSay, args = {gearr, loc("???"), SAY_SAY, 2000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Wow, what a dream!"), SAY_SAY, 3000}}) - if nativeDead[chiefNum] ~= true then - AnimInsertStepNext({func = AnimTurn, args = {natives[chiefNum], "Right"}}) - end - AnimInsertStepNext({func = AnimCustomFunction, swh = false, args = {natives[leaksNum], CondNeedToTurn, {natives[leaksNum], natives[wiseNum]}}}) - AnimInsertStepNext({func = AnimCustomFunction, swh = false, args = {natives[leaksNum], CondNeedToTurn, {natives[leaksNum], gearr}}}) - elseif nativeRevived[denseNum] == true then - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("Dude, that's so cool!"), SAY_SAY, 3000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("It must be the aliens' deed."), SAY_SAY, 5000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("But that's impossible!"), SAY_SAY, 3000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("It was not a dream, unwise one!"), SAY_SAY, 5000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("Exactly, man! That was my dream."), SAY_SAY, 5000}}) - AnimInsertStepNext({func = AnimSay, args = {gearr, loc("You're...alive!? But we saw you die!"), SAY_SAY, 6000}}) - AnimInsertStepNext({func = AnimSay, args = {gearr, loc("???"), SAY_SAY, 2000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("Dude, wow! I just had the weirdest high!"), SAY_SAY, 6000}}) - if nativeDead[chiefNum] ~= true then - AnimInsertStepNext({func = AnimTurn, args = {natives[chiefNum], "Right"}}) - end - AnimInsertStepNext({func = AnimCustomFunction, swh = false, args = {natives[denseNum], CondNeedToTurn, {natives[denseNum], natives[wiseNum]}}}) - AnimInsertStepNext({func = AnimCustomFunction, swh = false, args = {natives[denseNum], CondNeedToTurn, {natives[denseNum], gearr}}}) - end -end - -function ExplainAlive() - if needRevival == true and m4WaterDead == 1 then - RestoreCyborg() - AnimSetGearPosition(cyborg, unpack(cyborgPos)) - AnimInsertStepNext({func = AnimCustomFunction, args = {water, HideCyborg, {}}}) - AnimInsertStepNext({func = AnimSwitchHog, args = {water}}) - AnimInsertStepNext({func = AnimSay, args = {cyborg, loc("The answer is...entertaintment. You'll see what I mean."), SAY_SAY, 8000}}) - AnimInsertStepNext({func = AnimSay, args = {cyborg, loc("You're probably wondering why I bought you back..."), SAY_SAY, 8000}}) - end -end - -function SpyDebate() - if m2Choice == choiceAccepted then - spyHog = natives[denseNum] - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("What shall we do with the traitor?"), SAY_SAY, 6000}}) - AnimInsertStepNext({func = SetHealth, swh = false, args = {natives[denseNum], 26}}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[wiseNum], GetGearPosition(natives[denseNum]), vgtExplosion, 0, true}}) - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("Here, let me help you!"), SAY_SAY, 3000}}) - if nativeDead[chiefNum] == true then - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("I forgot that she's the daughter of the chief, too..."), SAY_THINK, 7000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[girlNum], loc("You killed my father, you monster!"), SAY_SAY, 5000}}) - end - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("Look, I had no choice!"), SAY_SAY, 3000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("You have been giving us out to the enemy, haven't you!"), SAY_SAY, 7000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("You're a pathetic liar!"), SAY_SAY, 3000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Interesting! Last time you said you killed a cannibal!"), SAY_SAY, 7000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[denseNum], loc("I told you, I just found them."), SAY_SAY, 4500}}) - AnimInsertStepNext({func = AnimCustomFunction, args = {natives[denseNum], EmitDenseClouds, {"Left"}}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Where did you get the weapons in the forest, Dense Cloud?"), SAY_SAY, 8000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Not now, Fiery Water!"), SAY_SAY, 3000}}) - else - spyHog = natives[waterNum] - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("What shall we do with the traitor?"), SAY_SAY, 5000}}) - AnimInsertStepNext({func = SetHealth, swh = false, args = {natives[waterNum], 26}}) - AnimInsertStepNext({func = AnimVisualGear, args = {natives[wiseNum], nativePos[denseNum][1] + 50, nativePos[denseNum][2], vgtExplosion, 0, true}}) - AnimInsertStepNext({func = AnimSay, args = {natives[girlNum], loc("I can't believe what I'm hearing!"), SAY_SAY, 5500}}) - AnimInsertStepNext({func = AnimSay, args = {natives[waterNum], loc("You know what? I don't even regret anything!"), SAY_SAY, 7000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[girlNum], loc("In fact, you are the only one that's been acting strangely."), SAY_SAY, 8000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[waterNum], loc("Are you accusing me of something?"), SAY_SAY, 3500}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Seems like every time you take a \"walk\", the enemy find us!"), SAY_SAY, 8000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[waterNum], loc("You know...taking a stroll."), SAY_SAY, 3500}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("Where have you been?!"), SAY_SAY, 3000}}) - end - if nativeRevived[waterNum] == true then - AnimInsertStepNext({func = AnimSay, args = {natives[waterNum], loc("You won't believe what happened to me!"), SAY_SAY, 5500}}) - end - AnimInsertStepNext({func = AnimSay, args = {natives[waterNum], loc("Hey, guys!"), SAY_SAY, 2000}}) - AnimInsertStepNext({func = AnimMove, args = {natives[waterNum], "Left", nativePos[denseNum][1] + 50, nativePos[denseNum][2]}}) - AnimInsertStepNext({func = AnimJump, args = {natives[waterNum], "back"}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[waterNum], "Right"}}) - AnimInsertStepNext({func = AnimMove, args = {natives[waterNum], "Left", 1228, 412}}) - AnimInsertStepNext({func = AnimJump, args = {natives[waterNum], "long"}}) - AnimInsertStepNext({func = AnimJump, args = {natives[waterNum], "long"}}) - AnimInsertStepNext({func = AnimJump, args = {natives[waterNum], "long"}}) - AnimInsertStepNext({func = AnimTurn, args = {natives[waterNum], "Left"}}) - AnimInsertStepNext({func = AnimSay, args = {natives[wiseNum], loc("There must be a spy among us!"), SAY_SAY, 4000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[girlNum], loc("We made sure noone followed us!"), SAY_SAY, 4000}}) - AnimInsertStepNext({func = AnimSay, args = {natives[leaksNum], loc("What? Here? How did they find us?!"), SAY_SAY, 5000}}) -end - -function AnimationSetup() - table.insert(startAnim, {func = AnimWait, swh = false, args = {natives[leaksNum], 3000}}) - table.insert(startAnim, {func = AnimCustomFunction, swh = false, args = {natives[leaksNum], SaySafe, {}}}) - if needRevival == true then - table.insert(startAnim, {func = AnimCustomFunction, swh = false, args = {cyborg, ReviveNatives, {}}}) - table.insert(startAnim, {func = AnimCustomFunction, swh = false, args = {natives[leaksNum], WonderAlive, {}}}) - table.insert(startAnim, {func = AnimCustomFunction, swh = false, args = {cyborg, ExplainAlive, {}}}) - end - table.insert(startAnim, {func = AnimCustomFunction, swh = false, args = {natives[leaksNum], RestoreWave, {1}}}) - table.insert(startAnim, {func = AnimOutOfNowhere, args = {cannibals[1], unpack(cannibalPos[1])}}) - table.insert(startAnim, {func = AnimOutOfNowhere, args = {cannibals[2], unpack(cannibalPos[2])}}) - table.insert(startAnim, {func = AnimOutOfNowhere, args = {cannibals[3], unpack(cannibalPos[3])}}) - table.insert(startAnim, {func = AnimWait, args = {natives[leaksNum], 1000}}) - table.insert(startAnim, {func = AnimCustomFunction, swh = false, args = {natives[leaksNum], SpyDebate, {}}}) - AddSkipFunction(startAnim, SkipStartAnim, {}) -end - -function SetupWave2Anim() - for i = 7, 1, -1 do - if nativeDead[i] ~= true then - speakerHog = natives[i] - end - end - table.insert(wave2Anim, {func = AnimOutOfNowhere, args = {cannibals[4], unpack(cannibalPos[4])}}) - table.insert(wave2Anim, {func = AnimOutOfNowhere, args = {cannibals[5], unpack(cannibalPos[5])}}) - table.insert(wave2Anim, {func = AnimOutOfNowhere, args = {cannibals[6], unpack(cannibalPos[6])}}) - table.insert(wave2Anim, {func = AnimSay, args = {speakerHog, loc("Look out! There's more of them!"), SAY_SHOUT, 5000}}) - AddSkipFunction(wave2Anim, SkipWave2Anim, {}) -end - -function PutCircles() - if circlesPut then - return - end - vCircs[1] = AddVisualGear(0,0,vgtCircle,0,true) - vCircs[2] = AddVisualGear(0,0,vgtCircle,0,true) - vCircs[3] = AddVisualGear(0,0,vgtCircle,0,true) - SetVisualGearValues(vCircs[1], cannibalPos[7][1], cannibalPos[7][2], 100, 255, 1, 10, 0, 120, 3, 0xff00ffff) - SetVisualGearValues(vCircs[2], cannibalPos[8][1], cannibalPos[8][2], 100, 255, 1, 10, 0, 120, 3, 0xff00ffff) - SetVisualGearValues(vCircs[3], cannibalPos[9][1], cannibalPos[9][2], 100, 255, 1, 10, 0, 120, 3, 0xff00ffff) - circlesPut = true -end - -function SetupWave2DeadAnim() - for i = 7, 1, -1 do - if nativeDead[i] ~= true then - deployedHog = natives[i] - end - end - if nativeDead[wiseNum] ~= true and band(GetState(natives[wiseNum]), gstDrowning) == 0 then - if nativesNum > 1 then - table.insert(wave2DeadAnim, {func = AnimWait, args = {natives[wiseNum], 1500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("What a strange feeling!"), SAY_THINK, 3000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I need to warn the others."), SAY_THINK, 3000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("If only I had a way..."), SAY_THINK, 3000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("Oh, silly me! I forgot that I'm the shaman."), SAY_THINK, 6000}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], TeleportNatives, {}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], TurnNatives, {natives[wiseNum]}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], CondNeedToTurn, {natives[wiseNum], deployedHog}}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I sense another wave of cannibals heading our way!"), SAY_SAY, 6500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I feel something...a place! They will arrive near the circles!"), SAY_SAY, 7500}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], PutCircles, {}}}) - table.insert(wave2DeadAnim, {func = AnimFollowGear, swh = false, args = {vCircs[1]}}) - table.insert(wave2DeadAnim, {func = AnimWait, args = {natives[wiseNum], 1500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("We need to prevent their arrival!"), SAY_SAY, 4500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("Go, quick!"), SAY_SAY, 2500}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], DeployHog, {}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], RestoreCyborg, {}}}) - table.insert(wave2DeadAnim, {func = AnimOutOfNowhere, swh = false, args = {cyborg, cyborgPos2[1], cyborgPos2[2]}}) - table.insert(wave2DeadAnim, {func = AnimTurn, args = {cyborg, "Left"}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, IsolateNatives, {}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, PutCGI, {}}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("I want to see how it handles this!"), SAY_SAY, 6000}}) - table.insert(wave2DeadAnim, {func = AnimSwitchHog, args = {deployedHog}}) - table.insert(wave2DeadAnim, {func = AnimDisappear, args = {cyborg, 0, 0}}) --- table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, DeployHog, {}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, swh = false, args = {cyborg, HideCyborg, {}}}) - else - table.insert(wave2DeadAnim, {func = AnimWait, args = {natives[wiseNum], 1500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("What a strange feeling!"), SAY_THINK, 3000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I sense another wave of cannibals heading my way!"), SAY_THINK, 6500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I feel something...a place! They will arrive near the circles!"), SAY_SAY, 7500}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], PutCircles, {}}}) - table.insert(wave2DeadAnim, {func = AnimFollowGear, swh = false, args = {vCircs[1]}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("I need to prevent their arrival!"), SAY_THINK, 4500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("If only I had a way..."), SAY_THINK, 3000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {natives[wiseNum], loc("Oh, silly me! I forgot that I'm the shaman."), SAY_THINK, 6000}}) - end - else - table.insert(wave2DeadAnim, {func = AnimWait, args = {cyborg, 1500}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, swh = false, args = {cyborg, RestoreCyborg, {}}}) - table.insert(wave2DeadAnim, {func = AnimOutOfNowhere, args = {cyborg, cyborgPos2[1], cyborgPos2[2]}}) - table.insert(wave2DeadAnim, {func = AnimTurn, args = {cyborg, "Left"}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, TeleportNatives, {}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, TurnNatives, {cyborg}}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("Oh, my! This is even more entertaining than I've expected!"), SAY_SAY, 7500}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("You might want to find a way to instantly kill arriving cannibals!"), SAY_SAY, 8000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("I believe there's more of them."), SAY_SAY, 4000}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("I marked the place of their arrival. You're welcome!"), SAY_SAY, 6000}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], PutCircles, {}}}) - table.insert(wave2DeadAnim, {func = AnimFollowGear, swh = false, args = {vCircs[1]}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {deployedHog, DeployHog, {}}}) - if nativesNum > 1 then --- table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {natives[wiseNum], RestoreCyborg, {}}}) --- table.insert(wave2DeadAnim, {func = AnimOutOfNowhere, swh = false, args = {cyborg, cyborgPos2[1], cyborgPos2[2]}}) --- table.insert(wave2DeadAnim, {func = AnimTurn, args = {cyborg, "Left"}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, IsolateNatives, {}}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, args = {cyborg, PutCGI, {}}}) - table.insert(wave2DeadAnim, {func = AnimSay, args = {cyborg, loc("I want to see how it handles this!"), SAY_SAY, 6000}}) - end - table.insert(wave2DeadAnim, {func = AnimSwitchHog, args = {deployedHog}}) - table.insert(wave2DeadAnim, {func = AnimDisappear, swh = false, args = {cyborg, 0, 0}}) - table.insert(wave2DeadAnim, {func = AnimCustomFunction, swh = false, args = {cyborg, HideCyborg, {}}}) - end - AddSkipFunction(wave2DeadAnim, SkipWave2DeadAnim, {}) -end - -function IsolateNatives() - PlaceGirder(710, 299, 6) - PlaceGirder(690, 299, 6) - PlaceGirder(761, 209, 4) - PlaceGirder(921, 209, 4) - PlaceGirder(1081, 209, 4) - PlaceGirder(761, 189, 4) - PlaceGirder(921, 189, 4) - PlaceGirder(1081, 189, 4) - PlaceGirder(761, 169, 4) - PlaceGirder(921, 169, 4) - PlaceGirder(1081, 169, 4) - PlaceGirder(761, 149, 4) - PlaceGirder(921, 149, 4) - PlaceGirder(1081, 149, 4) - PlaceGirder(761, 129, 4) - PlaceGirder(921, 129, 4) - PlaceGirder(1081, 129, 4) - PlaceGirder(1120, 261, 2) - PlaceGirder(1140, 261, 2) - PlaceGirder(1160, 261, 2) - AddAmmo(deployedHog, amDEagle, 0) - AddAmmo(deployedHog, amFirePunch, 0) -end - -function PutCGI() - AddVisualGear(710, 299, vgtExplosion, 0, true) - AddVisualGear(690, 299, vgtExplosion, 0, true) - AddVisualGear(761, 209, vgtExplosion, 0, true) - AddVisualGear(921, 209, vgtExplosion, 0, true) - AddVisualGear(1081, 209, vgtExplosion, 0, true) - AddVisualGear(761, 189, vgtExplosion, 0, true) - AddVisualGear(921, 189, vgtExplosion, 0, true) - AddVisualGear(1081, 189, vgtExplosion, 0, true) - AddVisualGear(761, 169, vgtExplosion, 0, true) - AddVisualGear(921, 169, vgtExplosion, 0, true) - AddVisualGear(1081, 169, vgtExplosion, 0, true) - AddVisualGear(761, 149, vgtExplosion, 0, true) - AddVisualGear(921, 149, vgtExplosion, 0, true) - AddVisualGear(1081, 149, vgtExplosion, 0, true) - AddVisualGear(761, 129, vgtExplosion, 0, true) - AddVisualGear(921, 129, vgtExplosion, 0, true) - AddVisualGear(1081, 129, vgtExplosion, 0, true) - AddVisualGear(1120, 261, vgtExplosion, 0, true) - AddVisualGear(1140, 261, vgtExplosion, 0, true) - AddVisualGear(1160, 261, vgtExplosion, 0, true) -end - -function TeleportNatives() - nativePos[waterNum] = {1100, 288} - for i = 1, 7 do - if nativeDead[i] ~= true then - AnimTeleportGear(natives[i], unpack(nativePos[i])) - end - end -end - -function TurnNatives(hog) - for i = 1, 7 do - if nativeDead[i] == false then - if GetX(natives[i]) < GetX(hog) then - AnimTurn(natives[i], "Right") - else - AnimTurn(natives[i], "Left") - end - end - end -end - -function DeployHog() - AnimSwitchHog(deployedHog) - AnimTeleportGear(deployedHog, unpack(deployedPos)) - if deployedHog ~= natives[wiseNum] then - AnimSay(deployedHog, loc("Why me?!"), SAY_THINK, 2000) - end -end - -function SetupAfterChoiceAnim() - for i = 7, 1, -1 do - if nativeDead[i] ~= true then - if natives[i] ~= spyHog then - speakerHog = natives[i] - end - end - end - if choice == choiceEliminate then - table.insert(afterChoiceAnim, {func = AnimWait, args = {speakerHog, 1500}}) - table.insert(afterChoiceAnim, {func = AnimSay, args = {speakerHog, loc("He won't be selling us out anymore!"), SAY_SAY, 6000}}) - if nativeDead[girlNum] ~= true and m4ChiefDead == 1 then - table.insert(afterChoiceAnim, {func = AnimSay, args = {natives[girlNum], loc("That's for my father!"), SAY_SAY, 3500}}) - end - table.insert(afterChoiceAnim, {func = AnimSay, args = {speakerHog, loc("Let's show those cannibals what we're made of!"), SAY_SAY, 7000}}) - else - table.insert(afterChoiceAnim, {func = AnimCustomFunction, swh = false, args = {natives[leaksNum], CondNeedToTurn, {speakerHog, spyHog}}}) - table.insert(afterChoiceAnim, {func = AnimSay, args = {speakerHog, loc("We'll spare your life for now!"), SAY_SAY, 4500}}) - table.insert(afterChoiceAnim, {func = AnimSay, args = {spyHog, loc("May the spirits aid you in all your quests!"), SAY_SAY, 7000}}) - table.insert(afterChoiceAnim, {func = AnimSay, args = {speakerHog, loc("I just don't want to sink to your level."), SAY_SAY, 6000}}) - table.insert(afterChoiceAnim, {func = AnimSay, args = {speakerHog, loc("Let's show those cannibals what we're made of!"), SAY_SAY, 7000}}) - end - table.insert(afterChoiceAnim, {func = AnimSay, args = {natives[8], loc("Let us help, too!"), SAY_SAY, 3000}}) - table.insert(afterChoiceAnim, {func = AnimTurn, args = {speakerHog, "Left", SAY_SAY, 7000}}) - table.insert(afterChoiceAnim, {func = AnimSay, args = {speakerHog, loc("No. You and the rest of the tribe are safer there!"), SAY_SAY, 7000}}) - AddSkipFunction(afterChoiceAnim, SkipAfterChoiceAnim, {}) -end - -function SetupHogDeadAnim(gear) - hogDeadAnim = {} - if nativesNum == 0 then - return - end - local hogDeadStrings = {loc("They killed ") .. gear .. loc("! You bastards!"), - gear .. loc("! Why?!"), - loc("That was just mean!"), - loc("Oh no, not ") .. gear .. "!", - loc("Why ") .. gear .. loc("? Why?"), - loc("What has ") .. gear .. loc(" ever done to you?!")} - table.insert(hogDeadAnim, {func = AnimSay, args = {CurrentHedgehog, hogDeadStrings[7 - nativesNum], SAY_SHOUT, 4000}}) -end - -function AfterHogDeadAnim() - freshDead = nil - TurnTimeLeft = TurnTime -end - ---------------------------Anim skip functions-------------------------- - -function AfterAfterChoiceAnim() - stage = 0 - AddEvent(CheckWaveDead, {1}, DoWaveDead, {1}, 0) - AddAmmo(speakerHog, amSwitch, 100) - SetGearMessage(speakerHog, 0) - SetState(speakerHog, 0) - TurnTimeLeft = -1 - ShowMission(loc("Backstab"), loc("The food bites back"), loc("Defeat the cannibals"), 1, 4000) - SpawnCrates() -end - -function SkipAfterChoiceAnim() - SetGearMessage(CurrentHedgehog, 0) - AnimSwitchHog(speakerHog) -end - -function AfterWave2Anim() - AddEvent(CheckWaveDead, {2}, DoWaveDead, {2}, 0) - SetGearMessage(CurrentHedgehog, 0) - SetState(CurrentHedgehog, 0) - SpawnCrates() - TurnTimeLeft = TurnTime -end - -function SkipWave2DeadAnim() - TeleportNatives() - IsolateNatives() - DeployHog() - HideCyborg() - PutCircles() -end - -function SpawnPlatformCrates() - SpawnAmmoCrate(2494, 1262, amMine) - SpawnAmmoCrate(2574, 1279, amSMine) - SpawnAmmoCrate(2575, 1267, amMine) - SpawnAmmoCrate(2617, 1259, amSMine) - SpawnUtilityCrate(2579, 1254, amMine) - SpawnUtilityCrate(2478, 1243, amMine) -end - -function AfterWave2DeadAnim() - TurnsLeft = 7 - stage = platformStage - SpawnPlatformCrates() - SetGearMessage(CurrentHedgehog, 0) - AddEvent(CheckTurnsOver, {}, DoTurnsOver, {3}, 0) - AddEvent(CheckWaveDead, {3}, DoWaveDead, {3}, 0) - AddEvent(CheckDeployedDead, {}, DoDeployedDead, {}, 0) - TurnTimeLeft = 0 - ShowMission(loc("Backstab"), loc("Drills"), loc("You have 7 turns until the next wave arrives.|Make sure the arriving cannibals are greeted appropriately!|If the hog dies, the cause is lost.|Hint: you might want to use some mines..."), 1, 12000) -end - -function DoTurnsOver() - stage = wave3Stage - RestoreWave(3) -end - -function SkipWave2Anim() - AnimSwitchHog(speakerHog) -end - -function SkipStartAnim() - AnimSetGearPosition(natives[waterNum], nativePos[denseNum][1] + 50, nativePos[denseNum][2]) - RestoreWave(1) - ReviveNatives() - SetGearMessage(CurrentHedgehog, 0) - SetState(CurrentHedgehog, 0) - if m2Choice == choiceAccepted then - spyHog = natives[denseNum] - else - spyHog = natives[waterNum] - end - SetHealth(spyHog, 26) -end - -function AfterStartAnim() - AnimSwitchHog(natives[leaksNum]) - TurnTimeLeft = 0 - stage = spyKillStage - AddEvent(CheckChoice, {}, DoChoice, {}, 0) - AddEvent(CheckKilledOther, {}, DoKilledOther, {}, 0) - AddEvent(CheckChoiceRefuse, {}, DoChoiceRefuse, {}, 0) - ShowMission(loc("Backstab"), loc("Judas"), loc("Kill the traitor...or spare his life!|Kill him or press [Precise]!"), 1, 8000) -end - ------------------------------Events------------------------------------ -function CheckTurnsOver() - return TurnsLeft == 0 -end - -function CheckDeployedDead() - return deployedDead -end - -function DoDeployedDead() - ShowMission(loc("Backstab"), loc("Brutus"), loc("You have failed to save the tribe!"), 0, 6000) - ParseCommand("teamgone " .. loc("Natives")) - ParseCommand("teamgone " .. loc("Tribe")) - ParseCommand("teamgone " .. loc("011101001")) - TurnTimeLeft = 0 -end - -function CheckChoice() - return choice ~= 0 and tmpVar == 0 -end - -function CheckDeaths() - for i = 1, 7 do - if natives[i] ~= spyHog and band(GetState(natives[i]), gstAttacked) ~= 0 then - return true - end - end - return false -end - -function DoChoice() - RemoveEventFunc(CheckChoiceRefuse) - SetGearMessage(CurrentHedgehog, 0) - SetupAfterChoiceAnim() - AddAnim(afterChoiceAnim) - AddFunction({func = AfterAfterChoiceAnim, args = {}}) -end - -function CheckChoiceRefuse() - return highJumped == true and StoppedGear(CurrentHedgehog) -end - -function DoChoiceRefuse() - choice = choiceSpare -end - -function CheckKilledOther() - if stage ~= spyKillStage then - return false - end - return (nativesNum < startNativesNum and choice ~= choiceEliminate) or - (nativesNum < startNativesNum - 1 and choice == choiceEliminate) -end - -function DoKilledOther() - ShowMission(loc("Backstab"), loc("Brutus"), loc("You have killed an innocent hedgehog!"), 0, 6000) - ParseCommand("teamgone " .. loc("Natives")) - ParseCommand("teamgone " .. loc("Tribe")) - TurnTimeLeft = 0 -end - -function CheckWaveDead(index) - for i = (index - 1) * 3 + 1, index * 3 do - if cannibalDead[i] ~= true or CurrentHedgehog == cannibals[i] then - return false - end - end - return true -end - -function DoWaveDead(index) - TurnTimeLeft = 0 - needToAct = index -end - -function AddWave3DeadAnim() - AnimSwitchHog(deployedHog) - AnimWait(deployedHog, 1) - AddFunction({func = HideNatives, args = {}}) - AddFunction({func = SetupWave3DeadAnim, args = {}}) - AddFunction({func = AddAnim, args = {wave3DeadAnim}}) - AddFunction({func = AddFunction, args = {{func = AfterWave3DeadAnim, args = {}}}}) -end - -function HideNatives() - for i = 1, 9 do - if nativeDead[i] ~= true and natives[i] ~= deployedHog then - if nativeHidden[i] ~= true then - HideHog(natives[i]) - nativeHidden[i] = true - end - end - end -end - -function SetupWave3DeadAnim() - table.insert(wave3DeadAnim, {func = AnimTurn, args = {deployedHog, "Left"}}) - table.insert(wave3DeadAnim, {func = AnimSay, args = {deployedHog, loc("That ought to show them!"), SAY_SAY, 4000}}) - table.insert(wave3DeadAnim, {func = AnimSay, args = {deployedHog, loc("Guys, do you think there's more of them?"), SAY_SHOUT, 7000}}) - table.insert(wave3DeadAnim, {func = AnimVisualGear, args = {deployedHog, unpack(nativePos[wiseNum]), vgtFeather, 0, true, true}}) - table.insert(wave3DeadAnim, {func = AnimWait, args = {deployedHog, 1000}}) - table.insert(wave3DeadAnim, {func = AnimSay, args = {deployedHog, loc("Where are they?!"), SAY_THINK, 3000}}) - table.insert(wave3DeadAnim, {func = AnimCustomFunction, args = {deployedHog, RestoreCyborg, {}}}) - table.insert(wave3DeadAnim, {func = AnimOutOfNowhere, args = {cyborg, 4040, 782}}) - table.insert(wave3DeadAnim, {func = AnimSay, args = {cyborg, loc("These primitive people are so funny!"), SAY_THINK, 6500}}) - table.insert(wave3DeadAnim, {func = AnimMove, args = {cyborg, "Right", 4060, 0}}) - table.insert(wave3DeadAnim, {func = AnimSwitchHog, args = {deployedHog}}) - table.insert(wave3DeadAnim, {func = AnimWait, args = {deployedHog, 1}}) - table.insert(wave3DeadAnim, {func = AnimCustomFunction, args = {deployedHog, HideCyborg, {}}}) - table.insert(wave3DeadAnim, {func = AnimSay, args = {deployedHog, loc("I need to find the others!"), SAY_THINK, 4500}}) - table.insert(wave3DeadAnim, {func = AnimSay, args = {deployedHog, loc("I have to follow that alien."), SAY_THINK, 4500}}) -end - -function SkipWave3DeadAnim() - AnimSwitchHog(deployedHog) -end - -function AfterWave3DeadAnim() - if nativeDead[leaksNum] == true then - SaveCampaignVar("M5LeaksDead", "1") - else - SaveCampaignVar("M5LeaksDead", "0") - end - if nativeDead[denseNum] == true then - SaveCampaignVar("M5DenseDead", "1") - else - SaveCampaignVar("M5DenseDead", "0") - end - if nativeDead[waterNum] == true then - SaveCampaignVar("M5WaterDead", "1") - else - SaveCampaignVar("M5WaterDead", "0") - end - if nativeDead[buffaloNum] == true then - SaveCampaignVar("M5BuffaloDead", "1") - else - SaveCampaignVar("M5BuffaloDead", "0") - end - if nativeDead[girlNum] == true then - SaveCampaignVar("M5GirlDead", "1") - else - SaveCampaignVar("M5GirlDead", "0") - end - if nativeDead[wiseNum] == true then - SaveCampaignVar("M5WiseDead", "1") - else - SaveCampaignVar("M5WiseDead", "0") - end - if nativeDead[chiefNum] == true then - SaveCampaignVar("M5ChiefDead", "1") - else - SaveCampaignVar("M5ChiefDead", "0") - end - SaveCampaignVar("M5Choice", "" .. choice) - if progress and progress<5 then - SaveCampaignVar("Progress", "5") - end - - for i = 1, 7 do - if natives[i] == deployedHog then - SaveCampaignVar("M5DeployedNum", "" .. i) - end - end - - ParseCommand("teamgone " .. loc("Tribe")) - ParseCommand("teamgone " .. loc("Assault Team")) - ParseCommand("teamgone " .. loc("Reinforcements")) - ParseCommand("teamgone " .. loc("011101001")) - TurnTimeLeft = 0 -end - ------------------------------Misc-------------------------------------- - -function SpawnCrates() - SpawnAmmoCrate(0, 0, amDrill) - SpawnAmmoCrate(0, 0, amGrenade) - SpawnAmmoCrate(0, 0, amBazooka) - SpawnAmmoCrate(0, 0, amDynamite) - SpawnAmmoCrate(0, 0, amGrenade) - SpawnAmmoCrate(0, 0, amMine) - SpawnAmmoCrate(0, 0, amShotgun) - SpawnAmmoCrate(0, 0, amFlamethrower) - SpawnAmmoCrate(0, 0, amMolotov) - SpawnAmmoCrate(0, 0, amSMine) - SpawnAmmoCrate(0, 0, amMortar) - SpawnUtilityCrate(0, 0, amRope) - SpawnUtilityCrate(0, 0, amRope) - SpawnUtilityCrate(0, 0, amParachute) - SpawnUtilityCrate(0, 0, amParachute) - SetHealth(SpawnHealthCrate(0, 0), 25) - SetHealth(SpawnHealthCrate(0, 0), 25) - SetHealth(SpawnHealthCrate(0, 0), 25) - SetHealth(SpawnHealthCrate(0, 0), 25) - SetHealth(SpawnHealthCrate(0, 0), 25) - SetHealth(SpawnHealthCrate(0, 0), 25) -end - - -function RestoreWave(index) - for i = (index - 1) * 3 + 1, index * 3 do - if cannibalHidden[i] == true then - RestoreHog(cannibals[i]) - AnimSetGearPosition(cannibals[i], unpack(cannibalPos[i])) - FollowGear(cannibals[i]) - cannibalHidden[i] = false - end - end -end - -function GetVariables() - progress = tonumber(GetCampaignVar("Progress")) - m2DenseDead = tonumber(GetCampaignVar("M2DenseDead")) - m2Choice = tonumber(GetCampaignVar("M2Choice")) - m4DenseDead = tonumber(GetCampaignVar("M4DenseDead")) - m4LeaksDead = tonumber(GetCampaignVar("M4LeaksDead")) - m4ChiefDead = tonumber(GetCampaignVar("M4ChiefDead")) - m4WaterDead = tonumber(GetCampaignVar("M4WaterDead")) - m4BuffaloDead = tonumber(GetCampaignVar("M4BuffaloDead")) -end - -function HideCyborg() - if cyborgHidden == false then - HideHog(cyborg) - cyborgHidden = true - end -end - -function RestoreCyborg() - if cyborgHidden == true then - RestoreHog(cyborg) - cyborgHidden = false - end -end - -function SetupPlace() - startNativesNum = nativesNum - HideHog(cyborg) - cyborgHidden = true - for i = 1, 9 do - HideHog(cannibals[i]) - cannibalHidden[i] = true - end - if m4LeaksDead == 1 then - HideHog(natives[leaksNum]) - nativeHidden[leaksNum] = true - needRevival = true - end - if m4DenseDead == 1 then - if m2Choice ~= choiceAccepted then - DeleteGear(natives[denseNum]) - startNativesNum = startNativesNum - 1 - nativeDead[denseNum] = true - else - HideHog(natives[denseNum]) - nativeHidden[denseNum] = true - needRevival = true - end - end - if m4WaterDead == 1 then - HideHog(natives[waterNum]) - nativeHidden[waterNum] = true - needRevival = true - end - if m4ChiefDead == 1 then - DeleteGear(natives[chiefNum]) - startNativesNum = startNativesNum - 1 - nativeDead[chiefNum] = true - AnimSetGearPosition(natives[girlNum], unpack(nativePos[buffaloNum])) - nativePos[girlNum] = nativePos[buffaloNum] - end - if m4BuffaloDead == 1 then - startNativesNum = startNativesNum - 1 - nativeDead[buffaloNum] = true - DeleteGear(natives[buffaloNum]) - end - PlaceGirder(3568, 1461, 1) - PlaceGirder(440, 523, 5) - PlaceGirder(350, 441, 1) - PlaceGirder(405, 553, 5) - PlaceGirder(316, 468, 1) - PlaceGirder(1319, 168, 0) -end - -function SetupAmmo() - AddAmmo(natives[girlNum], amSwitch, 0) -end - -function AddHogs() - AddTeam(loc("Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy") - for i = 1, 7 do - natives[i] = AddHog(nativeNames[i], 0, 100, nativeHats[i]) - end - nativesNum = 7 - - AddTeam(loc("Tribe"), 29438, "Bone", "Island", "HillBilly", "cm_birdy") - for i = 8, 9 do - natives[i] = AddHog(nativeNames[i], 0, 100, nativeHats[i]) - end - - - AddTeam(loc("Assault Team"), 14483456, "Skull", "Island", "Pirate", "cm_vampire") - for i = 1, 6 do - cannibals[i] = AddHog(cannibalNames[i], 1, 50, "vampirichog") - end - - AddTeam(loc("Reinforcements"), 14483456, "Skull", "Island", "Pirate", "cm_vampire") - for i = 7, 9 do - cannibals[i] = AddHog(cannibalNames[i], 1, 50, "vampirichog") - end - - AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star") - cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1") - - for i = 1, 9 do - AnimSetGearPosition(natives[i], unpack(nativePos[i])) - AnimTurn(natives[i], nativeDir[i]) - end - - AnimSetGearPosition(cyborg, 0, 0) - - for i = 1, 9 do - AnimSetGearPosition(cannibals[i], cannibalPos[i][1], cannibalPos[i][2] + 40) - AnimTurn(cannibals[i], cannibalDir[i]) - 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 - ------------------------------Main Functions---------------------------- - -function onGameInit() - Seed = 2 - GameFlags = gfSolidLand - TurnTime = 60000 - CaseFreq = 0 - MinesNum = 0 - MinesTime = 3000 - Explosives = 0 - Delay = 10 - Map = "Cave" - Theme = "Nature" - SuddenDeathTurns = 3000 - - AddHogs() - AnimInit() -end - -function onGameStart() - GetVariables() - SetupAmmo() - SetupPlace() - AnimationSetup() - AddAnim(startAnim) - AddFunction({func = AfterStartAnim, args = {}}) -end - -function onGameTick() - AnimUnWait() - if ShowAnimation() == false then - return - end - ExecuteAfterAnimations() - CheckEvents() -end - -function onGearDelete(gear) - for i = 1, 7 do - if gear == natives[i] then - if nativeDead[i] ~= true then - freshDead = nativeNames[i] - end - nativeDead[i] = true - nativesNum = nativesNum - 1 - end - end - - for i = 1, 9 do - if gear == cannibals[i] then - cannibalDead[i] = true - end - end - - if gear == spyHog and stage == spyKillStage then - freshDead = nil - choice = choiceEliminate - tmpVar = 1 - end - - if gear == deployedHog then - deployedDead = true - end -end - -function onAmmoStoreInit() - SetAmmo(amDEagle, 9, 0, 0, 0) - SetAmmo(amSniperRifle, 4, 0, 0, 0) - SetAmmo(amFirePunch, 9, 0, 0, 0) - SetAmmo(amWhip, 9, 0, 0, 0) - SetAmmo(amBaseballBat, 9, 0, 0, 0) - SetAmmo(amHammer, 9, 0, 0, 0) - SetAmmo(amLandGun, 9, 0, 0, 0) - SetAmmo(amSnowball, 8, 0, 0, 0) - SetAmmo(amGirder, 4, 0, 0, 2) - SetAmmo(amParachute, 4, 0, 0, 2) - SetAmmo(amSwitch, 8, 0, 0, 2) - SetAmmo(amSkip, 8, 0, 0, 0) - SetAmmo(amRope, 5, 0, 0, 3) - SetAmmo(amBlowTorch, 3, 0, 0, 3) - SetAmmo(amPickHammer, 0, 0, 0, 3) - SetAmmo(amLowGravity, 0, 0, 0, 2) - SetAmmo(amDynamite, 0, 0, 0, 3) - SetAmmo(amBazooka, 4, 0, 0, 4) - SetAmmo(amGrenade, 4, 0, 0, 4) - SetAmmo(amMine, 2, 0, 0, 2) - SetAmmo(amSMine, 2, 0, 0, 2) - SetAmmo(amMolotov, 2, 0, 0, 3) - SetAmmo(amFlamethrower, 2, 0, 0, 3) - SetAmmo(amShotgun, 4, 0, 0, 4) - SetAmmo(amTeleport, 0, 0, 0, 2) - SetAmmo(amDrill, 0, 0, 0, 4) - SetAmmo(amMortar, 0, 0, 0, 4) -end - -j = 0 - -function onNewTurn() - tmpVar = 0 - if AnimInProgress() then - TurnTimeLeft = -1 - return - end - - if GetHogTeamName(CurrentHedgehog) == loc("Tribe") then - TurnTimeLeft = 0 - return - end - TurnsLeft = TurnsLeft - 1 - - if stage == platformStage then - AddCaption(TurnsLeft .. " turns until arrival!") - end - - if stage == spyKillStage then - if CurrentHedgehog == spyHog or GetHogTeamName(CurrentHedgehog) ~= loc("Natives") then - TurnTimeLeft = 0 - else - SetGearMessage(CurrentHedgehog, 0) - --AnimSwitchHog(natives[leaksNum]) - TurnTimeLeft = -1 - end - else - if freshDead ~= nil and GetHogTeamName(CurrentHedgehog) == loc("Natives") then - SetupHogDeadAnim(freshDead) - AddAnim(hogDeadAnim) - AddFunction({func = AfterHogDeadAnim, args = {}}) - end - end - if needToAct > 0 then - if needToAct == 1 then - RestoreWave(2) - SetupWave2Anim() - AddAnim(wave2Anim) - AddFunction({func = AfterWave2Anim, args = {}}) - elseif needToAct == 2 then - SetupWave2DeadAnim() - AddAnim(wave2DeadAnim) - AddFunction({func = AfterWave2DeadAnim, args = {}}) - elseif needToAct == 3 then - AnimSwitchHog(deployedHog) - AddFunction({func = AddWave3DeadAnim, args = {}}) - end - needToAct = 0 - end -end - -function onPrecise() - if GameTime > 2500 and AnimInProgress() then - SetAnimSkip(true) - return - end - if stage == spyKillStage then - highJumped = true - end -end