share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/epil.lua
changeset 9306 c9978ada9a3d
parent 8043 da083f8d95e6
child 11038 5a9dde74127e
equal deleted inserted replaced
9305:8e5140875ab5 9306:c9978ada9a3d
       
     1 HedgewarsScriptLoad("/Scripts/Locale.lua")
       
     2 HedgewarsScriptLoad("/Scripts/Animate.lua")
       
     3 
       
     4 -----------------------------Constants---------------------------------
       
     5 leaksNum = 1
       
     6 denseNum = 2
       
     7 waterNum = 3
       
     8 buffaloNum = 4
       
     9 chiefNum = 5
       
    10 girlNum = 6
       
    11 wiseNum = 7
       
    12 ramonNum = 8
       
    13 spikyNum = 9
       
    14 princessNum = 10
       
    15 
       
    16 denseScene = 1
       
    17 princessScene = 2
       
    18 waterScene = 3
       
    19 cyborgScene = 4
       
    20 
       
    21 nativeNames = {loc("Leaks A Lot"), loc("Dense Cloud"), loc("Fiery Water"), 
       
    22                loc("Raging Buffalo"), loc("Righteous Beard"), loc("Fell From Grace"),
       
    23                loc("Wise Oak"), loc("Ramon"), loc("Spiky Cheese"),
       
    24                loc("Fell From Heaven")
       
    25               }
       
    26 nativeHats = {"Rambo", "RobinHood", "pirate_jack", "zoo_Bunny", "IndianChief",
       
    27               "tiara", "AkuAku", "rasta", "hair_yellow", "tiara"}
       
    28 
       
    29 nativePosCyborg = {{1900, 508}, {480, 1321}, {2927, 873},
       
    30              {1325, 905}, {3190, 1424}, {1442, 857},
       
    31              {1134, 1278}, {2881, 853}, {2974, 897},
       
    32              {2033, 511}}
       
    33 nativeDirCyborg = {"Right", "Right", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Left"}
       
    34 
       
    35 nativePosPrincess = {{1930, 508}, {480, 1321}, {2927, 873},
       
    36              {1325, 905}, {3190, 1424}, {2033, 511},
       
    37              {1134, 1278}, {2881, 853}, {2974, 897},
       
    38              {1900, 508}}
       
    39 nativeDirPrincess = {"Right", "Right", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Right"}
       
    40 
       
    41 nativePosDense = {{1930, 508}, {2285, 772}, {2927, 873},
       
    42              {1325, 905}, {3190, 1424}, {1442, 857},
       
    43              {1134, 1278}, {480, 1321}, {2974, 897},
       
    44              {2033, 511}}
       
    45 nativeDirDense = {"Right", "Left", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Left"}
       
    46 
       
    47 nativePosWater = {{1900, 508}, {2033, 511}, {2285, 772},
       
    48              {1325, 905}, {3190, 1424}, {1442, 857},
       
    49              {1134, 1278}, {480, 1321}, {2974, 897},
       
    50              {1980, 511}}
       
    51 nativeDirWater = {"Right", "Left", "Left", "Right", "Right", "Left", "Right", "Right", "Left", "Left"}
       
    52 
       
    53 prisonPos = {2285, 772}
       
    54 
       
    55 brainNum = 1
       
    56 corpseNum = 2
       
    57 brutalNum = 3
       
    58 earNum = 4
       
    59 hanniNum = 5
       
    60 
       
    61 cannibalNames = {loc("Brainiac"), loc("Corpse Thrower"), loc("Brutal Lily"), loc("Ear Sniffer"), loc("Hannibal")}
       
    62 cannibalHats = {"Zombi", "AkuAku", "Zombi", "Zombi", "IndianChief"}
       
    63 cannibalPos = {{533, 1304}, {1184, 1282}, {1386, 883}, {2854, 834}, {3243, 1415}}
       
    64 cannibalDir = {"Left", "Left", "Left", "Right", "Left"}
       
    65 -----------------------------Variables---------------------------------
       
    66 natives = {}
       
    67 cannibals = {}
       
    68 traitor = nil
       
    69 crate = nil
       
    70 
       
    71 startAnim = {}
       
    72 
       
    73 gearDead = {}
       
    74 --------------------------Anim skip functions--------------------------
       
    75 function SkipStartAnim()
       
    76   SetGearMessage(CurrentHedgehog, 0)
       
    77   AnimSwitchHog(natives[1])
       
    78 end
       
    79 
       
    80 function AfterStartAnim()
       
    81   crate = SpawnHealthCrate(0, 0)
       
    82   SetGearMessage(CurrentHedgehog, 0)
       
    83   AddNewEvent(CheckCrateTaken, {}, DoCrateTaken, {}, 1)
       
    84   TurnTimeLeft = 0
       
    85   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)
       
    86 end
       
    87 
       
    88 ---------------------------Events-------------------------------------
       
    89 function CheckCrateTaken()
       
    90   return gearDead[crate]
       
    91 end
       
    92 
       
    93 function DoCrateTaken()
       
    94   crate = SpawnHealthCrate(0, 0)
       
    95 end
       
    96 -----------------------------Animations--------------------------------
       
    97 function AnimationSetup()
       
    98   if m8Scene == cyborgScene then 
       
    99     SetupAnimCyborg()
       
   100   elseif m8Scene == princessScene then
       
   101     SetupAnimPrincess()
       
   102   elseif m8Scene == waterScene then
       
   103     SetupAnimWater()
       
   104   else
       
   105     SetupAnimDense()
       
   106   end
       
   107   AddSkipFunction(startAnim, SkipStartAnim, {})
       
   108 end
       
   109 
       
   110 function SetupAnimWater()
       
   111   startAnim = {
       
   112     {func = AnimWait, args = {natives[1], 3000}},
       
   113     {func = AnimCaption, args = {natives[ramonNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
       
   114     {func = AnimSay, args = {natives[ramonNum], "You got a killer mask there, amigo!", SAY_SAY, 5500}},
       
   115     {func = AnimSay, args = {cannibals[brainNum], "Thanks, man! It really means a lot to me.", SAY_SAY, 6000}},
       
   116     {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
       
   117     {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
       
   118     {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
       
   119     {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
       
   120     {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
       
   121     {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
       
   122     {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
       
   123     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   124     {func = AnimWait, args = {natives[1], 1000}},
       
   125     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   126     {func = AnimWait, args = {natives[1], 1000}},
       
   127     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   128     {func = AnimWait, args = {natives[1], 1000}},
       
   129     {func = AnimSay, args = {natives[leaksNum], "It's amazing how quickly our lives can change...", SAY_SAY, 7000}},
       
   130     {func = AnimSay, args = {natives[waterNum], "Aye! Fellow! Let me exit this chamber of doom!", SAY_SAY, 7000}},
       
   131     {func = AnimTurn, args = {natives[princessNum], "Right"}},
       
   132     {func = AnimSay, args = {natives[princessNum], "It's your fault you're there!", SAY_SAY, 5000}},
       
   133     {func = AnimTurn, args = {natives[princessNum], "Left"}},
       
   134     {func = AnimSay, args = {natives[leaksNum], "I always suspected him!", SAY_SAY, 3000}},
       
   135     {func = AnimSay, args = {natives[leaksNum], "Nobody takes walks every day!", SAY_SAY, 4000}},
       
   136     {func = AnimSay, args = {natives[princessNum], "I don't know who I can trust anymore.", SAY_SAY, 6000}},
       
   137     {func = AnimSay, args = {natives[princessNum], "Everywhere I look, I see hogs walking around...", SAY_SAY, 7000}},
       
   138     {func = AnimSay, args = {natives[princessNum], "...and I think they are up to something. Something bad!", SAY_SAY, 8000}},
       
   139     {func = AnimMove, args = {natives[leaksNum], "Right", nativePosWater[princessNum][1] - 30, nativePosWater[princessNum][2]}},
       
   140     {func = AnimSay, args = {natives[leaksNum], "You can always trust me! I love you!", SAY_SAY, 6000}},
       
   141     {func = AnimSay, args = {natives[princessNum], "I know and I'm terribly sorry!", SAY_SAY, 5000}},
       
   142     {func = AnimSay, args = {natives[princessNum], "I love Dense Cloud now!", SAY_SAY, 4000}},
       
   143     {func = AnimTurn, args = {natives[princessNum], "Right"}},
       
   144     {func = AnimMove, args = {natives[denseNum], "Left", nativePosWater[princessNum][1] + 20, nativePosWater[princessNum][2]}},
       
   145     {func = AnimSay, args = {natives[denseNum], "Problems, dude? Chillax!", SAY_SAY, 4000}},
       
   146     {func = AnimTurn, args = {natives[leaksNum], "Left"}},
       
   147     {func = AnimSay, args = {natives[leaksNum], "(T_T)", SAY_SAY, 6000}},
       
   148     {func = AnimSwitchHog, args = {natives[leaksNum]}},
       
   149   }
       
   150 end
       
   151 
       
   152 function SetupAnimDense()
       
   153   startAnim = {
       
   154     {func = AnimWait, args = {natives[1], 3000}},
       
   155     {func = AnimCaption, args = {natives[ramonNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
       
   156     {func = AnimSay, args = {natives[ramonNum], "You got a killer mask there, amigo!", SAY_SAY, 5500}},
       
   157     {func = AnimSay, args = {cannibals[brainNum], "Thanks, man! It really means a lot to me.", SAY_SAY, 6000}},
       
   158     {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
       
   159     {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
       
   160     {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
       
   161     {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
       
   162     {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
       
   163     {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
       
   164     {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
       
   165     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   166     {func = AnimWait, args = {natives[1], 1000}},
       
   167     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   168     {func = AnimWait, args = {natives[1], 1000}},
       
   169     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   170     {func = AnimWait, args = {natives[1], 1000}},
       
   171     {func = AnimSay, args = {natives[waterNum], "...And then I took a stroll...", SAY_SAY, 4000}},
       
   172     {func = AnimSay, args = {natives[leaksNum], "It's amazing how quickly our lives can change...", SAY_SAY, 7000}},
       
   173     {func = AnimSay, args = {natives[denseNum], "Dude, let me out!", SAY_SAY, 3000}},
       
   174     {func = AnimSay, args = {natives[denseNum], "I already said I'm sorry!", SAY_SAY, 4000}},
       
   175     {func = AnimTurn, args = {natives[princessNum], "Right"}},
       
   176     {func = AnimSay, args = {natives[princessNum], "Traitors don't get to shout around here!", SAY_SAY, 7000}},
       
   177     {func = AnimTurn, args = {natives[princessNum], "Left"}},
       
   178     {func = AnimSay, args = {natives[leaksNum], "I still can't believe he sold us out like that.", SAY_SAY, 8000}},
       
   179     {func = AnimSay, args = {natives[princessNum], "I don't know who I can trust anymore.", SAY_SAY, 6000}},
       
   180     {func = AnimMove, args = {natives[leaksNum], "Right", nativePosDense[princessNum][1] - 30, nativePosDense[princessNum][2]}},
       
   181     {func = AnimSay, args = {natives[leaksNum], "You can always trust me!", SAY_SAY, 4000}},
       
   182     {func = AnimSay, args = {natives[princessNum], "I know, my hero!", SAY_SAY, 3000}},
       
   183     {func = AnimSay, args = {natives[princessNum], "...xoxo...", SAY_SAY, 2000}},
       
   184     {func = AnimSwitchHog, args = {natives[leaksNum]}},
       
   185   }
       
   186 end
       
   187 
       
   188 function SetupAnimCyborg()
       
   189   startAnim = {
       
   190     {func = AnimWait, args = {natives[1], 3000}},
       
   191     {func = AnimCaption, args = {natives[denseNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
       
   192     {func = AnimSay, args = {natives[denseNum], "Dude, that outfit is so kool!", SAY_SAY, 4500}},
       
   193     {func = AnimSay, args = {cannibals[brainNum], "Thanks, dude! It really means a lot to me.", SAY_SAY, 6000}},
       
   194     {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
       
   195     {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
       
   196     {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
       
   197     {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
       
   198     {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
       
   199     {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
       
   200     {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
       
   201     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   202     {func = AnimWait, args = {natives[1], 1000}},
       
   203     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   204     {func = AnimWait, args = {natives[1], 1000}},
       
   205     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   206     {func = AnimWait, args = {natives[1], 1000}},
       
   207     {func = AnimSay, args = {natives[waterNum], "...And then I took a stroll...", SAY_SAY, 4000}},
       
   208     {func = AnimSay, args = {natives[leaksNum], "I'm glad this is over!", SAY_SAY, 4000}},
       
   209     {func = AnimMove, args = {natives[princessNum], "Right", nativePosCyborg[princessNum][1] + 30, nativePosCyborg[princessNum][2]}},
       
   210     {func = AnimSay, args = {natives[princessNum], "I was so scared.", SAY_SAY, 2500}},
       
   211     {func = AnimMove, args = {natives[leaksNum], "Right", nativePosCyborg[princessNum][1], nativePosCyborg[princessNum][2]}},
       
   212     {func = AnimSay, args = {natives[leaksNum], "You have nothing to be afraid of now.", SAY_SAY, 6000}},
       
   213     {func = AnimSay, args = {natives[leaksNum], "I'll protect you!", SAY_SAY, 3000}},
       
   214     {func = AnimTurn, args = {natives[princessNum], "Left"}},
       
   215     {func = AnimSay, args = {natives[princessNum], "You're so brave...I feel safe with you.", SAY_SAY, 6500}},
       
   216     {func = AnimSay, args = {natives[princessNum], "I think I love you!", SAY_SAY, 3500}},
       
   217     {func = AnimSay, args = {natives[leaksNum], "I...like being with you too.", SAY_SAY, 4500}},
       
   218   }
       
   219 end
       
   220 
       
   221 function SetupAnimPrincess()
       
   222   startAnim = {
       
   223     {func = AnimWait, args = {natives[1], 3000}},
       
   224     {func = AnimCaption, args = {natives[denseNum], "Back in the village, the two tribes finally started to live in harmony.", 5000}},
       
   225     {func = AnimSay, args = {natives[denseNum], "Dude, that outfit is so kool!", SAY_SAY, 4500}},
       
   226     {func = AnimSay, args = {cannibals[brainNum], "Thanks, dude! It really means a lot to me.", SAY_SAY, 6000}},
       
   227     {func = AnimSay, args = {natives[wiseNum], "So, uhmm, how did you manage to teleport them so far?", SAY_SAY, 8000}},
       
   228     {func = AnimSay, args = {cannibals[corpseNum], "It's all about the right carrots, you know.", SAY_SAY, 7000}},
       
   229     {func = AnimSay, args = {natives[wiseNum], "Of course! It's all obvious now!", SAY_SAY, 4500}},
       
   230     {func = AnimSay, args = {natives[chiefNum], "I can't believe how blind we were...", SAY_SAY, 4500}},
       
   231     {func = AnimSay, args = {natives[chiefNum], "Fighting instead of cultivating a beautiful friendship.", SAY_SAY, 8500}},
       
   232     {func = AnimSay, args = {cannibals[hanniNum], "One shall not judge one by one's appearance!", SAY_SAY, 7000}},
       
   233     {func = AnimSay, args = {natives[chiefNum], "You speak great truth, Hannibal. Here, take a sip!", SAY_SAY, 7500}},
       
   234     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   235     {func = AnimWait, args = {natives[1], 1000}},
       
   236     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   237     {func = AnimWait, args = {natives[1], 1000}},
       
   238     {func = AnimVisualGear, args = {cannibals[hanniNum], cannibalPos[hanniNum][1], cannibalPos[hanniNum][2], vgtSmoke, 0, true}},
       
   239     {func = AnimWait, args = {natives[1], 1000}},
       
   240     {func = AnimSay, args = {natives[buffaloNum], "So I shook my fist in the air!", SAY_SAY, 5000}},
       
   241     {func = AnimSay, args = {cannibals[brutalNum], "Well that was an unnecessary act of violence.", SAY_SAY, 7000}},
       
   242     {func = AnimSay, args = {natives[waterNum], "...And then I took a stroll...", SAY_SAY, 4000}},
       
   243     {func = AnimSay, args = {natives[leaksNum], "I'm glad this is over!", SAY_SAY, 4000}},
       
   244     {func = AnimSay, args = {natives[girlNum], "I still can't believe you forgave her!", SAY_SAY, 6000}},
       
   245     {func = AnimSay, args = {natives[girlNum], "She endangered the whole tribe!", SAY_SAY, 5000}},
       
   246     {func = AnimSay, args = {natives[leaksNum], "It wasn't her fault!", SAY_SAY, 4000}},
       
   247     {func = AnimSay, args = {natives[leaksNum], "We oppressed her, the only woman in the tribe!", SAY_SAY, 7000}},
       
   248     {func = AnimSay, args = {natives[girlNum], "The only woman, huh?", SAY_SAY, 4000}},
       
   249     {func = AnimSay, args = {natives[girlNum], "Then what am I?", SAY_SAY, 4000}},
       
   250     {func = AnimSay, args = {natives[leaksNum], "Of course, but you're...special.", SAY_SAY, 5000}},
       
   251     {func = AnimSay, args = {natives[girlNum], "Sure!", SAY_SAY, 2000}},
       
   252     {func = AnimTurn, args = {natives[leaksNum], "Left"}},
       
   253     {func = AnimSay, args = {natives[leaksNum], "We're terribly sorry!", SAY_SAY, 4000}},
       
   254     {func = AnimSay, args = {natives[princessNum], "I don't know if I can forget what you've done!", SAY_SAY, 7000}},
       
   255     {func = AnimTurn, args = {natives[princessNum], "Left"}},
       
   256     {func = AnimMove, args = {natives[princessNum], "Left", nativePosPrincess[princessNum][1] - 10, nativePosPrincess[princessNum][2]}},
       
   257     {func = AnimSwitchHog, args = {natives[leaksNum]}}
       
   258   }
       
   259 end
       
   260 -----------------------------Misc--------------------------------------
       
   261 function GetVariables()
       
   262   m8Scene = tonumber(GetCampaignVar("M8Scene"))
       
   263 end
       
   264 
       
   265 function AddHogs()
       
   266 	AddTeam(loc("Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
       
   267   for i = 1, 5 do
       
   268     natives[i] = AddHog(nativeNames[i], 0, 100, nativeHats[i])
       
   269   end
       
   270 
       
   271 	AddTeam(loc("More Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
       
   272   for i = 6, 10 do
       
   273     natives[i] = AddHog(nativeNames[i], 0, 100, nativeHats[i])
       
   274   end
       
   275 
       
   276 	AddTeam(loc("Cannibals"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
       
   277   for i = 1, 5 do
       
   278     cannibals[i] = AddHog(cannibalNames[i], 0, 100, cannibalHats[i])
       
   279   end
       
   280 
       
   281   if m8Scene == denseScene or m8Scene == waterScene then
       
   282     AddTeam(loc("Traitors"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
       
   283     if m8Scene == denseScene then
       
   284       DeleteGear(natives[2])
       
   285       natives[2] = AddHog(nativeNames[2], 0, 100, nativeHats[2])
       
   286     else
       
   287       DeleteGear(natives[3])
       
   288       natives[3] = AddHog(nativeNames[3], 0, 100, nativeHats[3])
       
   289     end
       
   290   end
       
   291 
       
   292   SetGearPositions()
       
   293 end
       
   294 
       
   295 function SetGearPositions()
       
   296   if m8Scene == cyborgScene then
       
   297     for i = 1, 10 do
       
   298       AnimSetGearPosition(natives[i], unpack(nativePosCyborg[i]))
       
   299       AnimTurn(natives[i], nativeDirCyborg[i])
       
   300     end
       
   301   elseif m8Scene == waterScene then
       
   302     for i = 1, 10 do
       
   303       AnimSetGearPosition(natives[i], unpack(nativePosWater[i]))
       
   304       AnimTurn(natives[i], nativeDirWater[i])
       
   305     end
       
   306   elseif m8Scene == denseScene then
       
   307     for i = 1, 10 do
       
   308       AnimSetGearPosition(natives[i], unpack(nativePosDense[i]))
       
   309       AnimTurn(natives[i], nativeDirDense[i])
       
   310     end
       
   311   else
       
   312     for i = 1, 10 do
       
   313       AnimSetGearPosition(natives[i], unpack(nativePosPrincess[i]))
       
   314       AnimTurn(natives[i], nativeDirPrincess[i])
       
   315     end
       
   316   end
       
   317 
       
   318   for i = 1, 5 do
       
   319     AnimSetGearPosition(cannibals[i], unpack(cannibalPos[i]))
       
   320     AnimTurn(cannibals[i], cannibalDir[i])
       
   321   end
       
   322 end
       
   323 
       
   324 function SetupPlace()
       
   325   if m8Scene == denseScene or m8Scene == waterScene then
       
   326     PlaceGirder(2296, 798, 4)
       
   327     PlaceGirder(2296, 700, 4)
       
   328     PlaceGirder(2225, 750, 2)
       
   329     PlaceGirder(2245, 750, 2)
       
   330     PlaceGirder(2265, 750, 2)
       
   331     PlaceGirder(2305, 750, 2)
       
   332     PlaceGirder(2345, 750, 2)
       
   333     PlaceGirder(2365, 750, 2)
       
   334   end
       
   335   if m8Scene == denseScene then
       
   336     traitor = natives[denseNum]
       
   337   elseif m8Scene == waterScene then
       
   338     traitor = natives[waterNum]
       
   339   end
       
   340 end
       
   341 -----------------------------Main Functions----------------------------
       
   342 function onGameInit()
       
   343 	Seed = 1
       
   344 	GameFlags = gfOneClanMode
       
   345 	TurnTime = 60000 
       
   346 	CaseFreq = 0
       
   347 	MinesNum = 0
       
   348 	MinesTime = 3000
       
   349 	Explosives = 0
       
   350 	Delay = 10 
       
   351   Map = "Hogville"
       
   352 	Theme = "Nature"
       
   353   SuddenDeathTurns = 3000
       
   354 
       
   355   GetVariables()
       
   356   AddHogs()
       
   357   AnimInit()
       
   358 end
       
   359 
       
   360 function onGameStart()
       
   361   SetupPlace()
       
   362   AnimationSetup()
       
   363   AddAnim(startAnim)
       
   364   AddFunction({func = AfterStartAnim, args = {}})
       
   365 end
       
   366 
       
   367 function onGameTick()
       
   368   AnimUnWait()
       
   369   if ShowAnimation() == false then
       
   370     return
       
   371   end
       
   372   ExecuteAfterAnimations()
       
   373   CheckEvents()
       
   374 end
       
   375 
       
   376 function onGearDelete(gear)
       
   377   gearDead[gear] = true
       
   378 end
       
   379 
       
   380 function onAmmoStoreInit()
       
   381   SetAmmo(amAirStrike, 9, 0, 0, 0)
       
   382   SetAmmo(amBaseballBat, 9, 0, 0, 0)
       
   383   SetAmmo(amBazooka, 9, 0, 0, 0)
       
   384   SetAmmo(amBlowTorch, 9, 0, 0, 0)
       
   385 	SetAmmo(amClusterBomb,9, 0, 0, 0)
       
   386   SetAmmo(amDEagle, 9, 0, 0, 0)
       
   387   SetAmmo(amDrill, 9, 0, 0, 4)
       
   388   SetAmmo(amDynamite, 9, 0, 0, 3)
       
   389   SetAmmo(amFirePunch, 9, 0, 0, 0)
       
   390   SetAmmo(amFlamethrower, 9, 0, 0, 3)
       
   391   SetAmmo(amGirder, 9, 0, 0, 0)
       
   392   SetAmmo(amGrenade, 9, 0, 0, 0)
       
   393   SetAmmo(amHammer, 9, 0, 0, 0)
       
   394   SetAmmo(amJetpack, 9, 0, 0, 0)
       
   395   SetAmmo(amLandGun, 9, 0, 0, 0)
       
   396   SetAmmo(amLowGravity, 9, 0, 0, 2)
       
   397   SetAmmo(amMine, 9, 0, 0, 2)
       
   398   SetAmmo(amMolotov, 9, 0, 0, 3)
       
   399   SetAmmo(amMortar, 9, 0, 0, 4)
       
   400   SetAmmo(amNapalm, 9, 0, 0, 4)
       
   401   SetAmmo(amParachute, 9, 0, 0, 0)
       
   402   SetAmmo(amPickHammer, 9, 0, 0, 0)
       
   403   SetAmmo(amPortalGun, 9, 0, 0, 0)
       
   404   SetAmmo(amRope, 9, 0, 0, 0)
       
   405   SetAmmo(amRCPlane, 9, 0, 0, 0)
       
   406   SetAmmo(amSkip, 9, 0, 0, 0)
       
   407   SetAmmo(amShotgun, 9, 0, 0, 0)
       
   408   SetAmmo(amSMine, 9, 0, 0, 2)
       
   409   SetAmmo(amSniperRifle, 9, 0, 0, 0)
       
   410   SetAmmo(amSnowball, 9, 0, 0, 0)
       
   411   SetAmmo(amSwitch, 9, 0, 0, 0)
       
   412   SetAmmo(amTeleport, 9, 0, 0, 0)
       
   413 	SetAmmo(amWatermelon, 9, 0, 0, 0)
       
   414   SetAmmo(amWhip, 9, 0, 0, 0)
       
   415 end
       
   416 
       
   417 function onNewTurn()
       
   418   if AnimInProgress() then
       
   419     TurnTimeLeft = -1
       
   420     return
       
   421   end
       
   422   if CurrentHedgehog == traitor then
       
   423     TurnTimeLeft = 0
       
   424   else
       
   425     TurnTimeLeft = -1
       
   426   end
       
   427 end
       
   428 
       
   429 function onPrecise()
       
   430   if GameTime > 2500 then
       
   431     SetAnimSkip(true)
       
   432   end
       
   433 end