share/hedgewars/Data/Missions/Campaign/A_Classic_Fairytale/dragon.lua
changeset 9306 c9978ada9a3d
parent 9120 089411fbf4e6
child 10423 b9d6463cf2ca
equal deleted inserted replaced
9305:8e5140875ab5 9306:c9978ada9a3d
       
     1 HedgewarsScriptLoad("/Scripts/Locale.lua")
       
     2 HedgewarsScriptLoad("/Scripts/Animate.lua")
       
     3 
       
     4 -----------------------------Map--------------------------------------
       
     5 local map = 
       
     6 {
       
     7 	"\0\91\4\253\131\0\88\0\46\0\0\91\0\49\131\15\196\0\53\0\15\196\0\53\131\15\196\4\250\0\255\242\7\179\131\1\128\7\214\0",
       
     8 	"\1\113\7\207\131\3\182\7\157\0\3\175\7\143\131\6\58\7\200\0\6\76\7\193\131\6\188\7\129\0\6\188\7\129\131\6\248\6\216\0",
       
     9 	"\6\248\6\216\131\7\52\8\14\0\10\206\8\0\131\11\203\6\65\0\11\203\6\65\131\12\18\7\66\0\12\18\7\69\131\16\0\7\69\0",
       
    10 	"\0\109\1\1\131\2\111\0\49\0\2\111\0\49\131\3\133\1\18\0\3\140\1\18\131\4\162\0\165\0\4\162\0\165\131\5\135\1\29\0",
       
    11 	"\5\145\1\22\131\8\84\0\232\0\8\84\0\232\131\9\26\0\70\0\9\26\0\70\131\10\5\1\4\0\10\48\0\243\131\10\2\1\8\0",
       
    12 	"\10\58\0\243\131\10\118\1\15\0\10\118\1\15\131\10\234\1\173\0\11\10\1\177\131\12\11\1\22\0\12\39\1\40\131\12\243\2\9\0",
       
    13 	"\12\243\2\9\131\13\106\0\165\0\13\131\0\176\131\15\186\1\78\0\1\244\0\81\136\0\120\0\84\0\1\99\0\123\137\0\130\0\215\0",
       
    14 	"\0\158\0\130\143\0\158\0\130\0\2\216\0\88\138\4\165\0\102\0\4\91\0\127\142\3\129\0\197\0\3\69\0\134\142\3\69\0\134\0",
       
    15 	"\4\215\0\120\143\8\88\0\134\0\8\187\0\84\139\8\187\0\84\0\8\239\0\70\135\8\239\0\70\0\8\60\0\187\138\5\99\0\222\0",
       
    16 	"\5\61\0\197\138\5\61\0\197\0\9\99\0\81\137\10\23\0\218\0\9\187\0\77\137\11\31\1\117\0\10\30\0\88\137\15\161\0\109\0",
       
    17 	"\15\126\0\225\144\13\177\0\116\0\15\150\0\144\139\15\157\1\26\0\10\202\0\169\152\12\246\0\169\0\10\72\0\144\145\11\122\1\36\0",
       
    18 	"\11\17\1\121\141\11\17\1\121\0\12\229\1\194\138\12\229\1\194\0\12\208\1\85\150\12\208\1\85\0\12\148\1\15\147\12\148\1\15\0",
       
    19 	"\13\145\0\208\147\13\145\0\208\0\6\238\7\45\135\7\10\7\238\0\6\220\7\150\135\6\206\7\242\0\6\174\7\175\135\6\135\8\7\0",
       
    20 	"\6\118\7\214\135\6\62\7\238\0\6\30\7\245\140\3\217\7\210\0\3\161\7\221\138\255\252\7\231\0\15\242\7\165\148\11\115\7\175\0",
       
    21 	"\11\196\6\164\138\11\10\8\4\0\11\210\7\31\141\11\210\7\31\0\14\216\2\72\166\14\216\2\72\0\14\213\4\4\166\14\213\4\4\0",
       
    22 	"\13\216\1\159\148\13\216\1\159\0\13\159\2\143\148\13\159\2\143\0\13\230\3\69\145\13\230\3\69\0\13\163\4\11\145\13\166\4\11\0",
       
    23 	"\13\237\4\208\145\13\237\4\208\0\14\195\5\61\145\14\195\5\61\0\13\78\1\254\136\13\78\1\254\0\12\239\2\93\136\12\239\2\93\0",
       
    24 	"\12\250\2\227\136\12\250\2\227\0\13\71\3\59\136\13\71\3\59\0\13\1\3\168\136\13\1\3\168\0\12\243\4\32\136\12\246\4\32\0",
       
    25 	"\13\40\4\130\136\13\43\4\134\0\13\92\4\243\136\13\92\4\243\0\13\142\5\135\136\13\142\5\135\0\14\33\5\106\136\14\33\5\106\0",
       
    26 	"\14\111\5\208\136\14\121\5\216\0\15\13\5\237\136\15\13\5\237\0\15\73\5\128\136\15\73\5\128\0\15\84\4\243\136\15\84\4\243\0",
       
    27 	"\14\199\6\33\133\14\199\6\33\0\14\97\6\44\133\14\83\6\44\0\14\9\5\240\133\14\9\5\240\0\13\226\5\163\133\13\226\5\163\0",
       
    28 	"\13\170\5\233\133\13\170\5\233\0\13\71\5\205\133\13\71\5\205\0\13\61\5\117\133\13\61\5\117\0\13\22\5\40\133\13\22\5\40\0",
       
    29 	"\12\253\4\211\133\12\253\4\211\0\12\197\4\169\133\12\197\4\169\0\12\204\4\106\133\12\204\4\106\0\12\162\4\46\133\12\162\4\42\0",
       
    30 	"\12\194\3\200\133\12\194\3\196\0\12\201\3\84\133\12\201\3\84\0\12\253\3\62\133\12\253\3\62\0\12\169\2\241\133\12\169\2\241\0",
       
    31 	"\12\187\2\167\133\12\187\2\167\0\12\158\2\93\133\12\158\2\93\0\12\162\2\9\133\12\162\2\9\0\12\123\1\205\132\12\123\1\205\0",
       
    32 	"\12\84\1\251\132\12\84\1\251\0\12\91\2\55\132\12\95\2\55\0\12\63\2\139\132\12\63\2\139\0\12\120\2\164\132\12\120\2\164\0",
       
    33 	"\12\81\2\206\132\12\81\2\206\0\12\106\3\17\132\12\109\3\20\0\12\137\3\73\132\12\137\3\73\0\12\84\3\122\132\12\84\3\122\0",
       
    34 	"\12\137\3\150\132\12\137\3\150\0\12\95\3\217\132\12\95\3\217\0\12\134\3\231\132\12\134\3\231\0\12\106\4\63\132\12\106\4\63\0",
       
    35 	"\12\137\4\120\132\12\141\4\120\0\12\88\4\179\132\12\88\4\183\0\12\134\4\190\132\12\134\4\190\0\12\158\4\232\132\12\165\4\232\0",
       
    36 	"\12\215\5\15\132\12\215\5\15\0\12\91\4\243\130\12\91\4\243\0\12\144\5\26\130\12\144\5\26\0\12\176\5\54\130\12\176\5\54\0",
       
    37 	"\12\225\5\82\130\12\225\5\82\0\13\4\5\117\130\13\1\5\117\0\12\239\5\166\130\12\239\5\166\0\13\8\5\184\130\13\11\5\184\0",
       
    38 	"\13\8\5\226\130\13\8\5\226\0\13\54\6\12\130\13\57\6\12\0\13\106\6\2\130\13\106\5\254\0\13\138\6\12\130\13\138\6\12\0",
       
    39 	"\13\184\6\30\130\13\187\6\30\0\13\223\5\254\130\13\223\5\254\0\13\149\6\69\130\13\145\6\69\0\13\128\6\33\130\13\128\6\33\0",
       
    40 	"\13\85\6\40\130\13\85\6\40\0\12\232\6\2\130\12\232\6\2\0\12\204\5\205\130\12\204\5\201\0\12\183\5\159\130\12\183\5\156\0",
       
    41 	"\12\211\5\128\130\12\211\5\128\0\12\165\5\103\130\12\165\5\103\0\12\123\5\64\130\12\120\5\64\0\12\81\5\71\130\12\81\5\71\0",
       
    42 	"\12\84\5\18\130\12\84\5\18\0\12\39\4\243\130\12\39\4\243\0\12\35\4\194\130\12\35\4\194\0\12\63\4\127\130\12\63\4\127\0",
       
    43 	"\12\91\4\106\130\12\91\4\106\0\12\53\4\60\130\12\53\4\60\0\12\74\4\25\130\12\84\4\21\0\12\120\4\4\130\12\120\4\4\0",
       
    44 	"\12\42\3\231\130\12\42\3\231\0\12\39\3\189\130\12\42\3\186\0\12\60\3\175\130\12\60\3\175\0\12\39\3\133\130\12\39\3\133\0",
       
    45 	"\12\70\3\73\130\12\70\3\73\0\12\25\3\77\130\12\25\3\77\0\12\42\3\13\130\12\46\3\13\0\12\81\3\31\130\12\81\3\31\0",
       
    46 	"\12\32\2\213\130\12\32\2\213\0\12\14\2\178\130\12\14\2\178\0\12\42\2\181\130\12\46\2\181\0\12\14\2\128\130\12\14\2\128\0",
       
    47 	"\12\39\2\100\130\12\42\2\100\0\12\74\2\104\130\12\77\2\104\0\12\106\2\135\130\12\109\2\135\0\12\39\2\72\130\12\39\2\69\0",
       
    48 	"\12\35\2\37\130\12\35\2\37\0\12\32\2\2\130\12\32\2\2\0\12\28\1\226\130\12\28\1\223\0\12\63\1\208\130\12\63\1\208\0",
       
    49 	"\12\84\1\173\130\12\84\1\170\0\12\63\1\159\130\12\60\1\159\0\12\39\1\113\130\12\39\1\113\0\12\14\1\96\130\12\11\1\96\0",
       
    50 	"\11\228\1\131\130\11\228\1\135\0\12\7\1\149\130\12\7\1\149\0\12\21\1\177\130\12\25\1\177\0\11\242\1\201\130\11\242\1\201\0",
       
    51 	"\13\226\6\58\130\13\226\6\58\0\14\16\6\40\130\14\16\6\40\0\13\208\6\86\130\13\208\6\86\0\13\247\6\111\130\13\247\6\114\0",
       
    52 	"\13\184\6\121\130\13\184\6\121\0\13\198\6\146\130\13\201\6\146\0\13\244\6\139\130\13\244\6\139\0\13\223\6\185\130\13\223\6\185\0",
       
    53 	"\13\173\6\199\130\13\173\6\199\0\13\159\6\171\130\13\159\6\171\0\13\138\6\220\130\13\138\6\220\0\13\184\6\238\130\13\184\6\238\0",
       
    54 	"\13\208\6\223\130\13\208\6\223\0\13\216\7\10\130\13\216\7\10\0\13\184\7\10\130\13\180\7\10\0\13\142\7\38\130\13\142\7\41\0",
       
    55 	"\13\128\7\6\130\13\128\7\6\0\13\85\7\34\130\13\89\7\34\0\13\89\7\3\130\13\89\7\3\0\13\117\6\220\130\13\121\6\220\0",
       
    56 	"\13\75\6\195\130\13\75\6\195\0\13\110\6\164\130\13\110\6\164\0\13\156\6\125\130\13\156\6\125\0\13\106\6\135\130\13\106\6\135\0",
       
    57 	"\13\103\6\100\130\13\103\6\100\0\13\64\6\143\130\13\64\6\143\0\13\47\6\104\130\13\47\6\104\0\13\71\6\79\130\13\71\6\79\0",
       
    58 	"\13\40\6\65\130\13\36\6\65\0\13\8\6\44\130\13\1\6\44\0\13\8\6\76\130\13\8\6\76\0\13\1\6\132\130\13\1\6\132\0",
       
    59 	"\13\33\6\135\130\13\33\6\135\0\13\26\6\178\130\13\22\6\178\0\13\47\6\202\130\13\50\6\202\0\13\54\6\245\130\13\54\6\245\0",
       
    60 	"\13\22\7\3\130\13\22\7\3\0\13\43\7\27\130\13\43\7\27\0\12\253\6\248\130\12\250\6\248\0\12\253\6\220\130\12\253\6\220\0",
       
    61 	"\12\215\6\174\130\12\225\6\174\0\12\253\6\174\130\12\253\6\174\0\12\215\6\121\130\12\215\6\121\0\12\229\6\76\130\12\229\6\76\0",
       
    62 	"\12\201\6\51\130\12\201\6\51\0\12\190\6\19\130\12\190\6\19\0\12\151\5\223\130\12\151\5\223\0\12\148\5\194\130\12\151\5\194\0",
       
    63 	"\12\155\5\159\130\12\155\5\156\0\12\144\5\121\130\12\144\5\121\0\12\95\5\110\130\12\95\5\110\0\12\102\5\156\130\12\102\5\159\0",
       
    64 	"\12\99\5\216\130\12\106\5\219\0\12\148\6\40\130\12\148\6\40\0\12\127\6\19\130\12\127\6\19\0\12\176\6\104\130\12\176\6\104\0",
       
    65 	"\12\141\6\72\130\12\141\6\72\0\12\162\6\139\130\12\162\6\143\0\12\172\6\181\130\12\172\6\181\0\12\204\6\216\130\12\208\6\216\0",
       
    66 	"\12\201\7\3\130\12\201\7\3\0\12\236\7\24\130\12\236\7\24\0\12\120\6\146\130\12\120\6\146\0\12\123\6\104\130\12\123\6\104\0",
       
    67 	"\12\123\6\185\130\12\123\6\185\0\12\162\6\227\130\12\162\6\227\0\12\134\6\241\130\12\134\6\241\0\12\155\7\10\130\12\155\7\10\0",
       
    68 	"\12\190\7\41\130\12\190\7\41\0\11\228\1\96\129\11\228\1\96\0\11\200\1\121\129\11\200\1\121\0\11\193\1\156\129\11\196\1\156\0",
       
    69 	"\11\221\1\170\129\11\221\1\170\0\11\217\1\208\129\11\217\1\208\0\11\245\1\230\129\11\245\1\230\0\11\245\2\16\129\11\245\2\16\0",
       
    70 	"\12\14\2\62\129\12\18\2\62\0\11\242\2\93\129\11\242\2\93\0\11\235\2\178\129\11\235\2\178\0\11\231\2\238\129\11\235\2\238\0",
       
    71 	"\12\4\2\252\129\12\4\2\252\0\11\252\3\34\129\11\252\3\34\0\11\235\3\87\129\11\238\3\87\0\12\11\3\119\129\12\11\3\119\0",
       
    72 	"\12\4\3\168\129\12\4\3\168\0\11\245\3\200\129\11\245\3\200\0\11\252\3\238\129\11\252\3\242\0\12\11\4\7\129\12\11\4\7\0",
       
    73 	"\11\245\4\60\129\11\238\4\60\0\11\224\4\74\129\11\221\4\74\0\11\210\4\137\129\11\210\4\137\0\11\228\4\151\129\11\231\4\151\0",
       
    74 	"\11\242\4\130\129\11\242\4\130\0\12\4\4\113\129\12\7\4\113\0\12\28\4\102\129\12\28\4\102\0\12\11\4\141\129\12\11\4\141\0",
       
    75 	"\11\249\4\162\129\11\249\4\162\0\11\221\4\116\129\11\221\4\116\0\11\214\4\106\129\11\217\4\102\0\12\4\4\211\129\12\4\4\211\0",
       
    76 	"\11\249\5\8\129\11\252\5\8\0\12\39\5\11\129\12\42\5\11\0\12\56\5\50\129\12\60\5\47\0\12\46\5\96\129\12\49\5\96\0",
       
    77 	"\12\70\5\113\129\12\70\5\113\0\12\56\5\166\129\12\63\5\166\0\12\70\5\145\129\12\74\5\145\0\12\70\5\194\129\12\77\5\194\0",
       
    78 	"\12\70\5\237\129\12\74\5\237\0\12\106\5\240\129\12\109\5\240\0\12\99\6\33\129\12\99\6\33\0\12\88\6\72\129\12\88\6\72\0",
       
    79 	"\12\91\6\107\129\12\95\6\107\0\12\77\6\146\129\12\81\6\146\0\12\88\6\181\129\12\91\6\181\0\12\91\6\220\129\12\99\6\220\0",
       
    80 	"\12\113\7\10\129\12\116\7\10\0\8\116\4\18\179\8\116\4\18\0\9\205\3\73\156\9\205\3\73\0\10\83\2\146\144\10\83\2\146\0",
       
    81 	"\10\153\2\44\136\10\153\2\44\0\10\181\1\240\132\10\181\1\240\0\10\199\1\205\131\10\199\1\205\0\10\209\1\184\129\10\209\1\184\0",
       
    82 	"\8\42\2\167\150\8\42\2\167\0\8\53\1\240\141\8\53\1\237\0\8\67\1\135\134\8\67\1\135\0\11\224\5\8\129\11\224\5\8\0",
       
    83 	"\11\200\5\8\129\11\200\5\8\0\11\182\5\8\129\11\182\5\8\0\11\154\5\4\129\11\154\5\4\0\11\129\5\8\129\11\129\5\8\0",
       
    84 	"\11\119\3\84\129\11\119\3\84\0\11\140\3\87\129\11\140\3\87\0\11\165\3\87\129\11\165\3\87\0\11\182\3\87\129\11\182\3\87\0",
       
    85 	"\11\203\3\87\129\11\203\3\87\0\9\33\6\223\132\9\33\8\11\0\9\33\6\188\129\9\33\6\188\0\0\123\1\26\136\0\211\2\223\0",
       
    86 	"\0\211\2\223\136\0\120\3\84\0\0\130\3\101\136\0\211\4\53\0\0\204\4\53\136\0\120\4\151\0\0\130\3\193\136\0\127\4\63\0",
       
    87 	"\0\130\3\31\136\0\130\1\201\0\0\91\4\253\130\0\91\6\76\0\7\94\3\136\138\7\94\3\136\0\7\24\3\77\135\7\24\3\77\0",
       
    88 	"\6\238\3\24\132\6\241\3\24\0\6\223\2\238\131\6\223\2\238\0\6\220\2\209\129\6\220\2\209\0\7\87\4\14\133\7\87\4\14\0",
       
    89 	"\7\38\4\0\131\7\38\4\0\0\7\6\3\242\130\7\6\3\242\0\6\241\3\228\129\6\241\3\228\0\6\227\3\217\128\6\227\3\217\0",
       
    90 	"\0\109\4\197\135\0\162\5\99\0\0\144\5\121\135\0\123\6\9\0\0\127\5\92\135\0\127\5\92\0\0\127\5\54\135\0\127\5\54\0",
       
    91 	"\0\134\6\23\132\0\236\6\97\0\0\236\6\97\132\1\106\6\135\0\1\117\6\135\132\1\177\6\143\0\2\234\7\80\130\3\69\7\80\0",
       
    92 	"\3\69\7\80\130\3\84\7\101\0\3\84\7\101\130\3\87\7\129\0\3\87\7\129\130\3\84\7\150\0\0\183\5\103\130\1\92\5\159\0",
       
    93 	"\1\11\5\138\130\0\253\5\180\0\0\253\5\180\130\0\158\5\166\0\0\239\4\60\131\1\166\4\95\0\2\104\3\133\131\3\84\3\129\0",
       
    94 	"\4\162\2\181\131\4\162\3\147\0\3\115\2\26\131\4\74\2\30\0\2\23\1\54\131\2\230\1\54\0\0\204\2\5\131\1\194\2\5\0",
       
    95 	"\4\74\2\33\131\5\226\1\223\0\0\225\5\121\197\1\135\5\163\0\0\204\5\173\197\1\1\5\173\0\0\179\5\152\131\1\57\5\163\0",
       
    96 	"\1\57\5\159\131\1\106\5\219\0\0\165\5\226\130\0\253\5\230\0\0\253\5\230\130\1\8\5\159\0\1\254\6\86\131\1\254\6\86\0",
       
    97 	"\1\254\6\33\131\1\254\6\33\0\1\254\5\230\131\1\254\5\230\0\1\254\5\170\131\1\254\5\170\0\1\254\5\113\131\1\254\5\113\0",
       
    98 	"\1\251\6\5\129\1\251\6\5\0\1\254\5\201\129\1\254\5\201\0\1\254\5\138\129\1\254\5\138\0\1\254\6\58\129\1\254\6\58\0",
       
    99 	"\1\254\5\78\129\1\254\5\78\0\2\2\5\40\131\2\2\5\40\0\2\2\4\246\131\2\2\4\246\0\1\237\4\204\131\1\237\4\204\0",
       
   100 	"\2\40\4\190\131\2\40\4\190\0\6\160\7\52\223\7\27\7\126\0\1\219\4\172\204\1\219\4\172\0\2\37\4\183\197\2\37\4\183\0",
       
   101 	"\3\98\3\122\131\3\126\3\84\0\3\126\3\84\131\3\126\3\52\0\3\126\3\41\131\3\80\3\24\0\3\80\3\24\131\3\112\2\248\0",
       
   102 	"\3\112\2\248\131\3\98\2\188\0",
       
   103 }
       
   104 
       
   105 
       
   106 -----------------------------Constants---------------------------------
       
   107 choiceAccepted = 1
       
   108 choiceRefused = 2
       
   109 choiceAttacked = 3
       
   110 
       
   111 choiceEliminate = 1
       
   112 choiceSpare = 2
       
   113 
       
   114 leaksNum = 1
       
   115 denseNum = 2
       
   116 waterNum = 3
       
   117 buffaloNum = 4
       
   118 chiefNum = 5
       
   119 girlNum = 6
       
   120 wiseNum = 7
       
   121 
       
   122 nativeNames = {loc("Leaks A Lot"), loc("Dense Cloud"), loc("Fiery Water"), 
       
   123                loc("Raging Buffalo"), loc("Righteous Beard"), loc("Fell From Grace"),
       
   124                loc("Wise Oak")}
       
   125 
       
   126 nativeUnNames = {loc("Zork"), loc("Steve"), loc("Jack"),
       
   127                  loc("Lee"), loc("Elmo"), loc("Rachel"),
       
   128                  loc("Muriel")}
       
   129 
       
   130 nativeHats = {"Rambo", "RobinHood", "pirate_jack", "zoo_Bunny", "IndianChief",
       
   131               "tiara", "AkuAku"}
       
   132 
       
   133 nativePos = {257, 1950}
       
   134 
       
   135 cyborgNames = {loc("Syntax Errol"), loc("Segmentation Paul"), loc("Unexpected Igor"), loc("Jeremiah")}
       
   136 cyborgPos = {745, 1847}
       
   137 cyborgsPos = {{2937, 831}, {2945, 1264}, {2335, 1701}, {448, 484}}
       
   138 cyborgsDir = {"Left", "Left", "Left", "Right"}
       
   139 
       
   140 cratePos = {
       
   141             {788, 1919, amGirder, 2}, {412, 1615, amGirder, 1},
       
   142             {209, 1474, amSniperRifle, 1}, {1178, 637, amDEagle, 1},
       
   143             {633, 268, amDEagle, 1}, {3016, 1545, amDEagle, 1},
       
   144             {249, 1377, amRope, 3}, {330, 1018, amGirder, 1},
       
   145             {888, 647, amRope, 3}, {2116, 337, amRope, 3},
       
   146             {1779, 948, amRope, 3}, {3090, 1066, amRope, 3},
       
   147             {947, 480, amBazooka, 3}, {1097, 480, amMortar, 3},
       
   148             {1139, 451, amSnowball, 3}, {1207, 468, amShotgun, 3},
       
   149             {1024, 393, amSniperRifle, 2}, {998, 391, amDynamite, 2},
       
   150             {1024, 343, amRope, 2}, {998, 341, amRope, 2}
       
   151            }
       
   152 reactions = {loc("Yeah, take that!"), loc("Bullseye"), loc("Die, die, die!")}
       
   153 
       
   154 secondPos = {{1010, 510}, {1067, 510}}
       
   155 -----------------------------Variables---------------------------------
       
   156 natives = {}
       
   157 native = nil
       
   158 
       
   159 cyborgs = {}
       
   160 cyborg = {}
       
   161 cyborgsLeft = 0
       
   162 
       
   163 gearDead = {}
       
   164 hedgeHidden = {}
       
   165 
       
   166 startAnim = {}
       
   167 killAnim = {}
       
   168 killedAnim = {}
       
   169 
       
   170 freshDead = nil
       
   171 crates = {}
       
   172 cratesNum = 0
       
   173 jetCrate = nil
       
   174 -----------------------------Animations--------------------------------
       
   175 function EmitDenseClouds(dir)
       
   176   local dif
       
   177   if dir == "Left" then
       
   178     dif = 10
       
   179   else
       
   180     dif = -10
       
   181   end
       
   182   AnimInsertStepNext({func = AnimVisualGear, args = {native, GetX(native) + dif, GetY(native) + dif, vgtSteam, 0, true}, swh = false})
       
   183   AnimInsertStepNext({func = AnimVisualGear, args = {native, GetX(native) + dif, GetY(native) + dif, vgtSteam, 0, true}, swh = false})
       
   184   AnimInsertStepNext({func = AnimVisualGear, args = {native, GetX(native) + dif, GetY(native) + dif, vgtSteam, 0, true}, swh = false})
       
   185   AnimInsertStepNext({func = AnimWait, args = {native, 800}})
       
   186   AnimInsertStepNext({func = AnimVisualGear, args = {native, GetX(native) + dif, GetY(native) + dif, vgtSteam, 0, true}, swh = false})
       
   187   AnimInsertStepNext({func = AnimVisualGear, args = {native, GetX(native) + dif, GetY(native) + dif, vgtSteam, 0, true}, swh = false})
       
   188   AnimInsertStepNext({func = AnimWait, args = {native, 800}})
       
   189   AnimInsertStepNext({func = AnimVisualGear, args = {native, GetX(native) + dif, GetY(native) + dif, vgtSteam, 0, true}, swh = false})
       
   190 end
       
   191 
       
   192 function AnimationSetup()
       
   193   startAnim = {}
       
   194   local m = m5DeployedNum
       
   195   table.insert(startAnim, {func = AnimWait, args = {native, 3000}})
       
   196   table.insert(startAnim, {func = AnimCaption, args = {native, loc("With the rest of the tribe gone, it was up to ") .. nativeNames[m5DeployedNum] .. loc(" to save the village."), 5000}})
       
   197   table.insert(startAnim, {func = AnimCaption, args = {native, loc("But it proved to be no easy task!"), 2000}})
       
   198   for i = 1, 4 do
       
   199     table.insert(startAnim, {func = FollowGear, swh = false, args = {cyborgs[i]}})
       
   200     table.insert(startAnim, {func = AnimWait, args = {native, 1000}})
       
   201   end
       
   202   table.insert(startAnim, {func = FollowGear, swh = false, args = {native}})
       
   203   if m == leaksNum then
       
   204     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   205     table.insert(startAnim, {func = AnimSay, args = {native, loc("What a strange cave!"), SAY_THINK, 0}})
       
   206     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   207     table.insert(startAnim, {func = AnimSay, args = {native, loc("Now how do I get on the other side?!"), SAY_THINK, 5500}})
       
   208   elseif m == denseNum then
       
   209     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   210     table.insert(startAnim, {func = AnimSay, args = {native, loc("Dude, what's this place?!"), SAY_THINK, 0}})
       
   211     table.insert(startAnim, {func = AnimCustomFunction, args = {native, EmitDenseClouds, {"Right"}}})
       
   212     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   213     table.insert(startAnim, {func = AnimSay, args = {native, loc("And where's all the weed?"), SAY_THINK, 4000}})
       
   214   elseif m == waterNum then
       
   215     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   216     table.insert(startAnim, {func = AnimSay, args = {native, loc("Is this place in my head?"), SAY_THINK, 0}})
       
   217     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   218     table.insert(startAnim, {func = AnimSay, args = {native, loc("I shouldn't have drunk that last pint."), SAY_THINK, 6000}})
       
   219   elseif m == buffaloNum then
       
   220     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   221     table.insert(startAnim, {func = AnimSay, args = {native, loc("Where did that alien run?"), SAY_THINK, 0}})
       
   222     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   223     table.insert(startAnim, {func = AnimSay, args = {native, loc("When I find it..."), SAY_THINK, 3000}})
       
   224   elseif m == girlNum then
       
   225     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   226     table.insert(startAnim, {func = AnimSay, args = {native, loc("This is typical!"), SAY_THINK, 0}})
       
   227     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   228     table.insert(startAnim, {func = AnimSay, args = {native, loc("It's always up to women to clear up the mess men created!"), SAY_THINK, 8500}})
       
   229   elseif m == chiefNum then
       
   230     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   231     table.insert(startAnim, {func = AnimSay, args = {native, loc("What is this place?"), SAY_THINK, 0}})
       
   232     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   233     table.insert(startAnim, {func = AnimSay, args = {native, loc("It doesn't matter. I won't let that alien hurt my daughter!"), SAY_THINK, 8500}})
       
   234   elseif m == wiseNum then
       
   235     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 50, 0}})
       
   236     table.insert(startAnim, {func = AnimSay, args = {native, loc("Every single time!"), SAY_THINK, 0}})
       
   237     table.insert(startAnim, {func = AnimMove, args = {native, "Right", nativePos[1] + 200, 0}})
       
   238     table.insert(startAnim, {func = AnimSay, args = {native, loc("How come in a village full of warriors, it's up to me to save it?"), SAY_THINK, 8500}})
       
   239   end
       
   240 
       
   241   table.insert(startAnim, {func = AnimCustomFunction, args = {native, RestoreHedge, {cyborg, unpack(cyborgPos)}}})
       
   242   table.insert(startAnim, {func = AnimOutOfNowhere, args = {cyborg, unpack(cyborgPos)}})
       
   243   table.insert(startAnim, {func = AnimTurn, args = {cyborg, "Left"}})
       
   244   table.insert(startAnim, {func = AnimSay, args = {cyborg, loc("Greetings, ") .. nativeUnNames[m] .. "!", SAY_SAY, 2500}})
       
   245   table.insert(startAnim, {func = AnimSay, args = {cyborg, loc("As you can see, there is no way to get on the other side!"), SAY_SAY, 7000}})
       
   246   table.insert(startAnim, {func = AnimSay, args = {cyborg, loc("I wish to help you, ") .. nativeUnNames[m] .. "!", SAY_SAY, 4000}})
       
   247   table.insert(startAnim, {func = AnimSay, args = {cyborg, loc("Beware, though! If you are slow, you die!"), SAY_SAY, 7000}})
       
   248   table.insert(startAnim, {func = AnimDisappear, args = {cyborg, unpack(cyborgPos)}})
       
   249   table.insert(startAnim, {func = AnimSwitchHog, args = {native}})
       
   250   table.insert(startAnim, {func = AnimCustomFunction, args = {native, HideHedge, {cyborg}}})
       
   251   table.insert(startAnim, {func = AnimSay, args = {native, loc("Talk about mixed signals..."), SAY_SAY, 4000}})
       
   252   AddSkipFunction(startAnim, SkipStartAnim, {})
       
   253 end
       
   254 
       
   255 function SetupKillAnim()
       
   256   table.insert(killAnim, {func = AnimSay, args = {native, loc("Well, that was a waste of time."), SAY_THINK, 5000}})
       
   257   table.insert(killAnim, {func = AnimCustomFunction, args = {native, RestoreHedge, {cyborg, unpack(cyborgPos)}}})
       
   258   table.insert(killAnim, {func = AnimOutOfNowhere, args = {cyborg, unpack(cyborgPos)}})
       
   259   table.insert(killAnim, {func = AnimCustomFunction, args = {cyborg, CondNeedToTurn, {cyborg, native}}})
       
   260   table.insert(killAnim, {func = AnimSay, args = {cyborg, loc("You bear impressive skills, ") .. nativeUnNames[m5DeployedNum] .. "!", SAY_SHOUT, 4000}})
       
   261   table.insert(killAnim, {func = AnimSay, args = {cyborg, loc("However, my mates don't agree with me on letting you go..."), SAY_SHOUT, 7000}})
       
   262   table.insert(killAnim, {func = AnimSay, args = {cyborg, loc("I guess you'll have to kill them."), SAY_SHOUT, 4000}})
       
   263   table.insert(killAnim, {func = AnimDisappear, args = {cyborg, unpack(cyborgPos)}})
       
   264   table.insert(killAnim, {func = AnimSwitchHog, args = {native}})
       
   265   table.insert(killAnim, {func = AnimWait, args = {native, 1}})
       
   266   table.insert(killAnim, {func = AnimCustomFunction, args = {native, HideHedge, {cyborg}}})
       
   267   AddSkipFunction(killAnim, SkipKillAnim, {})
       
   268 end
       
   269 
       
   270 function SetupKilledAnim()
       
   271   table.insert(killedAnim, {func = AnimWait, args = {cyborg, 500}})
       
   272   table.insert(killedAnim, {func = AnimOutOfNowhere, args = {cyborg, unpack(secondPos[2])}})
       
   273   table.insert(killedAnim, {func = AnimOutOfNowhere, args = {native, unpack(secondPos[1])}})
       
   274   table.insert(killedAnim, {func = AnimCustomFunction, args = {cyborg, CondNeedToTurn, {cyborg, native}}})
       
   275   table.insert(killedAnim, {func = AnimSay, args = {cyborg, loc("Nice work, ") .. nativeUnNames[m5DeployedNum] .. "!", SAY_SHOUT, 4000}})
       
   276   table.insert(killedAnim, {func = AnimSay, args = {cyborg, loc("As a reward for your performance, here's some new technology!"), SAY_SHOUT, 8000}})
       
   277   table.insert(killedAnim, {func = AnimSay, args = {cyborg, loc("Use it wisely!"), SAY_SHOUT, 3000}})
       
   278   table.insert(killedAnim, {func = AnimDisappear, args = {cyborg, unpack(secondPos[2])}})
       
   279   table.insert(killedAnim, {func = AnimSwitchHog, args = {native}})
       
   280   AddSkipFunction(killedAnim, SkipKilledAnim, {})
       
   281 end
       
   282 --------------------------Anim skip functions--------------------------
       
   283 function SkipStartAnim()
       
   284   AnimSwitchHog(native)
       
   285   AnimWait(native, 1)
       
   286   AddFunction({func = HideHedge, args = {cyborg}})
       
   287 end
       
   288 
       
   289 function AfterStartAnim()
       
   290   SetGearMessage(native, 0)
       
   291   cratesNum = 0
       
   292   for i = 1, 6 do
       
   293     crates[i] = SpawnAmmoCrate(unpack(cratePos[i]))
       
   294     cratesNum = cratesNum + 1
       
   295   end
       
   296   FollowGear(native)
       
   297   AddNewEvent(CheckGearsDead, {{crates[1], crates[2]}}, PutCrates, {2}, 0) 
       
   298   TurnTimeLeft = TurnTime
       
   299   ShowMission(loc("Dragon's Lair"), loc("Obstacle course"), loc("In order to get to the other side, you need to collect the crates first.|") ..
       
   300                                                   loc("As the ammo is sparse, you might want to reuse ropes while mid-air.|") ..
       
   301                                                   loc("If you wish to restart the course, hold [Precise] while your turn ends (e.g with Skip)!|") ..
       
   302                                                   loc("The enemy can't move but it might be a good idea to stay out of sight!|") ..
       
   303                                                   loc("You have ") .. SuddenDeathTurns .. loc(" turns until Sudden Death! Better hurry!"), 1, 0)
       
   304 end
       
   305 
       
   306 function SkipKillAnim()
       
   307   AnimSwitchHog(native)
       
   308   AnimWait(native, 1)
       
   309   AddFunction({func = HideHedge, args = {cyborg}})
       
   310 end
       
   311 
       
   312 function AfterKillAnim()
       
   313   PutWeaponCrates()
       
   314   TurnTimeLeft = TurnTime
       
   315   AddEvent(CheckCyborgsDead, {}, DoCyborgsDead, {}, 0)
       
   316   ShowMission(loc("Dragon's Lair"), loc("The Slaughter"), loc("Kill the aliens!"), 1, 2000)
       
   317 end
       
   318 
       
   319 function SkipKilledAnim()
       
   320   AnimSetGearPosition(native, unpack(secondPos[1]))
       
   321   AnimSwitchHog(native)
       
   322   AnimWait(native, 1)
       
   323 end
       
   324 
       
   325 function AfterKilledAnim()
       
   326   HideHedge(cyborg)
       
   327   TurnTimeLeft = TurnTime
       
   328   SetGearMessage(native, 0)
       
   329   AddAmmo(native, amPortalGun, 100)
       
   330   SpawnUtilityCrate(2259, 755, amTeleport, 2)
       
   331   SpawnHealthCrate(secondPos[1][1] + 30, secondPos[1][2])
       
   332   ShowMission(loc("Dragon's Lair"), loc("The what?!"), loc("Use the portal gun to get to the next crate, then use the new gun to get to the final destination!|")..
       
   333                                              loc("Portal hint: one goes to the destination, and one is the entrance.|")..
       
   334                                              loc("Teleport hint: just use the mouse to select the destination!"), 1, 0)
       
   335 end
       
   336 -----------------------------Events------------------------------------
       
   337 
       
   338 function CheckCyborgsDead()
       
   339   return cyborgsLeft == 0
       
   340 end
       
   341 
       
   342 function NullifyAmmo()
       
   343   AddAmmo(native, amRope, 0)
       
   344   AddAmmo(native, amGirder, 0)
       
   345   AddAmmo(native, amLowGravity, 0)
       
   346   AddAmmo(native, amBazooka, 0)
       
   347   AddAmmo(native, amSniperRifle, 0)
       
   348   AddAmmo(native, amDEagle, 0)
       
   349   AddAmmo(native, amDynamite, 0)
       
   350   AddAmmo(native, amFirePunch, 0)
       
   351   AddAmmo(native, amBaseballBat, 0)
       
   352   AddAmmo(native, amMortar, 0)
       
   353   AddAmmo(native, amSnowball, 0)
       
   354   AddAmmo(native, amShotgun, 0)
       
   355 end
       
   356 
       
   357 function DoCyborgsDead()
       
   358   NullifyAmmo()
       
   359   RestoreHedge(cyborg)
       
   360   SetupKilledAnim()
       
   361   SetGearMessage(CurrentHedgehog, 0)
       
   362   AddAnim(killedAnim)
       
   363   AddFunction({func = AfterKilledAnim, args = {}})
       
   364 end
       
   365 
       
   366 
       
   367 function PutWeaponCrates()
       
   368   for i = 1, 8 do
       
   369     cratesNum = cratesNum + 1
       
   370     crates[cratesNum] = SpawnAmmoCrate(unpack(cratePos[cratesNum]))
       
   371   end
       
   372   FollowGear(native)
       
   373 end
       
   374 
       
   375 function DoCratesTaken()
       
   376   SetupKillAnim()
       
   377   SetGearMessage(CurrentHedgehog, 0)
       
   378   AddAnim(killAnim)
       
   379   AddFunction({func = AfterKillAnim, args = {}})
       
   380 end
       
   381 
       
   382 function PutCrates(index)
       
   383   if index <= 7 then
       
   384     cratesNum = cratesNum + 1
       
   385     crates[cratesNum] = SpawnUtilityCrate(unpack(cratePos[cratesNum]))
       
   386     AddNewEvent(CheckGearDead, {crates[cratesNum]}, PutCrates, {index + 1}, 0)
       
   387     FollowGear(native)
       
   388   else
       
   389     AddEvent(StoppedGear, {native}, DoCratesTaken, {}, 0)
       
   390   end
       
   391   if index == 4 then
       
   392     AnimSay(native, loc("I'm a ninja."), SAY_THINK, 0)
       
   393   end
       
   394 end
       
   395 
       
   396 function CheckMissionFinished()
       
   397   return gearDead[jetCrate] == true
       
   398 end
       
   399 
       
   400 function DoMissionFinished()
       
   401   AddCaption(loc("Salvation was one step closer now..."))
       
   402   if progress and progress<6 then
       
   403     SaveCampaignVar("Progress", "6")
       
   404   end
       
   405   RestoreHedge(cyborg)
       
   406   DeleteGear(cyborg)
       
   407   TurnTimeLeft = 0
       
   408 end
       
   409 
       
   410 function CheckGearsDead(gearList)
       
   411   for i = 1, # gearList do
       
   412     if gearDead[gearList[i]] ~= true then
       
   413       return false
       
   414     end
       
   415   end
       
   416   return true
       
   417 end
       
   418 
       
   419 
       
   420 function CheckGearDead(gear)
       
   421   return gearDead[gear]
       
   422 end
       
   423 
       
   424 function EndMission()
       
   425   RestoreHedge(cyborg)
       
   426   DeleteGear(cyborg)
       
   427   TurnTimeLeft = 0
       
   428 end
       
   429 
       
   430 function CheckFreshDead()
       
   431   return freshDead ~= nil
       
   432 end
       
   433 
       
   434 function CyborgDeadReact()
       
   435   freshDead = nil
       
   436   if cyborgsLeft == 0 then
       
   437     return
       
   438   end
       
   439   AnimSay(native, reactions[cyborgsLeft])
       
   440 end
       
   441 -----------------------------Misc--------------------------------------
       
   442 function HideHedge(hedge)
       
   443   if hedgeHidden[hedge] ~= true then
       
   444     HideHog(hedge)
       
   445     hedgeHidden[hedge] = true
       
   446   end
       
   447 end
       
   448 
       
   449 function RestoreHedge(hedge)
       
   450   if hedgeHidden[hedge] == true then
       
   451     RestoreHog(hedge)
       
   452     hedgeHidden[hedge] = false
       
   453   end
       
   454 end
       
   455 
       
   456 function GetVariables()
       
   457   progress = tonumber(GetCampaignVar("Progress"))
       
   458   m5DeployedNum = tonumber(GetCampaignVar("M5DeployedNum"))
       
   459 end
       
   460 
       
   461 function SetupPlace()
       
   462   for i = 1, 7 do
       
   463     if i ~= m5DeployedNum then 
       
   464       DeleteGear(natives[i])
       
   465     else
       
   466       native = natives[i]
       
   467     end
       
   468   end
       
   469   HideHedge(cyborg)
       
   470   jetCrate = SpawnUtilityCrate(3915, 1723, amJetpack)
       
   471 
       
   472   SetTimer(AddGear(1071, 1913, gtMine, 0, 0, 0, 0), 5000)
       
   473   SetTimer(AddGear(1098, 1919, gtMine, 0, 0, 0, 0), 5000)
       
   474   SetTimer(AddGear(1136, 1923, gtMine, 0, 0, 0, 0), 5000)
       
   475   SetTimer(AddGear(1170, 1930, gtMine, 0, 0, 0, 0), 5000)
       
   476   SetTimer(AddGear(1203, 1924, gtMine, 0, 0, 0, 0), 5000)
       
   477   SetTimer(AddGear(1228, 1939, gtMine, 0, 0, 0, 0), 5000)
       
   478   SetTimer(AddGear(1264, 1931, gtMine, 0, 0, 0, 0), 5000)
       
   479   SetTimer(AddGear(1309, 1938, gtMine, 0, 0, 0, 0), 5000)
       
   480   SetTimer(AddGear(1352, 1936, gtMine, 0, 0, 0, 0), 5000)
       
   481   SetTimer(AddGear(1386, 1939, gtMine, 0, 0, 0, 0), 5000)
       
   482   SetTimer(AddGear(1432, 1942, gtMine, 0, 0, 0, 0), 5000)
       
   483   SetTimer(AddGear(1483, 1950, gtMine, 0, 0, 0, 0), 5000)
       
   484   SetTimer(AddGear(1530, 1954, gtMine, 0, 0, 0, 0), 5000)
       
   485   SetTimer(AddGear(1579, 1959, gtMine, 0, 0, 0, 0), 5000)
       
   486   SetTimer(AddGear(1000, 1903, gtMine, 0, 0, 0, 0), 5000)
       
   487   SetTimer(AddGear(957, 1903, gtMine, 0, 0, 0, 0), 5000)
       
   488   SetTimer(AddGear(909, 1910, gtMine, 0, 0, 0, 0), 5000)
       
   489   SetTimer(AddGear(889, 1917, gtMine, 0, 0, 0, 0), 5000)
       
   490   ------ STICKY MINE LIST ------
       
   491   tempG = AddGear(1199, 733, gtSMine, 0, 0, 0, 0)
       
   492   tempG = AddGear(1195, 793, gtSMine, 0, 0, 0, 0)
       
   493   tempG = AddGear(1201, 861, gtSMine, 0, 0, 0, 0)
       
   494   tempG = AddGear(682, 878, gtSMine, 0, 0, 0, 0)
       
   495   tempG = AddGear(789, 876, gtSMine, 0, 0, 0, 0)
       
   496 end
       
   497 
       
   498 function SetupEvents()
       
   499   AddNewEvent(CheckMissionFinished, {}, DoMissionFinished, {}, 0)
       
   500   AddNewEvent(CheckGearDead, {native}, EndMission, {}, 0)
       
   501   AddNewEvent(CheckFreshDead, {}, CyborgDeadReact, {}, 1)
       
   502 end
       
   503 
       
   504 function SetupAmmo()
       
   505   AddAmmo(cyborgs[1], amBazooka, 100)
       
   506 --  AddAmmo(cyborgs[1], amSniperRifle, 100)
       
   507   AddAmmo(cyborgs[1], amShotgun, 100)
       
   508   AddAmmo(cyborgs[1], amSwitch, 100)
       
   509 end
       
   510 
       
   511 function AddHogs()
       
   512 	AddTeam(loc("Natives"), 29439, "Bone", "Island", "HillBilly", "cm_birdy")
       
   513   for i = 1, 7 do
       
   514     natives[i] = AddHog(nativeNames[i], 0, 200, nativeHats[i])
       
   515     gearDead[natives[i]] = false
       
   516   end
       
   517 
       
   518   AddTeam(loc("011101001"), 14483456, "ring", "UFO", "Robot", "cm_star")
       
   519   cyborg = AddHog(loc("Unit 334a$7%;.*"), 0, 200, "cyborg1")
       
   520   gearDead[cyborg] = false
       
   521 
       
   522   AddTeam(loc("011101000"), 14483455, "ring", "UFO", "Robot", "cm_star")
       
   523   for i = 1, 4 do
       
   524     cyborgs[i] = AddHog(cyborgNames[i], 2, 100, "cyborg2")
       
   525     gearDead[cyborgs[i]] = false
       
   526   end
       
   527   cyborgsLeft = 4
       
   528 
       
   529   for i = 1, 7 do
       
   530     AnimSetGearPosition(natives[i], unpack(nativePos))
       
   531   end
       
   532 
       
   533   AnimSetGearPosition(cyborg, unpack(cyborgPos))
       
   534 
       
   535   for i = 1, 4 do
       
   536     AnimSetGearPosition(cyborgs[i], unpack(cyborgsPos[i]))
       
   537     AnimTurn(cyborgs[i], cyborgsDir[i])
       
   538   end
       
   539 
       
   540 end
       
   541 
       
   542 function CondNeedToTurn(hog1, hog2)
       
   543   xl, xd = GetX(hog1), GetX(hog2)
       
   544   if xl > xd then
       
   545     AnimInsertStepNext({func = AnimTurn, args = {hog1, "Left"}})
       
   546     AnimInsertStepNext({func = AnimTurn, args = {hog2, "Right"}})
       
   547   elseif xl < xd then
       
   548     AnimInsertStepNext({func = AnimTurn, args = {hog2, "Left"}})
       
   549     AnimInsertStepNext({func = AnimTurn, args = {hog1, "Right"}})
       
   550   end
       
   551 end
       
   552 
       
   553 -----------------------------Main Functions----------------------------
       
   554 
       
   555 function onGameInit()
       
   556 	Seed = 0
       
   557 	GameFlags = gfSolidLand + gfDisableLandObjects + gfDisableWind + gfDisableGirders
       
   558 	TurnTime = 60000 
       
   559 	CaseFreq = 0
       
   560 	MinesNum = 20
       
   561 	MinesTime = 3000
       
   562 	Explosives = 6
       
   563 	Delay = 10 
       
   564   MapGen = 2
       
   565 	Theme = "City"
       
   566   SuddenDeathTurns = 25
       
   567 
       
   568 	for i = 1, #map do
       
   569 		ParseCommand('draw ' .. map[i])
       
   570 	end
       
   571 
       
   572   AddHogs()
       
   573   AnimInit()
       
   574 end
       
   575 
       
   576 function onGameStart()
       
   577   GetVariables()
       
   578   SetupAmmo()
       
   579   SetupPlace()
       
   580   AnimationSetup()
       
   581   SetupEvents()
       
   582   AddAnim(startAnim)
       
   583   AddFunction({func = AfterStartAnim, args = {}})
       
   584   ShowMission(loc("Dragon's Lair"), loc("Y Chwiliad"), loc("Find your tribe!|Cross the lake!"), 1, 0)
       
   585 end
       
   586 
       
   587 function onGameTick()
       
   588   AnimUnWait()
       
   589   if ShowAnimation() == false then
       
   590     return
       
   591   end
       
   592   ExecuteAfterAnimations()
       
   593   CheckEvents()
       
   594 end
       
   595 
       
   596 function onGearDelete(gear)
       
   597   gearDead[gear] = true
       
   598   if GetGearType(gear) == gtHedgehog then
       
   599     if GetHogTeamName(gear) == loc("011101000") then
       
   600       freshDead = GetHogName(gear)
       
   601       cyborgsLeft = cyborgsLeft - 1
       
   602     end
       
   603   end
       
   604 end
       
   605 
       
   606 function onAmmoStoreInit()
       
   607   SetAmmo(amFirePunch, 3, 0, 0, 0)
       
   608   SetAmmo(amBaseballBat, 2, 0, 0, 0)
       
   609   SetAmmo(amGirder, 0, 0, 0, 2)
       
   610   SetAmmo(amLowGravity, 0, 0, 0, 1)
       
   611   SetAmmo(amSkip, 9, 0, 0, 0)
       
   612 end
       
   613 
       
   614 function onNewTurn()
       
   615   if AnimInProgress() then
       
   616     TurnTimeLeft = -1
       
   617     return
       
   618   end
       
   619   if GetHogTeamName(CurrentHedgehog) == loc("011101000") then
       
   620     SetInputMask(band(0xFFFFFFFF, bnot(gmLeft + gmRight + gmLJump + gmHJump)))
       
   621     for i = 1, 4 do
       
   622       if gearDead[CurrentHedgehog] ~= true and gearDead[native] ~= true then
       
   623         if gearDead[cyborgs[i]] ~= true and GetX(cyborgs[i]) < GetX(native) then
       
   624           HogTurnLeft(cyborgs[i], false)
       
   625         else
       
   626           HogTurnLeft(cyborgs[i], true)
       
   627         end
       
   628       end
       
   629     end
       
   630     if TotalRounds % 6 == 0 then
       
   631       AddAmmo(CurrentHedgehog, amSniperRifle, 1)
       
   632       AddAmmo(CurrentHedgehog, amDEagle, 1)
       
   633     end
       
   634     TurnTimeLeft = 30000
       
   635   elseif GetHogTeamName(CurrentHedgehog) == loc("011101001") then
       
   636     TurnTimeLeft = 0
       
   637   else
       
   638     SetInputMask(0xFFFFFFFF)
       
   639     AddCaption(loc("Turns until Sudden Death: ") .. SuddenDeathTurns - TotalRounds)
       
   640   end
       
   641 end
       
   642 
       
   643 function onPrecise()
       
   644   if GameTime > 2500 and AnimInProgress() then
       
   645     SetAnimSkip(true)
       
   646   end
       
   647   if AnimInProgress() == false then
       
   648   end
       
   649 end
       
   650 
       
   651 function onPreciseUp()
       
   652 end