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)
SaveCampaignVar("Progress", "5")
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()
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