Forgot to add mission 10
authorbelphegorr <szabibibi@gmail.com>
Sun, 19 Aug 2012 03:10:57 +0300
changeset 7481 50e09add9ffc
parent 7478 5dfc77558e07
child 7484 f3a7c4e75815
Forgot to add mission 10
share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/epil.lua
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/share/hedgewars/Data/Missions/Campaign/A Classic Fairytale/epil.lua	Sun Aug 19 03:10:57 2012 +0300
@@ -0,0 +1,439 @@
+loadfile(GetDataPath() .. "Scripts/Locale.lua")()
+loadfile(GetDataPath() .. "Scripts/Animate.lua")()
+
+-----------------------------Constants---------------------------------
+leaksNum = 1
+denseNum = 2
+waterNum = 3
+buffaloNum = 4
+chiefNum = 5
+girlNum = 6
+wiseNum = 7
+ramonNum = 8
+spikyNum = 9
+princessNum = 10
+
+denseScene = 1
+princessScene = 2
+waterScene = 3
+cyborgScene = 4
+
+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("Ramon"), loc("Spiky Cheese"),
+               loc("Fell From Heaven")
+              }
+nativeHats = {"Rambo", "RobinHood", "pirate_jack", "zoo_Bunny", "IndianChief",
+              "tiara", "AkuAku", "rasta", "hair_yellow", "tiara"}
+
+nativePosCyborg = {{1900, 508}, {480, 1321}, {2927, 873},
+             {1325, 905}, {3190, 1424}, {1442, 857},
+             {1134, 1278}, {2881, 853}, {2974, 897},
+             {2033, 511}}
+nativeDirCyborg = {"Right", "Right", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Left"}
+
+nativePosPrincess = {{1930, 508}, {480, 1321}, {2927, 873},
+             {1325, 905}, {3190, 1424}, {2033, 511},
+             {1134, 1278}, {2881, 853}, {2974, 897},
+             {1900, 508}}
+nativeDirPrincess = {"Right", "Right", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Right"}
+
+nativePosDense = {{1930, 508}, {2285, 772}, {2927, 873},
+             {1325, 905}, {3190, 1424}, {1442, 857},
+             {1134, 1278}, {480, 1321}, {2974, 897},
+             {2033, 511}}
+nativeDirDense = {"Right", "Left", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Left"}
+
+nativePosWater = {{1900, 508}, {2033, 511}, {2285, 772},
+             {1325, 905}, {3190, 1424}, {1442, 857},
+             {1134, 1278}, {480, 1321}, {2974, 897},
+             {1980, 511}}
+nativeDirWater = {"Right", "Left", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Left"}
+
+prisonPos = {2285, 772}
+
+brainNum = 1
+corpseNum = 2
+brutalNum = 3
+earNum = 4
+hanniNum = 5
+
+cannibalNames = {loc("Brainiac"), loc("Corpse Thrower"), loc("Brutal Lily"), loc("Ear Sniffer"), loc("Hannibal")}
+cannibalHats = {"Zombi", "AkuAku", "Zombi", "Zombi", "IndianChief"}
+cannibalPos = {{533, 1304}, {1184, 1282}, {1386, 883}, {2854, 834}, {3243, 1415}}
+cannibalDir = {"Left", "Left", "Left", "Right", "Left"}
+-----------------------------Variables---------------------------------
+natives = {}
+cannibals = {}
+traitor = nil
+crate = nil
+
+startAnim = {}
+
+gearDead = {}
+--------------------------Anim skip functions--------------------------
+function SkipStartAnim()
+  SetGearMessage(CurrentHedgehog, 0)
+  AnimSwitchHog(natives[1])
+end
+
+function AfterStartAnim()
+  crate = SpawnHealthCrate(0, 0)
+  SetGearMessage(CurrentHedgehog, 0)
+  AddNewEvent(CheckCrateTaken, {}, DoCrateTaken, {}, 1)
+  TurnTimeLeft = 0
+  ShowMission("Epilogue", "That's all folks!", "You have successfully finished the campaign!|If you wish to replay, there are other possible endings, too!|You can practice moving around and using utilities in this mission.|However, it will never end!", 1, 0)
+end
+
+---------------------------Events-------------------------------------
+function CheckCrateTaken()
+  return gearDead[crate]
+end
+
+function DoCrateTaken()
+  crate = SpawnHealthCrate(0, 0)
+end
+-----------------------------Animations--------------------------------
+function AnimationSetup()
+  if m8Scene == cyborgScene then 
+    SetupAnimCyborg()
+  elseif m8Scene == princessScene then
+    SetupAnimPrincess()
+  elseif m8Scene == waterScene then
+    SetupAnimWater()
+  else
+    SetupAnimDense()
+  end
+  AddSkipFunction(startAnim, SkipStartAnim, {})
+end
+
+function SetupAnimWater()
+  startAnim = {
+    {func = AnimWait, args = {natives[1], 3000}},
+    {func = AnimCaption, args = {natives[ramonNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
+    {func = AnimSay, args = {natives[ramonNum], "You got a killer mask there, amigo!", SAY_SAY, 5500}},
+    {func = AnimSay, args = {cannibals[brainNum], "Thanks, man! It really means a lot to me.", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
+    {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
+    {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimSay, args = {natives[leaksNum], "It's amazing how quickly our lives can change...", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[waterNum], "Aye! Fellow! Let me exit this chamber of doom!", SAY_SAY, 7000}},
+    {func = AnimTurn, args = {natives[princessNum], "Right"}},
+    {func = AnimSay, args = {natives[princessNum], "It's your fault you're there!", SAY_SAY, 5000}},
+    {func = AnimTurn, args = {natives[princessNum], "Left"}},
+    {func = AnimSay, args = {natives[leaksNum], "I always suspected him!", SAY_SAY, 3000}},
+    {func = AnimSay, args = {natives[leaksNum], "Nobody takes walks every day!", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[princessNum], "I don't know who I can trust anymore.", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[princessNum], "Everywhere I look, I see hogs walking around...", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[princessNum], "...and I think they are up to something. Something bad!", SAY_SAY, 8000}},
+    {func = AnimMove, args = {natives[leaksNum], "Right", nativePosWater[princessNum][1] - 30, nativePosWater[princessNum][2]}},
+    {func = AnimSay, args = {natives[leaksNum], "You can always trust me! I love you!", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[princessNum], "I know and I'm terribly sorry!", SAY_SAY, 5000}},
+    {func = AnimSay, args = {natives[princessNum], "I love Dense Cloud now!", SAY_SAY, 4000}},
+    {func = AnimTurn, args = {natives[princessNum], "Right"}},
+    {func = AnimMove, args = {natives[denseNum], "Left", nativePosWater[princessNum][1] + 20, nativePosWater[princessNum][2]}},
+    {func = AnimSay, args = {natives[denseNum], "Problems, dude? Chillax!", SAY_SAY, 4000}},
+    {func = AnimTurn, args = {natives[leaksNum], "Left"}},
+    {func = AnimSay, args = {natives[leaksNum], "(T_T)", SAY_SAY, 6000}},
+    {func = AnimSwitchHog, args = {natives[leaksNum]}},
+  }
+end
+
+function SetupAnimDense()
+  startAnim = {
+    {func = AnimWait, args = {natives[1], 3000}},
+    {func = AnimCaption, args = {natives[ramonNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
+    {func = AnimSay, args = {natives[ramonNum], "You got a killer mask there, amigo!", SAY_SAY, 5500}},
+    {func = AnimSay, args = {cannibals[brainNum], "Thanks, man! It really means a lot to me.", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
+    {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
+    {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimSay, args = {natives[waterNum], "...And then I took a stroll...", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[leaksNum], "It's amazing how quickly our lives can change...", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[denseNum], "Dude, let me out!", SAY_SAY, 3000}},
+    {func = AnimSay, args = {natives[denseNum], "I already said I'm sorry!", SAY_SAY, 4000}},
+    {func = AnimTurn, args = {natives[princessNum], "Right"}},
+    {func = AnimSay, args = {natives[princessNum], "Traitors don't get to shout around here!", SAY_SAY, 7000}},
+    {func = AnimTurn, args = {natives[princessNum], "Left"}},
+    {func = AnimSay, args = {natives[leaksNum], "I still can't believe he sold us out like that.", SAY_SAY, 8000}},
+    {func = AnimSay, args = {natives[princessNum], "I don't know who I can trust anymore.", SAY_SAY, 6000}},
+    {func = AnimMove, args = {natives[leaksNum], "Right", nativePosDense[princessNum][1] - 30, nativePosDense[princessNum][2]}},
+    {func = AnimSay, args = {natives[leaksNum], "You can always trust me!", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[princessNum], "I know, my hero!", SAY_SAY, 3000}},
+    {func = AnimSay, args = {natives[princessNum], "...xoxo...", SAY_SAY, 2000}},
+    {func = AnimSwitchHog, args = {natives[leaksNum]}},
+  }
+end
+
+function SetupAnimCyborg()
+  startAnim = {
+    {func = AnimWait, args = {natives[1], 3000}},
+    {func = AnimCaption, args = {natives[denseNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
+    {func = AnimSay, args = {natives[denseNum], "Dude, that outfit is so kool!", SAY_SAY, 4500}},
+    {func = AnimSay, args = {cannibals[brainNum], "Thanks, dude! It really means a lot to me.", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
+    {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
+    {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimSay, args = {natives[waterNum], "...And then I took a stroll...", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[leaksNum], "I'm glad this is over!", SAY_SAY, 4000}},
+    {func = AnimMove, args = {natives[princessNum], "Right", nativePosCyborg[princessNum][1] + 30, nativePosCyborg[princessNum][2]}},
+    {func = AnimSay, args = {natives[princessNum], "I was so scared.", SAY_SAY, 2500}},
+    {func = AnimMove, args = {natives[leaksNum], "Right", nativePosCyborg[princessNum][1], nativePosCyborg[princessNum][2]}},
+    {func = AnimSay, args = {natives[leaksNum], "You have nothing to be afraid of now.", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[leaksNum], "I'll protect you!", SAY_SAY, 3000}},
+    {func = AnimTurn, args = {natives[princessNum], "Left"}},
+    {func = AnimSay, args = {natives[princessNum], "You're so brave...I feel safe with you.", SAY_SAY, 6500}},
+    {func = AnimSay, args = {natives[princessNum], "I think I love you!", SAY_SAY, 3500}},
+    {func = AnimSay, args = {natives[leaksNum], "I...like being with you too.", SAY_SAY, 4500}},
+  }
+end
+
+function SetupAnimPrincess()
+  startAnim = {
+    {func = AnimWait, args = {natives[1], 3000}},
+    {func = AnimCaption, args = {natives[denseNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
+    {func = AnimSay, args = {natives[denseNum], "Dude, that outfit is so kool!", SAY_SAY, 4500}},
+    {func = AnimSay, args = {cannibals[brainNum], "Thanks, dude! It really means a lot to me.", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
+    {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
+    {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
+    {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
+    {func = AnimWait, args = {natives[1], 1000}},
+    {func = AnimSay, args = {natives[buffaloNum], "So I shook my fist in the air!", SAY_SAY, 5000}},
+    {func = AnimSay, args = {cannibals[brutalNum], "Well that was an unnecessary act of violence.", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[waterNum], "...And then I took a stroll...", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[leaksNum], "I'm glad this is over!", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[girlNum], "I still can't believe you forgave her!", SAY_SAY, 6000}},
+    {func = AnimSay, args = {natives[girlNum], "She endangered the whole tribe!", SAY_SAY, 5000}},
+    {func = AnimSay, args = {natives[leaksNum], "It wasn't her fault!", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[leaksNum], "We oppressed her, the only woman in the tribe!", SAY_SAY, 7000}},
+    {func = AnimSay, args = {natives[girlNum], "The only woman, huh?", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[girlNum], "Then what am I?", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[leaksNum], "Of course, but you're...special.", SAY_SAY, 5000}},
+    {func = AnimSay, args = {natives[girlNum], "Sure!", SAY_SAY, 2000}},
+    {func = AnimTurn, args = {natives[leaksNum], "Left"}},
+    {func = AnimSay, args = {natives[leaksNum], "We're terribly sorry!", SAY_SAY, 4000}},
+    {func = AnimSay, args = {natives[princessNum], "I don't know if I can forget what you've done!", SAY_SAY, 7000}},
+    {func = AnimTurn, args = {natives[princessNum], "Left"}},
+    {func = AnimMove, args = {natives[princessNum], "Left", nativePosPrincess[princessNum][1] - 10, nativePosPrincess[princessNum][2]}},
+    {func = AnimSwitchHog, args = {natives[leaksNum]}}
+  }
+end
+-----------------------------Misc--------------------------------------
+function GetVariables()
+  m8Scene = tonumber(GetCampaignVar("M8Scene"))
+end
+
+function AddHogs()
+	AddTeam(loc("Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
+  for i = 1, 5 do
+    natives[i] = AddHog(nativeNames[i], 0, 100, nativeHats[i])
+  end
+
+	AddTeam(loc("More Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
+  for i = 6, 10 do
+    natives[i] = AddHog(nativeNames[i], 0, 100, nativeHats[i])
+  end
+
+	AddTeam(loc("Cannibals"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
+  for i = 1, 5 do
+    cannibals[i] = AddHog(cannibalNames[i], 0, 100, cannibalHats[i])
+  end
+
+  if m8Scene == denseScene or m8Scene == waterScene then
+    AddTeam(loc("Traitors"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
+    if m8Scene == denseScene then
+      DeleteGear(natives[2])
+      natives[2] = AddHog(nativeNames[2], 0, 100, nativeHats[2])
+    else
+      DeleteGear(natives[3])
+      natives[3] = AddHog(nativeNames[3], 0, 100, nativeHats[3])
+    end
+  end
+
+  SetGearPositions()
+end
+
+function SetGearPositions()
+  if m8Scene == cyborgScene then
+    for i = 1, 10 do
+      AnimSetGearPosition(natives[i], unpack(nativePosCyborg[i]))
+      AnimTurn(natives[i], nativeDirCyborg[i])
+    end
+  elseif m8Scene == waterScene then
+    for i = 1, 10 do
+      AnimSetGearPosition(natives[i], unpack(nativePosWater[i]))
+      AnimTurn(natives[i], nativeDirWater[i])
+    end
+  elseif m8Scene == denseScene then
+    for i = 1, 10 do
+      AnimSetGearPosition(natives[i], unpack(nativePosDense[i]))
+      AnimTurn(natives[i], nativeDirDense[i])
+    end
+  else
+    for i = 1, 10 do
+      AnimSetGearPosition(natives[i], unpack(nativePosPrincess[i]))
+      AnimTurn(natives[i], nativeDirPrincess[i])
+    end
+  end
+
+  for i = 1, 5 do
+    AnimSetGearPosition(cannibals[i], unpack(cannibalPos[i]))
+    AnimTurn(cannibals[i], cannibalDir[i])
+  end
+end
+
+function SetupPlace()
+  if m8Scene == denseScene or m8Scene == waterScene then
+    PlaceGirder(2296, 798, 4)
+    PlaceGirder(2296, 700, 4)
+    PlaceGirder(2225, 750, 2)
+    PlaceGirder(2245, 750, 2)
+    PlaceGirder(2265, 750, 2)
+    PlaceGirder(2305, 750, 2)
+    PlaceGirder(2345, 750, 2)
+    PlaceGirder(2365, 750, 2)
+  end
+  if m8Scene == denseScene then
+    traitor = natives[denseNum]
+  elseif m8Scene == waterScene then
+    traitor = natives[waterNum]
+  end
+end
+-----------------------------Main Functions----------------------------
+function onGameInit()
+	Seed = 1
+	GameFlags = gfOneClanMode
+	TurnTime = 60000 
+	CaseFreq = 0
+	MinesNum = 0
+	MinesTime = 3000
+	Explosives = 0
+	Delay = 10 
+  Map = "Hogville"
+	Theme = "Nature"
+  SuddenDeathTurns = 3000
+
+  GetVariables()
+  AddHogs()
+  AnimInit()
+end
+
+function onGameStart()
+  SetupPlace()
+  AnimationSetup()
+  AddAnim(startAnim)
+  AddFunction({func = AfterStartAnim, args = {}})
+end
+
+function onGameTick()
+  AnimUnWait()
+  if ShowAnimation() == false then
+    return
+  end
+  ExecuteAfterAnimations()
+  CheckEvents()
+end
+
+function onGearDelete(gear)
+  gearDead[gear] = true
+end
+
+function onGearAdd(gear)
+end
+
+function onAmmoStoreInit()
+  SetAmmo(amAirStrike, 9, 0, 0, 0)
+  SetAmmo(amBaseballBat, 9, 0, 0, 0)
+  SetAmmo(amBazooka, 9, 0, 0, 0)
+  SetAmmo(amBlowTorch, 9, 0, 0, 0)
+	SetAmmo(amClusterBomb,9, 0, 0, 0)
+  SetAmmo(amDEagle, 9, 0, 0, 0)
+  SetAmmo(amDrill, 9, 0, 0, 4)
+  SetAmmo(amDynamite, 9, 0, 0, 3)
+  SetAmmo(amFirePunch, 9, 0, 0, 0)
+  SetAmmo(amFlamethrower, 9, 0, 0, 3)
+  SetAmmo(amGirder, 9, 0, 0, 0)
+  SetAmmo(amGrenade, 9, 0, 0, 0)
+  SetAmmo(amHammer, 9, 0, 0, 0)
+  SetAmmo(amJetpack, 9, 0, 0, 0)
+  SetAmmo(amLandGun, 9, 0, 0, 0)
+  SetAmmo(amLowGravity, 9, 0, 0, 2)
+  SetAmmo(amMine, 9, 0, 0, 2)
+  SetAmmo(amMolotov, 9, 0, 0, 3)
+  SetAmmo(amMortar, 9, 0, 0, 4)
+  SetAmmo(amNapalm, 9, 0, 0, 4)
+  SetAmmo(amParachute, 9, 0, 0, 0)
+  SetAmmo(amPickHammer, 9, 0, 0, 0)
+  SetAmmo(amPortalGun, 9, 0, 0, 0)
+  SetAmmo(amRope, 9, 0, 0, 0)
+  SetAmmo(amRCPlane, 9, 0, 0, 0)
+  SetAmmo(amSkip, 9, 0, 0, 0)
+  SetAmmo(amShotgun, 9, 0, 0, 0)
+  SetAmmo(amSMine, 9, 0, 0, 2)
+  SetAmmo(amSniperRifle, 9, 0, 0, 0)
+  SetAmmo(amSnowball, 9, 0, 0, 0)
+  SetAmmo(amSwitch, 9, 0, 0, 0)
+  SetAmmo(amTeleport, 9, 0, 0, 0)
+	SetAmmo(amWatermelon, 9, 0, 0, 0)
+  SetAmmo(amWhip, 9, 0, 0, 0)
+end
+
+function onNewTurn()
+  if AnimInProgress() then
+    TurnTimeLeft = -1
+    return
+  end
+  if CurrentHedgehog == traitor then
+    TurnTimeLeft = 0
+  else
+    TurnTimeLeft = -1
+  end
+end
+
+function onGearDamage(gear, damage)
+end
+
+function onPrecise()
+  if GameTime > 2500 then
+    SetAnimSkip(true)
+  end
+end