Frame 1
function initFPS() {
if (fpsCounterMC == undefined) {
if (show_fps.toLowerCase() == "true") {
this.createTextField("fpsTF", 999, 10, 27, 100, 20);
fpsTF.textColor = 16777215 /* 0xFFFFFF */;
fpsTF.selectable = false;
this.createEmptyMovieClip("fpsCounterMC", this.getNextHighestDepth());
fpsCounterMC.onEnterFrame = function () {
if (getTimer() >= this.fpsNextTime) {
var _local2 = this.ticks;
fpsTF.text = ("fps: " + Math.round(_local2)) + " (50)";
this.ticks = 0;
this.fpsNextTime = getTimer() + 1000;
}
this.ticks++;
};
fpsCounterMC.fpsNextTime = getTimer() + 1000;
fpsCounterMC.ticks = 0;
}
}
}
function showErrorDialog(txt) {
if (errorDialogMC == undefined) {
_root.createEmptyMovieClip("errorDialogMC", _root.getNextHighestDepth());
errorDialogMC.createTextField("errorTF", 1, 0, 0, 100, 10);
errorDialogMC.errorTF.textColor = 16777215 /* 0xFFFFFF */;
errorDialogMC.errorTF.background = true;
errorDialogMC.errorTF.backgroundColor = 7798784 /* 0x770000 */;
errorDialogMC.errorTF.multiline = true;
errorDialogMC.errorTF.autoSize = true;
errorDialogMC.errorTF.text = txt;
errorDialogMC.ticks = 0;
errorDialogMC._alpha = 80;
errorDialogMC.onEnterFrame = function () {
if (this.ticks < 500) {
this.ticks++;
this.swapDepths(_root.getNextHighestDepth());
return(undefined);
}
this.removeMovieClip();
};
return(undefined);
}
errorDialogMC.ticks = 0;
errorDialogMC.errorTF.text = errorDialogMC.errorTF.text + (newline + txt);
}
var tongdiem = 0;
if (debug_mode.toLowerCase() == "true") {
delete _root.debug_mode;
_global.debug_mode = true;
} else {
delete _root.debug_mode;
_global.debug_mode = false;
}
if (_global.debug_mode) {
showErrorDialog("Received parameters:");
for (var n in _root) {
if (typeof(_root[n]) == "string") {
if (n != "$version") {
showErrorDialog((n + " = ") + _root[n]);
}
}
}
showErrorDialog("-----------------------");
}
Stage.scaleMode = "noscale";
Stage.showMenu = false;
_focusrect = false;
stop();
_global.soundObj = [];
levelsXML = new XML("<Levels><Graphics id=\"spiral2\" curve=\"spiral2\" image=\"spiral2\" gx=\"233\" gy=\"177\"><TreasurePoint x=\"35\" y=\"55\" dist1=\"10\" /><TreasurePoint x=\"440\" y=\"320\" dist1=\"30\" /><TreasurePoint x=\"40\" y=\"320\" dist1=\"43\" /></Graphics><Graphics id=\"dynomite\" curve=\"dynomite\" image=\"dynomite\" gx=\"229\" gy=\"267\"><TreasurePoint x=\"52\" y=\"65\" dist1=\"18\" /><TreasurePoint x=\"412\" y=\"179\" dist1=\"53\" /><TreasurePoint x=\"120\" y=\"208\" dist1=\"85\" /></Graphics><Graphics id=\"overlap\" curve=\"overlap\" image=\"overlap\" gx=\"245\" gy=\"190\"><Cutout image=\"tunnel1\" pri=\"1\" x=\"0\" y=\"0\" /><Cutout image=\"tunnel2\" pri=\"1\" x=\"15\" y=\"259\" /><TreasurePoint x=\"90\" y=\"50\" dist1=\"5\" /><TreasurePoint x=\"432\" y=\"320\" dist1=\"30\" /><TreasurePoint x=\"440\" y=\"40\" dist1=\"41\" /></Graphics><Graphics id=\"doubledip\" curve=\"doubledip-1\" curve2=\"doubledip-2\" image=\"doubledip\" gx=\"240\" gy=\"189\" ><TreasurePoint x=\"22\" y=\"61\" dist1=\"23\" /><TreasurePoint x=\"388\" y=\"95\" dist1=\"72\" /><TreasurePoint x=\"98\" y=\"326\" dist2=\"72\" /></Graphics><Settings id=\"level1\" speed=\".4\" start=\"35\" score=\"1000\" repeat=\"50\" /><Settings id=\"level2\" speed=\"0.50\" start=\"40\" score=\"1500\" /><Settings id=\"level3\" speed=\"0.60\" start=\"45\" score=\"2000\" /><Settings id=\"level4\" speed=\"0.65\" start=\"50\" score=\"2500\" /><Settings id=\"level5\" speed=\"0.70\" start=\"55\" score=\"3000\" /><Settings id=\"level6\" speed=\"0.75\" start=\"60\" score=\"3500\" /><Settings id=\"level7\" speed=\"0.90\" start=\"65\" score=\"4000\" /><Settings id=\"level8\" speed=\"0.95\" start=\"70\" score=\"4500\" /><Settings id=\"level9\" speed=\"0.95\" start=\"75\" score=\"5000\" slowfactor=\"3.5\" /><Settings id=\"level10\" speed=\"1.00\" start=\"75\" score=\"5000\" slowfactor=\"3\" /><Settings id=\"level11\" speed=\"1.00\" start=\"70\" score=\"5000\" slowfactor=\"2.5\" /><Settings id=\"level12\" speed=\"0.95\" start=\"65\" score=\"5000\" slowfactor=\"2\" /><Settings id=\"level13\" speed=\"0.80\" start=\"60\" score=\"5000\" slowfactor=\"1.5\" /><Settings id=\"level14\" speed=\"0.75\" start=\"55\" score=\"5000\" slowfactor=\"1\" /><Settings id=\"level15\" speed=\"0.80\" start=\"50\" score=\"5000\" slowfactor=\"1\" /><Settings id=\"level16\" speed=\"0.85\" start=\"40\" score=\"5000\" slowfactor=\"1\" powerfreq=\"2500\" /><Settings id=\"level17\" speed=\"0.95\" start=\"35\" score=\"5000\" slowfactor=\"1\" powerfreq=\"2300\" /><Settings id=\"level18\" speed=\"1.00\" start=\"35\" score=\"5000\" slowfactor=\"1\" powerfreq=\"2100\" /><Settings id=\"level19\" speed=\"1.00\" start=\"40\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1900\" /><Settings id=\"level20\" speed=\"1.05\" start=\"45\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1700\" /><Settings id=\"level21\" speed=\"1.05\" start=\"50\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1500\" /><Settings id=\"level22\" speed=\"1.10\" start=\"55\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1500\" /><Settings id=\"level23\" speed=\"1.15\" start=\"60\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1400\" /><Settings id=\"level24\" speed=\"1.20\" start=\"65\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1300\" /><Settings id=\"level25\" speed=\"1.25\" start=\"70\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1200\" /><Settings id=\"level26\" speed=\"1.30\" start=\"75\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1100\" /><Settings id=\"level27\" speed=\"1.35\" start=\"80\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1000\" /><Settings id=\"level28\" speed=\"1.40\" start=\"80\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1000\" /><Settings id=\"level29\" speed=\"1.45\" start=\"80\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1000\" /><Settings id=\"level30\" speed=\"1.50\" start=\"80\" score=\"5000\" slowfactor=\"1\" powerfreq=\"1000\" /><Settings id=\"dual1\" speed=\"0.45\" start=\"20\" score=\"2000\" /><Settings id=\"dual2\" speed=\"0.50\" start=\"25\" score=\"2500\" /><Settings id=\"dual3\" speed=\"0.55\" start=\"30\" score=\"3000\" /><Settings id=\"dual4\" speed=\"0.60\" start=\"35\" score=\"3500\" /><Settings id=\"dual5\" speed=\"0.65\" start=\"40\" score=\"4000\" /><Settings id=\"dual6\" speed=\"0.70\" start=\"45\" score=\"4500\" /><Settings id=\"dual7\" speed=\"0.75\" start=\"50\" score=\"5000\" /><Settings id=\"dual8\" speed=\"0.80\" start=\"50\" score=\"4500\" /><Settings id=\"dual9\" speed=\"0.80\" start=\"50\" score=\"4500\" slowfactor=\"3.5\" /><Settings id=\"dual10\" speed=\"0.85\" start=\"45\" score=\"4500\" slowfactor=\"3.5\" /><Settings id=\"dual11\" speed=\"0.80\" start=\"45\" score=\"4500\" slowfactor=\"3\" /><Settings id=\"dual12\" speed=\"0.85\" start=\"40\" score=\"4500\" slowfactor=\"3\" /><Settings id=\"dual13\" speed=\"0.80\" start=\"45\" score=\"4500\" slowfactor=\"2.5\" powerfreq=\"2900\" /><Settings id=\"dual14\" speed=\"0.80\" start=\"50\" score=\"5000\" slowfactor=\"2.5\" powerfreq=\"2800\" /><Settings id=\"dual15\" speed=\"0.80\" start=\"45\" score=\"5000\" slowfactor=\"2\" repeat=\"42\" powerfreq=\"2700\" /><Settings id=\"dual16\" speed=\"0.80\" start=\"50\" score=\"5000\" slowfactor=\"2\" repeat=\"44\" powerfreq=\"2600\" /><Settings id=\"dual17\" speed=\"0.70\" start=\"40\" score=\"5000\" slowfactor=\"1\" repeat=\"46\" powerfreq=\"2500\" /><Settings id=\"dual18\" speed=\"0.75\" start=\"40\" score=\"5000\" slowfactor=\"1\" repeat=\"48\" powerfreq=\"2400\" /><Settings id=\"dual19\" speed=\"0.75\" start=\"45\" score=\"5000\" slowfactor=\"1\" repeat=\"50\" powerfreq=\"2300\" /><Settings id=\"dual20\" speed=\"0.80\" start=\"45\" score=\"5000\" slowfactor=\"1\" repeat=\"50\" powerfreq=\"2200\" /><Settings id=\"dual21\" speed=\"0.85\" start=\"50\" score=\"5000\" slowfactor=\"1\" repeat=\"50\" powerfreq=\"2100\" /><Settings id=\"dual22\" speed=\"0.90\" start=\"55\" score=\"5000\" slowfactor=\"1\" repeat=\"45\" powerfreq=\"2500\" /><Settings id=\"dual23\" speed=\"0.95\" start=\"55\" score=\"5000\" slowfactor=\"1\" powerfreq=\"2400\" /><Settings id=\"dual24\" speed=\"1.00\" start=\"60\" score=\"5000\" slowfactor=\"1\" powerfreq=\"2300\" /><LevelProgression id=\"dual\" settings=\"dual1,dual2,dual3,dual4,dual5,dual6,dual7,dual8,dual9,dual10,dual11,dual12,dual13,dual14,dual15,dual16,dual17,dual18,dual19,dual20,dual21,dual22,dual23,dual24\" difficulty=\"4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27\" /><LevelProgression id=\"standard\" settings=\"level1,level2,level3,level4,level5,level6,level7,level8,level9,level10,level11,level12,level13,level14,level15,level16,level17,level18,level19,level20,level21,level22,level23,level24,level25,level26,level27,level28,level29,level30\" difficulty=\"1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30\" /><Level graphics=\"spiral2\" progression=\"standard\" /><Level graphics=\"dynomite\" progression=\"standard\" /><Level graphics=\"overlap\" progression=\"standard\" /><Level graphics=\"doubledip\" progression=\"dual\" /></Levels>");
trace(levelsXML.toString());
delete levelsXML.firstChild.attributes.curve;
trace("\n\n" + levelsXML.toString());
_root.onEnterFrame = function () {
var _local2 = _root.getBytesLoaded();
var _local3 = _root.getBytesTotal();
if (_local2 == _local3) {
if (levelsXML.getBytesLoaded() == levelsXML.getBytesTotal()) {
if (levelsXML.getBytesLoaded() > 0) {
delete _root.onEnterFrame;
if (levelsXML.status == 0) {
screenLoadingMC.loadingBarMC.gotoAndStop(200);
stop();
} else {
showErrorDialog(("Syntax error in levels xml file!\n(" + levelsXML.getStatusText()) + ")");
}
}
}
if (levelsXML.getBytesLoaded() == 0) {
if (waitForLevelsToStartLoading == undefined) {
waitForLevelsToStartLoading = 0;
} else {
waitForLevelsToStartLoading++;
}
if (waitForLevelsToStartLoading == 200) {
showErrorDialog("Could not load levels xml file!");
}
}
screenLoadingMC.loadingBarMC.gotoAndStop(Math.max(Math.round((_local2 / _local3) * 200), 1));
return(undefined);
}
screenLoadingMC.loadingBarMC.gotoAndStop(Math.max(Math.round((_local2 / _local3) * 200), 1));
};
initFPS();
_global.sendNotification = function (method, paramArray) {
var _local2 = "";
var _local3 = 0;
while (_local3 < paramArray.length) {
if (_local2 == "") {
_local2 = _local2 + (("'" + paramArray[_local3]) + "'");
} else {
_local2 = _local2 + ((", '" + paramArray[_local3]) + "'");
}
_local3++;
}
if (_global.debug_mode) {
showErrorDialog(__reg5);
}
};
_global.SendGameBreakNotification = function () {
if (sendGameBreaks) {
var _local1 = 1;
if (gameBoard) {
_local1 = gameBoard.mLevel + 1;
}
if (gameBoard.IsGameOver()) {
sendNotification("pc_gamebreak", [_local1, "gameover"]);
return(undefined);
}
sendNotification("pc_gamebreak", [_local1]);
}
};
_global.SendGameEndNotification = function () {
sendNotification("pc_gameover", [gameBoard.mScore]);
};
_global.getRandomIndexAssoc = function (arr) {
var _local1 = [];
for (var _local3 in arr) {
_local1.push(_local3);
}
return(parseInt(_local1[random(_local1.length)]));
};
_global.getLengthAssoc = function (arr) {
var _local1 = 0;
for (var _local3 in arr) {
_local1++;
}
return(_local1);
};
XML.prototype.getStatusText = function () {
if (this.status != 0) {
return(["A CDATA section was not properly terminated.", "The XML declaration was not properly terminated.", "The DOCTYPE declaration was not properly terminated.", "A comment was not properly terminated.", "An XML element was malformed.", "Out of memory.", "An attribute value was not properly terminated.", "A start-tag was not matched with an end-tag.", "An end-tag was encountered without a matching start-tag."][-2 - this.status]);
}
return(0);
};
Instance of Symbol 1097 MovieClip "screenLoadingMC" in Frame 1
on (release) {
getURL ("http://game.24h.com.vn", "_self");
}
Frame 3
posX = [];
posY = [];
inTunnel = [];
posX.spiral2 = [-15.35897, 64, 64, 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, 65, 64, 64, 64, 64, 65, 63, 64, 64, 64, 65, 64, 64, 64, 65, 64, 64, 64, 64, 64, 64, 64, 64, 63, 64, 64, 64, 63, 64, 64, 63, 64, 64, 63, 64, 63, 64, 63, 64, 64, 63, 64, 63, 64, 63, 63, 63, 63, 63, 63, 63, 63, 63, 62, 63, 63, 62, 63, 63, 62, 62, 63, 62, 63, 62, 62, 63, 63, 62, 63, 63, 63, 62, 63, 63, 64, 63, 63, 64, 64, 64, 65, 64, 65, 65, 65, 65, 66, 66, 67, 67, 68, 68, 69, 70, 70, 70, 72, 72, 72, 73, 75, 75, 75, 76, 77, 78, 78, 79, 80, 81, 81, 81, 82, 83, 83, 84, 85, 84, 85, 86, 86, 87, 87, 87, 88, 88, 89, 89, 89, 89, 89, 89, 90, 90, 90, 91, 90, 91, 91, 91, 91, 91, 91, 91, 91, 92, 91, 93, 92, 92, 92, 93, 92, 92, 93, 92, 93, 93, 93, 93, 93, 94, 93, 93, 93, 93, 93, 93, 93, 93, 94, 93, 94, 93, 93, 94, 94, 94, 94, 94, 94, 94, 95, 95, 95, 95, 95, 96, 96, 96, 97, 96, 98, 98, 98, 98, 98, 99, 99, 99, 99, 99, 99, 100, 99, 100, 100, 99, 100, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 99, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 100, 101, 101, 100, 100, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 100, 100, 101, 100, 101, 101, 99, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 100, 99, 100, 100, 100, 100, 99, 99, 100, 100, 99, 99, 99, 100, 99, 99, 100, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 99, 99, 98, 99, 99, 98, 99, 99, 98, 98, 98, 99, 98, 98, 99, 98, 98, 99, 98, 98, 98, 97, 99, 97, 98, 97, 97, 97, 97, 96, 97, 97, 97, 96, 96, 95, 96, 95, 96, 95, 94, 95, 94, 94, 93, 93, 93, 92, 92, 93, 92, 91, 92, 91, 91, 90, 91, 90, 90, 90, 89, 90, 89, 89, 88, 89, 88, 89, 88, 87, 87, 87, 86, 87, 86, 87, 86, 86, 86, 84, 86, 85, 84, 85, 84, 84, 83, 84, 83, 83, 82, 82, 82, 83, 81, 81, 80, 81, 80, 79, 79, 79, 78, 78, 77, 76, 76, 76, 74, 74, 74, 73, 72, 72, 71, 70, 70, 68, 68, 67, 67, 65, 65, 63, 63, 63, 61, 60, 59, 59, 58, 57, 56, 55, 55, 54, 52, 53, 51, 51, 50, 50, 49, 48, 48, 47, 46, 46, 45, 45, 44, 44, 43, 43, 43, 42, 41, 42, 40, 41, 40, 39, 40, 38, 39, 38, 38, 38, 37, 37, 36, 37, 35, 36, 35, 34, 33, 33, 32, 32, 31, 30, 30, 28, 28, 27, 27, 25, 25, 23, 23, 22, 21, 20, 19, 18, 17, 16, 15, 14, 13, 13, 11, 10, 9, 8, 8, 6, 5, 5, 3, 3, 2, 2, 0, 0, 0, -2, -2, -3, -3, -4, -5, -6, -6, -6, -7, -8, -8, -9, -9, -10, -11, -11, -12, -12, -12, -14, -13, -15, -14, -16, -16, -17, -17, -18, -18, -19, -20, -20, -21, -22, -22, -24, -24, -25, -26, -26, -28, -29, -30, -31, -31, -34, -34, -35, -36, -38, -39, -40, -42, -42, -44, -45, -46, -47, -48, -50, -50, -51, -52, -54, -53, -54, -56, -55, -57, -56, -57, -58, -58, -59, -59, -60, -60, -60, -61, -61, -62, -62, -63, -63, -63, -64, -64, -65, -65, -65, -66, -66, -67, -67, -67, -68, -68, -68, -69, -68, -70, -69, -70, -70, -71, -71, -71, -72, -72, -73, -73, -73, -74, -75, -74, -76, -75, -77, -76, -77, -77, -79, -78, -79, -79, -80, -79, -81, -81, -81, -81, -82, -83, -82, -84, -83, -84, -84, -85, -85, -85, -85, -86, -86, -86, -86, -87, -87, -87, -88, -88, -88, -87, -89, -89, -89, -89, -89, -89, -90, -90, -90, -90, -90, -91, -90, -91, -92, -91, -91, -92, -92, -91, -92, -92, -93, -92, -93, -92, -93, -93, -94, -94, -93, -93, -94, -93, -94, -95, -94, -94, -95, -95, -95, -95, -95, -96, -95, -96, -96, -95, -96, -96, -97, -96, -96, -97, -96, -97, -97, -96, -97, -97, -97, -97, -97, -98, -97, -97, -98, -97, -97, -98, -97, -98, -98, -97, -98, -99, -98, -99, -99, -98, -99, -99, -99, -98, -99, -99, -98, -99, -99, -98, -99, -99, -100, -99, -100, -99, -100, -99, -99, -99, -99, -100, -100, -100, -100, -100, -99, -100, -99, -100, -100, -100, -100, -99, -101, -100, -100, -100, -99, -101, -100, -100, -100, -100, -101, -100, -100, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -101, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -100, -100, -101, -100, -100, -100, -100, -99, -100, -100, -100, -100, -99, -100, -99, -99, -99, -100, -99, -99, -98, -99, -98, -99, -98, -99, -98, -99, -99, -98, -98, -98, -98, -98, -98, -98, -97, -98, -97, -97, -97, -98, -97, -96, -98, -96, -97, -97, -97, -97, -96, -97, -97, -96, -96, -97, -96, -96, -97, -96, -96, -97, -96, -96, -96, -95, -95, -96, -96, -95, -95, -96, -95, -95, -95, -96, -94, -95, -96, -94, -95, -94, -95, -94, -94, -94, -94, -94, -94, -94, -93, -93, -93, -93, -93, -92, -93, -92, -92, -91, -92, -90, -91, -90, -90, -88, -89, -88, -87, -87, -86, -85, -85, -84, -83, -82, -82, -81, -80, -79, -79, -78, -77, -77, -76, -76, -74, -75, -74, -74, -73, -73, -72, -72, -72, -71, -71, -70, -71, -69, -70, -69, -69, -68, -68, -68, -67, -67, -66, -67, -65, -65, -65, -65, -64, -63, -64, -62, -63, -62, -61, -61, -61, -60, -59, -58, -58, -58, -56, -56, -56, -54, -54, -54, -52, -52, -51, -50, -49, -49, -48, -47, -47, -45, -45, -44, -43, -42, -42, -41, -40, -39, -38, -38, -37, -36, -35, -35, -33, -33, -33, -31, -30, -30, -29, -29, -27, -27, -26, -25, -25, -23, -24, -22, -22, -21, -20, -20, -19, -19, -18, -17, -16, -16, -15, -15, -14, -13, -12, -12, -12, -11, -10, -9, -9, -8, -8, -7, -6, -6, -5, -4, -4, -4, -2, -2, -2, -1, 0, 0, 0, 2, 2, 2, 3, 4, 5, 5, 5, 6, 7, 7, 8, 8, 9, 10, 10, 12, 11, 13, 13, 15, 15, 15, 17, 18, 18, 19, 21, 21, 22, 23, 24, 26, 26, 27, 28, 30, 30, 31, 33, 34, 35, 36, 37, 38, 39, 41, 41, 43, 44, 45, 45, 48, 48, 49, 51, 51, 53, 54, 55, 55, 57, 58, 58, 60, 60, 61, 62, 63, 63, 64, 65, 66, 65, 67, 67, 69, 68, 69, 69, 71, 70, 72, 72, 72, 73, 74, 74, 74, 75, 75, 76, 76, 76, 77, 77, 77, 78, 78, 79, 78, 80, 80, 80, 81, 80, 82, 81, 82, 82, 83, 83, 84, 83, 85, 84, 85, 85, 86, 87, 86, 87, 88, 87, 88, 89, 88, 89, 90, 90, 90, 90, 91, 91, 92, 92, 92, 92, 93, 93, 93, 94, 94, 94, 94, 95, 96, 95, 95, 96, 95, 96, 96, 97, 96, 97, 97, 96, 97, 97, 98, 96, 98, 97, 98, 97, 97, 98, 98, 97, 98, 98, 98, 98, 99, 98, 98, 99, 98, 99, 99, 99, 99, 98, 99, 100, 99, 99, 100, 99, 99, 99, 100, 100, 99, 100, 100, 100, 100, 99, 100, 101, 99, 101, 99, 100, 101, 100, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 100, 101, 101, 100, 100, 101, 101, 100, 101, 100, 100, 100, 101, 100, 100, 100, 101, 100, 100, 100, 100, 100, 99, 99, 100, 98, 99, 99, 99, 98, 98, 99, 98, 98, 98, 98, 98, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 96, 97, 96, 96, 97, 96, 96, 97, 96, 96, 96, 96, 95, 96, 95, 95, 95, 95, 96, 95, 94, 96, 94, 95, 95, 94, 94, 94, 94, 93, 94, 93, 93, 93, 92, 92, 93, 91, 92, 91, 91, 90, 90, 90, 89, 89, 88, 88, 86, 87, 85, 86, 84, 84, 83, 82, 81, 81, 80, 79, 78, 78, 77, 76, 75, 74, 73, 73, 72, 71, 70, 70, 69, 68, 68, 67, 67, 65, 65, 65, 64, 63, 63, 62, 62, 61, 61, 60, 60, 59, 59, 58, 58, 57, 56, 56, 56, 55, 55, 53, 53, 53, 51, 52, 51, 50, 49, 49, 48, 47, 47, 45, 45, 44, 43, 42, 42, 40, 39, 39, 37, 36, 35, 34, 33, 31, 31, 29, 28, 27, 26, 24, 24, 23, 21, 21, 19, 19, 17, 17, 16, 15, 14, 13, 12, 12, 11, 10, 10, 9, 8, 8, 7, 7, 7, 5, 6, 5, 4, 3, 4, 2, 2, 1, 1, 0, 0, -2, -2, -3, -4, -4, -6, -6, -7, -9, -9, -10, -11, -12, -14, -14, -16, -17, -19, -19, -21, -23, -24, -26, -28, -29, -31, -33, -35, -36, -39, -40, -41, -43, -45, -46, -48, -49, -50, -51, -53, -54, -55, -55, -57, -58, -58, -59, -60, -60, -61, -62, -62, -62, -62, -63, -63, -62, -63, -63, -63, -62, -63, -62, -63, -62, -62, -63, -63, -63, -63, -64, -64, -65, -64, -66, -66, -67, -68, -68, -69, -70, -70, -72, -72, -73, -74, -76, -76, -77, -78, -79, -80, -81, -82, -83, -83, -84, -85, -86, -85, -87, -87, -87, -88, -88, -89, -89, -90, -90, -90, -91, -91, -91, -91, -93, -91, -93, -92, -93, -93, -93, -93, -94, -94, -94, -94, -94, -95, -94, -95, -95, -95, -96, -95, -96, -96, -97, -96, -96, -97, -97, -97, -97, -98, -97, -97, -98, -97, -98, -98, -98, -98, -98, -98, -99, -97, -98, -98, -98, -98, -98, -99, -98, -99, -99, -98, -98, -99, -98, -99, -98, -99, -99, -98, -99, -99, -99, -99, -99, -99, -100, -99, -98, -100, -100, -99, -100, -99, -100, -99, -100, -100, -100, -99, -100, -99, -101, -100, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -101, -100, -100, -101, -101, -100, -100, -100, -101, -99, -100, -100, -100, -100, -99, -100, -99, -100, -99, -100, -99, -100, -99, -100, -100, -100, -99, -99, -100, -100, -100, -99, -100, -100, -100, -100, -101, -100, -99, -100, -100, -100, -100, -99, -100, -100, -100, -99, -101, -99, -99, -100, -99, -99, -99, -99, -99, -100, -99, -99, -99, -99, -99, -99, -98, -99, -98, -99, -97, -97, -98, -97, -97, -96, -96, -96, -95, -95, -94, -93, -93, -92, -93, -91, -90, -91, -89, -89, -88, -87, -87, -86, -86, -85, -85, -83, -83, -83, -82, -82, -81, -80, -80, -79, -79, -79, -78, -79, -78, -77, -78, -78, -77, -77, -77, -76, -76, -77, -76, -75, -75, -74, -74, -73, -73, -73, -71, -71, -70, -70, -68, -68, -67, -66, -65, -64, -63, -62, -61, -59, -59, -57, -56, -54, -54, -52, -51, -50, -48, -47, -45, -45, -43, -42, -40, -40, -39, -37, -36, -36, -35, -34, -32, -32, -31, -31, -30, -29, -28, -28, -26, -27, -25, -26, -24, -24, -23, -23, -23, -21, -22, -20, -21, -20, -19, -19, -19, -18, -18, -17, -17, -17, -16, -16, -15, -15, -14, -13, -12, -12, -11, -9, -8, -7, -6, -4, -3, -1, 0, 2, 4, 6, 8, 9, 12, 14, 16, 17, 19, 22, 23, 24, 27, 28, 29, 31, 32, 33, 35, 36, 37, 38, 39, 41, 41, 43, 43, 44, 46, 46, 47, 49, 49, 50, 51, 52, 53, 54, 54, 56, 57, 57, 59, 60, 61, 61, 63, 63, 65, 66, 67, 68, 68, 70, 71, 72, 73, 74, 74, 76, 76, 76, 78, 79, 79, 80, 81, 82, 82, 83, 83, 84, 84, 85, 85, 86, 86, 87, 86, 87, 88, 88, 88, 88, 89, 89, 89, 89, 90, 90, 91, 91, 91, 91, 92, 92, 92, 93, 93, 93, 94, 94, 94, 94, 94, 95, 95, 96, 96, 95, 97, 97, 96, 97, 97, 98, 97, 98, 98, 98, 98, 99, 98, 100, 99, 99, 99, 100, 100, 99, 100, 99, 100, 101, 100, 100, 99, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 101, 101, 100, 101, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 101, 100, 100, 101, 100, 100, 100, 100, 100, 99, 100, 100, 99, 100, 100, 99, 99, 99, 99, 99, 99, 99, 98, 97, 98, 97, 98, 97, 97, 97, 96, 96, 95, 96, 94, 95, 94, 95, 93, 93, 92, 93, 92, 91, 91, 91, 89, 90, 89, 88, 88, 87, 87, 86, 86, 85, 84, 84, 82, 83, 81, 81, 79, 80, 78, 77, 76, 76, 74, 74, 73, 72, 71, 70, 69, 68, 67, 66, 65, 64, 63, 63, 61, 60, 59, 58, 57, 56, 55, 53, 53, 51, 50, 49, 47, 46, 45, 44, 43, 41, 40, 38, 37, 35, 34, 33, 30, 30, 28, 26, 25, 23, 22, 20, 19, 17, 16, 14, 13, 12, 10, 8, 8, 6, 5, 3, 2, 1, 0, -1, -3, -4, -5, -7, -7, -9, -10, -11, -12, -14, -14, -15, -17, -17, -19, -20, -21, -21, -23, -24, -25, -26, -27, -28, -30, -31, -32, -33, -34, -35, -36, -38, -40, -40, -42, -43, -44, -45, -47, -49, -49, -51, -52, -54, -55, -56, -57, -59, -61, -61, -63, -64, -67, -67, -69, -69, -71, -72, -73, -74, -75, -76, -77, -78, -79, -79, -81, -80, -82, -83, -83, -85, -84, -86, -86, -87, -87, -89, -88, -89, -90, -91, -91, -92, -92, -93, -93, -94, -94, -95, -95, -97, -96, -97, -97, -97, -98, -98, -98, -99, -99, -98, -99, -98, -99, -98, -99, -99, -98, -98, -98, -98, -97, -97, -97, -98, -97, -98, -97, -98, -98, -99, -98, -99, -99, -100, -99, -99, -100, -100, -100, -100, -101, -100, -100, -101, -101, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -100, -100, -100, -99, -99, -100, -100, -99, -100, -100, -99, -99, -100, -99, -100, -98, -100, -99, -98, -100, -98, -99, -98, -99, -99, -98, -99, -98, -99, -98, -98, -20];
posY.spiral2 = [176.2315, -76, -77, -77, -78, -77, -77, -78, -77, -77, -77, -77, -77, -78, -77, -77, -78, -77, -78, -77, -77, -77, -78, -78, -77, -78, -78, -78, -78, -77, -78, -78, -77, -78, -77, -78, -78, -78, -77, -78, -77, -78, -78, -78, -78, -78, -78, -78, -78, -78, -78, -79, -78, -79, -78, -79, -78, -79, -78, -79, -78, -79, -78, -79, -79, -78, -79, -79, -78, -79, -79, -79, -78, -79, -78, -79, -78, -79, -78, -79, -79, -78, -79, -78, -78, -78, -79, -78, -78, -78, -77, -78, -78, -77, -78, -77, -77, -76, -76, -76, -76, -76, -75, -74, -74, -74, -73, -73, -72, -71, -71, -70, -69, -68, -68, -68, -66, -65, -65, -63, -63, -62, -61, -61, -60, -58, -58, -57, -56, -56, -55, -54, -53, -52, -52, -51, -50, -50, -49, -48, -48, -48, -46, -47, -46, -45, -45, -45, -44, -44, -44, -43, -43, -43, -42, -43, -41, -42, -41, -41, -41, -41, -40, -41, -39, -40, -40, -39, -40, -39, -39, -39, -38, -39, -38, -39, -38, -38, -37, -38, -38, -37, -37, -38, -37, -37, -37, -37, -37, -37, -36, -36, -37, -35, -36, -35, -34, -34, -33, -32, -31, -31, -29, -29, -27, -26, -26, -24, -22, -22, -21, -19, -19, -18, -16, -16, -16, -14, -14, -14, -13, -12, -12, -12, -12, -11, -10, -11, -10, -10, -10, -10, -9, -9, -9, -9, -9, -9, -8, -9, -8, -8, -8, -8, -8, -8, -7, -8, -8, -7, -7, -8, -7, -7, -8, -7, -7, -7, -7, -7, -8, -7, -7, -7, -7, -7, -7, -8, -7, -7, -7, -7, -7, -7, -7, -7, -7, -6, -7, -6, -6, -6, -6, -6, -6, -5, -5, -5, -4, -5, -4, -4, -3, -4, -3, -3, -2, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 2, 1, 2, 3, 2, 3, 3, 3, 3, 4, 4, 5, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 9, 8, 9, 10, 9, 10, 10, 11, 11, 11, 12, 12, 12, 12, 13, 13, 14, 13, 14, 14, 15, 14, 15, 16, 15, 16, 15, 17, 16, 16, 17, 17, 17, 18, 17, 18, 18, 18, 18, 18, 19, 18, 19, 19, 19, 19, 19, 19, 20, 19, 20, 19, 20, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 26, 25, 27, 27, 28, 28, 29, 30, 30, 32, 31, 33, 33, 34, 35, 35, 37, 36, 38, 38, 38, 40, 40, 41, 41, 42, 42, 43, 43, 44, 44, 45, 45, 46, 46, 47, 47, 47, 48, 48, 49, 49, 49, 50, 49, 51, 50, 52, 51, 52, 53, 52, 53, 54, 53, 54, 55, 55, 55, 55, 57, 56, 57, 57, 58, 58, 59, 59, 59, 60, 61, 61, 62, 62, 63, 63, 64, 65, 65, 66, 67, 66, 68, 69, 69, 70, 71, 71, 72, 73, 73, 75, 74, 76, 76, 77, 78, 78, 80, 79, 80, 81, 82, 82, 83, 83, 84, 85, 85, 85, 86, 86, 87, 88, 87, 88, 88, 88, 89, 90, 89, 89, 90, 90, 91, 90, 91, 92, 91, 92, 92, 92, 92, 93, 92, 93, 92, 93, 93, 93, 93, 93, 93, 94, 94, 94, 95, 94, 94, 95, 95, 95, 95, 96, 95, 96, 97, 96, 97, 97, 98, 97, 98, 98, 98, 98, 99, 98, 100, 99, 99, 99, 100, 99, 100, 100, 99, 101, 100, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 99, 101, 100, 100, 99, 100, 99, 100, 99, 100, 100, 99, 99, 99, 100, 99, 99, 98, 99, 98, 98, 99, 98, 98, 98, 97, 98, 96, 97, 97, 96, 96, 95, 95, 95, 93, 94, 94, 92, 93, 91, 92, 90, 90, 89, 89, 88, 88, 87, 87, 86, 85, 85, 84, 85, 84, 83, 82, 83, 82, 82, 81, 81, 81, 81, 80, 79, 80, 79, 79, 78, 78, 78, 78, 77, 77, 77, 76, 76, 76, 76, 74, 75, 75, 74, 74, 73, 73, 73, 72, 72, 72, 71, 71, 70, 71, 69, 69, 69, 69, 68, 67, 67, 67, 66, 65, 65, 65, 64, 64, 63, 62, 62, 62, 61, 60, 60, 59, 59, 58, 58, 57, 56, 57, 55, 55, 55, 54, 54, 53, 52, 52, 52, 51, 51, 50, 50, 49, 49, 49, 48, 48, 47, 47, 46, 47, 46, 45, 45, 45, 44, 44, 44, 43, 43, 42, 42, 42, 42, 41, 40, 41, 40, 40, 39, 39, 38, 39, 38, 37, 38, 37, 36, 36, 36, 35, 35, 35, 34, 34, 34, 33, 33, 32, 33, 31, 32, 31, 30, 31, 30, 29, 29, 29, 29, 28, 28, 27, 27, 27, 26, 26, 26, 25, 25, 25, 25, 24, 23, 24, 23, 23, 22, 22, 22, 22, 21, 21, 21, 21, 20, 20, 19, 20, 19, 18, 19, 18, 18, 17, 17, 17, 17, 17, 16, 16, 16, 15, 16, 15, 14, 15, 14, 14, 13, 14, 13, 12, 13, 12, 12, 11, 12, 11, 10, 11, 10, 9, 10, 9, 8, 9, 8, 8, 7, 7, 7, 6, 6, 5, 6, 4, 5, 4, 4, 3, 3, 2, 2, 1, 1, 1, 0, 0, 0, -1, -2, -3, -3, -3, -4, -4, -5, -6, -6, -7, -7, -8, -8, -9, -10, -10, -11, -11, -12, -13, -13, -13, -14, -15, -15, -16, -16, -17, -18, -17, -19, -18, -19, -20, -20, -21, -21, -21, -22, -22, -23, -23, -23, -24, -23, -25, -24, -25, -25, -25, -26, -26, -26, -26, -27, -27, -27, -27, -27, -28, -28, -28, -29, -28, -29, -29, -29, -29, -30, -30, -30, -30, -30, -31, -31, -30, -32, -31, -32, -31, -32, -32, -33, -32, -33, -33, -34, -33, -34, -34, -34, -35, -35, -35, -35, -36, -36, -36, -37, -37, -38, -38, -38, -39, -39, -40, -41, -41, -42, -42, -43, -44, -45, -46, -46, -48, -48, -50, -51, -51, -53, -54, -55, -56, -58, -58, -59, -61, -61, -63, -63, -64, -65, -66, -67, -66, -68, -68, -69, -69, -69, -69, -70, -71, -70, -71, -72, -72, -72, -72, -73, -74, -73, -74, -75, -74, -75, -76, -75, -76, -76, -77, -78, -77, -78, -78, -79, -79, -80, -80, -81, -80, -82, -81, -82, -83, -82, -83, -83, -84, -85, -84, -86, -85, -86, -87, -87, -88, -87, -89, -89, -89, -89, -90, -90, -91, -92, -91, -92, -91, -93, -93, -93, -94, -94, -95, -94, -95, -95, -96, -96, -96, -96, -96, -97, -97, -96, -97, -97, -97, -98, -98, -98, -98, -98, -98, -99, -98, -99, -100, -98, -99, -100, -99, -100, -99, -99, -100, -100, -100, -100, -100, -100, -100, -100, -101, -101, -99, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -101, -100, -100, -100, -100, -100, -101, -99, -100, -99, -100, -99, -100, -99, -99, -98, -99, -99, -98, -98, -97, -98, -98, -96, -97, -96, -97, -95, -96, -95, -95, -94, -94, -94, -93, -92, -93, -91, -92, -90, -90, -89, -88, -89, -88, -87, -86, -86, -85, -85, -84, -83, -82, -82, -81, -81, -80, -79, -78, -79, -77, -77, -77, -75, -76, -74, -75, -73, -73, -72, -72, -72, -71, -71, -70, -70, -69, -69, -68, -68, -67, -67, -66, -66, -65, -64, -64, -64, -63, -62, -62, -62, -61, -61, -60, -59, -59, -59, -58, -57, -57, -57, -55, -56, -54, -55, -53, -53, -53, -51, -51, -51, -50, -49, -48, -48, -47, -46, -46, -45, -44, -44, -43, -42, -41, -41, -40, -39, -38, -38, -37, -37, -35, -35, -35, -34, -33, -32, -32, -31, -31, -30, -30, -29, -29, -28, -27, -28, -26, -27, -26, -25, -26, -25, -24, -25, -23, -24, -23, -23, -23, -22, -22, -21, -21, -21, -21, -20, -19, -19, -19, -19, -18, -18, -17, -17, -17, -16, -16, -15, -15, -14, -15, -13, -14, -13, -12, -12, -12, -12, -11, -10, -10, -10, -9, -9, -9, -8, -8, -7, -7, -7, -6, -6, -5, -5, -5, -4, -4, -4, -4, -3, -3, -2, -3, -2, -2, -1, -2, -1, -1, 0, -1, 0, 0, 0, 0, 0, 1, 0, 2, 1, 1, 2, 1, 2, 2, 2, 2, 3, 2, 3, 2, 3, 3, 3, 3, 4, 3, 3, 4, 3, 4, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 11, 10, 12, 13, 13, 14, 15, 16, 17, 17, 19, 18, 20, 21, 21, 21, 23, 23, 23, 24, 24, 25, 25, 26, 26, 26, 27, 27, 28, 27, 28, 29, 29, 29, 29, 29, 30, 31, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 34, 34, 34, 34, 35, 35, 36, 36, 37, 37, 37, 38, 39, 39, 40, 40, 41, 42, 43, 43, 44, 45, 46, 46, 48, 48, 50, 50, 51, 53, 53, 55, 55, 57, 58, 58, 61, 61, 62, 63, 64, 65, 66, 67, 67, 69, 69, 70, 71, 71, 73, 72, 74, 75, 75, 75, 76, 77, 77, 78, 78, 79, 79, 79, 80, 80, 80, 81, 82, 81, 82, 83, 82, 83, 84, 84, 84, 85, 85, 85, 85, 86, 87, 87, 87, 88, 87, 88, 90, 89, 89, 90, 91, 90, 91, 92, 92, 93, 92, 94, 93, 95, 94, 96, 95, 96, 96, 96, 96, 97, 97, 98, 98, 98, 98, 99, 99, 99, 99, 100, 99, 100, 99, 100, 100, 100, 100, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 100, 101, 100, 99, 101, 101, 100, 100, 99, 100, 100, 99, 99, 99, 99, 98, 99, 98, 97, 98, 97, 95, 96, 95, 95, 93, 93, 92, 92, 90, 90, 89, 89, 88, 87, 86, 86, 84, 85, 84, 82, 83, 82, 81, 81, 80, 80, 79, 80, 79, 79, 78, 79, 78, 78, 79, 78, 79, 79, 79, 79, 79, 78, 79, 79, 78, 78, 78, 77, 77, 76, 77, 76, 75, 75, 74, 73, 73, 71, 71, 70, 69, 67, 67, 66, 65, 63, 62, 61, 59, 58, 58, 55, 55, 55, 53, 52, 51, 50, 49, 49, 47, 47, 46, 46, 45, 44, 43, 43, 42, 41, 41, 40, 40, 40, 38, 39, 38, 37, 37, 36, 36, 36, 35, 34, 34, 33, 32, 32, 31, 31, 30, 29, 29, 28, 28, 27, 27, 27, 25, 26, 25, 25, 24, 25, 24, 23, 24, 23, 23, 23, 23, 22, 23, 22, 22, 21, 22, 21, 22, 21, 21, 20, 20, 21, 20, 19, 20, 19, 19, 19, 19, 18, 18, 18, 17, 17, 17, 17, 16, 16, 15, 15, 15, 14, 14, 14, 13, 12, 12, 12, 11, 10, 10, 9, 8, 7, 7, 6, 4, 4, 3, 2, 1, 0, -1, -2, -3, -4, -5, -7, -7, -8, -8, -10, -10, -11, -12, -12, -13, -13, -14, -14, -14, -14, -15, -14, -14, -15, -14, -14, -13, -14, -13, -13, -12, -12, -12, -12, -11, -11, -11, -12, -11, -11, -11, -11, -11, -11, -12, -11, -12, -12, -12, -13, -13, -13, -13, -14, -14, -15, -15, -15, -16, -17, -17, -18, -18, -20, -20, -20, -22, -22, -24, -24, -25, -27, -27, -29, -30, -32, -33, -34, -35, -37, -38, -40, -41, -42, -43, -45, -46, -47, -48, -49, -51, -51, -53, -54, -54, -56, -56, -57, -58, -59, -59, -60, -61, -61, -61, -62, -63, -63, -63, -64, -63, -65, -64, -64, -65, -65, -65, -66, -66, -67, -67, -67, -68, -69, -69, -70, -71, -71, -72, -73, -73, -74, -75, -77, -76, -78, -78, -79, -81, -80, -82, -82, -83, -84, -85, -86, -87, -87, -88, -89, -90, -90, -91, -91, -92, -93, -93, -93, -93, -94, -95, -95, -94, -95, -96, -95, -96, -96, -97, -96, -97, -96, -98, -97, -97, -98, -98, -98, -98, -99, -98, -98, -98, -99, -99, -99, -99, -98, -100, -99, -99, -99, -99, -99, -100, -100, -99, -99, -100, -100, -100, -100, -101, -100, -100, -101, -101, -100, -100, -101, -100, -101, -100, -100, -99, -100, -99, -99, -98, -98, -97, -98, -97, -96, -96, -95, -96, -94, -94, -94, -93, -93, -93, -92, -92, -91, -91, -90, -90, -89, -89, -88, -88, -87, -87, -86, -86, -85, -84, -84, -83, -82, -82, -81, -81, -79, -79, -77, -77, -76, -75, -74, -73, -73, -71, -70, -69, -69, -67, -66, -65, -64, -63, -62, -62, -60, -60, -59, -58, -57, -56, -55, -55, -54, -53, -52, -52, -51, -51, -50, -49, -49, -48, -49, -47, -46, -47, -45, -45, -44, -44, -43, -43, -42, -41, -40, -40, -40, -38, -38, -37, -36, -36, -34, -34, -33, -33, -32, -30, -30, -29, -29, -27, -26, -26, -25, -24, -23, -22, -20, -21, -19, -19, -17, -17, -16, -16, -15, -14, -13, -13, -12, -11, -11, -11, -10, -9, -9, -8, -8, -8, -7, -7, -6, -6, -6, -5, -5, -5, -5, -4, -4, -4, -3, -4, -3, -3, -3, -3, -3, -3, -2, -3, -2, -3, -2, -2, -2, -2, -2, -1, -2, -1, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 0, 0, 1, 2, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 6, 5, 7, 7, 7, 8, 8, 9, 10, 10, 11, 12, 12, 13, 14, 15, 16, 16, 17, 19, 19, 20, 21, 21, 23, 24, 24, 26, 26, 28, 28, 30, 30, 31, 32, 33, 34, 35, 36, 36, 38, 39, 39, 41, 41, 43, 44, 44, 46, 47, 47, 49, 49, 51, 52, 52, 54, 55, 56, 57, 58, 60, 60, 61, 62, 64, 64, 65, 66, 68, 68, 70, 70, 71, 72, 74, 74, 74, 76, 76, 77, 78, 79, 80, 81, 81, 82, 83, 84, 84, 86, 85, 87, 87, 88, 88, 89, 89, 91, 91, 92, 93, 93, 93, 93, 95, 96, 95, 97, 96, 98, 97, 98, 98, 98, 98, 99, 99, 99, 99, 100, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 99, 99, 100, 99, 99, 98, 100, 99, 99, 98, 98, 98, 97, 98, 96, 97, 96, 97, 96, 95, 95, 94, 94, 93, 94, 92, 93, 91, 91, 90, 89, 89, 89, 87, 87, 86, 84, 84, 83, 82, 81, 80, 79, 78, 76, 76, 75, 74, 72, 72, 70, 69, 67, 67, 66, 65, 63, 63, 61, 61, 59, 58, 57, 56, 55, 54, 53, 52, 51, 49, 49, 47, 47, 45, 44, 42, 42, 40, 39, 37, 36, 34, 33, 31, 30, 28, 27, 26, 24, 23, 22, 21, 20, 19, 19, 19, 18, 19, 19, 19, 19, 21, 21, 22, 23, 24, 24, 25, 24, 24, 24, 22, 23, 21, 20, 19, 18, 17, 15, 15, 12, 12, 10, 10, 7, 7, 5, 5, 2, 2, 1, 0, -1, -2, -4, -4, -6, -6, -7, -8, -9, -10, -10, -10, -11, -12, -12, -12, -13, -13, -14, -14, -14, -15, -14, -16, -15, -16, -16, -16, -17, -17, -17, -17, -17, -18, -18, -18, -18, -19, -19, -19, -19, -20, -19, -20, -21, -4];
posX.dynomite = [21.01359, 1, 1, 2, 1, 2, 2, 1, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 3, 2, 2, 2, 2, 3, 2, 2, 3, 2, 3, 2, 3, 3, 2, 3, 3, 3, 2, 3, 3, 3, 4, 3, 3, 3, 4, 3, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 5, 5, 4, 5, 6, 5, 5, 5, 6, 5, 6, 6, 5, 6, 6, 6, 7, 6, 6, 7, 6, 7, 6, 7, 7, 7, 7, 7, 8, 7, 8, 7, 8, 7, 8, 8, 8, 8, 9, 8, 8, 9, 9, 8, 9, 9, 9, 10, 9, 10, 9, 10, 10, 11, 10, 10, 11, 11, 11, 11, 12, 12, 11, 13, 12, 12, 13, 13, 14, 13, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 17, 17, 17, 17, 18, 18, 19, 19, 19, 19, 19, 20, 20, 21, 20, 21, 21, 22, 21, 22, 22, 22, 22, 23, 23, 23, 23, 24, 23, 24, 24, 24, 24, 24, 25, 24, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 27, 27, 28, 27, 29, 28, 29, 29, 30, 30, 31, 32, 31, 33, 32, 34, 34, 34, 35, 36, 36, 37, 37, 38, 38, 39, 40, 40, 40, 42, 42, 42, 43, 43, 44, 44, 45, 46, 46, 47, 46, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 52, 54, 53, 55, 54, 56, 56, 56, 57, 57, 58, 58, 59, 59, 60, 60, 61, 61, 62, 62, 62, 63, 63, 63, 64, 65, 64, 65, 66, 65, 66, 67, 66, 68, 67, 68, 68, 69, 69, 69, 70, 70, 71, 71, 71, 72, 71, 73, 72, 73, 73, 74, 75, 74, 75, 75, 76, 76, 76, 77, 78, 77, 78, 78, 78, 79, 79, 79, 79, 80, 80, 79, 80, 80, 80, 80, 80, 80, 80, 79, 81, 80, 80, 80, 80, 81, 80, 81, 80, 81, 82, 81, 81, 82, 82, 83, 83, 83, 83, 83, 84, 84, 85, 85, 86, 86, 86, 87, 87, 88, 89, 88, 89, 89, 90, 90, 92, 91, 91, 92, 92, 92, 93, 93, 94, 93, 94, 95, 94, 94, 95, 95, 95, 95, 96, 96, 95, 97, 96, 96, 96, 97, 97, 96, 97, 96, 97, 97, 97, 97, 97, 97, 98, 97, 97, 98, 98, 97, 98, 97, 98, 98, 98, 99, 98, 98, 99, 98, 99, 98, 98, 100, 99, 99, 99, 99, 100, 99, 100, 99, 99, 100, 100, 100, 100, 99, 100, 100, 101, 100, 100, 100, 101, 100, 101, 100, 100, 101, 101, 100, 101, 100, 101, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 101, 101, 101, 100, 100, 100, 101, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 100, 101, 100, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 100, 101, 99, 101, 99, 101, 99, 100, 100, 100, 100, 99, 100, 100, 100, 99, 100, 100, 100, 99, 99, 99, 99, 99, 100, 99, 98, 99, 99, 99, 98, 98, 99, 98, 98, 98, 98, 97, 98, 97, 98, 98, 97, 97, 98, 98, 97, 97, 98, 97, 96, 97, 97, 97, 97, 97, 96, 97, 97, 96, 97, 97, 97, 97, 97, 97, 96, 97, 96, 97, 96, 96, 95, 96, 96, 96, 95, 95, 96, 95, 95, 96, 94, 95, 95, 95, 94, 94, 95, 94, 94, 93, 94, 93, 93, 92, 93, 93, 91, 93, 91, 92, 91, 90, 90, 90, 90, 89, 89, 89, 89, 88, 88, 88, 87, 88, 86, 86, 86, 85, 86, 85, 85, 84, 84, 83, 84, 83, 82, 82, 82, 81, 82, 81, 80, 80, 80, 79, 80, 78, 78, 78, 77, 78, 76, 77, 76, 75, 74, 74, 73, 74, 73, 73, 71, 72, 70, 70, 69, 69, 68, 67, 67, 66, 65, 65, 64, 63, 63, 62, 61, 61, 60, 60, 58, 58, 58, 57, 56, 55, 55, 55, 54, 53, 53, 52, 51, 51, 50, 50, 50, 49, 48, 48, 47, 48, 46, 46, 46, 45, 45, 45, 44, 43, 43, 43, 42, 42, 41, 41, 40, 40, 39, 39, 38, 38, 37, 36, 36, 36, 35, 35, 34, 33, 33, 32, 31, 31, 30, 29, 29, 28, 28, 26, 26, 25, 24, 24, 23, 22, 21, 21, 20, 19, 18, 18, 18, 16, 16, 16, 15, 14, 14, 13, 13, 13, 12, 11, 12, 10, 11, 10, 10, 9, 10, 9, 9, 8, 9, 8, 9, 8, 8, 9, 8, 8, 8, 8, 8, 8, 8, 7, 8, 7, 7, 7, 7, 7, 6, 7, 6, 6, 5, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 3, 3, 3, 3, 3, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 0, 1, 0, 0, 0, 0, -1, 0, -1, -2, -1, -2, -2, -2, -3, -3, -3, -3, -4, -4, -5, -4, -6, -5, -6, -6, -7, -7, -8, -8, -8, -9, -10, -9, -10, -11, -11, -12, -12, -12, -13, -13, -13, -14, -15, -14, -15, -16, -15, -16, -17, -16, -18, -17, -18, -19, -19, -20, -21, -22, -22, -23, -24, -25, -26, -28, -28, -30, -30, -32, -34, -34, -36, -38, -39, -40, -42, -44, -45, -46, -49, -50, -52, -55, -56, -59, -61, -64, -66, -70, -73, -77, -81, -85, -90, -93, -98, -100, -100, -100, -97, -93, -90, -87, -83, -81, -77, -76, -72, -71, -69, -67, -65, -64, -63, -61, -60, -59, -58, -57, -56, -55, -55, -53, -53, -52, -51, -51, -50, -49, -48, -48, -47, -46, -45, -44, -44, -42, -42, -41, -40, -39, -39, -37, -37, -37, -35, -35, -34, -34, -33, -33, -32, -31, -32, -30, -31, -29, -30, -29, -28, -29, -28, -28, -28, -27, -28, -27, -27, -26, -27, -26, -27, -26, -26, -27, -26, -26, -26, -26, -25, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -26, -27, -26, -26, -27, -26, -27, -26, -27, -27, -28, -27, -27, -28, -28, -28, -29, -29, -29, -29, -30, -31, -30, -31, -32, -32, -32, -33, -33, -34, -34, -34, -35, -35, -35, -35, -36, -36, -36, -37, -36, -37, -36, -36, -37, -36, -36, -36, -35, -36, -35, -34, -35, -34, -34, -33, -34, -33, -32, -33, -32, -33, -32, -33, -32, -32, -32, -32, -32, -32, -32, -33, -32, -32, -33, -32, -33, -32, -33, -33, -34, -33, -34, -34, -34, -34, -35, -35, -34, -36, -36, -35, -37, -37, -36, -38, -38, -38, -39, -39, -40, -41, -41, -41, -42, -43, -43, -43, -45, -44, -46, -45, -47, -47, -47, -48, -49, -50, -49, -50, -51, -52, -52, -52, -53, -53, -54, -54, -55, -55, -56, -56, -56, -58, -57, -58, -58, -59, -58, -60, -59, -60, -60, -61, -61, -61, -61, -62, -63, -63, -62, -63, -64, -64, -64, -65, -65, -65, -67, -67, -67, -67, -68, -68, -69, -70, -70, -70, -71, -71, -72, -73, -73, -74, -74, -75, -75, -77, -76, -78, -78, -78, -80, -80, -81, -81, -83, -82, -83, -84, -84, -86, -85, -87, -86, -88, -88, -88, -89, -90, -90, -90, -90, -92, -92, -92, -92, -93, -93, -94, -95, -94, -95, -95, -95, -95, -96, -97, -96, -96, -97, -97, -98, -98, -98, -99, -98, -99, -98, -99, -99, -98, -99, -99, -100, -100, -99, -100, -100, -99, -100, -99, -101, -100, -100, -100, -100, -100, -101, -100, -101, -100, -100, -101, -101, -100, -101, -101, -100, -101, -101, -100, -101, -100, -100, -101, -100, -100, -100, -101, -101, -100, -101, -100, -100, -101, -100, -100, -101, -100, -100, -100, -101, -100, -100, -101, -100, -100, -100, -100, -99, -101, -100, -100, -100, -100, -100, -100, -99, -100, -99, -99, -100, -99, -99, -99, -98, -99, -98, -98, -98, -98, -98, -98, -97, -97, -97, -96, -97, -97, -96, -96, -96, -95, -96, -95, -95, -94, -95, -94, -93, -94, -94, -93, -92, -93, -91, -92, -92, -91, -91, -90, -90, -90, -88, -89, -89, -88, -88, -87, -87, -86, -87, -85, -85, -85, -84, -84, -84, -82, -82, -81, -81, -80, -80, -80, -79, -78, -78, -76, -76, -75, -74, -74, -74, -72, -73, -72, -71, -71, -69, -70, -68, -69, -68, -68, -67, -67, -67, -66, -66, -66, -66, -65, -66, -65, -64, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -65, -66, -65, -66, -64, -65, -65, -64, -65, -63, -64, -63, -62, -62, -62, -61, -61, -60, -59, -60, -58, -57, -57, -57, -55, -55, -54, -54, -52, -52, -51, -50, -50, -49, -48, -47, -47, -45, -45, -45, -44, -43, -43, -42, -42, -41, -41, -41, -40, -39, -40, -38, -39, -38, -38, -38, -37, -37, -37, -37, -36, -36, -36, -36, -35, -35, -35, -35, -35, -35, -34, -35, -34, -34, -34, -34, -34, -34, -34, -34, -33, -34, -34, -33, -34, -33, -34, -34, -33, -34, -33, -33, -34, -33, -33, -34, -33, -33, -33, -33, -33, -33, -33, -32, -33, -33, -32, -32, -33, -32, -32, -32, -31, -32, -31, -32, -31, -31, -31, -30, -31, -30, -30, -31, -30, -29, -30, -29, -29, -29, -28, -28, -28, -28, -28, -27, -27, -27, -26, -26, -26, -26, -25, -25, -24, -25, -24, -23, -23, -23, -23, -22, -21, -21, -21, -21, -20, -19, -19, -19, -18, -18, -16, -17, -16, -15, -14, -14, -13, -11, -12, -10, -9, -8, -7, -6, -5, -3, -2, -1, 0, 3, 4, 6, 9, 10, 13, 15, 18, 21, 23, 26, 30, 32, 36, 39, 43, 46, 50, 54, 58, 62, 67, 72, 75, 81, 84, 89, 91, 96, 97, 100, 100, 100, 101, 100, 99, 98, 97, 95, 95, 94, 92, 91, 89, 88, 88, 86, 85, 84, 82, 82, 82, 80, 79, 79, 77, 77, 75, 75, 75, 73, 73, 71, 71, 71, 69, 69, 68, 68, 67, 67, 65, 66, 64, 64, 64, 63, 61, 62, 62, 60, 60, 60, 59, 58, 59, 57, 58, 57, 56, 56, 56, 56, 55, 55, 55, 55, 54, 54, 55, 54, 53, 54, 54, 54, 53, 54, 53, 54, 54, 54, 53, 54, 54, 54, 54, 55, 54, 54, 55, 55, 55, 55, 54, 55, 55, 56, 54, 55, 55, 55, 55, 54, 55, 54, 54, 54, 54, 54, 53, 53, 53, 52, 52, 52, 52, 52, 51, 51, 50, 50, 50, 50, 49, 49, 48, 48, 47, 47, 47, 47, 46, 47, 46, 45, 46, 45, 45, 45, 45, 44, 45, 44, 44, 44, 45, 43, 44, 44, 44, 43, 44, 44, 44, 43, 44, 44, 44, 43, 44, 44, 44, 45, 44, 44, 45, 45, 45, 45, 45, 45, 46, 45, 46, 46, 46, 47, 46, 46, 47, 46, 47, 47, 46, 47, 47, 46, 47, 46, 47, 47, 46, 47, 46, 46, 46, 46, 46, 46, 45, 46, 45, 45, 45, 44, 45, 44, 44, 44, 44, 44, 44, 44, 44, 44, 45, 44, 45, 45, 45, 45, 47, 46, 47, 47, 47, 49, 49, 49, 50, 51, 51, 53, 53, 54, 55, 55, 57, 58, 58, 60, 60, 62, 62, 63, 64, 65, 66, 67, 67, 69, 70, 70, 72, 72, 74, 74, 76, 76, 77, 78, 80, 80, 81, 83, 84, 85, 86, 88, 88, 90, 92, 93, 94, 96, 96, 98, 99, 99, 99, 101, 100, 100, 100, 100, 99, 99, 98, 97, 97, 95, 94, 93, 92, 91, 89, 89, 88, 86, 86, 84, 84, 82, 81, 80, 80, 78, 77, 77, 75, 75, 74, 72, 72, 72, 70, 70, 69, 67, 67, 67, 65, 65, 64, 63, 62, 62, 62, 61, 60, 60, 59, 58, 58, 57, 58, 56, 56, 56, 55, 55, 54, 55, 54, 53, 53, 53, 53, 52, 52, 52, 51, 50, 51, 50, 51, 49, 50, 49, 49, 49, 49, 48, 48, 48, 48, 47, 47, 47, 47, 46, 47, 46, 46, 46, 45, 45, 45, 45, 45, 44, 44, 44, 44, 44, 43, 43, 44, 42, 43, 43, 42, 42, 42, 42, 41, 41, 42, 41, 41, 40, 41, 40, 41, 40, 40, 40, 40, 40, 39, 40, 40, 39, 39, 39, 40, 39, 39, 39, 39, 39, 39, 40, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 38, 39, 39, 39, 39, 38, 39, 39, 38, 39, 38, 39, 38, 38, 38, 39, 38, 38, 38, 38, 38, 38, 38, 37, 38, 38, 37, 38, 37, 38, 37, 38, 37, 37, 38, 37, 37, 37, 37, 37, 37, 38, 36, 37, 38, 37, 37, 37, 36, 37, 37, 37, 36, 37, 36, 37, 37, 36, 36, 37, 36, 36, 37, 36, 9];
posY.dynomite = [378.9972, -99, -101, -100, -101, -100, -100, -100, -101, -101, -100, -101, -100, -100, -101, -100, -100, -101, -100, -100, -101, -100, -101, -100, -101, -101, -100, -101, -101, -101, -100, -100, -101, -101, -100, -100, -101, -100, -100, -100, -101, -101, -101, -100, -101, -101, -100, -101, -100, -101, -101, -101, -100, -101, -100, -100, -101, -100, -100, -100, -101, -100, -100, -100, -101, -100, -100, -100, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -100, -100, -101, -100, -101, -100, -100, -100, -100, -100, -101, -100, -100, -100, -100, -100, -100, -100, -100, -100, -101, -100, -99, -101, -100, -100, -100, -100, -101, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -100, -99, -101, -100, -99, -100, -100, -100, -100, -99, -100, -100, -100, -100, -99, -100, -99, -100, -100, -99, -100, -99, -99, -100, -99, -99, -99, -99, -99, -99, -99, -99, -99, -98, -99, -99, -99, -98, -99, -99, -98, -98, -99, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -98, -97, -98, -98, -97, -98, -97, -97, -98, -97, -98, -97, -98, -97, -98, -97, -97, -97, -97, -97, -96, -97, -97, -96, -96, -97, -96, -95, -96, -96, -96, -96, -94, -95, -95, -95, -94, -95, -94, -94, -93, -94, -93, -93, -92, -93, -91, -93, -91, -92, -91, -91, -90, -91, -90, -90, -89, -89, -90, -88, -89, -89, -87, -88, -88, -87, -86, -87, -86, -86, -85, -86, -84, -85, -84, -84, -84, -83, -83, -83, -82, -82, -81, -81, -81, -80, -80, -80, -80, -79, -79, -78, -78, -78, -77, -78, -76, -77, -76, -76, -75, -76, -75, -75, -74, -74, -74, -73, -73, -73, -73, -72, -72, -72, -71, -71, -70, -70, -69, -69, -68, -69, -68, -67, -67, -66, -66, -66, -65, -65, -64, -64, -64, -63, -63, -62, -63, -62, -61, -62, -62, -60, -61, -61, -61, -61, -61, -61, -60, -61, -61, -61, -61, -60, -61, -60, -61, -60, -59, -60, -59, -59, -59, -58, -58, -58, -57, -57, -56, -56, -55, -54, -55, -53, -53, -53, -51, -51, -50, -49, -48, -47, -47, -45, -45, -44, -43, -43, -41, -41, -40, -39, -39, -38, -37, -37, -36, -35, -34, -35, -33, -33, -33, -31, -32, -31, -31, -30, -30, -29, -29, -29, -29, -28, -28, -27, -28, -27, -26, -26, -26, -26, -25, -25, -25, -24, -24, -23, -24, -22, -23, -22, -21, -22, -20, -21, -20, -19, -19, -19, -18, -18, -17, -17, -16, -16, -15, -15, -14, -13, -13, -13, -12, -11, -11, -10, -9, -9, -9, -8, -7, -7, -7, -6, -5, -5, -5, -4, -4, -3, -3, -2, -2, -2, -1, -1, -1, -1, 0, 0, 0, 0, 1, 1, 1, 2, 1, 2, 2, 2, 3, 2, 3, 3, 3, 4, 3, 4, 4, 4, 4, 4, 5, 5, 4, 6, 5, 5, 6, 6, 6, 7, 6, 7, 7, 7, 8, 7, 8, 8, 9, 9, 9, 9, 9, 10, 10, 11, 11, 11, 11, 12, 13, 12, 14, 13, 14, 15, 15, 15, 16, 16, 17, 17, 17, 18, 19, 19, 19, 20, 20, 21, 21, 22, 22, 22, 22, 24, 23, 24, 24, 24, 25, 25, 26, 25, 26, 26, 26, 27, 26, 27, 26, 27, 27, 27, 27, 28, 27, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 30, 29, 30, 30, 31, 31, 30, 32, 31, 32, 32, 33, 32, 34, 33, 34, 34, 35, 35, 35, 36, 37, 37, 37, 38, 38, 40, 39, 40, 41, 41, 42, 42, 43, 44, 44, 45, 45, 46, 47, 48, 48, 48, 50, 50, 50, 51, 52, 52, 52, 54, 53, 55, 55, 55, 56, 57, 56, 57, 58, 58, 59, 60, 59, 60, 61, 61, 62, 62, 62, 63, 64, 64, 65, 65, 66, 67, 66, 67, 67, 68, 70, 69, 70, 71, 71, 71, 72, 73, 74, 74, 74, 75, 76, 76, 77, 77, 78, 79, 79, 80, 80, 81, 81, 81, 82, 83, 83, 83, 84, 84, 85, 85, 85, 86, 86, 86, 86, 87, 88, 87, 89, 87, 89, 88, 89, 90, 89, 89, 90, 91, 90, 90, 90, 91, 91, 92, 92, 91, 91, 92, 92, 92, 93, 92, 93, 93, 94, 93, 94, 94, 95, 95, 95, 95, 95, 96, 95, 95, 97, 96, 97, 96, 97, 97, 97, 98, 97, 98, 98, 98, 98, 99, 99, 99, 98, 100, 99, 98, 100, 99, 100, 100, 99, 100, 99, 100, 100, 100, 100, 100, 99, 100, 101, 99, 100, 100, 101, 99, 100, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 101, 101, 101, 100, 100, 101, 100, 100, 101, 100, 100, 100, 100, 101, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 100, 100, 101, 101, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 100, 99, 100, 100, 99, 100, 101, 99, 99, 100, 100, 99, 100, 99, 100, 99, 99, 99, 98, 99, 99, 99, 99, 99, 98, 99, 98, 98, 98, 98, 97, 98, 97, 96, 97, 96, 96, 96, 95, 95, 94, 94, 94, 92, 92, 92, 91, 90, 89, 88, 87, 86, 86, 83, 82, 80, 77, 75, 73, 68, 64, 59, 53, 45, 36, 26, 12, 0, -14, -26, -37, -44, -51, -57, -60, -65, -67, -70, -71, -74, -75, -76, -78, -79, -79, -81, -82, -82, -83, -83, -84, -85, -85, -86, -86, -87, -87, -87, -88, -88, -89, -89, -89, -89, -90, -91, -91, -91, -92, -92, -92, -93, -93, -93, -95, -93, -95, -94, -94, -96, -95, -96, -95, -96, -96, -96, -96, -96, -96, -96, -97, -96, -97, -97, -97, -96, -97, -97, -96, -97, -97, -97, -97, -96, -97, -97, -97, -98, -96, -97, -97, -98, -97, -98, -97, -98, -97, -98, -97, -97, -96, -97, -97, -98, -97, -97, -96, -97, -97, -98, -96, -96, -97, -97, -97, -96, -97, -96, -96, -97, -96, -96, -95, -95, -96, -96, -95, -95, -94, -95, -95, -95, -94, -94, -93, -94, -94, -94, -94, -94, -93, -94, -94, -94, -93, -94, -94, -95, -93, -95, -94, -94, -94, -95, -94, -95, -95, -95, -95, -94, -95, -96, -95, -96, -95, -95, -96, -95, -95, -95, -96, -95, -96, -95, -95, -96, -95, -95, -95, -95, -95, -95, -96, -95, -95, -95, -94, -94, -94, -95, -94, -94, -94, -94, -93, -93, -93, -93, -93, -92, -92, -93, -91, -92, -91, -91, -91, -90, -91, -89, -90, -89, -89, -88, -89, -88, -88, -88, -87, -87, -87, -86, -86, -86, -85, -85, -84, -84, -84, -84, -83, -83, -83, -83, -82, -83, -82, -82, -81, -81, -82, -80, -81, -80, -80, -80, -79, -79, -80, -78, -78, -78, -78, -77, -76, -77, -76, -76, -76, -75, -75, -75, -74, -73, -74, -72, -73, -71, -72, -70, -70, -70, -69, -69, -68, -67, -66, -66, -65, -64, -63, -63, -62, -61, -60, -59, -58, -58, -56, -55, -55, -54, -52, -52, -51, -50, -49, -47, -47, -46, -45, -44, -43, -42, -41, -40, -39, -37, -38, -36, -35, -34, -33, -33, -31, -30, -30, -29, -28, -26, -26, -26, -24, -24, -23, -22, -21, -21, -19, -19, -18, -18, -16, -16, -16, -14, -14, -14, -12, -12, -12, -10, -10, -10, -9, -8, -8, -7, -7, -6, -6, -5, -4, -5, -3, -3, -3, -2, -2, -1, -1, -1, 0, 0, 0, 1, 2, 2, 2, 2, 3, 3, 4, 3, 4, 5, 4, 5, 5, 5, 6, 6, 6, 6, 7, 7, 7, 8, 9, 9, 9, 10, 10, 11, 12, 12, 13, 13, 14, 15, 15, 16, 17, 18, 18, 19, 19, 20, 21, 21, 23, 23, 23, 24, 25, 26, 26, 27, 28, 29, 29, 30, 30, 31, 32, 33, 33, 34, 35, 36, 36, 37, 37, 39, 39, 39, 41, 41, 42, 42, 43, 44, 45, 45, 46, 47, 47, 49, 49, 49, 51, 51, 52, 53, 53, 54, 55, 56, 56, 57, 58, 59, 59, 60, 62, 62, 62, 64, 65, 64, 66, 66, 68, 68, 68, 70, 70, 71, 71, 72, 72, 72, 73, 73, 74, 74, 75, 74, 76, 75, 75, 76, 76, 76, 77, 76, 76, 77, 76, 77, 77, 77, 77, 77, 77, 76, 76, 76, 77, 77, 76, 77, 77, 76, 77, 77, 78, 77, 78, 78, 79, 78, 79, 80, 80, 80, 81, 82, 81, 83, 82, 84, 84, 84, 85, 85, 85, 86, 86, 88, 88, 88, 89, 88, 89, 89, 90, 90, 90, 91, 91, 91, 91, 92, 92, 92, 92, 92, 92, 93, 93, 92, 93, 93, 94, 93, 94, 94, 93, 93, 94, 94, 93, 94, 95, 94, 95, 94, 94, 95, 94, 94, 95, 95, 95, 94, 95, 95, 94, 95, 95, 94, 95, 95, 94, 95, 95, 94, 95, 95, 94, 95, 95, 94, 96, 94, 95, 95, 94, 95, 96, 94, 96, 95, 95, 95, 95, 96, 95, 95, 95, 96, 95, 96, 95, 95, 96, 96, 95, 96, 96, 96, 96, 96, 96, 96, 97, 96, 96, 97, 96, 97, 96, 97, 97, 96, 97, 97, 98, 96, 97, 98, 98, 97, 97, 98, 98, 98, 98, 98, 98, 98, 99, 98, 99, 98, 99, 98, 100, 99, 99, 98, 100, 99, 100, 99, 100, 100, 100, 99, 100, 101, 100, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 99, 100, 98, 98, 99, 97, 95, 96, 93, 93, 91, 90, 87, 84, 82, 79, 76, 71, 66, 61, 54, 48, 40, 32, 24, 15, 8, 0, -5, -13, -18, -22, -27, -32, -34, -38, -41, -43, -46, -48, -50, -52, -53, -55, -56, -58, -60, -60, -62, -63, -64, -65, -66, -67, -68, -69, -69, -70, -71, -72, -72, -73, -73, -75, -75, -76, -76, -77, -77, -78, -78, -78, -79, -80, -80, -80, -81, -81, -81, -82, -82, -82, -83, -83, -83, -84, -83, -84, -84, -84, -85, -84, -84, -85, -85, -85, -84, -85, -86, -85, -85, -85, -85, -85, -85, -86, -84, -85, -84, -85, -85, -85, -84, -84, -84, -84, -84, -85, -83, -84, -84, -85, -84, -84, -84, -85, -84, -84, -85, -84, -85, -85, -85, -85, -85, -86, -85, -86, -85, -86, -87, -86, -87, -87, -87, -87, -88, -87, -88, -88, -89, -88, -88, -88, -89, -89, -89, -89, -90, -89, -90, -89, -90, -91, -89, -90, -90, -90, -90, -90, -90, -90, -91, -90, -90, -90, -91, -91, -90, -90, -90, -91, -90, -90, -91, -90, -91, -90, -91, -90, -90, -90, -90, -89, -90, -90, -89, -89, -90, -90, -89, -90, -89, -89, -89, -90, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -89, -90, -89, -89, -89, -90, -89, -90, -89, -90, -90, -90, -90, -90, -91, -90, -90, -90, -91, -91, -90, -91, -90, -90, -89, -91, -90, -89, -90, -90, -89, -89, -89, -88, -88, -88, -87, -87, -87, -86, -86, -85, -85, -84, -84, -82, -83, -82, -81, -80, -80, -78, -78, -78, -76, -76, -75, -74, -73, -72, -72, -71, -69, -69, -68, -67, -65, -64, -63, -62, -60, -58, -58, -55, -54, -52, -49, -47, -45, -42, -39, -35, -32, -28, -23, -20, -15, -10, -6, -2, 2, 8, 11, 16, 20, 23, 27, 30, 33, 36, 38, 41, 43, 45, 48, 49, 51, 53, 54, 56, 58, 59, 60, 62, 63, 63, 66, 66, 67, 68, 69, 70, 72, 72, 73, 73, 74, 75, 75, 76, 77, 77, 78, 78, 80, 79, 80, 81, 81, 82, 81, 82, 82, 83, 83, 83, 84, 83, 85, 84, 84, 86, 84, 86, 86, 85, 86, 86, 87, 86, 87, 86, 87, 87, 88, 87, 88, 87, 88, 88, 88, 88, 89, 88, 89, 89, 88, 89, 89, 90, 89, 89, 90, 89, 90, 90, 90, 90, 90, 90, 90, 91, 91, 91, 90, 91, 91, 91, 92, 91, 91, 91, 92, 91, 92, 91, 92, 92, 91, 92, 92, 92, 92, 92, 93, 92, 92, 93, 92, 93, 92, 93, 92, 93, 92, 92, 93, 93, 92, 93, 93, 93, 92, 93, 93, 92, 93, 92, 93, 92, 93, 93, 93, 92, 93, 92, 93, 93, 93, 93, 93, 92, 93, 93, 93, 93, 93, 93, 92, 93, 93, 93, 93, 93, 93, 93, 93, 94, 93, 93, 93, 93, 93, 94, 93, 93, 94, 93, 94, 93, 94, 93, 93, 94, 94, 94, 94, 93, 94, 94, 94, 94, 94, 94, 94, 93, 94, 94, 93, 93, 94, 93, 94, 93, 94, 93, 94, 93, 93, 24];
posX.overlap = [180.5561, -44, -45, -45, -45, -45, -45, -46, -45, -46, -45, -46, -46, -46, -45, -47, -46, -46, -47, -46, -47, -47, -47, -47, -47, -48, -47, -47, -48, -48, -48, -49, -48, -49, -48, -49, -50, -50, -50, -50, -50, -51, -52, -51, -52, -53, -53, -53, -54, -55, -55, -55, -55, -56, -57, -57, -57, -58, -58, -58, -59, -60, -60, -59, -61, -60, -60, -61, -60, -61, -60, -61, -60, -60, -59, -59, -58, -59, -58, -57, -56, -57, -56, -56, -56, -55, -55, -55, -54, -54, -54, -54, -54, -53, -54, -53, -53, -53, -53, -53, -52, -53, -52, -53, -52, -52, -53, -52, -52, -52, -52, -52, -53, -52, -52, -52, -52, -52, -52, -52, -51, -52, -52, -51, -52, -51, -51, -52, -51, -51, -50, -51, -51, -51, -51, -50, -51, -50, -50, -50, -50, -50, -49, -49, -49, -49, -49, -49, -48, -48, -48, -48, -47, -48, -46, -47, -46, -46, -46, -46, -45, -45, -45, -44, -44, -44, -43, -43, -43, -42, -42, -42, -42, -41, -41, -40, -41, -40, -40, -39, -39, -39, -39, -38, -38, -38, -37, -38, -37, -37, -36, -36, -36, -36, -35, -35, -35, -34, -35, -34, -33, -33, -33, -33, -32, -32, -32, -31, -31, -31, -30, -30, -29, -29, -29, -28, -28, -28, -27, -27, -26, -26, -25, -25, -24, -23, -23, -22, -22, -21, -20, -19, -19, -17, -17, -16, -15, -14, -14, -12, -11, -10, -9, -7, -7, -5, -5, -3, -1, -1, 0, 2, 4, 5, 6, 7, 9, 10, 12, 12, 14, 15, 16, 17, 19, 19, 21, 21, 23, 24, 25, 26, 26, 28, 28, 30, 30, 32, 32, 33, 34, 35, 35, 37, 37, 38, 39, 39, 41, 41, 42, 42, 44, 44, 45, 45, 46, 47, 48, 49, 49, 50, 50, 51, 52, 53, 53, 54, 54, 56, 56, 56, 57, 58, 58, 60, 60, 60, 61, 61, 63, 62, 64, 64, 64, 65, 66, 67, 67, 68, 68, 69, 69, 70, 70, 71, 72, 72, 73, 74, 73, 74, 75, 74, 76, 76, 77, 76, 77, 78, 78, 78, 78, 80, 79, 79, 79, 80, 81, 81, 80, 81, 81, 82, 81, 82, 83, 82, 84, 82, 83, 83, 83, 84, 84, 85, 84, 85, 86, 85, 86, 86, 86, 87, 86, 87, 87, 88, 88, 88, 88, 89, 89, 90, 89, 90, 91, 91, 90, 91, 93, 91, 92, 93, 93, 92, 93, 93, 93, 94, 93, 95, 93, 94, 95, 94, 95, 94, 95, 95, 94, 95, 94, 95, 95, 95, 95, 94, 95, 94, 94, 95, 95, 94, 95, 95, 95, 95, 95, 95, 95, 95, 96, 95, 95, 96, 96, 96, 96, 96, 97, 96, 97, 97, 96, 97, 98, 98, 97, 98, 98, 98, 99, 99, 98, 99, 99, 100, 99, 100, 100, 99, 101, 100, 99, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 101, 100, 100, 101, 101, 101, 100, 100, 100, 101, 101, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 100, 100, 100, 99, 101, 99, 99, 100, 100, 99, 100, 100, 100, 100, 100, 100, 99, 99, 100, 99, 98, 100, 99, 99, 99, 99, 99, 99, 100, 99, 99, 99, 100, 99, 99, 100, 99, 99, 100, 99, 99, 99, 99, 100, 99, 99, 99, 98, 98, 98, 97, 98, 97, 97, 96, 97, 96, 95, 95, 95, 94, 93, 93, 93, 92, 91, 92, 89, 90, 89, 89, 89, 88, 87, 87, 87, 86, 87, 86, 85, 85, 86, 84, 85, 85, 84, 83, 84, 84, 83, 83, 82, 83, 82, 83, 82, 82, 82, 82, 81, 82, 81, 81, 81, 82, 81, 80, 82, 81, 81, 80, 81, 79, 80, 79, 78, 78, 76, 76, 75, 75, 72, 72, 70, 69, 68, 66, 65, 64, 63, 62, 61, 60, 59, 58, 57, 58, 56, 56, 56, 55, 55, 54, 54, 53, 53, 53, 53, 52, 52, 52, 51, 50, 51, 51, 50, 50, 50, 49, 50, 49, 49, 48, 49, 48, 48, 48, 47, 47, 47, 47, 46, 46, 46, 45, 44, 45, 44, 43, 44, 42, 43, 42, 42, 42, 41, 40, 41, 40, 39, 40, 39, 39, 38, 38, 38, 38, 37, 38, 37, 36, 37, 36, 36, 35, 36, 35, 35, 34, 34, 34, 33, 34, 33, 32, 32, 32, 31, 31, 31, 30, 30, 30, 29, 28, 29, 27, 28, 26, 26, 26, 24, 24, 24, 22, 22, 21, 21, 19, 19, 17, 17, 16, 15, 13, 13, 12, 11, 9, 9, 8, 6, 6, 4, 4, 2, 2, 1, 0, -1, -2, -3, -4, -5, -5, -6, -7, -7, -9, -8, -10, -9, -11, -11, -11, -12, -13, -13, -14, -15, -15, -16, -16, -17, -18, -19, -19, -20, -21, -22, -22, -24, -24, -25, -25, -27, -28, -28, -30, -30, -32, -32, -34, -35, -35, -37, -38, -40, -40, -42, -43, -45, -45, -46, -48, -49, -50, -51, -52, -54, -54, -55, -56, -56, -58, -59, -59, -60, -61, -62, -63, -63, -64, -64, -65, -66, -66, -67, -68, -68, -68, -69, -69, -69, -70, -71, -70, -72, -71, -72, -72, -73, -73, -73, -74, -74, -75, -75, -75, -75, -77, -77, -76, -77, -78, -79, -78, -80, -80, -80, -81, -81, -81, -82, -83, -83, -84, -84, -85, -86, -86, -87, -88, -87, -89, -89, -89, -90, -91, -91, -91, -91, -92, -92, -93, -93, -93, -93, -93, -94, -94, -95, -94, -95, -94, -94, -95, -94, -95, -94, -95, -95, -96, -95, -96, -96, -95, -97, -96, -96, -96, -96, -97, -98, -97, -97, -97, -97, -98, -98, -97, -98, -98, -99, -98, -98, -99, -99, -98, -99, -99, -98, -100, -98, -100, -99, -99, -99, -100, -100, -99, -100, -100, -99, -100, -100, -100, -99, -100, -100, -100, -100, -101, -100, -100, -100, -99, -100, -100, -100, -100, -100, -100, -101, -100, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -99, -100, -100, -100, -100, -100, -100, -100, -101, -99, -100, -100, -99, -100, -99, -99, -99, -99, -99, -99, -99, -98, -99, -99, -99, -99, -97, -99, -98, -98, -98, -99, -97, -98, -97, -97, -98, -97, -97, -97, -98, -96, -97, -97, -97, -96, -97, -96, -95, -96, -96, -95, -95, -95, -95, -95, -96, -94, -96, -95, -95, -95, -96, -96, -95, -96, -96, -97, -96, -97, -96, -96, -97, -98, -97, -97, -97, -98, -97, -98, -97, -98, -98, -98, -97, -98, -97, -98, -98, -97, -97, -98, -96, -97, -97, -96, -97, -97, -96, -96, -96, -96, -96, -94, -95, -94, -94, -93, -93, -93, -92, -91, -91, -90, -89, -89, -89, -89, -88, -87, -87, -86, -86, -86, -84, -85, -84, -83, -84, -82, -82, -81, -81, -80, -80, -80, -78, -78, -77, -76, -77, -76, -75, -74, -74, -73, -72, -72, -71, -71, -69, -69, -69, -67, -67, -67, -65, -65, -64, -63, -63, -62, -62, -60, -60, -59, -59, -58, -57, -57, -55, -56, -54, -54, -53, -53, -52, -51, -50, -50, -49, -48, -48, -47, -46, -45, -45, -44, -43, -42, -42, -41, -40, -40, -38, -38, -37, -36, -36, -34, -34, -33, -32, -31, -31, -29, -29, -29, -27, -27, -26, -26, -24, -24, -24, -23, -22, -22, -21, -21, -20, -19, -19, -19, -18, -17, -18, -16, -17, -16, -15, -15, -15, -15, -14, -14, -13, -13, -13, -13, -12, -12, -12, -12, -12, -11, -12, -11, -11, -11, -10, -11, -10, -10, -9, -10, -9, -9, -8, -8, -8, -7, -7, -7, -6, -6, -5, -5, -4, -3, -3, -2, -1, -1, 0, 0, 2, 4, 4, 5, 7, 8, 10, 11, 12, 14, 16, 17, 18, 21, 21, 23, 25, 25, 27, 28, 28, 30, 31, 31, 32, 32, 33, 33, 34, 34, 34, 35, 34, 35, 35, 36, 36, 36, 36, 37, 37, 37, 37, 37, 38, 38, 38, 39, 39, 39, 39, 40, 40, 41, 41, 41, 42, 42, 42, 43, 43, 44, 45, 44, 46, 46, 47, 47, 48, 50, 49, 51, 51, 52, 54, 53, 55, 56, 57, 57, 59, 59, 60, 61, 63, 63, 64, 64, 66, 66, 67, 67, 68, 68, 69, 69, 70, 71, 70, 71, 72, 71, 73, 73, 73, 74, 75, 74, 76, 76, 76, 77, 77, 78, 78, 79, 79, 80, 81, 81, 82, 81, 83, 82, 83, 84, 83, 84, 84, 85, 85, 86, 86, 86, 87, 88, 88, 88, 89, 89, 89, 91, 91, 91, 91, 93, 93, 94, 94, 95, 95, 95, 96, 98, 97, 98, 99, 100, 100, 100, 101, 101, 100, 101, 101, 101, 100, 101, 100, 100, 100, 100, 100, 100, 99, 99, 100, 99, 100, 99, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 100, 100, 101, 99, 100, 100, 100, 99, 100, 100, 98, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 99, 99, 99, 99, 99, 98, 99, 99, 98, 98, 99, 98, 99, 98, 99, 98, 98, 98, 98, 99, 97, 99, 98, 98, 98, 99, 97, 98, 98, 98, 98, 97, 98, 98, 98, 98, 97, 98, 98, 98, 97, 98, 97, 97, 98, 97, 98, 97, 97, 97, 98, 97, 97, 98, 96, 97, 98, 98, 97, 98, 98, 96, 97, 97, 98, 97, 98, 97, 97, 97, 97, 98, 97, 98, 97, 98, 97, 97, 97, 97, 98, 97, 97, 98, 97, 97, 98, 97, 97, 97, 97, 97, 97, 97, 97, 97, 96, 97, 97, 96, 96, 96, 96, 96, 95, 96, 95, 96, 95, 95, 95, 94, 95, 94, 94, 93, 93, 92, 93, 92, 93, 91, 92, 91, 91, 90, 91, 90, 89, 90, 89, 88, 89, 89, 88, 88, 88, 88, 88, 87, 88, 87, 87, 87, 86, 87, 86, 87, 86, 86, 86, 86, 86, 85, 85, 84, 85, 84, 84, 84, 84, 84, 83, 83, 83, 83, 82, 83, 82, 82, 82, 82, 82, 81, 81, 81, 81, 81, 80, 81, 81, 80, 80, 81, 80, 80, 80, 80, 79, 80, 80, 80, 80, 79, 80, 79, 79, 80, 79, 79, 79, 80, 78, 79, 79, 77, 78, 78, 78, 77, 77, 76, 77, 76, 75, 76, 74, 74, 73, 73, 72, 71, 70, 69, 70, 68, 68, 67, 66, 66, 65, 64, 64, 64, 64, 63, 62, 62, 62, 61, 61, 61, 60, 59, 59, 59, 58, 58, 57, 56, 56, 55, 55, 54, 53, 52, 51, 51, 49, 48, 47, 46, 44, 44, 42, 40, 39, 37, 35, 33, 32, 31, 28, 27, 26, 24, 22, 20, 19, 18, 16, 14, 13, 12, 10, 9, 8, 7, 6, 4, 4, 2, 2, 1, 0, -1, -3, -4, -5, -7, -8, -10, -11, -14, -15, -17, -19, -21, -23, -25, -26, -29, -30, -32, -34, -36, -37, -39, -40, -42, -44, -44, -47, -47, -49, -50, -51, -52, -54, -54, -56, -56, -58, -59, -60, -61, -62, -62, -64, -64, -65, -66, -67, -67, -68, -69, -70, -70, -72, -72, -73, -72, -74, -74, -75, -76, -76, -76, -77, -77, -78, -78, -79, -78, -79, -80, -80, -80, -80, -81, -81, -82, -81, -83, -82, -83, -83, -83, -83, -84, -84, -84, -85, -85, -85, -85, -86, -86, -86, -86, -87, -86, -87, -88, -88, -87, -89, -87, -89, -89, -88, -89, -90, -90, -90, -90, -90, -91, -91, -91, -91, -91, -92, -92, -92, -92, -92, -93, -93, -93, -93, -93, -93, -94, -94, -94, -94, -94, -94, -95, -94, -95, -95, -95, -95, -97, -95, -96, -96, -96, -97, -96, -97, -97, -97, -97, -97, -97, -97, -98, -97, -98, -98, -98, -97, -97, -98, -98, -98, -98, -98, -98, -98, -98, -98, -99, -98, -98, -99, -98, -98, -98, -99, -98, -99, -99, -99, -100, -99, -99, -99, -100, -100, -99, -100, -100, -100, -100, -100, -100, -100, -101, -100, -101, -100, -100, -100, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -100, -100, -101, -100, -100, -100, -100, -100, -101, -100, -100, -100, -100, -100, -101, -100, -101, -100, -101, -100, -100, -100, -101, -99, -100, -101, -99, -100, -100, -100, -100, -100, -101, -100, -99, -100, -100, -100, -100, -99, -100, -100, -99, -99, -99, -100, -99, -99, -99, -98, -99, -98, -98, -98, -99, -97, -97, -98, -96, -97, -96, -96, -95, -95, -95, -94, -93, -93, -93, -93, -92, -92, -91, -91, -90, -90, -90, -89, -89, -89, -88, -88, -88, -88, -87, -87, -87, -87, -86, -85, -85, -84, -84, -83, -83, -81, -81, -80, -79, -78, -77, -76, -74, -74, -71, -71, -68, -68, -65, -64, -62, -61, -58, -57, -54, -53, -51, -49, -47, -46, -44, -43, -41, -39, -39, -37, -36, -35, -34, -32, -32, -31, -30, -29, -29, -27, -27, -26, -25, -25, -25, -24, -23, -23, -22, -22, -22, -21, -21, -20, -21, -20, -20, -19, -20, -18, -19, -18, -17, -17, -17, -16, -15, -14, -14, -13, -12, -12, -10, -10, -9, -8, -7, -6, -6, -4, -4, -2, -2, -1, 0, 0, 1, 3, 3, 4, 5, 6, 6, 7, 9, 8, 10, 10, 10, 11, 12, 12, 13, 13, 14, 13, 15, 14, 15, 16, 15, 16, 16, 17, 16, 17, 18, 17, 18, 18, 19, 18, 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 13];
posY.overlap = [-22.10206, 89, 90, 90, 90, 89, 90, 90, 90, 90, 89, 90, 89, 89, 89, 90, 90, 89, 89, 88, 90, 89, 89, 89, 89, 89, 88, 89, 88, 89, 88, 89, 87, 89, 87, 88, 87, 88, 87, 87, 87, 87, 86, 86, 86, 86, 85, 85, 85, 85, 85, 84, 84, 83, 83, 83, 82, 83, 82, 81, 82, 81, 81, 80, 81, 80, 80, 80, 80, 81, 80, 80, 81, 81, 81, 81, 82, 82, 83, 82, 83, 83, 84, 83, 84, 83, 85, 84, 84, 85, 85, 85, 85, 85, 85, 86, 85, 85, 86, 86, 85, 86, 86, 86, 85, 86, 86, 86, 86, 86, 85, 86, 86, 86, 86, 86, 86, 86, 87, 86, 86, 86, 87, 85, 86, 87, 86, 86, 86, 87, 86, 86, 87, 87, 87, 86, 88, 87, 87, 87, 87, 88, 87, 88, 87, 88, 88, 88, 88, 88, 89, 88, 88, 89, 89, 89, 89, 89, 90, 89, 90, 90, 90, 90, 91, 90, 91, 91, 91, 90, 91, 92, 91, 91, 92, 92, 93, 92, 92, 93, 92, 93, 93, 92, 93, 93, 93, 94, 93, 94, 94, 94, 94, 94, 93, 94, 95, 94, 95, 95, 95, 94, 95, 95, 95, 95, 96, 95, 96, 96, 96, 96, 96, 96, 96, 96, 97, 97, 97, 96, 97, 97, 98, 97, 98, 97, 98, 97, 99, 99, 98, 99, 98, 99, 99, 99, 100, 100, 100, 100, 99, 100, 101, 100, 100, 100, 101, 100, 101, 100, 101, 101, 100, 100, 100, 101, 100, 100, 99, 100, 99, 100, 99, 99, 99, 98, 98, 98, 99, 97, 98, 98, 96, 97, 96, 96, 95, 96, 95, 95, 94, 95, 94, 94, 93, 93, 93, 92, 92, 91, 92, 91, 91, 90, 90, 89, 89, 88, 89, 89, 87, 88, 86, 87, 85, 86, 86, 85, 84, 84, 84, 83, 83, 82, 81, 82, 81, 80, 80, 80, 79, 78, 77, 78, 77, 76, 76, 75, 75, 75, 73, 73, 73, 72, 71, 71, 71, 70, 70, 69, 68, 68, 67, 67, 66, 66, 66, 65, 64, 64, 64, 63, 63, 63, 61, 62, 61, 61, 60, 61, 59, 60, 59, 59, 58, 58, 58, 58, 57, 57, 56, 56, 55, 55, 55, 55, 54, 54, 54, 52, 53, 53, 51, 52, 50, 51, 49, 50, 48, 49, 47, 47, 47, 46, 45, 44, 44, 44, 42, 42, 41, 41, 40, 39, 39, 38, 38, 37, 37, 36, 36, 36, 35, 35, 35, 35, 34, 34, 34, 34, 34, 34, 33, 34, 34, 34, 34, 34, 34, 34, 34, 34, 33, 34, 34, 33, 34, 33, 33, 33, 32, 32, 32, 32, 31, 30, 31, 30, 29, 29, 29, 28, 27, 27, 26, 25, 25, 24, 23, 23, 22, 21, 20, 19, 17, 17, 16, 16, 14, 13, 12, 12, 10, 10, 9, 8, 7, 7, 6, 5, 5, 4, 4, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, -1, -1, -1, -1, -2, -2, -2, -2, -3, -3, -3, -4, -4, -5, -5, -5, -6, -7, -7, -7, -8, -9, -9, -10, -10, -11, -11, -12, -12, -13, -13, -13, -14, -14, -15, -14, -15, -15, -16, -15, -16, -16, -16, -16, -16, -16, -17, -16, -17, -16, -16, -17, -16, -16, -16, -16, -16, -16, -15, -15, -16, -15, -16, -16, -16, -17, -17, -18, -19, -19, -20, -21, -22, -24, -24, -25, -27, -28, -29, -31, -32, -33, -34, -36, -37, -38, -40, -41, -42, -44, -44, -45, -46, -48, -48, -48, -49, -50, -51, -51, -52, -52, -53, -53, -54, -54, -54, -55, -55, -56, -56, -56, -56, -57, -57, -57, -57, -58, -58, -58, -58, -58, -59, -58, -59, -59, -59, -59, -58, -59, -60, -59, -60, -60, -61, -61, -61, -62, -63, -64, -64, -66, -67, -69, -69, -71, -72, -73, -75, -75, -77, -78, -78, -79, -80, -81, -82, -81, -82, -83, -83, -83, -84, -84, -85, -85, -85, -85, -86, -86, -85, -86, -87, -87, -86, -86, -87, -87, -87, -87, -88, -87, -87, -89, -87, -88, -88, -88, -88, -89, -88, -89, -89, -89, -89, -90, -89, -91, -89, -90, -90, -91, -91, -90, -92, -91, -92, -92, -92, -91, -92, -93, -92, -92, -93, -93, -93, -93, -92, -94, -93, -94, -94, -94, -93, -94, -94, -94, -94, -95, -94, -95, -94, -95, -95, -95, -95, -94, -95, -95, -95, -95, -96, -96, -96, -96, -97, -96, -97, -97, -97, -96, -98, -97, -97, -97, -98, -97, -99, -98, -98, -99, -99, -99, -99, -100, -99, -99, -100, -100, -100, -100, -100, -101, -100, -100, -100, -100, -100, -100, -100, -101, -100, -100, -101, -101, -100, -100, -100, -100, -100, -101, -100, -100, -100, -100, -100, -100, -100, -100, -99, -100, -99, -99, -99, -99, -99, -100, -98, -99, -98, -99, -99, -97, -98, -97, -97, -97, -97, -96, -96, -96, -95, -96, -96, -95, -94, -94, -93, -93, -93, -92, -91, -91, -90, -90, -88, -89, -88, -87, -87, -85, -86, -85, -84, -83, -83, -82, -82, -81, -80, -80, -80, -78, -78, -78, -77, -77, -76, -76, -75, -75, -74, -73, -74, -72, -73, -72, -72, -71, -71, -70, -71, -69, -70, -70, -68, -69, -68, -67, -67, -67, -66, -66, -65, -65, -64, -63, -63, -63, -62, -61, -61, -60, -60, -58, -58, -57, -56, -56, -54, -54, -53, -52, -51, -50, -49, -48, -47, -46, -45, -44, -43, -42, -42, -41, -39, -40, -38, -38, -38, -37, -36, -36, -36, -36, -35, -35, -35, -34, -34, -34, -33, -33, -32, -32, -32, -31, -31, -30, -30, -29, -29, -28, -28, -28, -26, -27, -25, -26, -24, -24, -24, -23, -22, -22, -21, -21, -20, -20, -19, -19, -18, -17, -18, -16, -17, -16, -15, -15, -15, -14, -14, -14, -13, -13, -12, -12, -12, -12, -11, -11, -10, -10, -10, -10, -9, -9, -9, -8, -8, -8, -7, -8, -7, -6, -7, -6, -6, -5, -5, -5, -5, -5, -4, -4, -4, -4, -3, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -2, -1, -2, -1, -1, -1, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 0, 1, 2, 1, 1, 2, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 6, 5, 7, 6, 7, 7, 8, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 15, 16, 16, 17, 17, 17, 18, 18, 19, 19, 20, 20, 20, 21, 21, 22, 22, 22, 23, 23, 24, 24, 24, 25, 26, 25, 27, 27, 27, 28, 28, 29, 29, 30, 30, 30, 31, 31, 32, 31, 32, 32, 32, 32, 32, 32, 32, 32, 31, 31, 31, 30, 30, 29, 29, 28, 27, 27, 26, 26, 26, 25, 25, 25, 24, 25, 24, 24, 24, 24, 24, 24, 24, 24, 25, 24, 25, 25, 26, 26, 26, 26, 28, 28, 28, 29, 31, 31, 32, 32, 34, 35, 36, 37, 38, 39, 41, 41, 43, 44, 44, 46, 47, 48, 49, 50, 50, 52, 52, 53, 54, 54, 55, 56, 57, 58, 58, 59, 59, 61, 61, 62, 63, 63, 64, 64, 66, 66, 68, 67, 69, 68, 70, 71, 71, 71, 72, 74, 73, 74, 76, 75, 76, 77, 77, 78, 79, 79, 80, 80, 81, 81, 81, 82, 83, 83, 84, 84, 84, 85, 86, 86, 86, 87, 87, 87, 88, 88, 88, 89, 90, 90, 90, 90, 91, 91, 92, 92, 92, 92, 92, 93, 94, 94, 94, 95, 95, 95, 95, 96, 96, 96, 96, 97, 97, 97, 97, 98, 97, 98, 97, 98, 98, 97, 99, 99, 98, 99, 98, 99, 99, 99, 98, 100, 99, 99, 100, 99, 99, 100, 99, 100, 99, 100, 99, 100, 100, 99, 100, 99, 100, 100, 100, 100, 101, 99, 100, 100, 101, 100, 100, 100, 99, 100, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 100, 100, 101, 100, 100, 101, 100, 100, 100, 99, 99, 100, 99, 98, 99, 98, 98, 97, 97, 97, 96, 97, 96, 96, 96, 96, 95, 96, 95, 96, 95, 94, 94, 94, 95, 93, 94, 94, 95, 94, 94, 94, 93, 93, 94, 92, 93, 93, 94, 92, 92, 93, 91, 92, 93, 91, 92, 92, 91, 91, 91, 90, 91, 90, 90, 89, 90, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 80, 80, 79, 79, 78, 77, 77, 75, 75, 75, 74, 73, 73, 72, 72, 72, 72, 70, 71, 70, 70, 69, 69, 68, 67, 67, 66, 67, 65, 65, 64, 63, 63, 62, 62, 61, 61, 60, 60, 59, 58, 58, 57, 57, 55, 56, 54, 54, 53, 53, 52, 51, 50, 50, 49, 48, 47, 46, 45, 44, 43, 42, 40, 40, 38, 37, 35, 33, 32, 30, 28, 26, 24, 21, 19, 16, 13, 11, 9, 6, 3, 2, 0, -3, -5, -6, -8, -10, -10, -12, -13, -14, -14, -14, -14, -14, -14, -12, -11, -9, -7, -6, -3, -3, -1, -1, 0, 0, 0, 0, -1, -2, -3, -3, -5, -5, -7, -7, -8, -9, -10, -11, -11, -12, -13, -14, -13, -15, -15, -15, -16, -15, -17, -16, -17, -17, -18, -17, -18, -18, -19, -18, -19, -19, -19, -19, -20, -20, -19, -20, -20, -21, -20, -21, -21, -20, -21, -22, -21, -21, -22, -22, -22, -22, -22, -22, -23, -22, -23, -23, -23, -23, -23, -24, -23, -24, -24, -24, -24, -24, -24, -25, -24, -24, -25, -25, -24, -25, -25, -25, -25, -25, -25, -25, -25, -26, -25, -25, -26, -25, -25, -25, -25, -25, -26, -25, -25, -25, -24, -25, -25, -25, -25, -25, -25, -25, -25, -24, -25, -25, -25, -26, -25, -25, -26, -25, -26, -25, -26, -26, -27, -26, -26, -27, -27, -27, -28, -28, -28, -28, -29, -29, -29, -30, -30, -31, -31, -32, -33, -33, -34, -34, -35, -35, -36, -37, -38, -38, -39, -39, -41, -41, -42, -42, -43, -43, -45, -44, -46, -45, -47, -46, -47, -48, -47, -48, -49, -49, -49, -49, -50, -50, -51, -50, -51, -51, -52, -52, -52, -53, -53, -53, -53, -54, -53, -54, -54, -55, -55, -55, -55, -56, -56, -56, -57, -57, -57, -57, -58, -58, -58, -59, -59, -59, -59, -60, -59, -60, -60, -60, -61, -60, -61, -61, -61, -61, -61, -61, -60, -61, -62, -61, -61, -61, -62, -61, -61, -62, -62, -62, -62, -63, -62, -63, -63, -63, -63, -64, -64, -64, -65, -65, -65, -66, -67, -67, -68, -68, -69, -69, -70, -71, -71, -73, -73, -74, -74, -75, -76, -76, -77, -77, -77, -78, -78, -79, -79, -78, -79, -80, -79, -81, -80, -81, -81, -81, -82, -82, -83, -84, -83, -84, -85, -85, -86, -87, -86, -88, -87, -88, -89, -89, -90, -91, -91, -92, -93, -94, -93, -95, -95, -96, -96, -97, -97, -99, -97, -99, -99, -99, -99, -99, -100, -100, -99, -100, -101, -99, -101, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -100, -100, -99, -99, -99, -98, -97, -98, -97, -96, -96, -95, -95, -94, -93, -93, -92, -90, -91, -90, -90, -88, -88, -87, -86, -86, -85, -84, -84, -83, -82, -82, -81, -80, -80, -79, -78, -78, -76, -76, -75, -74, -75, -73, -72, -72, -72, -70, -70, -69, -68, -68, -67, -67, -66, -65, -65, -65, -64, -63, -63, -62, -62, -61, -61, -61, -59, -60, -59, -59, -58, -58, -58, -57, -57, -56, -55, -56, -55, -55, -54, -54, -54, -52, -53, -53, -52, -51, -51, -50, -51, -49, -50, -49, -48, -48, -48, -47, -47, -46, -46, -45, -45, -45, -44, -43, -44, -42, -42, -42, -41, -41, -41, -40, -39, -39, -39, -38, -37, -38, -36, -37, -35, -36, -35, -34, -34, -34, -33, -32, -33, -31, -32, -31, -30, -29, -30, -29, -28, -28, -28, -27, -27, -26, -26, -26, -25, -26, -24, -25, -25, -24, -24, -24, -24, -24, -23, -23, -24, -22, -23, -22, -22, -22, -21, -21, -21, -20, -20, -19, -19, -19, -18, -17, -17, -17, -16, -15, -15, -14, -13, -13, -11, -11, -10, -9, -8, -7, -6, -5, -4, -3, -2, -2, 0, 0, 1, 2, 3, 3, 5, 4, 6, 6, 6, 7, 7, 7, 8, 8, 9, 8, 8, 9, 9, 9, 8, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 9, 10, 10, 10, 10, 11, 10, 11, 11, 12, 11, 12, 12, 13, 12, 14, 13, 14, 14, 15, 15, 16, 16, 17, 17, 18, 19, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 33, 34, 34, 36, 37, 38, 39, 41, 41, 43, 43, 44, 45, 46, 46, 47, 48, 48, 49, 49, 49, 50, 50, 51, 51, 52, 53, 54, 54, 56, 56, 58, 58, 60, 62, 62, 63, 66, 66, 67, 70, 70, 72, 73, 75, 75, 78, 79, 80, 82, 83, 85, 85, 87, 88, 88, 90, 90, 92, 91, 92, 93, 93, 94, 94, 95, 95, 95, 96, 96, 96, 97, 96, 97, 97, 97, 98, 98, 98, 98, 98, 98, 98, 98, 98, 98, 99, 98, 99, 98, 98, 99, 99, 98, 99, 99, 99, 99, 99, 100, 99, 100, 99, 100, 99, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 101, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 99, 100, 99, 99, 99, 100, 100, 98, 100, 100, 98, 99, 99, 99, 99, 100, 98, 100, 99, 98, 99, 99, 98, 99, 98, 98, 99, 98, 98, 60];
inTunnel.overlap = [false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, true, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false, false];
posX["doubledip-1"] = [28.00301, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 1, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 1, 2, 2, 2, 2, 2, 1, 2, 2, 1, 2, 2, 1, 2, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -2, -1, -1, -2, -2, -2, -2, -2, -3, -2, -3, -2, -3, -3, -3, -3, -3, -3, -4, -3, -3, -4, -3, -3, -4, -3, -3, -3, -3, -3, -3, -3, -2, -3, -2, -2, -2, -2, -1, -1, -2, -1, -1, 0, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 1, 1, 2, 1, 2, 3, 2, 3, 4, 4, 4, 5, 6, 6, 8, 7, 9, 9, 11, 11, 13, 14, 15, 17, 18, 21, 23, 25, 28, 31, 34, 37, 41, 45, 48, 53, 56, 60, 64, 68, 72, 75, 78, 80, 84, 85, 88, 89, 91, 92, 93, 94, 95, 95, 96, 97, 97, 97, 98, 98, 98, 98, 99, 99, 99, 100, 99, 99, 100, 99, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 100, 101, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 100, 101, 100, 100, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 101, 100, 100, 101, 100, 101, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 100, 101, 101, 100, 101, 100, 100, 101, 101, 100, 101, 101, 100, 101, 100, 100, 101, 101, 101, 101, 100, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 101, 101, 101, 100, 101, 100, 100, 100, 101, 101, 101, 100, 101, 100, 101, 101, 100, 101, 100, 101, 101, 100, 100, 100, 101, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 100, 101, 101, 100, 100, 100, 100, 101, 100, 100, 101, 100, 100, 100, 100, 101, 101, 100, 101, 100, 100, 100, 100, 101, 99, 100, 100, 100, 100, 100, 100, 100, 100, 99, 100, 99, 98, 99, 98, 97, 97, 96, 96, 94, 93, 91, 89, 86, 83, 78, 74, 69, 64, 59, 54, 50, 45, 40, 37, 32, 30, 26, 24, 21, 19, 18, 15, 15, 12, 12, 10, 10, 8, 8, 6, 6, 6, 4, 4, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0, 0, -1, -1, -2, -2, -2, -2, -2, -3, -3, -3, -3, -3, -3, -4, -3, -4, -4, -4, -4, -4, -4, -4, -5, -4, -5, -5, -5, -5, -5, -5, -6, -5, -6, -5, -6, -6, -6, -6, -7, -6, -7, -6, -7, -7, -7, -7, -8, -7, -8, -8, -8, -8, -9, -10, -10, -11, -13, -13, -16, -18, -20, -24, -27, -33, -38, -44, -51, -58, -65, -72, -78, -82, -86, -89, -92, -94, -96, -98, -99, -99, -99, -100, -100, -100, -100, -100, -101, -100, -101, -100, -99, -100, -98, -98, -97, -95, -93, -91, -89, -85, -82, -77, -74, -68, -63, -58, -53, -47, -43, -40, -35, -33, -29, -27, -25, -22, -20, -19, -17, -16, -14, -13, -12, -11, -10, -9, -9, -8, -7, -7, -6, -6, -5, -6, -5, -4, -5, -5, -4, -5, -4, -4, -4, -4, -4, -4, -4, -4, -4, -3, -4, -3, -3, -3, -4, -3, -2, -3, -3, -2, -3, -2, -2, -2, -2, -1, -2, -1, -1, -1, -1, 0, -1, -1, -3, -5, -7, -11, -15, -21, -28, -36, -44, -53, -61, -69, -76, -81, -85, -89, -91, -94, -95, -96, -97, -99, -98, -99, -99, -99, -99, -100, -99, -100, -99, -101, -99, -100, -100, -100, -101, -100, -100, -101, -100, -100, -100, -100, -101, -101, -100, -100, -101, -100, -100, -101, -100, -101, -100, -101, -101, -101, -100, -100, -100, -101, -100, -101, -100, -100, -100, -101, -101, -100, -100, -101, -100, -101, -101, -101, -100, -101, -100, -100, -101, -101, -100, -101, -100, -100, -101, -101, -100, -100, -100, -101, -100, -101, -100, -102, -100, -101, -101, -101, -100, -100, -101, -101, -100, -102, -100, -100, -100, -100, -100, -100, -100, -100, -100, -101, -100, -101, -100, -100, -101, -101, -100, -101, -100, -100, -101, -100, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -100, -101, -101, -100, -100, -100, -101, -101, -100, -100, -101, -101, -100, -101, -101, -100, -100, -101, -100, -101, -101, -100, -101, -101, -101, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -101, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -101, -100, -100, -101, -101, -100, -101, -101, -101, -101, -101, -101, -101, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -101, -100, -100, -101, -100, -100, -100, -100, -100, -99, -100, -100, -100, -99, -99, -98, -98, -97, -97, -97, -96, -96, -94, -94, -92, -92, -90, -88, -88, -85, -83, -81, -79, -77, -74, -71, -68, -66, -63, -60, -57, -55, -52, -49, -47, -44, -43, -40, -39, -37, -35, -34, -32, -31, -29, -29, -27, -25, -25, -23, -23, -22, -21, -19, -19, -19, -17, -17, -15, -15, -15, -14, -13, -13, -12, -11, -11, -10, -10, -10, -9, -8, -8, -8, -8, -7, -6, -7, -6, -5, -6, -5, -4, -4, -3, -3, -2, -1, -1, 0, 0, 0, 2, 2, 2, 3, 4, 3, 4, 3, 4, 4, 3, 4, 4, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 3, 3, 4, 3, 4, 3, 4, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 5, 4, 5, 4, 5, 5, 4, 5, 5, 5, 5, 6, 5, 5, 6, 5, 6, 5, 6, 5, 6, 6, 6, 6, 6, 6, 6, 6, 7, 6, 6, 7, 6, 6, 7, 7, 6, 7, 6, 7, 7, 7, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 7, 7, 8, 7, 7, 2];
posY["doubledip-1"] = [373.9964, -100, -100, -101, -100, -100, -101, -100, -101, -100, -101, -101, -100, -101, -101, -101, -100, -101, -101, -100, -100, -101, -101, -101, -100, -101, -100, -101, -101, -101, -100, -101, -102, -101, -101, -102, -101, -101, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -100, -100, -100, -100, -100, -101, -101, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -101, -100, -100, -101, -101, -100, -100, -101, -100, -101, -100, -101, -101, -100, -101, -101, -100, -100, -101, -100, -100, -101, -100, -101, -100, -100, -101, -100, -100, -101, -101, -100, -101, -101, -101, -100, -101, -100, -100, -101, -101, -101, -100, -101, -100, -100, -101, -101, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -100, -101, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -101, -100, -101, -100, -100, -101, -100, -101, -101, -101, -101, -101, -101, -100, -100, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -101, -100, -101, -100, -100, -100, -100, -100, -101, -101, -100, -101, -100, -100, -100, -100, -100, -100, -100, -99, -98, -99, -98, -98, -97, -97, -96, -95, -93, -92, -90, -88, -86, -83, -81, -78, -74, -71, -67, -63, -60, -56, -53, -49, -46, -43, -40, -38, -35, -34, -31, -30, -27, -26, -25, -23, -22, -21, -19, -18, -18, -16, -16, -14, -14, -13, -12, -12, -11, -10, -10, -9, -9, -8, -8, -7, -7, -6, -6, -6, -5, -5, -5, -4, -4, -4, -3, -4, -3, -2, -3, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 3, 2, 3, 2, 3, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3, 3, 2, 3, 2, 3, 2, 2, 3, 2, 2, 2, 2, 1, 2, 1, 2, 1, 1, 1, 0, 1, 0, 0, 0, 0, -1, -1, -1, -1, -2, -2, -2, -2, -2, -3, -2, -3, -3, -3, -3, -4, -3, -3, -4, -3, -4, -3, -4, -3, -4, -3, -3, -4, -3, -4, -3, -3, -3, -3, -3, -3, -3, -3, -2, -3, -3, -2, -3, -2, -3, -2, -3, -2, -2, -2, -2, -3, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -1, -2, -2, -1, -2, -1, -2, -1, -2, -1, -2, -1, -1, -2, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 3, 3, 2, 3, 3, 3, 4, 3, 3, 4, 4, 4, 4, 4, 5, 4, 5, 5, 5, 6, 5, 7, 6, 7, 7, 8, 8, 8, 10, 9, 11, 11, 12, 13, 14, 15, 16, 17, 19, 19, 22, 22, 25, 26, 28, 31, 34, 39, 42, 48, 52, 58, 63, 67, 73, 78, 80, 85, 88, 90, 92, 93, 95, 96, 98, 97, 98, 98, 99, 100, 99, 100, 100, 100, 99, 101, 99, 101, 100, 101, 100, 101, 101, 101, 100, 101, 100, 101, 101, 101, 100, 100, 101, 101, 101, 101, 101, 101, 101, 101, 100, 100, 101, 101, 100, 101, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 99, 99, 99, 97, 96, 95, 94, 89, 87, 81, 76, 71, 64, 58, 51, 45, 40, 35, 30, 26, 22, 19, 15, 12, 9, 7, 5, 2, 0, -3, -6, -10, -13, -16, -21, -24, -29, -33, -38, -43, -48, -53, -59, -64, -69, -74, -78, -82, -86, -88, -91, -92, -94, -95, -96, -97, -97, -98, -99, -98, -99, -100, -100, -99, -99, -100, -99, -101, -100, -100, -101, -100, -100, -100, -101, -100, -101, -100, -100, -100, -100, -101, -100, -100, -100, -101, -101, -100, -100, -101, -101, -100, -100, -100, -101, -100, -100, -101, -100, -100, -101, -100, -100, -101, -100, -101, -100, -100, -100, -101, -101, -100, -100, -101, -101, -101, -100, -100, -100, -101, -99, -98, -97, -94, -90, -85, -80, -73, -67, -59, -54, -48, -44, -38, -35, -32, -28, -26, -23, -21, -19, -18, -16, -14, -14, -12, -12, -11, -10, -9, -9, -8, -7, -7, -7, -6, -5, -6, -4, -5, -4, -4, -3, -4, -3, -2, -3, -2, -2, -2, -1, -2, -1, -1, -1, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 2, 1, 2, 1, 2, 1, 2, 1, 1, 1, 2, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, 0, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 2, 1, 2, 1, 2, 2, 2, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 4, 3, 3, 3, 4, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 2, 2, 2, 2, 2, 2, 2, 1, 1, 2, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, 0, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 2, 1, 2, 2, 2, 2, 3, 3, 3, 4, 3, 5, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 13, 14, 15, 17, 19, 19, 22, 23, 25, 28, 29, 32, 34, 36, 39, 42, 44, 47, 51, 53, 56, 59, 62, 65, 68, 71, 73, 75, 79, 80, 83, 85, 86, 87, 90, 89, 91, 92, 93, 93, 94, 94, 96, 96, 96, 97, 96, 98, 97, 97, 98, 99, 99, 98, 100, 99, 99, 99, 99, 99, 99, 100, 99, 100, 100, 100, 100, 100, 99, 100, 101, 100, 101, 100, 100, 100, 101, 101, 101, 99, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 100, 100, 101, 100, 101, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 100, 100, 101, 100, 101, 101, 101, 101, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 100, 101, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 100, 100, 101, 101, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 101, 100, 100, 100, 100, 100, 23];
posX["doubledip-2"] = [-23.99777, 100, 100, 100, 100, 100, 101, 100, 100, 101, 101, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 101, 100, 100, 100, 100, 102, 101, 100, 100, 101, 101, 101, 101, 101, 100, 101, 100, 101, 100, 102, 100, 100, 101, 101, 100, 102, 101, 101, 101, 101, 101, 101, 101, 101, 100, 100, 102, 101, 100, 100, 101, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 101, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 101, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 100, 100, 100, 100, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 101, 101, 100, 100, 101, 100, 101, 101, 100, 100, 101, 101, 101, 100, 101, 100, 100, 100, 100, 101, 100, 100, 101, 100, 100, 101, 100, 100, 100, 101, 101, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 101, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 101, 101, 100, 101, 100, 101, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 100, 101, 101, 100, 100, 101, 100, 100, 100, 100, 100, 100, 100, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 101, 101, 101, 100, 100, 100, 100, 101, 100, 100, 101, 100, 100, 100, 101, 100, 100, 100, 101, 101, 100, 101, 100, 100, 100, 101, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 100, 101, 101, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 101, 101, 100, 101, 101, 101, 101, 101, 101, 101, 100, 101, 101, 101, 101, 101, 101, 101, 100, 100, 100, 101, 101, 100, 101, 101, 101, 100, 101, 100, 101, 100, 101, 100, 99, 101, 100, 100, 99, 99, 99, 99, 98, 98, 97, 96, 96, 95, 94, 92, 90, 87, 85, 80, 78, 72, 68, 61, 57, 51, 47, 41, 37, 32, 29, 26, 22, 19, 18, 15, 13, 11, 10, 9, 8, 7, 6, 6, 5, 5, 4, 5, 4, 5, 4, 5, 5, 5, 5, 6, 5, 5, 6, 6, 5, 6, 6, 6, 5, 6, 6, 5, 6, 5, 6, 5, 6, 5, 5, 5, 5, 4, 5, 4, 5, 4, 4, 4, 3, 4, 3, 3, 3, 2, 3, 2, 2, 2, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, -1, 0, -1, -2, -1, -1, -2, -2, -2, -2, -2, -2, -3, -3, -2, -3, -3, -3, -3, -3, -4, -3, -4, -3, -4, -4, -3, -4, -4, -4, -4, -4, -4, -5, -4, -4, -4, -4, -5, -4, -4, -4, -4, -4, -5, -4, -4, -4, -3, -4, -4, -3, -4, -3, -4, -3, -3, -3, -2, -3, -2, -2, -2, -2, -1, -2, -1, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -2, -1, -2, -2, -2, -2, -2, -2, -2, -3, -2, -3, -2, -3, -3, -3, -3, -3, -4, -3, -4, -3, -4, -4, -4, -4, -4, -5, -4, -5, -5, -5, -5, -6, -5, -6, -6, -6, -6, -6, -7, -6, -7, -7, -7, -8, -7, -8, -7, -8, -9, -8, -9, -8, -9, -9, -10, -9, -10, -10, -11, -11, -11, -11, -12, -12, -12, -14, -14, -16, -17, -20, -23, -28, -33, -41, -50, -59, -69, -77, -83, -89, -92, -93, -95, -97, -96, -98, -98, -98, -99, -98, -99, -99, -100, -99, -100, -100, -99, -100, -99, -101, -100, -100, -100, -100, -100, -100, -100, -100, -101, -101, -100, -100, -100, -101, -101, -100, -101, -100, -100, -100, -100, -101, -100, -101, -100, -101, -101, -101, -100, -102, -100, -101, -101, -101, -100, -100, -101, -100, -101, -101, -100, -101, -101, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -101, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -101, -100, -101, -101, -100, -101, -100, -101, -101, -101, -100, -100, -101, -101, -101, -100, -101, -100, -101, -101, -100, -100, -100, -100, -100, -101, -100, -101, -100, -101, -100, -101, -100, -101, -101, -100, -101, -100, -100, -100, -101, -100, -100, -100, -101, -100, -100, -101, -100, -101, -100, -100, -100, -101, -101, -100, -100, -100, -100, -101, -101, -100, -100, -101, -101, -100, -100, -100, -100, -100, -101, -101, -100, -101, -101, -100, -100, -101, -100, -100, -101, -101, -100, -101, -100, -100, -101, -101, -101, -100, -100, -101, -100, -101, -101, -101, -101, -100, -100, -100, -100, -100, -101, -101, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -100, -100, -100, -100, -101, -100, -101, -100, -101, -100, -100, -101, -101, -100, -100, -101, -100, -100, -101, -100, -100, -101, -100, -101, -101, -100, -101, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -101, -100, -100, -100, -101, -100, -100, -100, -100, -101, -100, -101, -101, -100, -100, -101, -100, -101, -100, -100, -100, -100, -99, -99, -98, -97, -94, -93, -90, -87, -83, -81, -76, -73, -69, -65, -62, -58, -54, -50, -47, -42, -39, -35, -31, -26, -23, -17, -13, -9, -3, 1, 8, 13, 19, 25, 31, 38, 44, 50, 57, 62, 68, 73, 78, 83, 86, 90, 92, 94, 96, 96, 97, 98, 98, 99, 100, 99, 100, 101, 100, 101, 100, 100, 100, 101, 100, 101, 101, 100, 101, 101, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 101, 100, 100, 100, 101, 101, 100, 100, 100, 101, 101, 101, 101, 101, 101, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 101, 101, 100, 101, 100, 101, 101, 101, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 101, 100, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 101, 101, 100, 100, 101, 101, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 100, 101, 101, 100, 101, 100, 100, 101, 101, 100, 101, 100, 100, 101, 101, 100, 100, 100, 101, 101, 100, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 100, 100, 101, 101, 100, 100, 100, 100, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 101, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 101, 101, 100, 100, 100, 100, 101, 101, 101, 101, 101, 100, 101, 100, 100, 101, 100, 100, 100, 100, 100, 99, 100, 99, 99, 100, 98, 99, 97, 97, 96, 95, 95, 93, 92, 91, 88, 87, 84, 81, 78, 73, 68, 62, 55, 44, 33, 20, 4, -9, -23, -34, -43, -50, -56, -60, -66, -69, -72, -76, -79, -81, -84, -86, -88, -92, -93, -94, -97, -97, -98, -99, -99, -100, -100, -100, -100, -101, -100, -101, -100, -100, -101, -100, -101, -100, -101, -100, -100, -100, -101, -101, -100, -100, -101, -101, -100, -101, -100, -101, -100, -101, -101, -101, -101, -100, -101, -100, -101, -100, -100, -100, -100, -101, -101, -100, -101, -100, -100, -101, -101, -100, -101, -100, -100, -101, -100, -101, -101, -100, -100, -101, -101, -100, -100, -100, -100, -101, -100, -101, -101, -100, -101, -100, -100, -101, -101, -101, -101, -100, -101, -101, -101, -100, -100, -101, -101, -100, -100, -101, -100, -101, -101, -101, -100, -101, -100, -101, -101, -100, -101, -100, -101, -101, -101, -100, -100, -101, -100, -101, -100, -100, -100];
posY["doubledip-2"] = [40.00295, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, -1, 0, 0, -1, 0, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -1, -1, -2, -1, -1, -2, -1, -2, -1, -2, -1, -2, -1, -2, -2, -1, -2, -2, -1, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -2, -2, -2, -1, -2, -2, -2, -1, -2, -2, -1, -2, -1, -2, -2, -1, -2, -1, -1, -2, -1, -1, -2, -1, -1, -1, -1, -2, -1, -1, -1, 0, -1, -1, -1, -1, 0, -1, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 2, 1, 2, 1, 2, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 3, 2, 2, 2, 2, 2, 3, 2, 2, 1, 2, 2, 2, 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, -1, -1, 0, -1, -1, -1, -2, -1, -1, -2, -1, -2, -2, -1, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -3, -2, -2, -3, -2, -2, -3, -2, -2, -3, -2, -2, -3, -2, -2, -3, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -2, -1, -2, -1, -2, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, -1, 0, 0, -1, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 1, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 4, 4, 5, 5, 7, 6, 8, 9, 9, 11, 11, 13, 14, 16, 17, 19, 21, 23, 25, 28, 30, 34, 37, 40, 45, 49, 54, 59, 65, 69, 75, 79, 83, 86, 89, 92, 93, 95, 96, 97, 98, 98, 99, 99, 100, 99, 100, 101, 100, 101, 100, 101, 101, 101, 101, 101, 101, 100, 100, 101, 100, 101, 100, 100, 100, 100, 101, 100, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 100, 100, 100, 101, 100, 100, 100, 101, 100, 101, 100, 101, 100, 101, 101, 100, 101, 101, 100, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 101, 101, 101, 101, 100, 101, 101, 101, 101, 100, 101, 100, 101, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 101, 100, 101, 99, 101, 101, 100, 101, 100, 101, 100, 100, 100, 101, 101, 100, 100, 101, 101, 100, 100, 101, 101, 100, 101, 100, 101, 101, 100, 101, 101, 100, 100, 101, 101, 100, 100, 101, 101, 101, 100, 100, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 101, 100, 101, 101, 100, 101, 100, 100, 101, 101, 101, 100, 101, 100, 100, 100, 101, 101, 100, 101, 100, 101, 101, 101, 100, 101, 100, 100, 101, 100, 100, 101, 101, 100, 100, 100, 101, 100, 101, 101, 100, 101, 100, 101, 101, 100, 100, 101, 100, 101, 100, 101, 100, 101, 100, 100, 101, 101, 100, 101, 100, 100, 101, 100, 100, 100, 101, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 101, 100, 100, 101, 100, 100, 100, 100, 101, 100, 100, 100, 99, 100, 100, 100, 100, 99, 99, 100, 100, 99, 99, 100, 99, 97, 96, 95, 92, 87, 81, 73, 64, 55, 48, 42, 37, 33, 30, 27, 25, 23, 21, 20, 19, 18, 16, 16, 15, 14, 13, 12, 12, 11, 10, 10, 9, 9, 8, 7, 7, 6, 6, 4, 5, 3, 3, 2, 1, 1, 0, 0, 0, -1, -1, -1, -2, -1, -2, -2, -1, -2, -2, -1, -2, -1, -1, -2, -1, -1, -1, -1, -1, 0, -1, -1, 0, -1, 0, -1, 0, -1, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 1, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, -1, -1, -2, -1, -2, -2, -2, -3, -2, -3, -3, -3, -3, -3, -3, -4, -3, -3, -3, -4, -3, -3, -4, -3, -3, -3, -3, -3, -3, -3, -3, -3, -3, -2, -3, -2, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 3, 4, 3, 3, 2, 3, 2, 1, 1, 0, 0, 0, -2, -2, -2, -3, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -5, -5, -5, -4, -4, -4, -3, -3, -3, -3, -1, -2, -1, -1, 0, 0, 0, 0, 1, 2, 1, 2, 2, 2, 3, 2, 3, 3, 3, 3, 3, 3, 4, 3, 4, 3, 4, 3, 4, 3, 4, 4, 3, 4, 3, 4, 3, 3, 3, 3, 2, 3, 2, 1, 2, 1, 0, 0, -2, -2, -4, -6, -8, -9, -13, -15, -19, -23, -28, -33, -38, -45, -49, -56, -61, -65, -70, -73, -76, -80, -82, -85, -86, -89, -91, -93, -94, -96, -97, -98, -99, -99, -100, -101, -101, -100, -99, -99, -98, -95, -93, -91, -87, -84, -79, -74, -68, -63, -57, -51, -46, -41, -36, -31, -29, -25, -22, -19, -18, -16, -14, -12, -11, -10, -9, -8, -7, -6, -5, -5, -4, -4, -3, -2, -2, -2, -2, -1, 0, -1, 0, 0, 0, 0, 1, 0, 1, 2, 1, 1, 2, 2, 1, 2, 2, 3, 2, 2, 2, 3, 2, 3, 2, 3, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 2, 3, 2, 3, 2, 2, 2, 2, 2, 2, 1, 2, 1, 1, 1, 1, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, -1, -1, -1, -2, -1, -2, -2, -2, -3, -2, -3, -2, -3, -4, -3, -3, -4, -3, -4, -3, -4, -4, -3, -4, -4, -3, -4, -3, -4, -3, -3, -3, -3, -3, -2, -2, -2, -2, -2, -1, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, -1, 0, -2, -1, -2, -2, -2, -3, -4, -3, -5, -5, -5, -7, -7, -8, -9, -10, -12, -12, -14, -15, -17, -18, -21, -22, -24, -27, -30, -32, -35, -38, -41, -44, -48, -52, -55, -60, -64, -68, -73, -79, -85, -90, -95, -98, -101, -100, -98, -95, -91, -87, -84, -79, -77, -73, -69, -66, -63, -60, -56, -52, -47, -44, -38, -33, -28, -24, -19, -16, -13, -11, -8, -6, -5, -4, -3, -3, -2, -1, -1, -1, -1, -1, -1, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
Frame 4
function allExternalFilesLoaded() {
sendNotification("pc_gameloaded", []);
nextFrame();
}
function playButtonClicked() {
FinishHelpDialog();
if (_global.gameBoard) {
return(undefined);
}
initGame();
}
function drawCurve(drawContainerMC) {
drawContainerMC.lineStyle(1, 16711680, 100);
drawContainerMC.moveTo(posX[0], posY[0]);
var _local1 = 1;
while (_local1 < posX.length) {
drawContainerMC.lineTo(posX[_local1], posY[_local1]);
_local1++;
}
drawContainerMC.endFill();
}
function initGame() {
screenMC = screenGameMC;
for (var _local3 in screenMC.particleMC) {
screenMC.particleMC[_local3].removeMovieClip();
}
for (var _local3 in screenMC.ballsMC) {
screenMC.ballsMC[_local3].removeMovieClip();
}
gotoAndStop ("game");
mLevelLimit = GetIntegerParam("levellimit", 16);
mCheats = GetBooleanParam("cheats", false);
mZoneScript = GetBooleanParam("zonescript", false);
if (mZoneScript) {
mDoFocusPause = false;
}
mDoFocusPause = GetBooleanParam("focuspause", mDoFocusPause);
mDifficultyInc = GetIntegerParam("difficultyinc", 2);
if (mDifficultyInc < 0) {
mDifficultyInc = 0;
}
mLevelParser = new LevelParser();
if (!mLevelParser.ParseLevelFile(levelsXML)) {
showErrorDialog(mLevelParser.GetErrorText());
}
_global.gameBoard = new Board(this);
_global.gameBoard.Reset(true, false);
if (pc_scorebroadcast != undefined) {
if (scoreBroadCastInterval == undefined) {
scoreBroadCastInterval = setInterval(function () {
sendNotification("pc_scorebroadcast", [gameBoard.mScore]);
}, 1000 * parseInt(pc_scorebroadcast));
}
}
if (pc_sendgamebreaks == "0") {
sendGameBreaks = false;
} else {
sendGameBreaks = true;
}
_global.ticks = 0;
this.onMouseMove = function () {
_global.gameBoard.MouseMove();
};
this.onMouseDown = function () {
if ((_xmouse < 400) || (_ymouse > 18)) {
_global.gameBoard.MouseDown();
}
};
if (globalKeyListener == undefined) {
globalKeyListener = {};
globalKeyListener.onKeyDown = function () {
if (globalKeyPressed) {
return(undefined);
}
_global.gameBoard.KeyChar(Key.getCode());
globalKeyPressed = true;
};
globalKeyListener.onKeyUp = function () {
globalKeyPressed = false;
};
Key.addListener(globalKeyListener);
}
this.onEnterFrame = main;
lastFrameTime = getTimer();
}
function DoHelpDialog() {
gameBoard.Hybernate(true);
screenMC = _root.attachMovie("helpDialogMC", "helpDialogMC", this.getNextHighestDepth());
}
function FinishHelpDialog() {
helpDialogMC.removeMovieClip();
screenMC = screenGameMC;
gameBoard.Hybernate(false);
}
function DoOptionsDialog() {
if (gameBoard.mDialogCount == 0) {
gameBoard.Pause(true, true);
var _local2 = _root.attachMovie("optionsDialogMC", "optionsDialogMC", _root.getNextHighestDepth());
_local2._x = 93;
_local2._y = 42;
}
}
function FinishOptionsDialog() {
trace("FinishOptionsDialog()");
optionsDialogMC.removeMovieClip();
gameBoard.Pause(false, true);
}
function DoStatsDialog() {
if (gameBoard != null) {
if (mStatsDialog == undefined) {
gameBoard.Pause(true, true);
mStatsDialog = new StatsDialog(gameBoard);
sendNotification("pc_scorebroadcast", [gameBoard.mScore]);
}
}
}
function FinishStatsDialog() {
mStatsDialog.Delete();
delete mStatsDialog;
var _local2 = false;
var _local3 = false;
if (gameBoard) {
_local2 = gameBoard.NeedShowUpsell();
if (gameBoard.HasHitLevelLimit()) {
_local2 = false;
}
if (gameBoard.IsGameOver() || (gameBoard.HasHitLevelLimit())) {
_local3 = true;
}
}
gameBoard.Pause(false, true);
if (_local2 && (!gameBoard.HasHitLevelLimit())) {
ShowUpsellScreen();
}
if (gameBoard.HasHitLevelLimit()) {
SendGameEndNotification();
} else if (!_local2) {
SendGameBreakNotification();
}
if (_local3) {
gameBoard.Reset(true);
_root.tongdiem = 0;
trace("reset diem");
}
main();
}
function ShowUpsellScreen() {
if (!mShowUpsell) {
return(false);
}
mUpsellScreen = new UpsellScreen();
gameBoard.Pause(true, true);
return(true);
}
function EndUpsellScreen() {
if (mUpsellScreen != null) {
mUpsellScreen.Delete();
}
if (gameBoard != null) {
gameBoard.Pause(false, true);
}
}
function GoDeluxe() {
getURL (("JavaScript:" + upsell_func) + "();");
}
function TryZumaDelux() {
GoDeluxe();
}
function Mute() {
if (_global.options.originalSoundVolume == undefined) {
_global.options.originalSoundVolume = _global.options.soundVolume;
}
_global.options.soundVolume = 0;
optionsDialogMC.soundButtonOn._visible = true;
optionsDialogMC.soundButtonOff._visible = false;
}
function Unmute() {
_global.options.soundVolume = _global.options.originalSoundVolume;
optionsDialogMC.soundButtonOn._visible = false;
optionsDialogMC.soundButtonOff._visible = true;
}
function DoNewGame() {
if (gameBoard != null) {
gameBoard.Reset(true);
FinishOptionsDialog();
gameBoard.UnpauseFully();
}
}
function main() {
var _local4 = getTimer();
var _local2 = Math.min(_local4 - lastFrameTime, 90);
var _local3 = false;
while (_local2 >= 30) {
_global.gameBoard.Update();
_local2 = _local2 - 30;
_local3 = true;
}
lastFrameTime = _local4 - _local2;
if (_local3) {
_global.gameBoard.Draw();
}
_global.ticks++;
}
function GetIntegerParam(theName, theDefault) {
if (this[theName] != undefined) {
return(parseInt(this[theName]));
}
return(theDefault);
}
function GetBooleanParam(theName, theDefault) {
if (this[theName] != undefined) {
return(this[theName].toLowerCase() == "true");
}
return(theDefault);
}
stop();
_quality = "LOW";
screenGameMC._visible = false;
_global.options = {soundVolume:50};
_global.ballIDs = ["ballBlueMC", "ballYellowMC", "ballRedMC", "ballGreenMC", "ballPurpleMC", "ballWhiteMC"];
_global.gBallColors = [1671423, 16776960, 16711680, 65280, 16711935, 16777215];
_global.gBrightBallColors = [8454143, 16777024, 16755370, 8454016, 16744703, 16777215];
_global.gDarkBallColors = [2299513, 6312202, 10489620, 2114594, 5641795, 3676962];
_global.gTextBallColors = [2984959, 16776960, 16711680, 65280, 16711935, 16777215];
_global.PowerType_ProximityBomb = 0;
_global.PowerType_SlowDown = 1;
_global.PowerType_Max = 2;
_global.PowerType_None = null;
_global.gGotPowerUp = [];
_global.mShowUpsell = true;
allExternalFilesLoaded();
_global.playSound = function (id, repeatCount, vol) {
if ((_global.options.soundVolume * vol) > 2) {
if (_global.soundObj[id] == undefined) {
_global.soundObj[id] = new Sound(_root.soundMC);
_global.soundObj[id].attachSound(id);
}
_global.soundObj[id].setVolume(Math.round(_global.options.soundVolume * vol));
_global.soundObj[id].start(0, repeatCount);
}
};
Frame 5
screenGameMC._visible = true;
DoHelpDialog();
Symbol 46 MovieClip [exportSoundMC] Frame 1
stop();
Symbol 74 Button
on (release) {
if (_root.tongdiem > 0) {
var gname = "Zuma";
var gscore = _root.tongdiem;
trace("Diem luu: " + gscore);
getURL ("index.php?act=Arcade&do=newscore", "_self", "POST");
}
}
Symbol 83 Button
on (press) {
_root.EndUpsellScreen();
}
Symbol 99 MovieClip [upsellDialogMC] Frame 1
upsellBack.useHandCursor = false;
Symbol 121 MovieClip [nextBallMC] Frame 1
stop();
Symbol 132 MovieClip Frame 1
stop();
Symbol 140 Button
on (press) {
playSound("button1", 1, 1);
}
on (release) {
_root.playButtonClicked();
}
Symbol 144 MovieClip [helpDialogMC] Frame 1
helpDialogBack.useHandCursor = false;
helpScreen = new HelpScreen();
helpScreen.Resize(0, 0, 480, 360);
this.onEnterFrame = function () {
var _local2 = getTimer();
var _local1 = Math.min(_local2 - lastFrameTime, 90);
while (_local1 >= 30) {
helpScreen.mHelpWidget1.Update();
helpScreen.mHelpWidget2.Update();
_local1 = _local1 - 30;
}
lastFrameTime = _local2 - _local1;
helpScreen.mHelpWidget1.Draw();
helpScreen.mHelpWidget2.Draw();
};
lastFrameTime = getTimer();
Symbol 194 Button
on (release) {
getURL ("http://game.24h.com.vn", "_blank");
}
Symbol 211 Button
on (release) {
_root.FinishStatsDialog();
}
Symbol 221 Button
on (release) {
_root.FinishStatsDialog();
}
Symbol 222 Button
on (release) {
_root.FinishStatsDialog();
}
Symbol 225 Button
on (release) {
if (_root.tongdiem > 0) {
var gname = "Zuma";
var gscore = _root.tongdiem;
trace("Diem luu: " + gscore);
getURL ("index.php?act=Arcade&do=newscore", "_self", "POST");
}
}
Instance of Symbol 228 MovieClip in Symbol 240 MovieClip [statsDialogMC] Frame 1
on (release) {
getURL ("http://game.24h.com.vn", "_blank");
}
Symbol 254 Button
on (release) {
_root.DoHelpDialog();
}
Symbol 257 Button
on (release) {
_root.Mute();
}
Symbol 258 Button
on (release) {
_root.GoDeluxe();
}
Symbol 259 Button
on (release) {
_root.DoNewGame();
}
Symbol 260 Button
on (release) {
_root.FinishOptionsDialog();
}
Symbol 261 Button
on (release) {
_root.Unmute();
}
Symbol 262 MovieClip [optionsDialogMC] Frame 1
optionsDialog = this;
optionsDialogDragButton.useHandCursor = false;
optionsDialogDragButton.onPress = function () {
optionsDialog.xStartMouse = _root._xmouse;
optionsDialog.yStartMouse = _root._ymouse;
optionsDialog.xStart = optionsDialog._x;
optionsDialog.yStart = optionsDialog._y;
optionsDialog.onMouseMove = function () {
optionsDialog._x = Math.min(Math.max(optionsDialog.xStart + (_root._xmouse - optionsDialog.xStartMouse), 0), 480 - optionsDialogDragButton._width);
optionsDialog._y = Math.min(Math.max(optionsDialog.yStart + (_root._ymouse - optionsDialog.yStartMouse), 0), 360 - optionsDialogDragButton._height);
updateAfterEvent();
};
this.useHandCursor = true;
};
optionsDialogDragButton.onRelease = (optionsDialogDragButton.onReleaseOutside = function () {
this.useHandCursor = false;
delete optionsDialog.onMouseMove;
});
if (_global.options.soundVolume == 0) {
soundButtonOff._visible = false;
} else {
soundButtonOn._visible = false;
}
Symbol 573 MovieClip [explosionMC] Frame 13
this.removeMovieClip();
Symbol 611 MovieClip Frame 1
stop();
Symbol 655 MovieClip [ballExpMC] Frame 41
stop();
Symbol 1016 MovieClip [ballBlueMC] Frame 1
stop();
Symbol 1071 MovieClip Frame 250
stop();
Symbol 1083 MovieClip Frame 250
stop();
Symbol 1086 MovieClip Frame 65
stop();
Symbol 1094 MovieClip Frame 50
stop();
Symbol 1095 MovieClip Frame 55
stop();
Symbol 1096 MovieClip Frame 370
stop();
_root.play();
Symbol 1097 MovieClip Frame 1
stop();
Symbol 1098 MovieClip Frame 1
stop();
Symbol 1098 MovieClip Frame 2
if (((__reg0 = method.toLowerCase())) === "pc_pause") {
var p = (param == "1");
if (p) {
if (_global.gameBoard.mPauseCount == 0) {
_global.gameBoard.Pause(true, false);
}
} else if (_global.gameBoard.mPauseCount > 0) {
_global.gameBoard.Pause(false, false);
}
} else if (__reg0 === "pc_sendgamebreaks") {
_global.sendGameBreaks = param == "1";
}
Symbol 1145 MovieClip [__Packages.Widget] Frame 0
class Widget
{
var mLastWMUpdateCount, mVisible, mDisabled, mIsDown, mIsOver, mDoFinger, mMouseVisible, mClip, mDirty, mTransient, mHasFocus, mHasTransparencies, mHasAlpha, mX, mY, mWidth, mHeight, mUpdateCnt;
function Widget () {
mLastWMUpdateCount = 0;
mVisible = true;
mDisabled = false;
mIsDown = false;
mIsOver = false;
mDoFinger = false;
mMouseVisible = true;
mClip = true;
mDirty = true;
mTransient = false;
mHasFocus = false;
mHasTransparencies = false;
mHasAlpha = false;
mX = 0;
mY = 0;
mWidth = 0;
mHeight = 0;
mUpdateCnt = 0;
}
function Resize(theX, theY, theWidth, theHeight) {
if ((((mX == theX) && (mY == theY)) && (mWidth == theWidth)) && (mHeight == theHeight)) {
return(undefined);
}
mX = theX;
mY = theY;
mWidth = theWidth;
mHeight = theHeight;
}
function Update() {
mUpdateCnt++;
}
}
Symbol 1146 MovieClip [__Packages.HelpScreen] Frame 0
class HelpScreen extends Widget
{
var mHelpWidget1, mHelpWidget2;
function HelpScreen () {
super();
mHelpWidget1 = new HelpWidget1();
mHelpWidget2 = new HelpWidget2();
}
function Resize(theX, theY, theWidth, theHeight) {
super.Resize(theX, theY, theWidth, theHeight);
mHelpWidget1.Resize(14, 155, 209, 148);
mHelpWidget2.Resize(255, 155, 209, 148);
}
}
Symbol 1147 MovieClip [__Packages.HelpWidget1] Frame 0
class HelpWidget1 extends Widget
{
var mMousePos, mMouseDest, mClickPos, mBulletList, mGun, mClickFrame, FONT_MAIN10, mUpdateCnt;
function HelpWidget1 () {
super();
mMousePos = new Object();
mMouseDest = new Object();
mClickPos = new Object();
mBulletList = new Array();
mGun = new Gun(_root.screenMC);
mGun.SetFireSpeed(3);
mGun.Reload(random(4));
mGun.Reload(random(4));
mMousePos.mX = 194;
mMousePos.mY = 235;
mMouseDest.mX = 194;
mMouseDest.mY = 235;
mClickFrame = -100000;
mGun.SetPos(((mGun.mWidth / 2) + 14) + 10, ((mGun.mHeight / 2) + 155) + 50);
UpdateGunAngle();
FONT_MAIN10 = new ImageFont("MAIN10");
var _local4 = _root.screenMC.particleMC.widget1TextMC;
if (_local4 == undefined) {
_local4 = _root.screenMC.particleMC.createEmptyMovieClip("widget1TextMC", _root.screenMC.particleMC.getNextHighestDepth());
_local4._x = 40;
_local4._y = 170;
FONT_MAIN10.DrawStringShadow("DI CHUY~N CHU`T @~ NG#M.".toUpperCase(), _local4, 0, 0);
FONT_MAIN10.DrawStringShadow("CH$N M`T V% TR^.".toUpperCase(), _local4, 60, 15);
FONT_MAIN10.DrawStringShadow("CLICK CHU`T @~ B#N.".toUpperCase(), _local4, 40, 30);
var _local6 = new Color(_local4);
var _local5 = _local6.getTransform();
_local5.rb = 0;
_local5.gb = 0;
_local5.bb = -255;
_local6.setTransform(_local5);
}
}
function Delete() {
delete mGun;
var _local2 = 0;
for(;;){
if (_local2 >= mBulletList.length) {
return(undefined);
}
mBulletList[_local2].Delete();
_local2++;
};
}
function UpdateGunAngle() {
var _local7 = mGun.mCenterX;
var _local5 = mGun.mCenterY;
var _local6 = mMousePos.mX;
var _local4 = mMousePos.mY;
var _local3 = _local6 - _local7;
var _local8 = _local5 - _local4;
var _local2;
if (_local3 == 0) {
if (_local4 < _local5) {
_local2 = 1.57079632679;
} else {
_local2 = -1.57079632679;
}
} else {
_local2 = Math.atan(_local8 / _local3);
if (_local3 < 0) {
_local2 = _local2 + 3.14159265359;
}
}
mGun.SetAngle((-_local2) + 1.57079632679);
}
function UpdateBullets() {
var _local3 = 0;
for(;;){
if (_local3 >= mBulletList.length) {
return(undefined);
}
var _local2 = mBulletList[_local3];
_local2.Update();
if (((_local2.mx - 13) > 223) || ((_local2.my - 13) > 303)) {
_local2.Delete();
mBulletList.splice(_local3, 1);
} else {
_local3++;
}
};
}
function UpdateMouse() {
if ((mMousePos.mX != mMouseDest.mX) || (mMousePos.mY != mMouseDest.mY)) {
if ((mUpdateCnt - mClickFrame) > 16.6666666667) {
if (mMousePos.mX < mMouseDest.mX) {
mMousePos.mX = Math.min(mMousePos.mX + 3, mMouseDest.mX);
} else if (mMousePos.mX > mMouseDest.mX) {
mMousePos.mX = Math.max(mMousePos.mX - 3, mMouseDest.mX);
}
if (mMousePos.mY < mMouseDest.mY) {
mMousePos.mY = Math.min(mMousePos.mY + 3, mMouseDest.mY);
} else if (mMousePos.mY > mMouseDest.mY) {
mMousePos.mY = Math.max(mMousePos.mY - 3, mMouseDest.mY);
}
UpdateGunAngle();
}
return(undefined);
}
if (mMousePos.mY <= 195) {
mMouseDest.mY = 295;
return(undefined);
}
mMouseDest.mY = 195;
}
function Update() {
super.Update();
if (mUpdateCnt >= 33.3333333333) {
mGun.Update();
var _local3 = mGun.GetFiredBullet();
if (_local3 != null) {
mBulletList.push(_local3);
if (mGun.NeedsReload()) {
mGun.Reload(random(4), true);
}
}
if ((mUpdateCnt - mClickFrame) > 66.6666666667) {
mGun.StartFire();
mClickFrame = mUpdateCnt;
mClickPos = mMousePos;
}
UpdateMouse();
UpdateBullets();
}
}
function Draw() {
mGun.Draw();
var _local3 = 0;
while (_local3 < mBulletList.length) {
mBulletList[_local3].Draw();
_local3++;
}
if ((mUpdateCnt - mClickFrame) < 33.3333333333) {
var _local4 = _root.screenMC.particleMC.pointCrossMC;
if (_local4 == undefined) {
var _local5 = _root.screenMC.particleMC.getNextHighestDepth();
_local4 = _root.screenMC.particleMC.attachMovie("pointCrossMC", "pointCrossMC", _local5);
_local4._x = mClickPos.mX;
_local4._y = mClickPos.mY;
}
_local4 = _root.screenMC.particleMC.clickTextMC;
if (_local4 == undefined) {
_local4 = _root.screenMC.particleMC.createEmptyMovieClip("clickTextMC", _root.screenMC.particleMC.getNextHighestDepth());
FONT_MAIN10.DrawString("CLICK!", _local4);
if (mClickPos.mY > 215) {
_local4._x = mClickPos.mX - 55;
_local4._y = mClickPos.mY - 10;
} else {
_local4._x = mClickPos.mX - 55;
_local4._y = mClickPos.mY + 20;
}
}
} else {
if (_root.screenMC.particleMC.pointCrossMC != undefined) {
_root.screenMC.particleMC.pointCrossMC.removeMovieClip();
}
if (_root.screenMC.particleMC.clickTextMC != undefined) {
_root.screenMC.particleMC.clickTextMC.removeMovieClip();
}
}
var _local4 = _root.screenMC.particleMC.cursorPointerMC;
if (_local4 == undefined) {
var _local5 = _root.screenMC.particleMC.getNextHighestDepth();
_local4 = _root.screenMC.particleMC.attachMovie("cursorPointerMC", "cursorPointerMC", _local5);
return(undefined);
}
_local4._x = mMousePos.mX;
_local4._y = mMousePos.mY;
}
}
Symbol 1148 MovieClip [__Packages.Gun] Frame 0
class Gun
{
var screenInstance, mCenterX, mCenterY, mWidth, mHeight, mAngle, mRecoilCount, mBlinkCount, mWink, mFireVel, mState, mBullet, mNextBullet, mRecoilX1, mRecoilY1, mStatePercent, mRecoilX2, mRecoilY2;
function Gun (_screenInstance) {
screenInstance = _screenInstance;
mCenterX = 240;
mCenterY = 180;
mWidth = screenInstance.gunBottomMC._width;
mHeight = screenInstance.gunBottomMC._height;
mAngle = 0;
mRecoilCount = 0;
mBlinkCount = 0;
mWink = false;
mFireVel = 4.8;
mState = GunState_Normal;
mBullet = null;
mNextBullet = null;
}
function SetFireSpeed(theSpeed) {
mFireVel = theSpeed;
}
function SetPos(theX, theY) {
mCenterX = theX;
mCenterY = theY;
mRecoilX1 = mCenterX;
mRecoilY1 = mCenterY;
screenInstance.gunTopMC._x = theX;
screenInstance.gunTopMC._y = theY;
screenInstance.gunBottomMC._x = theX;
screenInstance.gunBottomMC._y = theY;
CalcAngle();
}
function SetBulletType(theType) {
if (mBullet != null) {
mBullet.SetType(theType);
}
}
function SetNextBulletType(theType) {
if (mNextBullet != null) {
mNextBullet.SetType(theType);
}
}
function SetSize(theWidth, theHeight) {
mWidth = theWidth;
mHeight = theHeight;
CalcAngle();
}
function Reload(theType, delay, thePower) {
var _local2 = new Bullet();
_local2.SetType(theType);
_local2.SetPowerType(thePower, false);
mStatePercent = 0;
mBullet.Delete();
mBullet = mNextBullet;
mNextBullet = _local2;
mState = GunState_Reloading;
if (!delay) {
mStatePercent = 1;
mState = GunState_Normal;
}
CalcAngle();
}
function SwapBullets() {
if (mState == GunState_Normal) {
if ((mBullet == null) || (mNextBullet == null)) {
return(undefined);
}
var _local2 = mBullet;
mBullet = mNextBullet;
mNextBullet = _local2;
mNextBullet.mc.removeMovieClip();
delete mNextBullet.mc;
CalcAngle();
}
}
function EmptyBullets() {
mState = GunState_Normal;
if (mNextBullet != null) {
mNextBullet.Delete();
mNextBullet = null;
}
if (mBullet != null) {
mBullet.Delete();
mBullet = null;
}
}
function DeleteBullet() {
if (mBullet != null) {
mBullet.Delete();
mBullet = mNextBullet;
mNextBullet = null;
}
}
function NeedsReload() {
return((mNextBullet == null) || (mBullet == null));
}
function DoBlink(wink) {
mWink = wink;
mBlinkCount = 25;
}
function StartFire() {
if (mState != GunState_Normal) {
return(false);
}
if (mBullet == null) {
return(false);
}
mStatePercent = 0;
mState = GunState_Firing;
mCenterX = mRecoilX1;
mCenterY = mRecoilY1;
var _local4 = mAngle - 1.57079632679;
var _local2 = Math.cos(_local4);
var _local3 = Math.sin(_local4);
mBullet.SetVelocity(mFireVel * _local2, mFireVel * _local3);
mBullet.SetPos(mBullet.mx - (40 * _local2), mBullet.my - (40 * _local3));
mRecoilX1 = mCenterX;
mRecoilY1 = mCenterY;
mRecoilX2 = mCenterX - (6 * _local2);
mRecoilY2 = mCenterY - (6 * _local3);
mRecoilCount = 8;
DoBlink(false);
CalcAngle();
screenInstance.gunTopMC.play();
return(true);
}
function GetFiredBullet() {
if (mState == GunState_Firing) {
if (mStatePercent >= 1) {
var _local2 = mBullet;
mBullet = null;
mState = GunState_Normal;
return(_local2);
}
}
return(null);
}
function CalcAngle() {
if (mBullet != null) {
var _local2;
var _local4 = mCenterY - 17;
var _local6 = mCenterY + 8;
var _local3 = mCenterY + 20;
if (mState == GunState_Normal) {
_local2 = _local3;
} else if (mState == GunState_Reloading) {
_local2 = _local4 + ((_local3 - _local4) * mStatePercent);
} else if (mStatePercent <= 0.6) {
_local2 = _local3 + (((_local6 - _local3) * mStatePercent) / 0.6);
} else {
return(undefined);
}
var _local5 = _local2 - mCenterY;
mBullet.SetPos(mCenterX + (Math.cos(mAngle - 1.57079632679) * _local5), mCenterY + (Math.sin(mAngle - 1.57079632679) * _local5));
}
}
function SetAngle(theAngle) {
mAngle = theAngle;
CalcAngle();
}
function Update() {
if (mRecoilCount > 0) {
mRecoilCount = mRecoilCount - 2;
if (mRecoilCount <= 20) {
if (mRecoilCount <= 0) {
mCenterX = mRecoilX1;
mCenterY = mRecoilY1;
} else if (mRecoilCount < 15) {
mCenterX = mRecoilX1 + (((mRecoilX2 - mRecoilX1) * mRecoilCount) / 15);
mCenterY = mRecoilY1 + (((mRecoilY2 - mRecoilY1) * mRecoilCount) / 15);
} else {
var _local2 = mRecoilCount - 15;
mCenterX = mRecoilX2 + (((mRecoilX1 - mRecoilX2) * _local2) / 5);
mCenterY = mRecoilY2 + (((mRecoilY1 - mRecoilY2) * _local2) / 5);
}
}
}
if (mBlinkCount > 0) {
mBlinkCount--;
}
if (mState == GunState_Firing) {
mStatePercent = mStatePercent + 0.499995;
if (mStatePercent > 0.6) {
mBullet.Update();
}
} else {
mStatePercent = mStatePercent + 0.233331;
}
if (mStatePercent > 1) {
mStatePercent = 1;
if (mState == GunState_Reloading) {
mState = GunState_Normal;
}
}
CalcAngle();
}
function Draw() {
var _local6 = mAngle * 57.2957795131;
var _local3 = screenInstance.gunTopMC;
var _local2 = screenInstance.gunBottomMC;
_local3._rotation = (_local2._rotation = _local6);
_local3._x = (_local2._x = mCenterX);
_local3._y = (_local2._y = mCenterY);
var _local5 = 17;
var _local4 = 0;
if (mBullet == null) {
_local2.tongueMC._y = 12;
} else if (((__reg0 = mState)) === GunState_Normal) {
_local2.tongueMC._y = _local4;
} else if (__reg0 === GunState_Firing) {
_local2.tongueMC._y = (_local5 * mStatePercent) + (_local4 * (1 - mStatePercent));
} else if (__reg0 === GunState_Reloading) {
_local2.tongueMC._y = (_local4 * mStatePercent) + (_local5 * (1 - mStatePercent));
}
if (mBullet != null) {
mBullet.Draw();
}
if ((mNextBullet != null) && (mState != GunState_Reloading)) {
_local2.nextBallMC.gotoAndStop(2 + mNextBullet.mType);
return(undefined);
}
_local2.nextBallMC.gotoAndStop(1);
}
var GunState_Normal = 1;
var GunState_Firing = 2;
var GunState_Reloading = 3;
}
Symbol 1149 MovieClip [__Packages.Ball] Frame 0
class Ball
{
var mId, mx, my, mType, mBullet, mList, mCollidesWithNext, mSuckCount, mClearCount, mBackwardsCount, mBackwardsSpeed, mComboCount, mComboScore, mNeedCheckCollision, mSuckPending, mStartFrame, mWayPoint, mPowerType, mDestPowerType, mPowerCount, mPowerFade, mGapBonus, mNumGaps, mc, mListItr;
function Ball () {
mId = ++mIdGen;
mx = 0;
my = 0;
mType = 0;
mBullet = null;
mList = null;
mCollidesWithNext = false;
mSuckCount = 0;
mClearCount = 0;
mBackwardsCount = 0;
mBackwardsSpeed = 0;
mComboCount = 0;
mComboScore = 0;
mNeedCheckCollision = false;
mSuckPending = false;
mStartFrame = 0;
mWayPoint = 0;
mPowerType = null;
mDestPowerType = null;
mPowerCount = 0;
mPowerFade = 0;
mGapBonus = 0;
mNumGaps = 0;
}
function Delete() {
mc.removeMovieClip();
delete mc;
}
function SetComboCount(theCount, theScore) {
mComboCount = theCount;
mComboScore = theScore;
}
function SetGapBonus(theBonus, theNumGaps) {
mGapBonus = theBonus;
mNumGaps = theNumGaps;
}
function SetPowerType(theType, delay) {
if (theType != mPowerType) {
if (delay) {
mDestPowerType = theType;
mPowerFade = 30;
return(undefined);
}
mDestPowerType = null;
mPowerType = theType;
}
}
function UpdateRotation() {
if (mPowerFade > 0) {
mPowerFade--;
if ((mPowerFade >> 2) & 1) {
__reg3 = new Color(mc);
__reg2 = __reg3.getTransform();
__reg2.rb = (__reg2.gb = (__reg2.bb = 75));
__reg3.setTransform(__reg2);
} else {
var __reg3 = new Color(mc);
var __reg2 = __reg3.getTransform();
__reg2.rb = (__reg2.gb = (__reg2.bb = 0));
__reg3.setTransform(__reg2);
}
if (mPowerFade == 0) {
mPowerType = mDestPowerType;
mDestPowerType = null;
if (mPowerType != null) {
mPowerCount = 666;
}
}
}
if (mPowerCount > 0) {
if ((--mPowerCount) <= 0) {
SetPowerType(null, true);
}
}
}
function GetPowerTypeWussy() {
if (mPowerType != null) {
return(mPowerType);
}
return(mDestPowerType);
}
function SetWayPoint(thePoint) {
trace("SetWayPoint() is deprecated");
mWayPoint = thePoint;
}
function InsertInList(theList, index) {
mList = theList;
mListItr = index;
theList.splice(index, 0, this);
var _local2 = index + 1;
while (_local2 < theList.length) {
theList[_local2].mListItr++;
_local2++;
}
return(mListItr);
}
function GetPrevBall(mustCollide) {
if (mList == null) {
return(null);
}
var _local2 = mListItr;
if (_local2 == 0) {
return(null);
}
if (!mustCollide) {
_local2--;
return(mList[_local2]);
}
_local2--;
var _local3 = mList[_local2];
if (_local3.mCollidesWithNext) {
return(_local3);
}
return(null);
}
function GetNextBall(mustCollide) {
if (mList == null) {
return(null);
}
var _local2 = mListItr + 1;
if (_local2 == mList.length) {
return(null);
}
if ((!mustCollide) || (mCollidesWithNext)) {
return(mList[_local2]);
}
return(null);
}
function SetPos(x, y) {
mx = x;
my = y;
}
function SetType(theType) {
mType = theType;
if (mc != undefined) {
var _local4 = mc.getDepth();
mc.removeMovieClip();
mc = _root.screenMC.ballsMC.attachMovie(_global.ballIDs[mType], mId.toString(), _local4);
}
}
function StartClearCount(inTunnel) {
if (mClearCount == 0) {
mClearCount = 1;
if (mc == undefined) {
var _local8 = _root.screenMC.ballsMC.getNextHighestDepth();
} else {
var _local8 = mc.getDepth();
mc.removeMovieClip();
}
mc = _root.screenMC.ballsMC.attachMovie("ballExpMC", mId.toString(), _local8);
mc._x = mx;
mc._y = my;
var _local4 = _global.gBallColors[mType];
var _local7 = ((_local4 >> 16) & 255) + 200;
var _local5 = ((_local4 >> 8) & 255) + 200;
var _local6 = (_local4 & 255) + 200;
if (_local7 > 255) {
_local7 = 255;
}
if (_local5 > 255) {
_local5 = 255;
}
if (_local6 > 255) {
_local6 = 255;
}
new Color(mc).setRGB(((_local7 << 16) + (_local5 << 8)) + _local6);
}
}
function DrawBomb() {
var _local2 = int((my - int(my)) * 4) + (int((mx - int(mx)) * 4) * 4);
mc.gotoAndStop(20 + _local2);
mc.animMC.subMC.gotoAndStop(1 + _local2);
}
function DrawSlow() {
var _local2 = int((my - int(my)) * 4) + (int((mx - int(mx)) * 4) * 4);
mc.gotoAndStop(36 + _local2);
mc.animMC.subMC.gotoAndStop(1 + _local2);
}
function DrawPower() {
if (((__reg0 = mPowerType)) === _global.PowerType_ProximityBomb) {
DrawBomb();
return(undefined);
}
if (!(__reg0 === _global.PowerType_SlowDown)) {
return(undefined);
}
DrawSlow();
return(undefined);
}
function DrawExplosion() {
}
function Draw() {
if (mc == undefined) {
mc = _root.screenMC.ballsMC.attachMovie(_global.ballIDs[mType], mId.toString(), _root.screenMC.ballsMC.getNextHighestDepth());
}
if (mClearCount) {
return(undefined);
}
mc._x = int(mx - 13);
mc._y = int(my - 13);
if (mPowerType == _global.PowerType_None) {
mc.gotoAndStop((1 + int((my - int(my)) * 4)) + (int((mx - int(mx)) * 4) * 4));
return(undefined);
}
DrawPower();
}
function CollidesWithPhysically(theBall, thePad) {
var _local2 = theBall.mx - mx;
var _local4 = theBall.my - my;
var _local3 = 13 + thePad;
return(((_local2 * _local2) + (_local4 * _local4)) < ((4 * _local3) * _local3));
}
function CollidesWith(theBall, thePad) {
return(Math.abs(mWayPoint - theBall.mWayPoint) < ((13 + thePad) * 2));
}
function UpdateCollisionInfo(thePad) {
var _local2 = GetPrevBall();
var _local3 = GetNextBall();
if (_local2 != null) {
_local2.mCollidesWithNext = _local2.CollidesWith(this, thePad);
}
if (_local3 != null) {
mCollidesWithNext = _local3.CollidesWith(this, thePad);
return(undefined);
}
mCollidesWithNext = false;
}
function SetCollidesWithPrev(collidesWithPrev) {
var _local2 = GetPrevBall();
if (_local2 != null) {
_local2.mCollidesWithNext = collidesWithPrev;
}
}
function GetCollidesWithPrev() {
var _local2 = GetPrevBall();
if (_local2 != null) {
return(_local2.mCollidesWithNext);
}
return(false);
}
function RemoveFromList() {
if (mList != null) {
mList.splice(mListItr, 1);
var _local2 = mListItr;
while (_local2 < mList.length) {
mList[_local2].mListItr--;
_local2++;
}
mList = null;
}
}
static var mIdGen = 0;
}
Symbol 1150 MovieClip [__Packages.Bullet] Frame 0
class Bullet extends Ball
{
var mVelX, mVelY, mHitBall, mHitPercent, mMergeSpeed, mGapInfo, mCurCurvePoint, mHitInFront, mHaveSetPrevBall, mHitX, mx, mHitY, my, mDestX, mDestY, mClearCount, Draw;
function Bullet () {
super();
mVelX = 0;
mVelY = 0;
mHitBall = null;
mHitPercent = 0;
mMergeSpeed = 0.05;
mGapInfo = new Array();
mCurCurvePoint = [0, 0, 0];
}
function Delete() {
SetBallInfo(null);
super.Delete();
}
function GetHitPercent() {
trace("GetHitPercent() is deprecated");
return(mHitPercent);
}
function GetHitBall() {
trace("GetHitBall() is deprecated");
return(mHitBall);
}
function GetHitInFront() {
trace("GetHitInFront() is deprecated");
return(mHitInFront);
}
function SetVelocity(vx, vy) {
mVelX = vx;
mVelY = vy;
}
function SetCurCurvePoint(theCurveNum, thePoint) {
mCurCurvePoint[theCurveNum] = thePoint;
}
function AddGapInfo(theCurve, theDist, theBallId) {
var _local2 = 0;
while (_local2 < mGapInfo.length) {
if (mGapInfo[_local2].mBallId == theBallId) {
return(false);
}
_local2++;
}
mGapInfo.push(new GapInfo(theBallId, theDist, theCurve));
return(true);
}
function RemoveGapInfoForBall(theBallId) {
var _local2 = 0;
for(;;){
if (_local2 >= mGapInfo.length) {
return(undefined);
}
if (mGapInfo[_local2].mBallId == theBallId) {
mGapInfo.splice(_local2, 1);
_local2--;
}
_local2++;
};
}
function GetCurGapBall(theCurveNum) {
var _local3 = 0;
var _local2 = 0;
while (_local2 < mGapInfo.length) {
if (mGapInfo[_local2].mCurve == theCurveNum) {
_local3 = mGapInfo[_local2].mBallId;
}
_local2++;
}
return(_local3);
}
function GetMinGapDist() {
var _local3 = 0;
var _local2 = 0;
while (_local2 < mGapInfo.length) {
if ((_local3 == 0) || (mGapInfo[_local2].mDist < _local3)) {
_local3 = mGapInfo[_local2].mDist;
}
_local2++;
}
return(_local3);
}
function SetHitBall(theBall, hitInFront) {
SetBallInfo(null);
mHaveSetPrevBall = false;
mHitBall = theBall;
mHitX = mx;
mHitY = my;
mHitPercent = 0;
mHitInFront = hitInFront;
SetBallInfo(this);
}
function GetPushBall() {
if (mHitBall != null) {
var _local2 = (mHitInFront ? (mHitBall.GetNextBall()) : (mHitBall));
if (_local2 != null) {
if (_local2.CollidesWithPhysically(this, 0)) {
return(_local2);
}
return(null);
}
return(null);
}
}
function CheckSetHitBallToPrevBall() {
if (mHaveSetPrevBall || (mHitBall == null)) {
return(undefined);
}
var _local2 = mHitBall.GetPrevBall();
if (_local2 != null) {
if (_local2.CollidesWithPhysically(this, 0)) {
if (_local2.mClearCount == 0) {
mHaveSetPrevBall = true;
SetBallInfo(null);
mHitBall = _local2;
mHitInFront = true;
mHitX = mx;
mHitY = my;
mHitPercent = 0;
SetBallInfo(this);
}
}
}
}
function SetBallInfo(theBullet) {
if (mHitBall != null) {
mHitBall.mBullet = theBullet;
}
}
function UpdateHitPos() {
mHitX = mx;
mHitY = my;
}
function SetDestPos(x, y) {
mDestX = x;
mDestY = y;
}
function Update() {
if (mHitBall == null) {
mx = mx + (mVelX * 3);
my = my + (mVelY * 3);
return(undefined);
}
if (mClearCount == 0) {
mHitPercent = mHitPercent + mMergeSpeed;
if (mHitPercent > 1) {
mHitPercent = 1;
}
mx = mHitX + (mHitPercent * (mDestX - mHitX));
my = mHitY + (mHitPercent * (mDestY - mHitY));
Draw();
}
}
function MergeFully() {
mHitPercent = 1;
Update();
}
}
Symbol 1151 MovieClip [__Packages.GapInfo] Frame 0
class GapInfo
{
var mBallId, mDist, mCurve;
function GapInfo (theBallId, theDist, theCurve) {
mBallId = theBallId;
mDist = theDist;
mCurve = theCurve;
}
}
Symbol 1152 MovieClip [__Packages.ImageFont] Frame 0
class ImageFont
{
var CharList, WidthList, KerningPairs, KerningValues, fontLinkageID, pointSize, mAscent, WidthListAssoc, FrameNumber, KerningPairsAssoc;
function ImageFont (theFontName) {
if (theFontName == "MAIN10") {
CharList = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+", "[", "{", "]", "}", ";", ":", "'", "\"", ",", "<", ".", ">", "/", "?", " "];
WidthList = [8, 9, 8, 10, 8, 7, 9, 10, 5, 5, 9, 7, 11, 9, 10, 8, 10, 9, 6, 8, 8, 8, 11, 8, 7, 7, 10, 4, 7, 7, 9, 7, 7, 6, 7, 8, 8, 8, 10, 10, 9, 10, 8, 8, 9, 9, 9, 6, 8, 8, 7, 8, 8, 8, 8, 8, 8, 3, 8, 8, 8, 8, 3, 8, 8, 8, 4];
KerningPairs = ["\"A", "A\"", "A'", "AT", "AV", "AW", "EW", "EY", "F,", "F.", "FA", "FL", "K-", "KO", "L'", "LT", "LV", "LW", "LY", "P,", "P.", "PA", "RC", "RG", "RT", "RV", "RW", "RY", "T,", "T-", "T.", "T:", "T;", "TA", "TC", "TH", "TL", "TO", "TS", "V,", "V-", "V.", "V:", "V;", "VA", "VC", "VO", "W,", "W.", "W;", "WA", "Y,", "Y-", "Y.", "Y:", "Y;", "YA", "YC", "YO", "YQ"];
KerningValues = [-1, -1, -1, -1, -1, -1, 1, 1, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -3, -2, -2, -1, -1, -1, -1, -1, -1, -2, -1, -2, -1, -2, -2, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -2, -1, -1, -2, -2, -1, -1, -2, -1, -2, -1, -2, -2, -1, -1, -1];
fontLinkageID = "FontCancun10MC";
pointSize = 10;
mAscent = 10;
} else if (theFontName == "FLOAT") {
CharList = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "`", "!", "@", "#", "$", "%", "^", "&", "*", "[", "]", "-", "_", "=", "+", "[", "{", "]", "}", ";", ":", "'", "\"", ",", "<", ".", ">", "/", "?", " "];
WidthList = [12, 12, 11, 14, 11, 10, 13, 12, 6, 7, 12, 10, 15, 11, 13, 12, 13, 12, 9, 11, 11, 12, 15, 11, 10, 10, 12, 12, 11, 14, 11, 10, 13, 12, 6, 7, 12, 10, 15, 11, 13, 12, 13, 12, 9, 11, 11, 12, 15, 11, 10, 10, 14, 6, 10, 10, 12, 9, 11, 10, 11, 11, 7, 7, 14, 12, 12, 12, 12, 15, 12, 12, 12, 8, 11, 8, 11, 5, 6, 5, 6, 7, 5, 6, 8, 6, 7, 5, 7, 13, 8, 5];
KerningPairs = ["\"A", "\"a", "A\"", "A'", "AT", "AV", "AW", "AY", "At", "Av", "Aw", "Ay", "EW", "EY", "Ew", "Ey", "F,", "F.", "FA", "FL", "Fa", "Fl", "K-", "KO", "Ko", "L'", "LT", "LV", "LW", "LY", "Ly", "P,", "P.", "PA", "Pa", "RC", "RG", "RT", "RV", "RW", "RY", "Rc", "Rg", "Ry", "T,", "T-", "T.", "T:", "T;", "TA", "TC", "TH", "TL", "TO", "TS", "Ta", "Tc", "Th", "Tl", "To", "Ts", "V,", "V-", "V.", "V:", "V;", "VA", "VC", "VO", "Va", "Vc", "Vo", "W,", "W-", "W.", "W;", "WA", "Wa", "Y,", "Y-", "Y.", "Y:", "Y;", "YA", "YC", "YO", "YQ", "Ya", "Yc", "Yo", "Yq", "a\"", "a'", "at", "av", "aw", "ay", "ew", "ey", "f,", "f.", "fa", "fl", "k-", "ko", "l'", "lt", "lv", "lw", "ly", "p,", "p.", "pa", "rc", "rg", "rt", "rv", "rw", "ry", "t,", "t-", "t.", "t:", "t;", "ta", "tc", "th", "tl", "to", "ts", "v,", "v-", "v.", "v:", "v;", "va", "vc", "vo", "w,", "w-", "w.", "w;", "wa", "y,", "y-", "y.", "y:", "y;", "yO", "ya", "yc", "yo", "yq"];
KerningValues = [-2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, 1, 1, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -3, -3, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -2, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -2, -1, -1, -1, -1, -1, -2, -1, -1, -1, -2, -2, -1, -1, -2, -1, -1, -2, -1, -2, -1, -2, -2, -2, -1, -2, -1, -2, -2, -1, -1, -1, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, 1, 1, -2, -2, -1, -1, -1, -1, -1, -1, -1, -1, -1, -3, -3, -2, -1, -1, -1, -1, -1, -1, -3, -2, -2, -2, -2, -2, -1, -1, -1, -1, -1, -2, -1, -1, -1, -2, -2, -1, -1, -2, -1, -2, -1, -2, -2, -1, -2, -1, -2, -1, -2, -1, -1, -1];
fontLinkageID = "FontCancun12MC";
pointSize = 12;
mAscent = 14;
} else if (theFontName == "MONODIGIT") {
CharList = ["0", "1", "2", "3", "4", "5", "6", "7", "8", "9", " "];
WidthList = [11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 10];
KerningPairs = [];
KerningValues = [];
fontLinkageID = "FontCancun13MC";
pointSize = 13;
mAscent = 13;
} else if (theFontName == "TITLE") {
CharList = ["A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "~", "`", "!", "@", "#", "$", "%", "^", "&", "*", "(", ")", "-", "_", "=", "+", "[", "{", "]", "}", ";", ":", "'", "\"", ",", "<", ".", ">", "/", "?", " "];
WidthList = [13, 11, 14, 13, 10, 10, 13, 15, 5, 12, 16, 7, 19, 14, 17, 12, 17, 13, 12, 9, 13, 13, 15, 12, 12, 9, 13, 11, 14, 13, 10, 10, 13, 12, 8, 13, 14, 10, 15, 14, 17, 12, 12, 13, 12, 9, 14, 13, 21, 12, 13, 9, 17, 5, 12, 11, 12, 12, 11, 9, 15, 11, 13, 5, 15, 17, 13, 12, 13, 13, 0, 9, 12, 12, 15, 14, 13, 12, 10, 12, 10, 12, 5, 5, 5, 9, 5, 12, 5, 12, 12, 12, 12];
KerningPairs = [];
KerningValues = [];
fontLinkageID = "FontNativeAlien18MC";
pointSize = 18;
mAscent = 30;
}
WidthListAssoc = [];
FrameNumber = [];
var _local4 = 0;
while (_local4 < CharList.length) {
var _local2 = CharList[_local4];
if (WidthListAssoc[_local2] == undefined) {
WidthListAssoc[_local2] = WidthList[_local4];
}
if (FrameNumber[_local2] == undefined) {
FrameNumber[_local2] = 1 + _local4;
}
_local4++;
}
KerningPairsAssoc = [];
var _local3 = 0;
for(;;){
if (_local3 >= KerningPairs.length) {
return;
}
var _local5 = KerningPairs[_local3];
KerningPairsAssoc[KerningPairs[_local3]] = KerningValues[_local3];
_local3++;
};
}
function DrawString(str, targetInstance, xOffset, theY) {
str = str.toString();
if (xOffset == undefined) {
xOffset = 0;
}
if (theY == undefined) {
theY = 0;
}
theY = theY - mAscent;
var _local5 = 0;
while (_local5 < str.length) {
var _local2 = str.charAt(_local5);
if (_local2 != " ") {
var _local7 = KerningPairsAssoc[str.charAt(_local5 - 1) + _local2];
if (_local7 != undefined) {
xOffset = xOffset + _local7;
}
var _local6 = targetInstance.getNextHighestDepth();
var _local4 = targetInstance.attachMovie(fontLinkageID, _local6.toString(), _local6);
_local4.gotoAndStop(FrameNumber[_local2]);
_local4._x = xOffset;
_local4._y = theY;
}
xOffset = xOffset + WidthListAssoc[_local2];
_local5++;
}
return(xOffset);
}
function DrawStringShadow(str, targetInstance, xOffset, theY) {
var _local4 = targetInstance.createEmptyMovieClip(targetInstance.getNextHighestDepth().toString(), targetInstance.getNextHighestDepth());
var _local5 = new Color(_local4);
var _local3 = _local5.getTransform();
_local3.rb = (_local3.gb = (_local3.bb = -255));
_local5.setTransform(_local3);
var _local6 = targetInstance.createEmptyMovieClip(targetInstance.getNextHighestDepth().toString(), targetInstance.getNextHighestDepth());
DrawString(str, _local4, xOffset + 1, theY - 1);
return(DrawString(str, _local6, xOffset, theY));
}
function DrawStringWrapped(str, targetInstance, xOffset, theY, rectWidth, rowH) {
var _local3 = str.split(" ");
var _local6 = xOffset;
var _local2 = 0;
for(;;){
if (_local2 >= _local3.length) {
return(undefined);
}
if (_local3[_local2].length) {
if (((xOffset + GetStringWidth(_local3[_local2])) - _local6) > rectWidth) {
xOffset = _local6;
theY = theY + rowH;
}
xOffset = DrawString(_local3[_local2], targetInstance, xOffset, theY) + GetStringWidth(" ");
}
_local2++;
};
}
function GetLineSpacing() {
return(pointSize);
}
function GetStringWidth(str) {
var _local2 = 0;
var _local3 = 0;
while (_local3 < str.length) {
var _local4 = str.charAt(_local3);
var _local5 = KerningPairsAssoc[str.charAt(_local3 - 1) + _local4];
if (_local5 != undefined) {
_local2 = _local2 + _local5;
}
_local2 = _local2 + WidthListAssoc[_local4];
_local3++;
}
return(_local2);
}
}
Symbol 1153 MovieClip [__Packages.HelpWidget2] Frame 0
class HelpWidget2 extends Widget
{
var mBalls, mBullet, mIsCombo, FONT_MAIN10, mResetFrame, mUpdateCnt;
function HelpWidget2 () {
super();
mBalls = new Array(NUM_BALLS);
mBullet = new Bullet();
var _local4 = 0;
while (_local4 < NUM_BALLS) {
mBalls[_local4] = new Ball();
_local4++;
}
mIsCombo = true;
FONT_MAIN10 = new ImageFont("MAIN10");
var _local5 = _root.screenMC.particleMC.widget2TextMC;
if (_local5 == undefined) {
_local5 = _root.screenMC.particleMC.createEmptyMovieClip("widget2TextMC", _root.screenMC.particleMC.getNextHighestDepth());
_local5._x = 274;
_local5._y = 169;
FONT_MAIN10.DrawStringShadow("D&NH @I~M B(NG C*CH".toUpperCase(), _local5, 0, 0);
FONT_MAIN10.DrawStringShadow("B#N N) NH-NG QU_ B=NG".toUpperCase(), _local5, 0, 15);
FONT_MAIN10.DrawStringShadow("KHI IT NH+T 3 QU_ C[NG M&U.".toUpperCase(), _local5, -10, 30);
var _local7 = new Color(_local5);
var _local6 = _local7.getTransform();
_local6.rb = 0;
_local6.gb = 0;
_local6.bb = -255;
_local7.setTransform(_local6);
}
Reset();
}
function Delete() {
mBullet.Delete();
var _local2 = 0;
for(;;){
if (_local2 >= NUM_BALLS) {
return(undefined);
}
mBalls[_local2].Delete();
_local2++;
};
}
function Reset() {
mResetFrame = 0;
mBullet.mc.removeMovieClip();
delete mBullet.mc;
mBullet.SetPos(243.9, 174);
mBullet.SetVelocity(3.3, 3);
mBullet.mClearCount = 0;
var _local3 = [1, 1, 0, 0, 0, 1];
if (!mIsCombo) {
_local3[NUM_BALLS - 1] = 2;
}
var _local2 = 0;
for(;;){
if (_local2 >= NUM_BALLS) {
return(undefined);
}
mBalls[_local2].mc.removeMovieClip();
delete mBalls[_local2].mc;
mBalls[_local2].SetPos(285 + (_local2 * 26), 275);
mBalls[_local2].mClearCount = 0;
mBalls[_local2].mSuckCount = 0;
mBalls[_local2].SetType(_local3[_local2]);
_local2++;
};
}
function Update() {
super.Update();
if (mUpdateCnt >= 33.3333333333) {
if (mResetFrame) {
if (mUpdateCnt >= mResetFrame) {
mIsCombo = !mIsCombo;
Reset();
}
var _local4 = mBalls[NUM_BALLS - 1];
if (_local4.mClearCount && (_local4.mClearCount < 13.3333333333)) {
_local4.mClearCount = _local4.mClearCount + 1;
mBalls[0].mClearCount = _local4.mClearCount + 1;
mBalls[1].mClearCount = _local4.mClearCount + 1;
} else if (_local4.mSuckCount) {
var _local6 = (-(_local4.mSuckCount * 3)) / 8;
_local4.SetPos(_local4.mx + _local6, _local4.my);
if (_local4.mx <= (mBalls[1].mx + 26)) {
_local4.SetPos(mBalls[1].mx + 26, _local4.my);
_local4.mSuckCount = 0;
_local4.StartClearCount(false);
mBalls[0].StartClearCount(false);
mBalls[1].StartClearCount(false);
} else {
_local4.mSuckCount = _local4.mSuckCount + 1;
}
}
return(undefined);
}
if (mBullet.mClearCount) {
if (mBullet.mClearCount >= 13.3333333333) {
mResetFrame = mUpdateCnt + 83.3333333333;
if (mIsCombo) {
mBalls[NUM_BALLS - 1].mSuckCount = 1;
}
} else {
mBullet.mClearCount = mBullet.mClearCount + 1;
var _local3 = 2;
while (_local3 < 5) {
mBalls[_local3].mClearCount = mBalls[_local3].mClearCount + 1;
_local3++;
}
}
return(undefined);
}
mBullet.Update();
if (mBullet.my >= (mBalls[0].my - 16)) {
if (mBullet.my >= mBalls[0].my) {
mBullet.SetPos(mBullet.mx, mBalls[0].my);
mBullet.SetVelocity(0, 0);
mBullet.StartClearCount(false);
var _local3 = 2;
while (_local3 < 5) {
mBalls[_local3].StartClearCount(false);
_local3++;
}
return(undefined);
}
var _local5 = 16 - (mBalls[0].my - mBullet.my);
var _local3 = 0;
while (_local3 < 3) {
mBalls[_local3].SetPos((285 + (_local3 * 26)) - _local5, mBalls[_local3].my);
_local3++;
}
_local3 = 3;
for(;;){
if (_local3 >= NUM_BALLS) {
return(undefined);
}
mBalls[_local3].SetPos((285 + (_local3 * 26)) + _local5, mBalls[_local3].my);
_local3++;
};
}
}
}
function Draw() {
var _local2 = 0;
while (_local2 < NUM_BALLS) {
if (mBalls[_local2].mClearCount < 13.3333333333) {
mBalls[_local2].Draw();
}
_local2++;
}
if (mUpdateCnt >= 33.3333333333) {
if (mBullet.mClearCount < 13.3333333333) {
mBullet.Draw();
}
}
}
static var NUM_BALLS = 6;
}
Symbol 1154 MovieClip [__Packages.UpsellScreen] Frame 0
class UpsellScreen
{
var title_text, detail_text, download_text, NUM_TEXT, mCurAd, mNextAd, mAdShowCount, upsellDialogMC;
function UpsellScreen () {
title_text = ["", "", "", "", "", ""];
detail_text = [["", "", ""], ["", "", ""], ["", "", ""], ["", "", ""], ["", "", ""], ["", "", ""]];
download_text = [["", ""], ["", ""], ["", ""], ["", ""], ["", ""], ["", ""]];
NUM_TEXT = title_text.length;
gTextNum = (gTextNum + 1) % NUM_TEXT;
mCurAd = 0;
mNextAd = 1;
mAdShowCount = 3000;
upsellDialogMC = _root.attachMovie("upsellDialogMC", "upsellDialogMC", _root.getNextHighestDepth());
upsellDialogMC.onEnterFrame = function () {
if (getTimer() > this.nextScreenTime) {
this.classInstance.mCurAd = this.classInstance.mNextAd;
this.classInstance.mNextAd = (this.classInstance.mNextAd + 1) % 7;
this.nextScreenTime = getTimer() + this.classInstance.mAdShowCount;
this.classInstance.upsellDialogMC.screenshotMC1.gotoAndStop(1 + this.classInstance.mCurAd);
this.classInstance.upsellDialogMC.screenshotMC2.gotoAndStop(1 + this.classInstance.mNextAd);
this.classInstance.upsellDialogMC.screenshotMC2._alpha = 0;
this.classInstance.upsellDialogMC.screenshotMC2.targetAlpha = 100;
}
this.classInstance.upsellDialogMC.screenshotMC2.onEnterFrame = function () {
if (this._alpha < this.targetAlpha) {
this._alpha = this._alpha + 10;
if (this._alpha > this.targetAlpha) {
this._alpha = this.targetAlpha;
}
return(undefined);
}
if (this._alpha > this.targetAlpha) {
this._alpha = this._alpha - 10;
if (this._alpha < this.targetAlpha) {
this._alpha = this.targetAlpha;
}
}
};
};
upsellDialogMC.nextScreenTime = 0;
upsellDialogMC.classInstance = this;
Draw();
}
function Delete() {
upsellDialogMC.wait = 0;
upsellDialogMC.onEnterFrame = function () {
if (this.wait > 1) {
this.removeMovieClip();
}
this.wait++;
};
}
function Draw() {
var _local4 = 230;
var _local3 = 235;
var _local2 = 0;
while (_local2 < 3) {
upsellDialogMC["detailTF" + (_local2 + 1)].text = detail_text[gTextNum][_local2];
upsellDialogMC[("detailTF" + (_local2 + 1)) + "b"].text = detail_text[gTextNum][_local2];
_local2++;
}
_local4 = 250;
_local3 = _local3 + 20;
_local2 = 0;
while (_local2 < 2) {
upsellDialogMC["downloadTF" + (_local2 + 1)].text = download_text[gTextNum][_local2];
upsellDialogMC[("downloadTF" + (_local2 + 1)) + "b"].text = download_text[gTextNum][_local2];
_local2++;
}
upsellDialogMC.titleTF.text = title_text[gTextNum];
upsellDialogMC.titleTFb.text = title_text[gTextNum];
}
static var gTextNum = 0;
}
Symbol 1155 MovieClip [__Packages.StatsDialog] Frame 0
class StatsDialog
{
var mBoard, mUpsellFont, statsDialogMC, mGameOver, mLevelLimit, mPointsDisplay, mTip, mCheckedHighScore, FONT_DIALOG;
function StatsDialog (theBoard) {
var _local4 = ["", "", "", "", "", "", "", ""];
var _local5 = _local4.length;
var _local3 = ["", "", "", "", "", ""];
var _local6 = _local3.length;
mBoard = theBoard;
mUpsellFont = null;
statsDialogMC = _root.attachMovie("statsDialogMC", "statsDialogMC", _root.getNextHighestDepth());
statsDialogMC._x = 48;
statsDialogMC._y = 42;
mGameOver = mBoard.IsGameOver();
mLevelLimit = mBoard.HasHitLevelLimit();
if (mLevelLimit) {
mGameOver = true;
}
if (mGameOver) {
mPointsDisplay = mBoard.mScore;
if (mLevelLimit) {
statsDialogMC.gameOverHeadingMC._visible = false;
statsDialogMC.statsButtonPlayAgain._visible = false;
statsDialogMC.statsButtonOk._visible = false;
} else {
statsDialogMC.statsButtonPlayAgain._visible = true;
statsDialogMC.statsButtonOk._visible = false;
statsDialogMC.gameOverHeadingMC._visible = true;
statsDialogMC.gameOverHeadingMC.gotoAndStop(1);
}
mTip = _local3[random(_local6)];
} else {
statsDialogMC.gameOverHeadingMC._visible = false;
statsDialogMC.statsButtonPlayAgain._visible = false;
statsDialogMC.statsButtonOk._visible = true;
mPointsDisplay = mBoard.mScore - mBoard.mLevelBeginScore;
mTip = _local4[mBoard.mLevel % _local5];
var _local7 = int(mBoard.mLevelStats.mTimePlayed / 33);
}
mCheckedHighScore = false;
FONT_DIALOG = new ImageFont("MAIN10");
Draw();
}
function Delete() {
statsDialogMC.removeMovieClip();
delete statsDialogMC;
}
function Draw() {
if (mLevelLimit) {
statsDialogMC.statsBackMC.gotoAndStop(2);
} else {
statsDialogMC.statsBackMC.gotoAndStop(1);
}
var _local3 = 62;
var _local10 = 36;
var _local6 = _local10 + 100;
var _local11 = _local6 + 60;
var _local7 = _local11 + 80;
var _local4 = FONT_DIALOG.GetLineSpacing() + 4;
var _local9 = (mGameOver ? (mBoard.mGameStats) : (mBoard.mLevelStats));
statsDialogMC.createEmptyMovieClip("yellowMC", statsDialogMC.getNextHighestDepth());
var _local8 = new Color(statsDialogMC.yellowMC);
var _local5 = _local8.getTransform();
_local5.rb = 0;
_local5.gb = 0;
_local5.bb = -255;
_local8.setTransform(_local5);
statsDialogMC.createEmptyMovieClip("goldMC", statsDialogMC.getNextHighestDepth());
_local8 = new Color(statsDialogMC.goldMC);
_local5 = _local8.getTransform();
_local5.rb = -30;
_local5.gb = -88;
_local5.bb = -200;
_local8.setTransform(_local5);
statsDialogMC.createEmptyMovieClip("orangeMC", statsDialogMC.getNextHighestDepth());
_local8 = new Color(statsDialogMC.orangeMC);
_local5 = _local8.getTransform();
_local5.rb = 0;
_local5.gb = -90;
_local5.bb = -255;
_local8.setTransform(_local5);
statsDialogMC.createEmptyMovieClip("blackMC", statsDialogMC.getNextHighestDepth());
_local8 = new Color(statsDialogMC.blackMC);
_local5 = _local8.getTransform();
_local5.rb = (_local5.gb = (_local5.bb = -255));
_local8.setTransform(_local5);
if (mGameOver) {
_local7 = _local7 + 30;
_local6 = _local6 - 10;
FONT_DIALOG.DrawStringShadow("T)NG TG", statsDialogMC.yellowMC, _local10, _local3);
FONT_DIALOG.DrawStringShadow("LI]N HO&N", statsDialogMC.yellowMC, _local10, _local3 + _local4);
FONT_DIALOG.DrawStringShadow("@}NG TI;N", statsDialogMC.yellowMC, _local10, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow("C*CH @^CH", statsDialogMC.yellowMC, _local11, _local3);
FONT_DIALOG.DrawStringShadow("D'Y CHUY;N", statsDialogMC.yellowMC, _local11, _local3 + _local4);
FONT_DIALOG.DrawStringShadow("T)NG LH", statsDialogMC.yellowMC, _local11, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow(GetTimeString(mBoard.mGameStats.mTimePlayed / 33), statsDialogMC.orangeMC, _local6, _local3);
FONT_DIALOG.DrawStringShadow(_local9.mNumCombos, statsDialogMC.orangeMC, _local6, _local3 + _local4);
FONT_DIALOG.DrawStringShadow(_local9.mNumGemsCleared, statsDialogMC.orangeMC, _local6, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow(_local9.mNumGaps, statsDialogMC.orangeMC, _local7, _local3);
FONT_DIALOG.DrawStringShadow(_local9.mMaxInARow, statsDialogMC.orangeMC, _local7, _local3 + _local4);
FONT_DIALOG.DrawStringShadow(_local9.mMaxCombo + 1, statsDialogMC.orangeMC, _local7, _local3 + (2 * _local4));
_local3 = _local3 + (4 * _local4);
} else {
_local7 = _local7 + 30;
_local6 = _local6 - 10;
FONT_DIALOG.DrawStringShadow("T)NG TG", statsDialogMC.yellowMC, _local10, _local3);
FONT_DIALOG.DrawStringShadow("@I~M", statsDialogMC.yellowMC, _local10, _local3 + _local4);
FONT_DIALOG.DrawStringShadow("LI]N HO&N", statsDialogMC.yellowMC, _local10, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow("@}NG TI;N", statsDialogMC.yellowMC, _local10, _local3 + (3 * _local4));
FONT_DIALOG.DrawStringShadow("TH{I GIAN", statsDialogMC.yellowMC, _local11, _local3);
FONT_DIALOG.DrawStringShadow("C*CH @^CH", statsDialogMC.yellowMC, _local11, _local3 + _local4);
FONT_DIALOG.DrawStringShadow("D'Y CHUY;N", statsDialogMC.yellowMC, _local11, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow("T)NG LH", statsDialogMC.yellowMC, _local11, _local3 + (3 * _local4));
FONT_DIALOG.DrawStringShadow(GetTimeString(mBoard.mGameStats.mTimePlayed / 33), statsDialogMC.orangeMC, _local6, _local3);
FONT_DIALOG.DrawStringShadow(mPointsDisplay, statsDialogMC.orangeMC, _local6, _local3 + _local4);
_root.tongdiem = _root.tongdiem + mPointsDisplay;
trace("Tong diem la: " + _root.tongdiem);
FONT_DIALOG.DrawStringShadow(_local9.mNumCombos, statsDialogMC.orangeMC, _local6, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow(_local9.mNumGemsCleared, statsDialogMC.orangeMC, _local6, _local3 + (3 * _local4));
FONT_DIALOG.DrawStringShadow(GetTimeString(mBoard.mLevelStats.mTimePlayed / 33), statsDialogMC.orangeMC, _local7, _local3);
FONT_DIALOG.DrawStringShadow(_local9.mNumGaps, statsDialogMC.orangeMC, _local7, _local3 + _local4);
FONT_DIALOG.DrawStringShadow(_local9.mMaxInARow, statsDialogMC.orangeMC, _local7, _local3 + (2 * _local4));
FONT_DIALOG.DrawStringShadow(_local9.mMaxCombo + 1, statsDialogMC.orangeMC, _local7, _local3 + (3 * _local4));
_local3 = _local3 + (5 * _local4);
}
if (mLevelLimit) {
FONT_DIALOG.DrawStringShadow("B\"N @, HO&N TH&NH GAME.", statsDialogMC, 27, _local3 + 8);
FONT_DIALOG.DrawStringShadow("THAM GIA GAME KH*C", statsDialogMC.yellowMC, 133, (_local3 + 8) + 26);
FONT_DIALOG.DrawStringShadow("GAME.24H.COM.VN", statsDialogMC.yellowMC, 85, (_local3 + 8) + 41);
} else if (mTip.length) {
FONT_DIALOG.DrawStringShadow("HD", statsDialogMC.yellowMC, _local10, _local3 + 4);
var _local12 = 275;
if (FONT_DIALOG.GetStringWidth(mTip.toUpperCase()) < _local12) {
__reg13 = _local3 + 4;
} else {
var __reg13 = _local3;
}
FONT_DIALOG.DrawStringWrapped(mTip.toUpperCase(), statsDialogMC.blackMC, 77, __reg13 - 1, _local12, _local4);
FONT_DIALOG.DrawStringWrapped(mTip.toUpperCase(), statsDialogMC, 76, __reg13, _local12, _local4);
}
statsDialogMC.statsDialogDragButton._height = statsDialogMC._height - 7;
statsDialogMC.statsDialogDragButton.useHandCursor = false;
statsDialogMC.statsDialogDragButton.statsDialogMC = statsDialogMC;
statsDialogMC.statsDialogDragButton.onPress = function () {
this.statsDialogMC.xStartMouse = _root._xmouse;
this.statsDialogMC.yStartMouse = _root._ymouse;
this.statsDialogMC.xStart = this.statsDialogMC._x;
this.statsDialogMC.yStart = this.statsDialogMC._y;
this.statsDialogMC.onMouseMove = function () {
this._x = Math.min(Math.max(this.xStart + (_root._xmouse - this.xStartMouse), 0), 480 - this.statsDialogDragButton._width);
this._y = Math.min(Math.max(this.yStart + (_root._ymouse - this.yStartMouse), 0), 360 - this.statsDialogDragButton._height);
updateAfterEvent();
};
this.useHandCursor = true;
};
statsDialogMC.statsDialogDragButton.onRelease = (statsDialogMC.statsDialogDragButton.onReleaseOutside = function () {
this.useHandCursor = false;
delete this.statsDialogMC.onMouseMove;
});
}
function GetTimeString(theNumSeconds) {
theNumSeconds = int(theNumSeconds);
var _local2 = int(theNumSeconds / 60);
theNumSeconds = theNumSeconds % 60;
if (theNumSeconds < 10) {
__reg3 = "0" + theNumSeconds;
} else {
var __reg3 = theNumSeconds.toString();
}
return((_local2 + ":") + __reg3);
}
var GREEN = 2817795;
var RED = 16000512;
var ORANGE = 16753920;
var YELLOW = 16776960;
}
Symbol 1156 MovieClip [__Packages.LevelParser] Frame 0
class LevelParser
{
var mHasFailed, mSettingsMap, mGraphicsMap, StageMap, mLevelProgressionMap, mStageMap, mBoardProgression, mBoardSet, mLevels, mError, mCurLevelId, mCurDir, mXMLParser;
function LevelParser () {
mHasFailed = false;
mSettingsMap = new Array();
mGraphicsMap = new Array();
StageMap = new Array();
mLevelProgressionMap = new Array();
mStageMap = new Array();
mBoardProgression = new Array();
mBoardSet = new Array();
}
function GetLevel(theDifficulty, theAvoidCurve, theFindCurve) {
trace(((("LevelParser.GetLevel(" + theDifficulty) + ",...,") + theFindCurve) + ")");
var _local4 = new Array();
var _local9 = new Array();
var _local6 = 0;
var _local5 = null;
var _local3 = 0;
while (_local3 < mLevels.length) {
var _local2 = mLevels[_local3];
if (!(theFindCurve.length && (_local2.mName != theFindCurve))) {
if (_local2.mDifficulty > theDifficulty) {
if ((_local5 == null) || (_local5.mDifficulty > _local2.mDifficulty)) {
_local5 = _local2;
}
}
if (_local2.mDifficulty == _local6) {
_local4.push(_local2);
} else if ((_local2.mDifficulty > _local6) && (_local2.mDifficulty <= theDifficulty)) {
_local4 = [];
_local4.push(_local2);
_local6 = _local2.mDifficulty;
}
}
_local3++;
}
if (theAvoidCurve.length) {
_local3 = 0;
while (_local3 < _local4.length) {
var _local2 = _local4[_local3];
_local3++;
}
}
if (!_local9.length) {
_local9 = _local4;
}
if (!_local9.length) {
if (_local5 == null) {
trace("::::::::::::: LevelParser.GetLevel() returned mLevels[0]!!!!!! (curve name not found probably)");
return(mLevels[0]);
}
return(_local5);
}
return(_local9[random(_local9.length)]);
}
function GetSequenceBoard(theDifficulty, theLevel) {
trace(((("LevelParser.GetSequenceBoard(" + theDifficulty) + ", ") + theLevel) + ")");
var _local3 = new Array();
var _local2 = 0;
while (_local2 < mBoardProgression.length) {
_local3.push(mBoardProgression[_local2]);
_local2++;
}
if (!_local3.length) {
trace("::: aVisitedBoards was empty!");
_local3.push("spiral");
}
var _local4 = new Array();
return(GetLevel(theDifficulty, _local4, _local3[theLevel % _local3.length]));
}
function GetAttribute(node, attrName) {
return(node.attributes[attrName]);
}
function GET_CURVE_HEX(theDesc, theElem, theName, theVar) {
GetCurveAttribute(theDesc, theElem, theName, theVar, ParseHex);
}
function GET_CURVE_BOOL(theDesc, theElem, theName, theVar) {
GetCurveAttribute(theDesc, theElem, theName, theVar, ParseBool);
}
function GET_CURVE_FLOAT(theDesc, theElem, theName, theVar, multiplier) {
GetCurveAttribute(theDesc, theElem, theName, theVar, ParseFloat, multiplier);
}
function GET_CURVE_INT(theDesc, theElem, theName, theVar) {
GetCurveAttribute(theDesc, theElem, theName, theVar, ParseInt);
}
function GET_CURVE_STRING(theDesc, theElem, theName, theVar) {
GetCurveAttribute(theDesc, theElem, theName, theVar, ParseString);
}
function ParseFloat(theStr) {
return(parseFloat(theStr));
}
function ParseInt(theStr) {
return(parseInt(theStr));
}
function ParseHex(theStr) {
return(parseInt(theStr, 16));
}
function ParseBool(theStr) {
return(theStr.toLowerCase == "true");
}
function ParseString(theStr) {
return(theStr);
}
function GetCurveAttribute(theDesc, theElem, theName, theVar, theFunc, multiplier) {
if (theElem.attributes[theName] != undefined) {
var _local10 = GetRange(theName);
theName = _local10.theName;
var _local11 = _local10.first;
var _local9 = _local10.last;
var _local2 = _local11;
for(;;){
if (_local2 > _local9) {
return(undefined);
}
if (multiplier == undefined) {
theDesc.mCurveDesc[_local2][theVar] = theFunc(theElem.attributes[theName]);
} else {
theDesc.mCurveDesc[_local2][theVar] = theFunc(theElem.attributes[theName]) * multiplier;
}
_local2++;
};
}
}
function GetRange(theName) {
var _local3 = 0;
var _local2 = 2;
if (theName.length) {
var _local1 = theName.substring(theName.length - 1);
if (!isNaN(new Number(_local1))) {
_local2 = new Number(_local1);
_local3 = _local2;
theName = theName.substring(0, theName.length - 1);
}
}
return({theName:theName, first:_local3, last:_local2});
}
function GetPath(theStr) {
return(theStr);
}
function GetNumBoards() {
return(mBoardProgression.length);
}
function GetErrorText() {
return(mError);
}
function HadError() {
return(mError.length > 0);
}
function Fail(theErrorText) {
if (!mHasFailed) {
mHasFailed = true;
mError = theErrorText;
}
_root.showErrorDialog(theErrorText);
return(false);
}
function CopyGraphics(to, from) {
var _local1 = 0;
while (_local1 < 3) {
to.mCurveDesc[_local1].mPath = from.mCurveDesc[_local1].mPath;
to.mCurveDesc[_local1].mDangerDistance = from.mCurveDesc[_local1].mDangerDistance;
to.mCurveDesc[_local1].mDrawCurve = from.mCurveDesc[_local1].mDrawCurve;
to.mCurveDesc[_local1].mDrawTunnels = from.mCurveDesc[_local1].mDrawTunnels;
to.mCurveDesc[_local1].mCurveColor = from.mCurveDesc[_local1].mCurveColor;
to.mCurveDesc[_local1].mSkullRotation = from.mCurveDesc[_local1].mSkullRotation;
_local1++;
}
to.mGunX = from.mGunX;
to.mGunY = from.mGunY;
to.mBGColor = from.mBGColor;
to.mImagePath = from.mImagePath;
to.mSprites = from.mSprites;
to.mBackgroundAlpha = from.mBackgroundAlpha;
to.mTreasurePoints = from.mTreasurePoints;
to.mName = from.mName;
to.mDisplayName = from.mDisplayName;
to.mInSpace = from.mInSpace;
}
function CopySettings(to, from) {
var _local1 = 0;
while (_local1 < 3) {
to.mCurveDesc[_local1].mPath = from.mCurveDesc[_local1].mPath;
to.mCurveDesc[_local1].mDangerDistance = from.mCurveDesc[_local1].mDangerDistance;
to.mCurveDesc[_local1].mDrawCurve = from.mCurveDesc[_local1].mDrawCurve;
to.mCurveDesc[_local1].mDrawTunnels = from.mCurveDesc[_local1].mDrawTunnels;
to.mCurveDesc[_local1].mCurveColor = from.mCurveDesc[_local1].mCurveColor;
to.mCurveDesc[_local1].mSkullRotation = from.mCurveDesc[_local1].mSkullRotation;
to.mCurveDesc[_local1].mSpeed = from.mCurveDesc[_local1].mSpeed;
to.mCurveDesc[_local1].mMaxSpeed = from.mCurveDesc[_local1].mMaxSpeed;
to.mCurveDesc[_local1].mStartDistance = from.mCurveDesc[_local1].mStartDistance;
to.mCurveDesc[_local1].mNumColors = from.mCurveDesc[_local1].mNumColors;
to.mCurveDesc[_local1].mScoreTarget = from.mCurveDesc[_local1].mScoreTarget;
to.mCurveDesc[_local1].mAccelerationRate = from.mCurveDesc[_local1].mAccelerationRate;
to.mCurveDesc[_local1].mBallRepeat = from.mCurveDesc[_local1].mBallRepeat;
to.mCurveDesc[_local1].mMaxSingle = from.mCurveDesc[_local1].mMaxSingle;
to.mCurveDesc[_local1].mMergeSpeed = from.mCurveDesc[_local1].mMergeSpeed;
to.mCurveDesc[_local1].mDangerDistance = from.mCurveDesc[_local1].mDangerDistance;
to.mCurveDesc[_local1].mSlowDistance = from.mCurveDesc[_local1].mSlowDistance;
to.mCurveDesc[_local1].mSlowFactor = from.mCurveDesc[_local1].mSlowFactor;
to.mCurveDesc[_local1].mSlowSpeed = from.mCurveDesc[_local1].mSlowSpeed;
to.mCurveDesc[_local1].mZumaSlow = from.mCurveDesc[_local1].mZumaSlow;
to.mCurveDesc[_local1].mZumaBack = from.mCurveDesc[_local1].mZumaBack;
_local1++;
}
to.mGunX = from.mGunX;
to.mGunY = from.mGunY;
to.mBGColor = from.mBGColor;
to.mImagePath = from.mImagePath;
to.mSprites = from.mSprites;
to.mBackgroundAlpha = from.mBackgroundAlpha;
to.mTreasurePoints = from.mTreasurePoints;
to.mName = from.mName;
to.mDisplayName = from.mDisplayName;
to.mInSpace = from.mInSpace;
}
function DoParseLevel(theElem, isLevel) {
var _local8 = "";
var _local4 = new LevelDesc();
mCurLevelId = theElem.attributes.id;
mCurDir = "levels/" + mCurLevelId;
if (mCurDir.length) {
mCurDir = mCurDir + "/";
}
var _local12;
var _local14;
if (GetAttribute(theElem, "name")) {
_local12 = GetAttribute(theElem, "name");
}
if (GetAttribute(theElem, "dispname")) {
_local14 = GetAttribute(theElem, "dispname");
}
if (GetAttribute(theElem, "settings")) {
_local8 = GetAttribute(theElem, "settings");
if (mSettingsMap[_local8]) {
_local4 = mSettingsMap[_local8];
} else {
return(Fail("Settings not found: " + _local8));
}
}
var _local3 = 0;
while (_local3 < 3) {
if (GetAttribute(theElem, "settings" + (_local3 + 1))) {
_local8 = GetAttribute(theElem, "settings" + (_local3 + 1));
if (mSettingsMap[_local8]) {
_local4.mCurveDesc[_local3] = mSettingsMap[_local8].mCurveDesc[_local3];
} else {
return(Fail("Settings not found: " + _local8));
}
}
_local3++;
}
if (GetAttribute(theElem, "graphics")) {
_local8 = GetAttribute(theElem, "graphics");
if (!_local12.length) {
_local12 = _local8;
}
if (!_local14.length) {
_local14 = _local12;
}
if (mGraphicsMap[_local8]) {
CopyGraphics(_local4, mGraphicsMap[_local8]);
} else {
return(Fail("Graphics not found: " + _local8));
}
}
if (GetAttribute(theElem, "bgcolor")) {
_local4.mBGColor = parseInt(GetAttribute(theElem, "bgcolor"), 16);
}
if (GetAttribute(theElem, "gx")) {
_local4.mGunX = new Number(GetAttribute(theElem, "gx"));
}
if (GetAttribute(theElem, "gy")) {
_local4.mGunY = new Number(GetAttribute(theElem, "gy"));
}
if (GetAttribute(theElem, "firespeed")) {
_local4.mFireSpeed = new Number(GetAttribute(theElem, "firespeed"));
}
if (GetAttribute(theElem, "reloaddelay")) {
_local4.mReloadDelay = new Number(GetAttribute(theElem, "reloaddelay"));
}
if (GetAttribute(theElem, "difficulty")) {
_local4.mDifficulty = new Number(GetAttribute(theElem, "difficulty"));
}
if (GetAttribute(theElem, "huerot")) {
_local4.mHueRot = new Number(GetAttribute(theElem, "huerot"));
}
if (GetAttribute(theElem, "treasurefreq")) {
_local4.mTreasureFreq = new Number(GetAttribute(theElem, "treasurefreq"));
}
if (GetAttribute(theElem, "partime")) {
_local4.mParTime = new Number(GetAttribute(theElem, "partime"));
}
if (GetAttribute(theElem, "image")) {
_local4.mImagePath = GetPath(GetAttribute(theElem, "image"));
}
if (GetAttribute(theElem, "powerfreq")) {
_local8 = GetAttribute(theElem, "powerfreq");
var _local13 = new Number(_local8);
if (_local13 > 0) {
_local3 = 0;
while (_local3 < 3) {
var _local6 = 0;
while (_local6 < _global.PowerType_Max) {
if (_local4.mCurveDesc[_local3].mPowerUpFreq[_local6] > 0) {
_local4.mCurveDesc[_local3].mPowerUpFreq[_local6] = _local13;
}
_local6++;
}
_local3++;
}
}
}
if (GetAttribute(theElem, "curve")) {
_local4.mCurveDesc[0].mPath = GetPath(GetAttribute(theElem, "curve"));
}
if (GetAttribute(theElem, "curve1")) {
_local4.mCurveDesc[0].mPath = GetPath(GetAttribute(theElem, "curve1"));
}
if (GetAttribute(theElem, "curve2")) {
_local4.mCurveDesc[1].mPath = GetPath(GetAttribute(theElem, "curve2"));
}
if (GetAttribute(theElem, "curve3")) {
_local4.mCurveDesc[2].mPath = GetPath(GetAttribute(theElem, "curve3"));
}
GET_CURVE_HEX(_local4, theElem, "curvecolor", "mCurveColor");
GET_CURVE_BOOL(_local4, theElem, "drawcurve", "mDrawCurve");
GET_CURVE_BOOL(_local4, theElem, "drawtunnels", "mDrawTunnels");
GET_CURVE_FLOAT(_local4, theElem, "speed", "mSpeed", 3);
GET_CURVE_FLOAT(_local4, theElem, "maxspeed", "mMaxSpeed", 3);
GET_CURVE_INT(_local4, theElem, "start", "mStartDistance");
GET_CURVE_INT(_local4, theElem, "colors", "mNumColors");
GET_CURVE_INT(_local4, theElem, "balls", "mNumBalls");
GET_CURVE_INT(_local4, theElem, "score", "mScoreTarget");
GET_CURVE_INT(_local4, theElem, "skullrot", "mSkullRotation");
GET_CURVE_FLOAT(_local4, theElem, "accrate", "mAccelerationRate", 3);
GET_CURVE_INT(_local4, theElem, "repeat", "mBallRepeat");
GET_CURVE_INT(_local4, theElem, "single", "mMaxSingle");
GET_CURVE_FLOAT(_local4, theElem, "mergespeed", "mMergeSpeed", 3);
GET_CURVE_INT(_local4, theElem, "danger", "mDangerDistance");
GET_CURVE_INT(_local4, theElem, "slowdistance", "mSlowDistance");
GET_CURVE_FLOAT(_local4, theElem, "slowfactor", "mSlowFactor");
GET_CURVE_FLOAT(_local4, theElem, "slowspeed", "mSlowSpeed", 3);
GET_CURVE_INT(_local4, theElem, "zumaslow", "mZumaSlow");
GET_CURVE_INT(_local4, theElem, "zumaback", "mZumaBack");
if (_local4.mParTime == 0) {
_local4.mParTime = int((30 * _local4.mCurveDesc[0].mScoreTarget) / 1000);
var _local16 = _local4.GetNumCurves();
if (_local16 > 1) {
_local4.mParTime = int((_local4.mParTime * _local4.GetNumCurves()) * 1.2);
}
}
_local3 = 0;
while (_local3 < 3) {
if (_local4.mCurveDesc[_local3].mSlowSpeed != 0) {
_local4.mCurveDesc[_local3].mSlowFactor = _local4.mCurveDesc[_local3].mSpeed / _local4.mCurveDesc[_local3].mSlowSpeed;
}
_local3++;
}
if (isLevel && (GetAttribute(theElem, "progression"))) {
_local8 = GetAttribute(theElem, "progression");
var _local15 = 0;
if (GetAttribute(theElem, "difficultydiff")) {
_local15 = parseInt(GetAttribute(theElem, "difficultydiff"));
}
var _local11 = mLevelProgressionMap[_local8];
if (!_local11.length) {
Fail("LevelProgression not found: " + _local8);
return(false);
}
var _local9 = 0;
while (_local9 < _local11.length) {
var _local10 = new LevelDesc();
CopySettings(_local10, mSettingsMap[_local11[_local9][0]]);
mLevels.push(_local10);
var _local7 = mLevels[mLevels.length - 1];
CopyGraphics(_local7, _local4);
_local7.mDifficulty = _local11[_local9][1] + _local15;
if (!_local7.mName.length) {
_local7.mName = _local12;
}
if (!_local7.mDisplayName.length) {
_local7.mDisplayName = _local14;
}
_local9++;
}
} else {
if (!_local4.mName.length) {
_local4.mName = _local12;
}
if (!_local4.mDisplayName.length) {
_local4.mDisplayName = _local14;
}
mLevels.push(_local4);
}
if (isLevel) {
if (mBoardSet[_local12] == undefined) {
mBoardProgression.push(_local12);
mBoardSet[_local12] = true;
}
}
return(true);
}
function DoParseLevelProgression(theElem) {
var _local7 = theElem.attributes.id;
if (mLevelProgressionMap[_local7] == undefined) {
mLevelProgressionMap[_local7] = new Array();
}
var _local5 = mLevelProgressionMap[_local7];
if (_local5.length) {
_root.showErrorDialog("LevelProgression already defined.");
return(false);
}
var _local10 = theElem.attributes.settings;
var _local9 = theElem.attributes.difficulty;
var _local4 = _local10.split(",");
var _local6 = _local9.split(",");
var _local3 = 0;
while (_local3 < _local4.length) {
if (mSettingsMap[_local4[_local3]] == undefined) {
_root.showErrorDialog("Setting not found: " + _local4[_local3]);
return(false);
}
_local5.push([_local4[_local3], parseInt(_local6[_local3]) - 1]);
_local3++;
}
if (_local4.length != _local6.length) {
_root.showErrorDialog("LevelProgression size mismatch.");
return(false);
}
return(true);
}
function DoParseLevels() {
var _local5 = 0;
while (_local5 < mXMLParser.firstChild.childNodes.length) {
var _local3 = mXMLParser.firstChild.childNodes[_local5];
if (((_local3.nodeName == "Level") || (_local3.nodeName == "Graphics")) || (_local3.nodeName == "Settings")) {
if (!DoParseLevel(_local3, _local3.nodeName == "Level")) {
return(false);
}
if (_local3.nodeName == "Settings") {
mSettingsMap[mCurLevelId] = mLevels.pop();
} else if (_local3.nodeName == "Graphics") {
var _local6 = mLevels[mLevels.length - 1];
DoParseTreasure(_local3, _local6);
mGraphicsMap[mCurLevelId] = mLevels.pop();
}
} else if (_local3.nodeName == "LevelProgression") {
if (!DoParseLevelProgression(_local3)) {
return(false);
}
} else {
_root.showErrorDialog(("Invalid Section '" + _local3.nodeName) + "'");
break;
}
_local5++;
}
var _local4 = 0;
while (_local4 < mLevels.length) {
mLevels[_local4].mId = _local4;
_local4++;
}
return(!mHasFailed);
}
function ParseLevelFile(xmlDoc) {
mXMLParser = xmlDoc;
mLevels = [];
if (mXMLParser.firstChild.nodeName.toLowerCase() == "levels") {
return(DoParseLevels());
}
_root.showErrorDialog("Expecting Levels tag");
return(DoParseLevels());
}
function DoParseTreasure(theElem, theDesc) {
var _local2 = 0;
while (_local2 < theElem.childNodes.length) {
if (theElem.childNodes[_local2].nodeName.toLowerCase() == "treasurepoint") {
var _local4 = new TreasurePoint(parseInt(theElem.childNodes[_local2].attributes.x), parseInt(theElem.childNodes[_local2].attributes.y), [0, 0, 0]);
var _local1 = 0;
while (_local1 < 3) {
if (theElem.childNodes[_local2].attributes["dist" + (1 + _local1)]) {
_local4.mCurveDist[_local1] = parseInt(theElem.childNodes[_local2].attributes["dist" + (1 + _local1)]);
}
_local1++;
}
theDesc.mTreasurePoints.push(_local4);
}
_local2++;
}
return(true);
}
}
Symbol 1157 MovieClip [__Packages.LevelDesc] Frame 0
class LevelDesc
{
var mDifficulty, mHueRot, mGunX, mGunY, mFireSpeed, mReloadDelay, mBGColor, mTreasureFreq, mParTime, mInSpace, mBackgroundAlpha, mTreasurePoints, mLevel, mStage, mCurveDesc;
function LevelDesc () {
mDifficulty = 0;
mHueRot = 0;
mGunX = Stage.width / 2;
mGunY = 189;
mFireSpeed = 4.5;
mReloadDelay = 0;
mBGColor = -1;
mTreasureFreq = 300;
mParTime = 0;
mInSpace = false;
mBackgroundAlpha = new Array();
mTreasurePoints = new Array();
mLevel = 0;
mStage = 0;
mCurveDesc = new Array();
mCurveDesc[0] = new CurveDesc();
mCurveDesc[1] = new CurveDesc();
mCurveDesc[2] = new CurveDesc();
}
function GetNumCurves() {
var _local3 = 0;
var _local2 = 0;
while (_local2 < 3) {
if (mCurveDesc[_local2].mPath.length) {
_local3++;
}
_local2++;
}
return(_local3);
}
}
Symbol 1158 MovieClip [__Packages.CurveDesc] Frame 0
class CurveDesc
{
var mSpeed, mStartDistance, mNumColors, mNumBalls, mBallRepeat, mMaxSingle, mMergeSpeed, mDangerDistance, mAccelerationRate, mMaxSpeed, mScoreTarget, mSkullRotation, mCurAcceleration, mPowerUpFreq, mSlowFactor, mSlowSpeed, mSlowDistance, mZumaBack, mZumaSlow, mDrawCurve, mDrawTunnels, mCurveColor;
function CurveDesc () {
mSpeed = 1.35;
mStartDistance = 20;
mNumColors = 4;
mNumBalls = 0;
mBallRepeat = 40;
mMaxSingle = 10;
mMergeSpeed = 0.15;
mDangerDistance = 600;
mAccelerationRate = 0;
mMaxSpeed = 300;
mScoreTarget = 200;
mSkullRotation = -1;
mCurAcceleration = 0;
mPowerUpFreq = new Array();
var _local3 = 0;
while (_local3 < _global.PowerType_Max) {
mPowerUpFreq[_local3] = 3000;
_local3++;
}
mSlowFactor = 4;
mSlowSpeed = 0;
mSlowDistance = 500;
mZumaBack = 100;
mZumaSlow = 366;
mDrawCurve = false;
mDrawTunnels = true;
mCurveColor = -1;
}
}
Symbol 1159 MovieClip [__Packages.TreasurePoint] Frame 0
class TreasurePoint
{
var x, y, mCurveDist;
function TreasurePoint (theX, theY, theCurveDist) {
x = theX;
y = theY;
mCurveDist = new Array(3);
mCurveDist = theCurveDist;
}
}
Symbol 1160 MovieClip [__Packages.Board] Frame 0
class Board
{
var mApp, mGun, mScore, mScoreDisplay, mLevel, mPauseCount, mDialogCount, mPauseUpdateCnt, mLastBallClickTick, mLastExplosionTick, mLastPauseTextTicks, mStartLevel, mLevelBeginScore, mLives, mDifficultyDiff, mFlashCount, mLastPauseTick, mMaxStage, mGameTimeCount, mLevelStats, mGameStats, mGameState, mIsSavedGame, mHybernating, FONT_FLOAT, FONT_MONODIGIT, FONT_MAIN10, FONT_TITLE, mSpriteMgr, mNextSpriteMgr, mParticleMgr, mTransitionMgr, mSoundMgr, mLevelDesc, mNextLevelDesc, mStateCount, mIsWinning, mPauseFade, mNumCurves, mNumClearsInARow, mCurInARowBonus, mCurBarSize, mOldCurveList, mScoreTarget, mLevelString, mVerboseLevelString, mHaveReachedTarget, mTargetBarSize, mCurTreasure, mTreasureEndFrame, mTreasureZoomX, mTreasureZoomY, mTreasureZoomFrame, mBarBlinkCount, mLivesBlinkCount, mLevelEndFrame, mLevelHasTunnels, mLevelBeginning, mCurTreasureNum;
function Board (theApp) {
mApp = theApp;
mGun = new Gun(_root.screenGameMC);
mScore = 0;
mScoreDisplay = -1;
mLevel = 0;
mPauseCount = 0;
mDialogCount = 0;
mPauseUpdateCnt = 0;
mLastBallClickTick = 0;
mLastExplosionTick = 0;
mLastPauseTextTicks = 0;
mStartLevel = 0;
mLevelBeginScore = 0;
mLives = 3;
mDifficultyDiff = 0;
mFlashCount = 10;
mLastPauseTick = 0;
mMaxStage = 0;
mGameTimeCount = 0;
mLevelStats = new GameStats();
mGameStats = new GameStats();
mGameState = GameState_None;
mIsSavedGame = false;
mHybernating = false;
FONT_FLOAT = new ImageFont("FLOAT");
FONT_MONODIGIT = new ImageFont("MONODIGIT");
FONT_MAIN10 = new ImageFont("MAIN10");
FONT_TITLE = new ImageFont("TITLE");
var _local3 = 0;
while (_local3 < MAX_CURVES) {
mCurveMgr[_local3] = new CurveMgr(this);
mNextCurveMgr[_local3] = new CurveMgr(this);
_local3++;
}
mSpriteMgr = new SpriteMgr();
mNextSpriteMgr = new SpriteMgr();
mParticleMgr = new ParticleMgr(this);
mTransitionMgr = new TransitionMgr(this);
mSoundMgr = new SoundMgr();
mLevelDesc = new LevelDesc();
mNextLevelDesc = new LevelDesc();
}
function IsHybernating() {
return(mHybernating);
}
function GetPauseCount() {
return(mPauseCount);
}
function GetStateCount() {
return(mStateCount);
}
function IsWinning() {
return(mIsWinning);
}
function IsSavedGame() {
return(mIsSavedGame);
}
function SetFullPauseFade() {
mPauseFade = 17;
}
function SetLevelToNextLevel() {
trace("Board.SetLevelToNextLevel()");
var _local5 = mLevelDesc;
mLevelDesc = mNextLevelDesc;
mNextLevelDesc = _local5;
var _local2 = 0;
while (_local2 < MAX_CURVES) {
var _local3 = mCurveMgr[_local2];
mCurveMgr[_local2] = mNextCurveMgr[_local2];
mNextCurveMgr[_local2] = _local3;
var _local4 = mSpriteMgr[_local2];
mSpriteMgr[_local2] = mNextSpriteMgr[_local2];
mNextSpriteMgr[_local2] = _local4;
_local2++;
}
mNumCurves = mLevelDesc.GetNumCurves();
}
function GetLevel(theLevel, theLevelName) {
var _local4;
var _local3 = 4;
var _local6 = mApp.mLevelParser.GetNumBoards();
var _local11 = _local6;
_local3 = 4 + (theLevel / _local11);
if (_local3 > 6) {
_local3 = 6;
}
var _local9 = int(((theLevel / _local6) * mApp.mDifficultyInc) + (theLevel % _local6));
var _local8 = theLevel % _local6;
if (theLevel < mApp.mDifficultyMap.length) {
_local9 = int(mApp.mDifficultyMap[theLevel]);
}
if (theLevel < mApp.mNumColorsMap.length) {
_local3 = mApp.mNumColorsMap[theLevel];
if (_local3 < 2) {
_local3 = 2;
}
}
if (theLevel < mApp.mBoardMap.length) {
_local8 = mApp.mBoardMap[theLevel];
if (_local8 >= _local6) {
_local8 = _local6 - 1;
}
if (_local8 < 0) {
_local8 = 0;
}
}
_local9 = _local9 + mDifficultyDiff;
_local4 = mApp.mLevelParser.GetSequenceBoard(_local9, _local8);
var _local12 = int(theLevel / _local6);
var _local10 = int(theLevel % _local6);
_local4.mStage = _local12;
_local4.mLevel = _local10;
if (_local3 > 6) {
_local3 = 6;
}
var _local7 = _local4.GetNumCurves();
var _local2 = 0;
while (_local2 < _local7) {
_local4.mCurveDesc[_local2].mNumColors = _local3;
_local2++;
}
return(_local4);
}
function SetupNextLevel(theLevel, theLevelName) {
trace(((("Board.SetupNextLevel(" + theLevel) + ", ") + theLevelName) + ")");
SetLevelToNextLevel();
mNextLevelDesc = GetLevel(theLevel, theLevelName);
DoSetupNextLevel();
}
function DoSetupNextLevel() {
trace("Board.DoSetupNextLevel()");
var _local3 = 0;
mSpriteMgr.SetupLevel(mLevelDesc);
var _local2 = 0;
for(;;){
if (_local2 >= MAX_CURVES) {
return(undefined);
}
if (mLevelDesc.mCurveDesc[_local2].mPath) {
mCurveMgr[_local3].SetupLevel(mLevelDesc, mSpriteMgr, _local2);
_local3++;
}
_local2++;
};
}
function getCurrentStage() {
return(mLevelDesc.mStage);
}
function NeedShowUpsell() {
if (IsGameOver()) {
return(true);
}
if (_root.show_upsell_map != undefined) {
if (mLevel < _root.show_upsell_map.length) {
return(_root.show_upsell_map.charAt(mLevel) == "1");
}
}
if (mLevelDesc.mStage != mNextLevelDesc.mStage) {
return(true);
}
return(false);
}
function IncScore(theInc, delayDisplay) {
if (theInc > 0) {
mScore = mScore + theInc;
if (delayDisplay) {
return(undefined);
}
mScoreDisplay = mScore;
}
}
function ResetInARowBonus() {
if (mNumClearsInARow > mLevelStats.mMaxInARow) {
mLevelStats.mMaxInARow = mNumClearsInARow;
mLevelStats.mMaxInARowScore = mCurInARowBonus;
}
mNumClearsInARow = 0;
mCurInARowBonus = 0;
}
function IsGameOver() {
return(((mGameState == GameState_Losing) && (mLives <= 0)) || (mIsWinning));
}
function HasHitLevelLimit() {
var _local2 = mApp.mLevelLimit - 1;
if (_local2 >= 0) {
if (mLevel > _local2) {
return(true);
}
if ((mLevel == _local2) && (mGameState == GameState_LevelUp)) {
return(true);
}
}
return(false);
}
function DeleteBullets() {
var _local2 = 0;
while (_local2 < mBulletList.length) {
mBulletList[_local2].Delete();
_local2++;
}
mBulletList = [];
}
function Reset(gameOver, isLevelReset) {
trace(((("Board.Reset(" + gameOver) + ", ") + isLevelReset) + ")");
for (var _local6 in _root.screenMC.ballsMC) {
_root.screenMC.ballsMC[_local6].removeMovieClip();
}
for (var _local6 in _root.screenMC.particleMC) {
_root.screenMC.particleMC[_local6].removeMovieClip();
}
for (var _local6 in _root.screenMC.backMC) {
_root.screenMC.backMC[_local6].removeMovieClip();
}
mStateCount = 0;
mSoundMgr.KillAllSounds();
mParticleMgr.Clear();
mTransitionMgr.Clear();
DeleteBullets();
if (gameOver) {
_global.sendNotification("pc_gamestart", []);
mGameStats.Reset();
mScore = 0;
mScoreDisplay = mScore - 1;
mCurBarSize = 0;
mDifficultyDiff = 0;
mLevel = mStartLevel;
mLives = 3;
mGameTimeCount = 0;
mOldCurveList = [];
mGun.EmptyBullets();
} else if (!isLevelReset) {
mLevel++;
}
mLevelStats.Reset();
_global.gWasReset = isLevelReset;
if (!_global.gWasReset) {
if (gameOver) {
SetupNextLevel(mLevel);
}
SetupNextLevel(mLevel + 1);
}
mGun.SetPos(mLevelDesc.mGunX, mLevelDesc.mGunY);
mBallColorMap = [];
mGun.EmptyBullets();
var _local4 = 0;
while (_local4 < mNumCurves) {
mCurveMgr[_local4].StartLevel();
_local4++;
}
var _local8 = 0;
_local4 = 0;
while (_local4 < mNumCurves) {
if (mLevelDesc.mCurveDesc[_local4].mScoreTarget > _local8) {
_local8 = mLevelDesc.mCurveDesc[_local4].mScoreTarget;
}
_local4++;
}
if (_local8 > 0) {
mScoreTarget = mScore + _local8;
} else {
mScoreTarget = 0;
}
mLevelString = (("LEVEL " + (mLevelDesc.mStage + 1)) + " . ") + (mLevelDesc.mLevel + 1);
mVerboseLevelString = (("level " + (mLevelDesc.mStage + 1)) + "-") + (mLevelDesc.mLevel + 1);
if (_root.screenMC.borderMC.levelMC) {
_root.screenMC.borderMC.levelMC.removeMovieClip();
}
var _local10 = _root.screenMC.borderMC.createEmptyMovieClip("levelMC", _root.screenMC.borderMC.getNextHighestDepth());
FONT_MAIN10.DrawString(mLevelString, _local10);
var _local12 = new Color(_local10);
var _local9 = _local12.getTransform();
_local9.rb = 0;
_local9.gb = -38;
_local9.bb = -235;
_local12.setTransform(_local9);
_local10._x = 90;
_local10._y = 16;
mHaveReachedTarget = false;
mLevelBeginScore = mScore;
mTargetBarSize = 0;
mCurTreasure = null;
_root.screenMC.treasureMC._visible = false;
mTreasureEndFrame = 0;
mTreasureZoomX = 0;
mTreasureZoomY = 0;
mTreasureZoomFrame = 0;
mLastPauseTextTicks = 0;
mBarBlinkCount = 0;
mLivesBlinkCount = 0;
mNumClearsInARow = 0;
mCurInARowBonus = 0;
mFlashCount = 0;
mLevelEndFrame = 0;
mIsWinning = false;
mGameState = GameState_LevelBegin;
mSpriteMgr.ClearHoleFlashes();
mTransitionMgr.DoLevelBegin(gameOver);
mMaxStage = 0;
_root.screenMC.borderMC.livesLeftMC.gotoAndStop(mLives);
if (mLevelDesc.mName == "overlap") {
_root.screenMC.ballsMC.attachMovie("overlapTunnelsMC", "overlapTunnelsMC", 1000);
mLevelHasTunnels = true;
} else {
mLevelHasTunnels = false;
}
_local4 = 0;
for(;;){
if (_local4 >= mSpriteMgr.mNumHoles) {
return(undefined);
}
var _local5 = mSpriteMgr.mHoleInfo[_local4];
var _local7 = _root.screenMC.backMC.getNextHighestDepth();
_local5.mc = _root.screenMC.backMC.attachMovie("skullMC", _local7.toString(), _local7);
_local5.mc._x = _local5.mx;
_local5.mc._y = _local5.my;
_local4++;
};
}
function StartLevel() {
trace("Board.StartLevel()");
mGameState = GameState_Playing;
mStateCount = 0;
mLastExplosionTick = 0;
mLastPauseTextTicks = 0;
mSpriteMgr.ClearHoleFlashes();
mParticleMgr.Clear();
mTransitionMgr.Clear();
mGun.SetFireSpeed(mLevelDesc.mFireSpeed);
mGun.SetPos(mLevelDesc.mGunX, mLevelDesc.mGunY);
mSoundMgr.PlaySample("rollingIn");
mLevelBeginning = true;
}
function PlayBallClick(theSound) {
}
function ActivatePower(theBall) {
var _local6 = theBall.GetPowerTypeWussy();
if (_local6 == _global.PowerType_ProximityBomb) {
var _local5 = mStateCount;
if ((_local5 - mLastExplosionTick) > 8) {
mLastExplosionTick = _local5;
mSoundMgr.PlaySample("bombexplode");
}
} else if (_local6 == _global.PowerType_SlowDown) {
mSoundMgr.PlaySample("slowdown1");
}
var _local3 = 0;
for(;;){
if (_local3 >= mNumCurves) {
return(undefined);
}
mCurveMgr[_local3].ActivatePower(theBall);
_local3++;
};
}
function Pause(pause, becauseOfDialog) {
if (pause) {
if (!mPauseCount) {
mPauseFade = 0;
_root.screenMC.ballsMC._visible = false;
var _local4 = _root.screenMC.createEmptyMovieClip("pausedMC", _root.screenMC.getNextHighestDepth());
var _local3 = _root.screenMC.pausedMC.createEmptyMovieClip("fadeMC", _root.screenMC.pausedMC.getNextHighestDepth());
_local3.beginFill(0, 100);
_local3.moveTo(0, 0);
_local3.lineTo(480, 0);
_local3.lineTo(480, 360);
_local3.lineTo(0, 360);
_local3.endFill();
if (mStateCount == mLastPauseTextTicks) {
_local3._alpha = 50;
} else {
_local3._alpha = 0;
_local3.onEnterFrame = function () {
this._alpha = this._alpha + 3;
if (this._alpha >= 50) {
this._alpha = 50;
delete this.onEnterFrame;
}
};
}
mLastPauseTextTicks = mStateCount;
FONT_TITLE.DrawString("T ! S D - 9 G", _local4, int((400 - FONT_TITLE.GetStringWidth("PAUSED")) / 2), 180);
for (__reg4 in _root.screenMC) {
if (typeof(_root.screenMC[__reg4]) == "movieclip") {
if (_root.screenMC[__reg4].shouldPause) {
_root.screenMC[__reg4].stop();
}
}
}
for (__reg4 in _root.screenMC.backMC) {
if (typeof(_root.screenMC.backMC[__reg4]) == "movieclip") {
if (_root.screenMC.backMC[__reg4].shouldPause) {
_root.screenMC.backMC[__reg4].stop();
}
}
}
}
if (becauseOfDialog) {
mDialogCount++;
}
mPauseCount++;
} else {
for (var __reg4 in _root.screenMC) {
if (typeof(_root.screenMC[__reg4]) == "movieclip") {
if (_root.screenMC[__reg4].shouldPause) {
_root.screenMC[__reg4].play();
}
}
}
for (__reg4 in _root.screenMC.backMC) {
if (typeof(_root.screenMC.backMC[__reg4]) == "movieclip") {
if (_root.screenMC.backMC[__reg4].shouldPause) {
_root.screenMC.backMC[__reg4].play();
}
}
}
if (mPauseCount == 0) {
return(undefined);
}
if (becauseOfDialog) {
mDialogCount--;
}
mPauseCount--;
}
if (mPauseCount) {
return(undefined);
}
_root.screenMC.pausedMC.removeMovieClip();
_root.screenMC.ballsMC._visible = true;
}
function UnpauseFully() {
for(;;){
if (mPauseCount <= mDialogCount) {
return(undefined);
}
Pause(false, false);
};
}
function Hybernate(hybernate) {
if (hybernate != mHybernating) {
mHybernating = hybernate;
if (hybernate) {
Pause(true, true);
return(undefined);
}
Pause(false, true);
}
}
function SetLosing() {
ResetInARowBonus();
mLevelStats.mTimePlayed = int(mStateCount / 33) * 33;
mGameStats.Add(mLevelStats);
mLevelStats.Reset();
DeleteBullets();
if (!mGun.StartFire(false)) {
mGun.EmptyBullets();
}
var _local2 = 0;
while (_local2 < mNumCurves) {
mCurveMgr[_local2].SetLosing();
_local2++;
}
mGameState = GameState_Losing;
mStateCount = 0;
mLives--;
mTransitionMgr.DoLosing();
}
function DoLevelUp(playSound, isCheat) {
if (playSound == undefined) {
playSound = true;
}
if (isCheat == undefined) {
isCheat = false;
}
mCurBarSize = (mTargetBarSize = 256);
ResetInARowBonus();
mLevelStats.mTimePlayed = int(mStateCount / 33) * 33;
mGameStats.Add(mLevelStats);
var _local2 = 0;
while (_local2 < mNumCurves) {
mCurveMgr[_local2].DeleteBalls();
_local2++;
}
DeleteBullets();
if (!mGun.StartFire(false)) {
mGun.EmptyBullets();
}
mGameState = GameState_LevelUp;
mTransitionMgr.DoLevelUp();
mStateCount = 0;
}
function UpdateBallColorMap(theBall, added) {
var _local2 = theBall.mType;
if (added) {
if (mBallColorMap[_local2] == undefined) {
mBallColorMap[_local2] = 1;
} else {
mBallColorMap[_local2]++;
}
return(undefined);
}
if (mBallColorMap[_local2] != undefined) {
mBallColorMap[_local2]--;
if (mBallColorMap[_local2] <= 0) {
delete mBallColorMap[_local2];
}
}
}
function DoEndGame() {
if (mGameState == GameState_Playing) {
mLives = 1;
SetLosing();
}
}
function KeyChar(theChar) {
if (mHybernating) {
return(undefined);
}
if (mApp.mCheats) {
if ((theChar >= 49) && (theChar <= 57)) {
if (mGameState == GameState_Playing) {
var _local5 = theChar - 49;
if ((_local5 >= 0) && (_local5 < _global.PowerType_Max)) {
var _local6 = random(mNumCurves);
mCurveMgr[_local6].AddPowerUp(_local5);
}
}
}
if (((__reg0 = String.fromCharCode(theChar).toUpperCase())) === "R") {
Reset(false, true);
} else if (__reg0 === "N") {
DoLevelUp(false, true);
if (mGameState == GameState_LevelUp) {
Reset(false);
}
} else if (__reg0 === "M") {
if (mLevel > 0) {
mStartLevel = mLevel - 1;
Reset(true);
}
} else if (__reg0 === "L") {
IncScore(mScoreTarget - mScore);
DoLevelUp(true, true);
} else if (__reg0 === "K") {
SetLosing();
} else if (__reg0 === "E") {
mLives = Math.min(mLives + 1, 4);
_root.screenMC.borderMC.livesLeftMC.gotoAndStop(mLives);
} else if (__reg0 === "B") {
mGun.SetNextBulletType(mGun.mBullet.mType);
}
}
if (mDialogCount == 0) {
if (theChar == 32) {
if (!mPauseCount) {
mGun.SwapBullets();
}
return(undefined);
}
if (theChar == 80) {
mLastPauseTick = mStateCount;
Pause(mPauseCount == 0, false);
}
}
}
function KeyDown(theKey) {
}
function MouseMove() {
if (mPauseCount) {
return(undefined);
}
mGun.SetAngle(Math.atan2(_root._ymouse - mGun.mCenterY, _root._xmouse - mGun.mCenterX) + 1.57079632679);
}
function MouseDown() {
if (mDialogCount) {
return(undefined);
}
if (mPauseCount) {
Pause(false, false);
return(undefined);
}
if (((mGameState == GameState_Losing) || (mGameState == GameState_LevelUp)) || (mGameState == GameState_LevelBegin)) {
mTransitionMgr.MouseDown(_root._xmouse, _root._ymouse);
return(undefined);
}
if (mGameState == GameState_Playing) {
var _local3 = 0;
while (_local3 < mNumCurves) {
if (!mCurveMgr[_local3].CanFire()) {
return(undefined);
}
_local3++;
}
if (mGun.StartFire()) {
mSoundMgr.PlaySample("fireball1");
}
}
}
function CheckReload() {
if (_global.getLengthAssoc(mBallColorMap)) {
if (mGun.mBullet != null) {
if (mBallColorMap[mGun.mBullet.mType] == undefined) {
mGun.SetBulletType(_global.getRandomIndexAssoc(mBallColorMap));
}
}
if (mGun.mNextBullet != null) {
if (mBallColorMap[mGun.mNextBullet.mType] == undefined) {
mGun.SetNextBulletType(_global.getRandomIndexAssoc(mBallColorMap));
}
}
for(;;){
if (!mGun.NeedsReload()) {
return(undefined);
}
var _local3 = _global.getRandomIndexAssoc(mBallColorMap);
mGun.Reload(_local3, true, _global.PowerType_None);
};
}
}
function GetPan(thePos) {
return(0);
}
function AdvanceFreeBullet(theBulletItr) {
var _local4 = mBulletList[theBulletItr];
_local4.Update();
if (mCurTreasure != null) {
var _local11 = _local4.mx - mCurTreasure.x;
var _local9 = _local4.my - mCurTreasure.y;
var _local12 = 28;
if (((_local11 * _local11) + (_local9 * _local9)) < (_local12 * _local12)) {
mLevelStats.mNumGemsCleared++;
var _local10 = new FloatingTextHelper();
var _local8 = int(((mScoreTarget - mLevelBeginScore) / 600) * 100);
if (_local8 < 500) {
_local8 = 500;
}
_local10.AddText("TH@#NG " + _local8, FONT_FLOAT, 16776960);
_local10.AddToMgr(mParticleMgr, mCurTreasure.x, mCurTreasure.y);
IncScore(_local8, true);
mSoundMgr.PlaySample("coingrab");
mTreasureZoomFrame = 1;
mTreasureZoomX = mCurTreasure.x;
mTreasureZoomY = mCurTreasure.y;
var _local3 = 0;
while (_local3 < 10) {
var _local5 = Math.cos(_local3 * 0.628318530718);
var _local6 = Math.sin(_local3 * 0.628318530718);
mParticleMgr.AddSparkle(mCurTreasure.x + (12 * _local5), mCurTreasure.y + (12 * _local6), 2 * _local5, 2 * _local6, 0, 0, random(5), _global.gBrightBallColors[random(6)]);
_local3++;
}
mCurTreasure = null;
_local4.Delete();
mBulletList.splice(theBulletItr, 1);
return(theBulletItr);
}
}
var _local3 = 0;
while (_local3 < mNumCurves) {
if (mCurveMgr[_local3].CheckCollision(_local4)) {
_local4.mc.removeMovieClip();
delete _local4.mc;
mBulletList.splice(theBulletItr, 1);
return(theBulletItr);
}
_local3++;
}
_local3 = 0;
while (_local3 < mNumCurves) {
mCurveMgr[_local3].CheckGapShot(_local4);
_local3++;
}
if ((((_local4.mx < 0) || (_local4.my < 0)) || ((_local4.mx - 13) > mWidth)) || ((_local4.my - 13) > mHeight)) {
ResetInARowBonus();
_local4.Delete();
mBulletList.splice(theBulletItr, 1);
} else {
theBulletItr++;
}
return(theBulletItr);
}
function CheckEndConditions() {
if (mBulletList.length || (mGun.mState == mGun.GunState_Firing)) {
return(undefined);
}
var _local2 = 0;
while (_local2 < mNumCurves) {
if (!mCurveMgr[_local2].IsWinning()) {
break;
}
_local2++;
}
if (_local2 == mNumCurves) {
DoLevelUp();
return(undefined);
}
_local2 = 0;
for(;;){
if (_local2 >= mNumCurves) {
return(undefined);
}
if (mCurveMgr[_local2].IsLosing()) {
SetLosing();
return(undefined);
}
_local2++;
};
}
function UpdateTreasure() {
if (mTreasureZoomFrame) {
mTreasureZoomFrame++;
if (mTreasureZoomFrame > 13) {
mTreasureZoomFrame = 0;
_root.screenMC.treasureMC._visible = false;
}
}
if (mCurTreasure != null) {
if (mStateCount > mTreasureEndFrame) {
mSoundMgr.PlaySample("gemvanishes");
mCurTreasure = null;
_root.screenMC.treasureMC._visible = false;
}
return(undefined);
}
if (random(int(mLevelDesc.mTreasureFreq / 3)) == 0) {
if ((mStateCount - mTreasureEndFrame) > mLevelDesc.mTreasureFreq) {
if (mScore < mScoreTarget) {
if (mLevelDesc.mTreasurePoints.length) {
var _local7 = mLevelDesc.mTreasurePoints.length * 2;
var _local5 = 0;
for(;;){
if (_local5 >= _local7) {
return(undefined);
}
mCurTreasureNum = random(mLevelDesc.mTreasurePoints.length);
mCurTreasure = mLevelDesc.mTreasurePoints[mCurTreasureNum];
var _local4 = 0;
while (_local4 < mNumCurves) {
if (mCurTreasure.mCurveDist[_local4] != 0) {
var _local6 = mCurveMgr[_local4].GetFarthestBallPercent();
if (_local6 < mCurTreasure.mCurveDist[_local4]) {
mCurTreasure = null;
_root.screenMC.treasureMC._visible = false;
break;
}
}
_local4++;
}
if (mCurTreasure != null) {
mSoundMgr.PlaySample("jewelappear");
mTreasureEndFrame = mStateCount + 333;
_local5 = 0;
while (_local5 < 4) {
mParticleMgr.AddSparkle((mCurTreasure.x + (4 * Math.cos(_local5 * 1.57079632679))) + 7, (mCurTreasure.y + (4 * Math.sin(_local5 * 1.57079632679))) - 10, 0, 0.25, 0, 0, random(5), _global.gBrightBallColors[random(6)]);
_local5++;
}
_root.screenMC.treasureMC._x = mCurTreasure.x;
_root.screenMC.treasureMC._y = mCurTreasure.y;
_root.screenMC.treasureMC._visible = true;
_root.screenMC.treasureMC._xscale = (_root.screenMC.treasureMC._yscale = 100);
return(undefined);
}
_local5++;
};
}
}
}
}
}
function UpdatePlaying() {
mGameTimeCount++;
var _local7 = mGun.GetFiredBullet();
if (_local7 != null) {
mBulletList.push(_local7);
CheckReload();
}
var _local4 = 0;
while (_local4 < mBulletList.length) {
_local4 = AdvanceFreeBullet(_local4);
}
UpdateTreasure();
var _local6 = mScoreTarget - mLevelBeginScore;
if (_local6 > 0) {
var _local5 = mScoreTarget - mScore;
if (_local5 < 0) {
_local5 = 0;
if (mLevelEndFrame == 0) {
if (mBallColorMap.length == 2) {
mLevelEndFrame = mStateCount;
}
} else if ((mStateCount - mLevelEndFrame) == 1000) {
var _local3 = 0;
while (_local3 < mNumCurves) {
mLevelDesc.mCurveDesc[_local3].mPowerUpFreq[_global.PowerType_ProximityBomb] = 500;
mLevelDesc.mCurveDesc[_local3].mPowerUpFreq[_global.PowerType_SlowDown] = 0;
mLevelDesc.mCurveDesc[_local3].mAccelerationRate = 0.0003;
_local3++;
}
}
}
mTargetBarSize = 256 - int((256 * _local5) / _local6);
}
var _local3 = 0;
while (_local3 < mNumCurves) {
mCurveMgr[_local3].UpdatePlaying();
_local3++;
}
CheckEndConditions();
CheckReload();
}
function UpdateLosing() {
mTransitionMgr.Update();
}
function UpdateLevelUp() {
mTransitionMgr.Update();
}
function UpdateLevelBegin() {
mTransitionMgr.Update();
}
function Update() {
if (mPauseCount) {
if (_root.statsDialogMC != undefined) {
mParticleMgr.Update();
mSoundMgr.Update();
}
if (mPauseFade <= 50) {
mPauseFade++;
}
return(undefined);
}
mGun.Update();
mSpriteMgr.Update();
mParticleMgr.Update();
mSoundMgr.Update();
mStateCount++;
if (((__reg0 = mGameState)) === GameState_Playing) {
UpdatePlaying();
} else if (__reg0 === GameState_LevelBegin) {
UpdateLevelBegin();
} else if (__reg0 === GameState_Losing) {
UpdateLosing();
} else if (__reg0 === GameState_LevelUp) {
UpdateLevelUp();
}
if (mScoreDisplay < mScore) {
mScoreDisplay = mScoreDisplay + int(2 + ((mScore - mScoreDisplay) / 16.6666666667));
if (mScoreDisplay > mScore) {
mScoreDisplay = mScore;
}
if (_root.screenMC.borderMC.scoreMC) {
_root.screenMC.borderMC.scoreMC.removeMovieClip();
}
var _local7 = _root.screenMC.borderMC.createEmptyMovieClip("scoreMC", _root.screenMC.borderMC.getNextHighestDepth());
FONT_MONODIGIT.DrawString(mScoreDisplay.toString(), _local7);
_local7._x = 280 - _local7._width;
_local7._y = 16;
}
if (mCurBarSize == mTargetBarSize) {
if (mScore >= mScoreTarget) {
if (!mHaveReachedTarget) {
mBarBlinkCount = 75;
mFlashCount = 17;
for (var _local6 in _root.screenMC.ballsMC) {
if (_local6 != "overlapTunnelsMC") {
var _local4 = new Color(_root.screenMC.ballsMC[_local6]);
var _local3 = _local4.getTransform();
_local3.rb = _local3.rb + 100;
_local3.gb = _local3.gb + 100;
_local3.bb = _local3.bb + 100;
_local4.setTransform(_local3);
}
}
mSoundMgr.PlaySample("chant4");
mHaveReachedTarget = true;
var _local5 = 0;
while (_local5 < mNumCurves) {
mCurveMgr[_local5].SetStopAddingBalls(true);
_local5++;
}
}
}
} else if (mCurBarSize > mTargetBarSize) {
mCurBarSize = Math.max(mCurBarSize - 3, mTargetBarSize);
} else {
mCurBarSize = Math.min(mCurBarSize + 3, mTargetBarSize);
}
if (mBarBlinkCount > 0) {
mBarBlinkCount--;
}
if (mFlashCount > 0) {
mFlashCount--;
if (mFlashCount == 0) {
for (var _local6 in _root.screenMC.ballsMC) {
var _local4 = new Color(_root.screenMC.ballsMC[_local6]);
var _local3 = _local4.getTransform();
_local3.rb = 0;
_local3.gb = 0;
_local3.bb = 0;
_local4.setTransform(_local3);
}
}
}
if (mLivesBlinkCount > 0) {
mLivesBlinkCount--;
}
}
function FinishPauseFade() {
mPauseFade = 17;
}
function DrawBullets() {
var _local2 = 0;
for(;;){
if (_local2 >= mBulletList.length) {
return(undefined);
}
var _local3 = mBulletList[_local2];
_local3.Draw();
_local2++;
};
}
function DrawPlaying() {
if (!mPauseCount) {
var _local3 = 0;
while (_local3 < mNumCurves) {
mCurveMgr[_local3].DrawBalls();
_local3++;
}
}
mGun.Draw();
if (mTreasureZoomFrame) {
var _local4 = (mTreasureZoomFrame / 10) + 1;
_root.screenMC.treasureMC._xscale = (_root.screenMC.treasureMC._yscale = 100 * _local4);
}
DrawBullets();
}
function DrawLosing() {
mTransitionMgr.Draw();
}
function DrawLevelUp() {
mTransitionMgr.Draw();
}
function DrawLevelBegin() {
mTransitionMgr.Draw();
}
function Draw() {
if (((__reg0 = mGameState)) === GameState_Playing) {
DrawPlaying();
} else if (__reg0 === GameState_LevelUp) {
DrawLevelUp();
} else if (__reg0 === GameState_LevelBegin) {
DrawLevelBegin();
} else if (__reg0 === GameState_Losing) {
DrawLosing();
} else {
DrawPlaying();
}
var _local3 = mScoreTarget - mLevelBeginScore;
if (_local3 > 0) {
if (((mBarBlinkCount >> 3) & 1) == 0) {
_root.screenMC.borderMC.progressMC.gotoAndStop(1 + Math.round((mCurBarSize / 256) * 68));
if ((mCurBarSize >= 256) || (mGameState == GameState_LevelUp)) {
_root.screenMC.borderMC.progressMC.gotoAndStop(_root.screenMC.borderMC.progressMC._totalframes);
} else if (mBarBlinkCount) {
_root.screenMC.borderMC.progressMC.gotoAndStop(_root.screenMC.borderMC.progressMC._currentframe + 68);
}
return(undefined);
}
_root.screenMC.borderMC.progressMC.gotoAndStop(1);
}
}
function DrawOverlay() {
}
var mWidth = 480;
var mHeight = 360;
var MAX_CURVES = 3;
static var GameState_None = 0;
static var GameState_Playing = 1;
static var GameState_Losing = 2;
static var GameState_LevelUp = 3;
static var GameState_LevelBegin = 4;
var mCurveMgr = new Array();
var mNextCurveMgr = new Array();
var mNeedComboCount = new Array();
var mBallColorMap = new Array();
var mBulletList = new Array();
}
Symbol 1161 MovieClip [__Packages.GameStats] Frame 0
class GameStats
{
var mTimePlayed, mNumBallsCleared, mNumGemsCleared, mNumGaps, mNumCombos, mMaxCombo, mMaxComboScore, mMaxInARow, mMaxInARowScore;
function GameStats () {
Reset();
}
function Reset() {
mTimePlayed = 0;
mNumBallsCleared = 0;
mNumGemsCleared = 0;
mNumGaps = 0;
mNumCombos = 0;
mMaxCombo = -1;
mMaxComboScore = 0;
mMaxInARow = 0;
mMaxInARowScore = 0;
}
function Add(theStats) {
mTimePlayed = mTimePlayed + theStats.mTimePlayed;
mNumBallsCleared = mNumBallsCleared + theStats.mNumBallsCleared;
mNumGemsCleared = mNumGemsCleared + theStats.mNumGemsCleared;
mNumCombos = mNumCombos + theStats.mNumCombos;
mNumGaps = mNumGaps + theStats.mNumGaps;
if ((theStats.mMaxCombo > mMaxCombo) || ((theStats.mMaxCombo == mMaxCombo) && (theStats.mMaxComboScore > mMaxComboScore))) {
mMaxCombo = theStats.mMaxCombo;
mMaxComboScore = theStats.mMaxComboScore;
}
if (theStats.mMaxInARow > mMaxInARow) {
mMaxInARow = theStats.mMaxInARow;
mMaxInARowScore = theStats.mMaxInARowScore;
}
}
}
Symbol 1162 MovieClip [__Packages.CurveMgr] Frame 0
class CurveMgr
{
var mApp, mBoard, mLastPowerUpFrame, mSpriteMgr, mWayPointMgr, mCurveDesc, mTotalBalls, mBallList, mBulletList, mPendingBalls, mLevelDesc, mCurveNum, mDangerPoint, mPathLightEndFrame, mLastPathShowTick, mLastClearedBallPoint, mStopTime, mSlowCount, mBackwardCount, mStopAddingBalls, mInDanger, mFirstChainEnd, mFirstBallMovedBackwards, mAdvanceSpeed, mHadPowerUp, mHaveSets;
function CurveMgr (theBoard) {
mApp = theBoard.mApp;
mBoard = theBoard;
mLastPowerUpFrame = new Array();
mSpriteMgr = null;
mWayPointMgr = new WayPointMgr();
}
function GetTotalBalls() {
trace("::: GetTotalBalls() is not used?");
if (mCurveDesc.mNumBalls == 0) {
return(0);
}
return(mTotalBalls);
}
function DeleteBalls() {
var _local3 = 0;
while (_local3 < mBallList.length) {
mBallList[_local3].Delete();
_local3++;
}
var _local2 = 0;
while (_local2 < mBulletList.length) {
mBulletList[_local2].Delete();
_local2++;
}
mBallList = [];
mPendingBalls = [];
mBulletList = [];
}
function GetCurveLength() {
return(mWayPointMgr.mWayPoints.length);
}
function DrawCurve() {
}
function DrawTunnel() {
}
function GetPoint(thePoint) {
thePoint = int(thePoint);
var _local3 = mWayPointMgr.mWayPoints;
if (thePoint < 0) {
thePoint = 0;
} else if (thePoint >= _local3.length) {
thePoint = _local3.length - 1;
}
return({x:_local3[thePoint].x, y:_local3[thePoint].y, pri:_local3[thePoint].mPriority});
}
static function MakeCombo(theList, theNumBalls, theComboSize, theNumColors) {
if (theNumColors == undefined) {
trace("CurveMgr.MakeCombo() - theNumColors is undefined");
theNumColors = 2;
}
var _local11 = new Array(theComboSize);
var _local13 = new Array(theComboSize);
var _local10 = theNumBalls;
var _local6 = -1;
var _local1 = 0;
while (_local1 < theComboSize) {
while (true) {
var _local5 = random(theNumColors);
if (_local5 != _local6) {
_local13[_local1] = _local5;
_local6 = _local5;
break;
}
}
_local11[_local1] = 3;
_local10 = _local10 - 3;
_local1++;
}
_local1 = 0;
while (_local1 < _local10) {
var _local14 = random(theComboSize);
_local11[_local14]++;
_local1++;
}
var _local16 = theList.length;
_local1 = 0;
for(;;){
if (_local1 >= theComboSize) {
return(undefined);
}
var _local8 = _local13[_local1];
var _local9 = _local11[_local1];
var _local2 = 0;
while (_local2 < _local9) {
var _local3 = random(2) != 0;
if (_local2 == 0) {
_local3 = true;
} else if (_local2 == 1) {
_local3 = false;
}
var _local4 = new Ball();
_local4.SetType(_local8);
if (_local3) {
theList.unshift(_local4);
} else {
theList.push(_local4);
}
_local2++;
}
_local1++;
};
}
function SetupLevel(theDesc, theSpriteMgr, theCurveNum) {
mLevelDesc = theDesc;
mCurveDesc = theDesc.mCurveDesc[theCurveNum];
mSpriteMgr = theSpriteMgr;
mWayPointMgr.LoadCurve(mCurveDesc.mPath);
mCurveNum = theCurveNum;
var _local3 = mWayPointMgr.mWayPoints;
var _local5 = 0;
var _local6 = 0;
var _local2 = mCurveDesc.mSkullRotation;
if (_local2 >= 0) {
_local2 = (3.14159265359 * _local2) / 180;
}
if (_local3.length) {
mWayPointMgr.CalcPerpendicularForPoint(_local3.length - 1);
var _local4 = _local3[_local3.length - 1];
_local5 = _local4.x;
_local6 = _local4.y;
if (_local2 < 0) {
_local2 = _local4.mRotation;
}
}
mSpriteMgr.PlaceHole(mCurveNum, _local5, _local6, _local2);
mDangerPoint = mWayPointMgr.mWayPoints.length - mCurveDesc.mDangerDistance;
if (mDangerPoint >= mWayPointMgr.mWayPoints.length) {
mDangerPoint = mWayPointMgr.mWayPoints.length - 1;
}
}
function SetupLevelDesc(theDesc) {
mLevelDesc = theDesc;
mCurveDesc = theDesc.mCurveDesc[mCurveNum];
mDangerPoint = mWayPointMgr.mWayPoints.length - mCurveDesc.mDangerDistance;
if (mDangerPoint >= mWayPointMgr.mWayPoints.length) {
mDangerPoint = mWayPointMgr.mWayPoints.length - 1;
}
}
function StartLevel() {
mLevelDesc = mBoard.mLevelDesc;
mCurveDesc = mLevelDesc.mCurveDesc[mCurveNum];
mPathLightEndFrame = 0;
mLastPathShowTick = mBoard.mStateCount - 1000000;
mLastClearedBallPoint = 0;
var _local3 = 0;
while (_local3 < _global.PowerType_Max) {
mLastPowerUpFrame[_local3] = mBoard.mStateCount - 1000;
_local3++;
}
mSpriteMgr.UpdateHole(mCurveNum, 0);
DeleteBalls();
var _local5 = mCurveDesc.mNumColors;
var _local6 = random(_local5);
var _local4 = mCurveDesc.mNumBalls;
if (_local4 == 0) {
_local4 = 10;
}
if (mBoard.mLevel < 2) {
MakeCombo(mPendingBalls, 0, 2, mCurveDesc.mNumColors);
MakeCombo(mPendingBalls, 0, 2, mCurveDesc.mNumColors);
MakeCombo(mPendingBalls, 0, 2, mCurveDesc.mNumColors);
MakeCombo(mPendingBalls, 0, 2, mCurveDesc.mNumColors);
MakeCombo(mPendingBalls, 0, 2, mCurveDesc.mNumColors);
}
_local3 = 0;
while (_local3 < _local4) {
AddPendingBall();
_local3++;
}
mStopTime = 0;
mSlowCount = 0;
mBackwardCount = 0;
mTotalBalls = mCurveDesc.mNumBalls;
mStopAddingBalls = false;
mInDanger = false;
mFirstChainEnd = 0;
mFirstBallMovedBackwards = false;
RollBallsIn();
}
function RollBallsIn() {
var _local4 = mCurveDesc.mSpeed / 3;
var _local6 = mCurveDesc.mStartDistance;
var _local2 = (mWayPointMgr.mWayPoints.length * _local6) / 100;
if (mFirstChainEnd > 0) {
_local2 = _local2 - (mFirstChainEnd / mWayPointMgr.mWayPoints.length);
if (_local2 <= 0) {
mAdvanceSpeed = mCurveDesc.mSpeed;
return(undefined);
}
}
var _local8 = 1;
var _local3 = 20 + _local4;
var _local7 = -20 * _local2;
var _local5 = (((-_local3) + Math.sqrt((_local3 * _local3) - (4 * _local7))) / 2) + 18;
mAdvanceSpeed = _local4 + (_local5 * 0.1);
}
function GetRandomPendingBallColor(theMaxNumBalls) {
var _local2 = random(theMaxNumBalls);
if (_local2 >= mPendingBalls.length) {
_local2 = mPendingBalls.length - 1;
}
return(mPendingBalls[_local2].mType);
}
function HasPendingBallOfType(theType, theMaxNumBalls) {
var _local3 = Math.min(mPendingBalls.length, theMaxNumBalls);
var _local2 = 0;
while (_local2 < _local3) {
if (mPendingBalls[_local2].mType == theType) {
return(true);
}
_local2++;
}
return(false);
}
function SetLosing() {
var _local2 = 0;
while (_local2 < mBulletList.length) {
mBulletList[_local2].Delete();
_local2++;
}
mBulletList = [];
_local2 = 0;
for(;;){
if (_local2 >= mBallList.length) {
return(undefined);
}
mBallList[_local2].mSuckCount = int(mAdvanceSpeed * 4);
_local2++;
};
}
function DeleteBullet(theBullet) {
if (theBullet != null) {
var _local2 = 0;
while (_local2 < mBulletList.length) {
if (mBulletList[_local2] == theBullet) {
mBulletList.splice(_local2, 1);
}
_local2++;
}
theBullet.Delete();
}
}
function DeleteBall(theBall) {
var _local3 = theBall.mBullet;
if (_local3 != null) {
_local3.MergeFully();
var _local2 = 0;
while (_local2 < mBulletList.length) {
if (mBulletList[_local2] == _local3) {
_local2 = AdvanceMergingBullet(_local2);
} else {
_local2++;
}
}
}
DeleteBullet(theBall.mBullet);
theBall.SetCollidesWithPrev(false);
theBall.Delete();
}
function GetNumInARow(theBall, theColor, theNextEnd, thePrevEnd) {
if (theBall.mType != theColor) {
return(0);
}
var _local7 = theBall;
var _local5 = _local7;
var _local6 = theColor;
var _local4 = 1;
while (true) {
var _local1 = _local5.GetNextBall(true);
if (_local1 == null) {
break;
}
if (_local1.mType != _local6) {
break;
}
_local5 = _local1;
_local4++;
}
var _local3 = _local7;
while (true) {
var _local2 = _local3.GetPrevBall(true);
if (_local2 == null) {
break;
}
if (_local2.mType != _local6) {
break;
}
_local3 = _local2;
_local4++;
}
return({aCount:_local4, aNextEnd:_local5, aPrevEnd:_local3});
}
function ActivateBomb(theBall) {
var _local11 = mBoard.mParticleMgr;
var _local10 = _global.gBallColors[theBall.mType];
var _local16 = 2;
var _local13 = theBall.mx;
var _local14 = theBall.my;
_local11.AddExplosion(_local13, _local14, 0, _local10, _local16);
var _local19 = 75;
var _local15 = 21.3333333333;
var _local5 = _local15;
var _local8 = 0;
while (_local5 < _local19) {
_local8++;
var _local3 = 0;
var _local9 = _local15 / _local5;
while (_local3 < 6.28318530718) {
var _local6 = random(21) - 10;
var _local7 = random(21) - 10;
_local11.AddExplosion((_local13 + (_local5 * Math.cos(_local3))) + _local6, (_local14 + (_local5 * Math.sin(_local3))) + _local7, 0, _local10, (_local8 * 2) + _local16);
_local3 = _local3 + _local9;
}
_local5 = _local5 + _local15;
_local8++;
}
var _local21 = theBall.mType;
var _local18 = 34;
var _local20 = theBall.mWayPoint;
_local11.AddExplosion(theBall.mx, theBall.my, 0, _local10, 0);
var _local12 = 0;
for(;;){
if (_local12 >= mBallList.length) {
return(undefined);
}
var _local4 = mBallList[_local12];
if (_local4.CollidesWithPhysically(theBall, _local18)) {
if (_local4.mClearCount == 0) {
_local4.SetComboCount(mBoard.mCurComboCount, mBoard.mCurComboScore);
mBoard.mNeedComboCount.push(_local4);
StartClearCount(_local4);
_local11.AddExplosion(_local4.mx, _local4.my, 0, _local10, 0);
}
}
_local12++;
};
}
function ActivatePower(theBall) {
var _local3 = theBall.GetPowerTypeWussy();
_global.gGotPowerUp[_local3] = true;
if (_local3 == _global.PowerType_ProximityBomb) {
ActivateBomb(theBall);
return(undefined);
}
if (_local3 == _global.PowerType_SlowDown) {
if (mSlowCount < 333) {
mSlowCount = 267;
}
}
}
function GetFarthestBallPercent() {
if (mBallList.length == 0) {
return(0);
}
var _local2 = mBallList[mBallList.length - 1].mWayPoint;
return(int((_local2 * 100) / mWayPointMgr.mWayPoints.length));
}
function GetLastClearedBallPoint() {
return(mLastClearedBallPoint);
}
function StartClearCount(theBall) {
if (theBall.mClearCount <= 0) {
mBoard.UpdateBallColorMap(theBall, false);
mBoard.mLevelStats.mNumBallsCleared++;
mBoard.mNumCleared++;
mBoard.mClearedXSum = mBoard.mClearedXSum + theBall.mx;
mBoard.mClearedYSum = mBoard.mClearedYSum + theBall.my;
mLastClearedBallPoint = theBall.mWayPoint;
theBall.mSuckPending = false;
theBall.StartClearCount(mWayPointMgr.InTunnel(theBall.mWayPoint));
if (theBall.GetPowerTypeWussy() != _global.PowerType_None) {
mBoard.ActivatePower(theBall);
mHadPowerUp = true;
}
}
}
function DoScoring(theBall, theNumBalls, theComboCount, theGapBonus, theNumGaps) {
if (theNumBalls != 0) {
var _local3 = new FloatingTextHelper();
var _local5 = ((theNumBalls * 10) + theGapBonus) + (theComboCount * 100);
var _local7 = false;
if (mBoard.mNumClearsInARow > 4) {
if (theComboCount == 0) {
_local7 = true;
var _local8 = 100 + (10 * (mBoard.mNumClearsInARow - 5));
_local5 = _local5 + _local8;
mBoard.mCurInARowBonus = mBoard.mCurInARowBonus + _local8;
}
}
mBoard.mCurComboScore = mBoard.mCurComboScore + _local5;
mBoard.IncScore(_local5, true);
if (theComboCount > 0) {
mBoard.mLevelStats.mNumCombos++;
}
if (theGapBonus > 0) {
mBoard.mLevelStats.mNumGaps++;
}
var _local4 = _global.gTextBallColors[theBall.mType];
_local3.AddText("+" + _local5, mBoard.FONT_FLOAT, _local4);
if (theComboCount > 0) {
_local3.AddText("LI$N HO%N X" + (theComboCount + 1), mBoard.FONT_FLOAT, _local4);
}
if (theGapBonus > 0) {
if (theNumGaps > 1) {
_local3.AddText("TH@#NG 2 KHO^NG TR&NG", mBoard.FONT_FLOAT, _local4);
mBoard.mSoundMgr.AddSound("gapbonus1", 15, 0, 0);
} else {
_local3.AddText("TH@#NG KHO^NG TR&NG", mBoard.FONT_FLOAT, _local4);
}
mBoard.mSoundMgr.PlaySample("gapbonus1");
}
if (_local7) {
_local3.AddText("TH@#NG D*Y CHY-N X" + mBoard.mNumClearsInARow, mBoard.FONT_FLOAT, _local4);
mBoard.mSoundMgr.AddSound("chain1", 0, 0, 0);
}
var _local11 = mBoard.mClearedXSum / theNumBalls;
var _local12 = mBoard.mClearedYSum / theNumBalls;
if (_global.gGotPowerUp[_global.PowerType_SlowDown]) {
_local3.AddText("(_Y B(NG", mBoard.FONT_FLOAT, _local4);
}
_local3.AddToMgr(mBoard.mParticleMgr, _local11, _local12);
}
}
function CheckSet(theBall) {
mHadPowerUp = false;
var _local11 = GetNumInARow(theBall, theBall.mType);
var _local14 = _local11.aCount;
if (_local14 >= 3) {
var _local6 = theBall.mComboCount;
var _local13 = _local11.aNextEnd;
var _local12 = _local11.aPrevEnd;
mBoard.mNumCleared = 0;
mBoard.mClearedXSum = 0;
mBoard.mClearedYSum = 0;
mBoard.mCurComboCount = _local6;
mBoard.mCurComboScore = theBall.mComboScore;
mBoard.mNeedComboCount.clear();
var _local4 = 0;
while (_local4 < _global.PowerType_Max) {
_global.gGotPowerUp[_local4] = false;
_local4++;
}
var _local7 = 0;
var _local8 = 0;
var _local9 = _local13.GetNextBall();
var _local3 = _local12;
while (_local3 != _local9) {
if (_local3.mSuckPending) {
_local3.mSuckPending = false;
mBoard.mNumClearsInARow++;
}
StartClearCount(_local3);
_local7 = _local7 + _local3.mGapBonus;
if (_local3.mNumGaps > _local8) {
_local8 = _local3.mNumGaps;
}
_local3.SetGapBonus(0, 0);
_local3 = _local3.GetNextBall();
}
DoScoring(theBall, mBoard.mNumCleared, _local6, _local7, _local8);
if ((mBoard.mCurComboCount > mBoard.mLevelStats.mMaxCombo) || ((mBoard.mCurComboCount == mBoard.mLevelStats.mMaxCombo) && (mBoard.mCurComboScore >= mBoard.mLevelStats.mMaxComboScore))) {
mBoard.mLevelStats.mMaxCombo = mBoard.mCurComboCount;
mBoard.mLevelStats.mMaxComboScore = mBoard.mCurComboScore;
}
_local3 = _local12;
while (_local3 != _local9) {
_local3.SetComboCount(_local6, mBoard.mCurComboScore);
_local3 = _local3.GetNextBall();
}
var _local5 = 0;
while (_local5 < mBoard.mNeedComboCount.length) {
mBoard.mNeedComboCount[_local5].SetComboCount(_local6, mBoard.mCurComboScore);
_local5++;
}
mBoard.mNeedComboCount = [];
if (!mHadPowerUp) {
mBoard.mSoundMgr.PlaySample("ballsdestroyed" + Math.min(_local6 + 1, 3));
mBoard.mSoundMgr.PlaySample("chime1_count" + Math.min(_local6, 7), Math.min(0.4 + (0.2 * _local6), 1));
}
mBoard.mCurComboCount = 0;
mBoard.mCurComboScore = 0;
return(true);
}
return(false);
}
function SetStopAddingBalls(stop) {
if (mStopAddingBalls != stop) {
if (GetFarthestBallPercent() > 50) {
mBackwardCount = mCurveDesc.mZumaBack;
mSlowCount = mCurveDesc.mZumaSlow;
}
mStopAddingBalls = stop;
if (stop) {
var _local2 = 0;
while (_local2 < mPendingBalls.length) {
mPendingBalls[_local2].Delete();
_local2++;
}
mPendingBalls = [];
}
}
}
function DoEndlessZumaEffect() {
if (GetFarthestBallPercent() > 50) {
mBackwardCount = mCurveDesc.mZumaBack;
}
}
function GetNumPendingSingles(theNumGroups) {
var _local5 = 0;
var _local6 = -1;
var _local7 = 0;
var _local4 = 0;
var _local3 = mPendingBalls.length - 1;
while ((_local3 >= 0) && (_local5 <= theNumGroups)) {
var _local2 = mPendingBalls[_local3].mType;
if (_local2 == _local6) {
_local4++;
} else {
if (_local4 == 1) {
_local7++;
}
_local4 = 1;
_local5++;
_local6 = _local2;
}
_local3--;
}
_local3 = 0;
while ((_local3 < mPendingBalls.length) && (_local5 <= theNumGroups)) {
var _local2 = mPendingBalls[_local3].mType;
if (_local2 == _local6) {
_local4++;
} else {
if (_local4 == 1) {
_local7++;
}
_local4 = 1;
_local5++;
_local6 = _local2;
}
_local3++;
}
return(_local7);
}
function AddPendingBall() {
var _local6 = new Ball();
var _local4 = mCurveDesc.mNumColors;
var _local3;
if (mPendingBalls.length) {
_local3 = mPendingBalls[mPendingBalls.length - 1].mType;
} else if (mBallList.length) {
_local3 = mBallList[0].mType;
} else {
_local3 = random(_local4);
}
if (_local3 >= _local4) {
_local3 = random(_local4);
}
var _local2;
var _local5 = mCurveDesc.mMaxSingle;
if (random(100) <= mCurveDesc.mBallRepeat) {
_local2 = _local3;
} else if ((((_local5 < 10) && (GetNumPendingSingles(1) == 1)) && (_local5 == 0)) || (GetNumPendingSingles(10) > _local5)) {
_local2 = _local3;
} else {
do {
_local2 = random(_local4);
} while (_local2 == _local3);
}
_local6.SetType(_local2);
mPendingBalls.push(_local6);
}
function AddBall() {
if (mPendingBalls.length == 0) {
if ((mCurveDesc.mNumBalls == 0) && (!mStopAddingBalls)) {
AddPendingBall();
} else {
return(undefined);
}
}
var _local2 = mPendingBalls[0];
mWayPointMgr.SetWayPoint(_local2, 1);
var _local3 = null;
if (mBallList.length) {
_local3 = mBallList[0];
if ((_local2.mWayPoint > _local3.mWayPoint) || (_local2.CollidesWith(_local3, 0))) {
return(undefined);
}
}
mBoard.UpdateBallColorMap(_local2, true);
_local2.InsertInList(mBallList, 0);
_local2.UpdateCollisionInfo(5 + mAdvanceSpeed);
_local2.mNeedCheckCollision = true;
_local2.mBackwardsCount = 0;
_local2.mSuckCount = 0;
_local2.SetGapBonus(0, 0);
_local2.SetComboCount(0, 0);
mPendingBalls.shift();
}
function DrawPathSparkles(theStartPoint, theStagger, addSound) {
var _local5 = theStartPoint;
var _local7 = mWayPointMgr.mWayPoints.length;
var _local2 = theStagger;
var _local6 = (mCurveNum & 1) == 0;
var _local3 = (_local6 ? 0 : -16);
var _local8 = 8;
while (_local5 < _local7) {
var _local4 = GetPoint(_local5);
mBoard.mParticleMgr.AddSparkle(_local4.x, _local4.y, 0, 0, _local4.pri, 0, Math.round(_local2), 16776960);
if ((Math.round(_local2 - theStagger) % _local8) == 0) {
if (addSound) {
if (_local6) {
if (_local3 > -16) {
_local3--;
}
} else if (_local3 < 0) {
_local3++;
}
mBoard.mSoundMgr.AddSound("lighttrail2", Math.round(_local2), 0, _local3);
}
}
_local5 = _local5 + 8;
_local2 = _local2 + 0.333333333333;
}
_local2 = Math.round(_local2);
if (addSound) {
mBoard.mSoundMgr.AddSound("chant3", _local2, 0, 0);
}
mSpriteMgr.AddHoleFlash(mCurveNum, _local2);
return(_local2 + 20);
}
function DrawEndLevelBonus(theStagger) {
var _local10 = new FloatingTextHelper();
var _local9 = mLastClearedBallPoint;
var _local13 = mWayPointMgr.mWayPoints.length;
var _local3 = theStagger;
var _local11 = 0;
var _local14 = (_local13 - _local9) % 45;
if (_local14 != 0) {
_local9 = _local9 + _local14;
}
while (_local9 <= _local13) {
var _local8 = GetPoint(_local9);
var _local6 = _local8.x;
var _local7 = _local8.y;
var _local12 = _local8.pri;
var _local2 = 0;
while (_local2 < 3) {
var _local4 = random(21) - 10;
var _local5 = random(21) - 10;
mBoard.mParticleMgr.AddExplosion(_local6 + _local4, _local7 + _local5, 0, 0, Math.round(_local3));
_local2++;
}
_local10.Clear();
_local10.AddText("+100", mBoard.FONT_FLOAT, 16776960);
_local10.AddToMgr(mBoard.mParticleMgr, _local6, _local7, Math.round(_local3) + 3, 100);
_local9 = _local9 + 45;
_local3 = _local3 + 1.33333333333;
_local11 = _local11 + 100;
}
_local3 = Math.round(_local3);
var _local2 = theStagger + 1;
while (_local2 < _local3) {
mBoard.mSoundMgr.AddSound("endoflevelpop1", Math.round(_local2), 0, 0);
_local2 = _local2 + 3.33333333333;
}
return(_local3);
}
function AdvanceBalls() {
if (mBallList.length > 0) {
var _local11 = mDangerPoint;
var _local16 = mFirstChainEnd >= _local11;
var _local6 = mCurveDesc.mSpeed;
if (mCurveDesc.mAccelerationRate != 0) {
mCurveDesc.mCurAcceleration = mCurveDesc.mCurAcceleration + mCurveDesc.mAccelerationRate;
_local6 = _local6 + mCurveDesc.mCurAcceleration;
if (_local6 > mCurveDesc.mMaxSpeed) {
_local6 = mCurveDesc.mMaxSpeed;
}
}
if (mSlowCount) {
_local6 = _local6 / 4;
}
if (mFirstChainEnd >= (mDangerPoint - mCurveDesc.mSlowDistance)) {
if (mFirstChainEnd < mDangerPoint) {
var _local12 = (mFirstChainEnd - (mDangerPoint - mCurveDesc.mSlowDistance)) / mCurveDesc.mSlowDistance;
_local6 = ((1 - _local12) * _local6) + ((_local12 * _local6) / mCurveDesc.mSlowFactor);
} else {
_local6 = _local6 / mCurveDesc.mSlowFactor;
}
}
if (mAdvanceSpeed > _local6) {
if (GetFarthestBallPercent() > mCurveDesc.mStartDistance) {
mAdvanceSpeed = mAdvanceSpeed - 0.6;
if (mAdvanceSpeed < _local6) {
mAdvanceSpeed = _local6;
}
}
}
if (mAdvanceSpeed < _local6) {
mAdvanceSpeed = mAdvanceSpeed + 0.015;
if (mAdvanceSpeed > _local6) {
mAdvanceSpeed = _local6;
}
}
var _local2 = mBallList[0];
var _local4 = _local2.mWayPoint;
if (!mFirstBallMovedBackwards) {
if (!mStopTime) {
mWayPointMgr.SetWayPoint(_local2, _local4 + mAdvanceSpeed);
}
}
var _local5 = 0;
var _local8 = null;
var _local9 = mBallList.length - 1;
while (_local5 < _local9) {
_local2 = mBallList[_local5++];
var _local3 = mBallList[_local5];
var _local7 = _local3.mWayPoint;
_local4 = _local2.mWayPoint;
if (_local4 > (_local7 - 26)) {
mWayPointMgr.SetWayPoint(_local3, _local4 + 26);
if (!_local2.mCollidesWithNext) {
_local2.mCollidesWithNext = true;
mBoard.mSoundMgr.PlaySample("ballclick1");
}
_local2.mNeedCheckCollision = false;
}
if (_local8 == null) {
if (!_local2.mCollidesWithNext) {
_local8 = _local2;
}
}
}
if (_local8 == null) {
_local8 = mBallList[mBallList.length - 1];
}
mFirstChainEnd = _local8.mWayPoint;
var _local15 = mFirstChainEnd >= _local11;
if (_local15) {
var _local10 = mBoard.mStateCount;
var _local14 = 3 + ((133 * (mWayPointMgr.mWayPoints.length - mFirstChainEnd)) / (mWayPointMgr.mWayPoints.length - mDangerPoint));
var _local13 = mBoard.mStateCount;
if (_local13 >= mPathLightEndFrame) {
if ((_local10 - mLastPathShowTick) >= _local14) {
mBoard.mSoundMgr.PlaySample("warning1");
mLastPathShowTick = _local10;
mPathLightEndFrame = _local13 + DrawPathSparkles(mFirstChainEnd, 0, false);
}
}
}
mInDanger = mBallList[mBallList.length - 1].mWayPoint >= mDangerPoint;
}
}
function AdvanceBackwardBalls() {
mFirstBallMovedBackwards = false;
if (mBallList.length) {
var _local7 = mBallList.length - 1;
var _local5 = false;
var _local6 = 0;
if (mBackwardCount) {
mBallList[mBallList.length - 1].mBackwardsSpeed = 3;
mBallList[mBallList.length - 1].mBackwardsCount = 3;
}
while (true) {
var _local3 = mBallList[_local7];
var _local8 = _local3.mBackwardsCount;
if (_local8 > 0) {
_local6 = _local3.mBackwardsSpeed;
mWayPointMgr.SetWayPoint(_local3, _local3.mWayPoint - _local6);
_local3.mBackwardsCount = _local8 - 1;
_local5 = true;
}
if (_local7 == 0) {
break;
}
_local7--;
var _local2 = mBallList[_local7];
if (_local5) {
if (_local2.mCollidesWithNext) {
mWayPointMgr.SetWayPoint(_local2, _local2.mWayPoint - _local6);
continue;
}
var _local4 = _local3.mWayPoint - 26;
if (_local2.mWayPoint > _local4) {
_local5 = true;
if (!_local2.mCollidesWithNext) {
_local2.mCollidesWithNext = true;
mBoard.mSoundMgr.PlaySample("ballclick1");
}
_local6 = _local2.mWayPoint - _local4;
_local2.mWayPoint = _local4;
} else {
_local5 = false;
}
}
}
if (_local5) {
mFirstBallMovedBackwards = true;
if (mStopTime < 7) {
mStopTime = 7;
}
}
}
}
function ClearPendingSucks(theEndBall) {
var _local2 = theEndBall;
var _local3 = true;
for(;;){
if (_local2 == null) {
return(undefined);
}
if (_local2.mSuckPending) {
_local2.mSuckPending = false;
mBoard.ResetInARowBonus();
_local2.SetGapBonus(0, 0);
}
_local2 = _local2.GetPrevBall();
if (_local2 == null) {
return(undefined);
}
if (!_local2.mCollidesWithNext) {
_local3 = false;
}
if (!_local3) {
if (_local2.mSuckCount) {
return(undefined);
}
}
};
}
function UpdateSuckingBalls() {
var _local6 = 0;
for(;;){
if (_local6 == mBallList.length) {
return(undefined);
}
var _local3 = mBallList[_local6];
var _local9 = _local3.mSuckCount;
if (_local3.mSuckCount > 0) {
var _local2;
do {
if (_local6 == mBallList.length) {
break;
}
_local2 = mBallList[_local6++];
_local2.mSuckCount = 0;
mWayPointMgr.SetWayPoint(_local2, _local2.mWayPoint - ((_local9 >> 3) * 3));
var _local4 = _local2.mBullet;
if (_local4 != null) {
var _local5 = _local4.GetPushBall();
if (_local5 != null) {
mWayPointMgr.FindFreeWayPoint(_local5, _local4, false, 0);
}
_local4.UpdateHitPos();
}
} while (_local2.mCollidesWithNext);
var _local7 = _local2;
_local3.mSuckCount = _local9 + 1;
var _local8 = _local3.GetPrevBall();
if (_local8 == null) {
_local3.mSuckCount = 0;
} else {
var _local11 = _local3.mWayPoint - 26;
if (_local8.mWayPoint > _local11) {
mWayPointMgr.SetWayPoint(_local8, _local11);
mBoard.mSoundMgr.PlaySample("ballclick1");
_local8.mCollidesWithNext = true;
_local3.mSuckCount = 0;
if (!CheckSet(_local3)) {
_local3.SetComboCount(0, 0);
}
if (_local7.mBackwardsCount == 0) {
_local7.mBackwardsCount = 10;
var _local10 = _local3.mComboCount * 4.5;
if (_local10 <= 1.5) {
_local10 = 1.5;
}
_local7.mBackwardsSpeed = _local10;
}
ClearPendingSucks(_local7);
}
}
} else {
_local6++;
}
};
}
function UpdateSets() {
mHaveSets = false;
var _local5 = 0;
for(;;){
if (_local5 == mBallList.length) {
return(undefined);
}
var _local2 = mBallList[_local5];
var _local6 = _local2.mClearCount;
if (_local6 > 0) {
mHaveSets = true;
}
if (_local6 >= 13) {
var _local4 = _local2.GetNextBall();
var _local7 = _local2.GetPrevBall();
if (_local4 != null) {
if (_local4.mClearCount == 0) {
if (_local7 != null) {
if (_local4.mType == _local7.mType) {
_local4.mSuckCount = 10;
_local4.SetComboCount(_local2.mComboCount + 1, _local2.mComboScore);
}
}
}
}
if (_local5 == 0) {
mAdvanceSpeed = 0;
if (mStopTime < 13) {
mStopTime = 13;
}
}
DeleteBall(_local2);
mBallList.splice(_local5, 1);
var _local3 = _local5;
while (_local3 < mBallList.length) {
mBallList[_local3].mListItr--;
_local3++;
}
} else {
if (_local6 > 0) {
_local2.mClearCount = _local6 + 1;
}
_local5++;
}
};
}
function RemoveBallsAtFront() {
var _local3 = 0;
while (if (_local3 == mBallList.length) {
return(undefined)}
, var _local2 = mBallList[_local3] , _local2.mWayPoint < 1) {
_local3++;
DeleteBullet(_local2.mBullet);
_local2.RemoveFromList();
if (_local2.mClearCount == 0) {
mBoard.UpdateBallColorMap(_local2, false);
}
if ((_local2.mClearCount == 0) && (!mStopAddingBalls)) {
_local2.mc.removeMovieClip();
delete _local2.mc;
mPendingBalls.unshift(_local2);
} else {
DeleteBall(_local2);
}
}
return(undefined);
// unexpected jump
}
function AdvanceMergingBullet(theBulletItr) {
var _local2 = mBulletList[theBulletItr];
_local2.CheckSetHitBallToPrevBall();
var _local9 = _local2.mHitBall;
mWayPointMgr.SetWayPoint(_local2, _local9.mWayPoint);
mWayPointMgr.FindFreeWayPoint(_local9, _local2, _local2.mHitInFront, 0);
_local2.SetDestPos(_local2.mx, _local2.my);
_local2.Update();
var _local7 = _local2.GetPushBall();
if (_local7 != null) {
var _local18 = 1 - _local2.mHitPercent;
var _local16 = int((-13 * _local18) / 2);
var _local13 = _local7.mWayPoint;
var _local12 = (_local2.mHitPercent * _local2.mHitPercent) * 26;
mWayPointMgr.FindFreeWayPoint(_local2, _local2.GetPushBall(), true, _local16);
if ((_local7.mWayPoint - _local2.mWayPoint) > _local12) {
var _local14 = _local2.mWayPoint + _local12;
if (_local14 > _local13) {
mWayPointMgr.SetWayPoint(_local7, _local14);
} else {
mWayPointMgr.SetWayPoint(_local7, _local13);
}
}
_local7.mNeedCheckCollision = true;
}
if (_local2.mHitPercent >= 1) {
var _local11 = _local9.mListItr;
var _local19 = _local2.mHitInFront;
if (_local19) {
_local11++;
}
var _local3 = new Ball();
_local3.SetType(_local2.mType);
_local3.SetPowerType(_local2.mPowerType, false);
mWayPointMgr.SetWayPoint(_local3, _local2.mWayPoint);
_local3.InsertInList(mBallList, _local11);
mBoard.UpdateBallColorMap(_local3, true);
var _local6 = _local2.GetMinGapDist();
var _local15 = _local2.mNumGaps;
_local2.Delete();
mBulletList.splice(theBulletItr, 1);
mTotalBalls++;
var _local5 = _local3.GetPrevBall();
var _local8 = _local3.GetNextBall();
_local3.UpdateCollisionInfo(5);
_local3.mNeedCheckCollision = true;
if (_local5 != null) {
if (_local3.GetCollidesWithPrev()) {
_local5.mNeedCheckCollision = true;
}
}
if (_local6 > 0) {
_local6 = _local6 - 52;
if (_local6 < 0) {
_local6 = 0;
}
var _local17 = 500;
var _local4 = int((_local17 * (MAX_GAP_SIZE - _local6)) / MAX_GAP_SIZE);
_local4 = int(_local4 / 10) * 10;
if (_local4 < 10) {
_local4 = 10;
}
if (_local4 > 0) {
if (_local15 > 1) {
_local4 = _local4 * 2;
}
_local3.SetGapBonus(_local4, _local15);
}
}
mBoard.mNumClearsInARow++;
if (!CheckSet(_local3)) {
mBoard.mNumClearsInARow--;
if (((((_local5 != null) && (!_local5.mCollidesWithNext)) && (_local5.mType == _local3.mType)) && (_local5.mBullet == null)) && (_local5.mClearCount == 0)) {
_local3.mSuckPending = true;
_local3.mSuckCount = 1;
} else if (((((_local8 != null) && (!_local3.mCollidesWithNext)) && (_local8.mType == _local3.mType)) && (_local8.mBullet == null)) && (_local8.mClearCount == 0)) {
_local3.mSuckPending = true;
if (_local8.mSuckCount <= 0) {
_local8.mSuckCount = 1;
}
} else {
mBoard.ResetInARowBonus();
_local3.SetGapBonus(0, 0);
}
}
} else {
theBulletItr++;
}
return(theBulletItr);
}
function CheckCollision(theBullet) {
var _local3 = theBullet;
var _local2 = null;
var _local12 = false;
var _local7;
var _local5;
_local5 = 0;
while (_local5 < mBulletList.length) {
_local3 = mBulletList[_local5];
if (theBullet.CollidesWithPhysically(_local3, 0)) {
_local3.Update();
AdvanceMergingBullet(_local5);
break;
}
_local5++;
}
_local7 = 0;
while (_local7 < mBallList.length) {
_local2 = mBallList[_local7];
if (_local2.CollidesWithPhysically(_local3, 0)) {
if (_local2.mBullet == null) {
if (_local2.mClearCount == 0) {
var _local6 = _local2.GetPrevBall(true);
if ((_local6 == null) || (_local6.mBullet == null)) {
var _local4 = _local2.GetNextBall(true);
if ((_local4 == null) || (_local4.mBullet == null)) {
var _local11 = new SexyVector3(_local2.mx, _local2.my, 0);
var _local10 = new SexyVector3(_local3.mx, _local3.my, 0);
var _local8 = mWayPointMgr.CalcPerpendicular(_local2.mWayPoint);
var _local9 = _local10.Sub(_local11).Cross(_local8);
_local12 = _local9.z < 0;
if (!mWayPointMgr.InTunnelBall(_local2, _local12)) {
break;
}
}
}
}
}
}
_local7++;
}
if (_local7 != mBallList.length) {
_local3.SetHitBall(_local2, _local12);
_local3.mMergeSpeed = mCurveDesc.mMergeSpeed;
var _local4 = _local2.GetNextBall();
if (_local12) {
if (_local4 != null) {
_local3.RemoveGapInfoForBall(_local4.mId);
}
} else {
_local3.RemoveGapInfoForBall(_local2.mId);
}
mBoard.mSoundMgr.PlaySample("ballclick2");
mBulletList.push(_local3);
return(true);
}
return(false);
}
function CheckGapShot(theBullet) {
var _local17 = 26;
var _local16 = 169;
var _local14 = theBullet.mx;
var _local15 = theBullet.my;
var _local12 = mWayPointMgr.mWayPoints;
var _local13 = _local12.length;
var _local18 = theBullet.mCurCurvePoint[mCurveNum];
if (_local18 > 0) {
if (_local18 < _local13) {
var _local8 = _local12[_local18];
var _local10 = _local8.x - _local14;
var _local9 = _local8.y - _local15;
if (((_local10 * _local10) + (_local9 * _local9)) < _local16) {
return(false);
}
theBullet.SetCurCurvePoint(mCurveNum, 0);
}
}
var _local5 = 1;
while (_local5 < _local13) {
var _local8 = _local12[_local5];
if (!_local8.mInTunnel) {
var _local10 = _local8.x - _local14;
var _local9 = _local8.y - _local15;
if (((_local10 * _local10) + (_local9 * _local9)) < _local16) {
theBullet.SetCurCurvePoint(mCurveNum, _local5);
var _local6 = 0;
var _local7 = 0;
var _local4 = 0;
while (_local4 < mBallList.length) {
var _local2 = mBallList[_local4];
if (_local2.mWayPoint > _local5) {
var _local3 = _local2.GetPrevBall();
if (_local3 != null) {
_local6 = _local2.mWayPoint - _local3.mWayPoint;
_local7 = _local2.mId;
}
break;
}
_local4++;
}
if (_local6 > 0) {
return(theBullet.AddGapInfo(mCurveNum, _local6, _local7));
}
return(false);
}
}
_local5 = _local5 + _local17;
}
return(false);
}
function IsLosing() {
if ((((mHaveSets || (mBallList.length == 0)) || (mBallList[mBallList.length - 1].mWayPoint < (mWayPointMgr.mWayPoints.length - 1))) || (mBulletList.length > 0)) || (mBackwardCount > 0)) {
return(false);
}
var _local2 = mBallList[mBallList.length - 1];
while (_local2 != null) {
if (_local2.mSuckCount > 0) {
return(false);
}
_local2 = _local2.GetPrevBall(true);
}
return(true);
}
function IsWinning() {
return((mBallList.length == 0) && (mPendingBalls.length == 0));
}
function CanRestart() {
return(mBallList.length == 0);
}
function HasReachedCruisingSpeed() {
return((mAdvanceSpeed - mCurveDesc.mSpeed) < 0.3);
}
function CanFire() {
if (mBallList.length == 0) {
return(true);
}
return(mBallList[mBallList.length - 1].mWayPoint < (mWayPointMgr.mWayPoints.length - 1));
}
function AdvanceBullets() {
var _local2 = 0;
for(;;){
if (_local2 == mBulletList.length) {
return(undefined);
}
_local2 = AdvanceMergingBullet(_local2);
};
}
function AddPowerUp(thePower) {
var _local4 = random(mBallList.length);
var _local3 = mBallList[_local4];
if (_local3.mPowerType == _global.PowerType_None) {
if (_local3.mDestPowerType == _global.PowerType_None) {
_local3.SetPowerType(thePower, true);
}
}
}
function UpdatePlaying() {
var _local7 = (mBallList.length == 0) || (mBallList[mBallList.length - 1].mWayPoint < 50);
if (mStopTime > 0) {
mStopTime--;
if (_local7) {
mStopTime = 0;
}
if (mStopTime == 0) {
mAdvanceSpeed = 0;
}
}
if (mSlowCount > 0) {
mSlowCount--;
if (_local7) {
mSlowCount = 0;
}
}
if (mBackwardCount > 0) {
mBackwardCount--;
if (_local7) {
mBackwardCount = 0;
}
}
AddBall();
var _local3 = 0;
while (_local3 < mBallList.length) {
mBallList[_local3].UpdateRotation();
_local3++;
}
_local3 = 0;
while (_local3 < mBulletList.length) {
mBulletList[_local3].UpdateRotation();
_local3++;
}
AdvanceBullets();
UpdateSuckingBalls();
AdvanceBalls();
AdvanceBackwardBalls();
RemoveBallsAtFront();
UpdateSets();
if ((mBoard.mStateCount + mCurveNum) % 2) {
if (mBallList.length > 0) {
SetFarthestBall(mBallList[mBallList.length - 1].mWayPoint);
} else {
SetFarthestBall(0);
}
return(undefined);
}
if (mBallList.length) {
var _local6 = mBoard.mStateCount;
var _local4 = 0;
for(;;){
if (_local4 >= _global.PowerType_Max) {
return(undefined);
}
var _local5 = mCurveDesc.mPowerUpFreq[_local4];
if (random(_local5) < 2) {
if ((_local6 - mLastPowerUpFrame[_local4]) > _local5) {
if (_local5 > 0) {
AddPowerUp(_local4);
mLastPowerUpFrame[_local4] = _local6;
}
}
}
_local4++;
};
}
}
function UpdateLosing() {
var _local4 = 0;
var _local6 = mWayPointMgr.mWayPoints.length - 1;
var _local7 = false;
while (_local4 < mBallList.length) {
_local7 = true;
var _local2 = mBallList[_local4];
if (_local2.mWayPoint >= _local6) {
var _local5 = _local2.mSuckCount;
if (_local5 < 0) {
_local2.mSuckCount = _local5 + 1;
} else {
_local2.Delete();
mBallList.splice(_local4, 1);
var _local3 = _local4;
while (_local3 < mBallList.length) {
mBallList[_local3].mListItr--;
_local3++;
}
_local4++;
continue;
}
} else {
mWayPointMgr.SetWayPoint(_local2, _local2.mWayPoint + ((_local2.mSuckCount >> 2) * 3));
_local2.mSuckCount = _local2.mSuckCount + 1;
if (_local2.mWayPoint >= _local6) {
_local2.mSuckCount = 0;
}
}
_local4++;
}
if (mBallList.length > 0) {
SetFarthestBall(mBallList[mBallList.length - 1].mWayPoint);
}
}
function SetFarthestBall(thePoint) {
var _local2 = mDangerPoint;
if (_local2 < 0) {
_local2 = 0;
}
var _local3 = 0;
if (thePoint >= _local2) {
_local3 = (thePoint - _local2) / (mWayPointMgr.mWayPoints.length - _local2);
}
mSpriteMgr.UpdateHole(mCurveNum, _local3);
}
function DrawBalls() {
var _local4 = mBallList.length;
if (!mBoard.mLevelHasTunnels) {
if ((_local4 % 2) == 0) {
__reg3 = 0;
while (__reg3 < _local4) {
mBallList[__reg3].Draw();
mBallList[__reg3 + 1].Draw();
__reg3 = __reg3 + 2;
}
} else {
var __reg3 = 0;
while (__reg3 < _local4) {
mBallList[__reg3].Draw();
__reg3++;
}
}
return(undefined);
}
__reg3 = 0;
for(;;){
if (__reg3 >= _local4) {
return(undefined);
}
mBallList[__reg3].Draw();
if (mBoard.mStateCount % 2) {
if (mWayPointMgr.InTunnel(mBallList[__reg3].mWayPoint - 20) || (mWayPointMgr.InTunnel(mBallList[__reg3].mWayPoint + 20))) {
if (mBallList[__reg3].mc.getDepth() > 1000) {
var _local3 = 1;
while (_root.screenMC.ballsMC.getInstanceAtDepth(_local3) != undefined) {
_local3++;
}
mBallList[__reg3].mc.swapDepths(_local3);
}
} else if (mBallList[__reg3].mc.getDepth() < 1000) {
mBallList[__reg3].mc.swapDepths(_root.screenMC.ballsMC.getNextHighestDepth());
}
}
__reg3++;
};
}
static var MAX_GAP_SIZE = 300;
}
Symbol 1163 MovieClip [__Packages.WayPointMgr] Frame 0
class WayPointMgr
{
var mCurvePath, mWayPoints;
function WayPointMgr () {
}
function LoadCurve(theFile) {
if (mCurvePath == theFile) {
return(true);
}
mCurvePath = theFile;
mWayPoints = [];
var _local11 = new CurveData();
if (!_local11.Load(theFile)) {
return(false);
}
var _local9 = 0;
var _local10 = 0;
var _local8 = false;
var _local7 = _local11.mPointList;
var _local6 = 0;
while (_local6 < _local7.length) {
var _local2 = _local7[_local6];
var _local4 = _local2.x;
var _local5 = _local2.y;
if (((((!_local8) && (_local4 >= 0)) && (_local5 >= 0)) && (_local4 <= Stage.width)) && (_local5 <= Stage.height)) {
_local9 = _local4;
_local10 = _local5;
_local8 = true;
}
mWayPoints.push(new WayPoint(_local2.x, _local2.y));
mWayPoints[mWayPoints.length - 1].mInTunnel = _local2.mInTunnel;
var _local3 = _local2.mPriority;
if (_local3 < 0) {
_local3 = 0;
}
if (_local3 >= 5) {
_local3 = 4;
}
mWayPoints[mWayPoints.length - 1].mPriority = _local3;
_local6++;
}
return(true);
}
function GetPriority(thePoint) {
if ((thePoint < 0) || (thePoint >= mWayPoints.length)) {
return(0);
}
return(mWayPoints[thePoint].mPriority);
}
function GetPriorityBall(theBall) {
var _local2 = GetPriority(theBall.mWayPoint - 13);
var _local3 = GetPriority(theBall.mWayPoint + 13);
return(Math.max(_local2, _local3));
}
function GetPriorityBullet(theBullet) {
if ((theBullet.mWayPoint == 0) || (theBullet.GetHitPercent() < 0.7)) {
return(MAX_PRIORITY - 1);
}
return(GetPriorityBall(theBullet));
}
function SetWayPoint(theBall, thePoint) {
var _local2 = int(thePoint);
if (_local2 < 0) {
_local2 = 0;
} else if (_local2 >= mWayPoints.length) {
_local2 = mWayPoints.length - 1;
}
var _local3 = mWayPoints[_local2];
if ((_local2 + 1) < mWayPoints.length) {
__reg4 = mWayPoints[_local2 + 1];
} else {
var __reg4 = _local3;
}
var _local4 = thePoint - _local2;
theBall.SetPos((_local4 * (__reg4.x - _local3.x)) + _local3.x, (_local4 * (__reg4.y - _local3.y)) + _local3.y);
theBall.mWayPoint = thePoint;
}
function FindFreeWayPoint(theExistingBall, theNewBall, inFront, thePad) {
var _local5 = (inFront ? 1 : -1);
var _local2 = int(theExistingBall.mWayPoint);
if (inFront && (theNewBall.mWayPoint > _local2)) {
_local2 = int(theNewBall.mWayPoint);
} else if (!inFront) {
if (theNewBall.mWayPoint < _local2) {
_local2 = int(theNewBall.mWayPoint);
}
}
var _local3 = null;
while ((_local2 >= 0) && (_local2 < mWayPoints.length)) {
_local3 = mWayPoints[_local2];
theNewBall.SetPos(_local3.x, _local3.y);
if (!theExistingBall.CollidesWithPhysically(theNewBall, thePad)) {
break;
}
_local2 = _local2 + _local5;
}
SetWayPoint(theNewBall, _local2);
}
function CalcPerpendicular(theWayPoint) {
var _local2 = int(theWayPoint);
if (_local2 < 0) {
_local2 = 0;
}
if (_local2 >= mWayPoints.length) {
_local2 = mWayPoints.length - 1;
}
var _local3 = mWayPoints[_local2];
CalcPerpendicularForPoint(_local2);
return(_local3.mPerpendicular);
}
function CalcPerpendicularForPoint(theWayPoint) {
var _local2 = mWayPoints[theWayPoint];
if (_local2.mHavePerpendicular) {
return(undefined);
}
var _local3 = _local2;
if ((theWayPoint + 1) < mWayPoints.length) {
_local3 = mWayPoints[theWayPoint + 1];
} else {
_local3 = mWayPoints[theWayPoint - 1];
}
_local2.mPerpendicular = new SexyVector3(_local3.y - _local2.y, _local2.x - _local3.x, 0).Normalize();
_local2.mHavePerpendicular = true;
}
function InTunnel(theWayPoint) {
if (theWayPoint < 0) {
return(true);
}
if (theWayPoint >= mWayPoints.length) {
return(false);
}
return(mWayPoints[int(theWayPoint)].mInTunnel);
}
function InTunnelBall(theBall, inFront) {
var _local2 = theBall.mWayPoint;
if (inFront) {
_local2 = _local2 + 13;
} else {
_local2 = _local2 - 13;
}
if (InTunnel(_local2)) {
return(true);
}
return(false);
}
function InTunnelBullet(theBullet) {
var _local3 = theBullet.GetHitBall();
if (_local3 == null) {
return(false);
}
var _local2 = _local3.mWayPoint;
if (theBullet.GetHitInFront()) {
_local2 = _local2 + 39;
} else {
_local2 = _local2 - 39;
}
return(InTunnel(_local2));
}
static var MAX_PRIORITY = 5;
}
Symbol 1164 MovieClip [__Packages.CurveData] Frame 0
class CurveData
{
var mPointList, mEditType, mErrorString;
function CurveData () {
}
function Clear() {
mPointList = [];
mEditType = 0;
}
function Fail(theString) {
mErrorString = theString;
return(false);
}
function Load(theFilePath) {
Clear();
var _local6 = theFilePath;
var _local7 = _root.posX[_local6][0];
var _local8 = _root.posY[_local6][0];
mPointList.push(new PathPoint(_local7, _local8, _root.inTunnel[_local6][0]));
var _local5 = 1;
while (_local5 < _root.posX[_local6].length) {
var _local3 = _root.posX[_local6][_local5];
var _local4 = _root.posY[_local6][_local5];
if (_local3 > 127) {
_local3 = _local3 - 256;
}
if (_local4 > 127) {
_local4 = _local4 - 256;
}
_local7 = _local7 + (_local3 * 0.01);
_local8 = _local8 + (_local4 * 0.01);
mPointList.push(new PathPoint(_local7, _local8, _root.inTunnel[_local6][_local5]));
_local5++;
}
return(true);
}
}
Symbol 1165 MovieClip [__Packages.PathPoint] Frame 0
class PathPoint
{
var x, y, mInTunnel, mPriority;
function PathPoint (tx, ty, inT) {
x = tx;
y = ty;
mInTunnel = inT;
mPriority = 0;
}
}
Symbol 1166 MovieClip [__Packages.WayPoint] Frame 0
class WayPoint
{
var x, y, mHavePerpendicular, mInTunnel, mPriority;
function WayPoint (tx, ty) {
x = tx;
y = ty;
mHavePerpendicular = false;
mInTunnel = false;
mPriority = 0;
}
}
Symbol 1167 MovieClip [__Packages.SexyVector3] Frame 0
class SexyVector3
{
var x, y, z;
function SexyVector3 (theX, theY, theZ) {
x = theX;
y = theY;
z = theZ;
}
function Dot(v) {
return(((x * v.x) + (y * v.y)) + (z * v.z));
}
function Cross(v) {
return(new SexyVector3((y * v.z) - (z * v.y), (z * v.x) - (x * v.z), (x * v.y) - (y * v.x)));
}
function Add(v) {
return(new SexyVector3(x + v.x, y + v.y, z + v.z));
}
function Sub(v) {
return(new SexyVector3(x - v.x, y - v.y, z - v.z));
}
function Mult(t) {
return(new SexyVector3(t * x, t * y, t * z));
}
function Div(t) {
return(new SexyVector3(x / t, y / t, z / t));
}
function Magnitude() {
return(Math.sqrt(((x * x) + (y * y)) + (z * z)));
}
function Normalize() {
var _local2 = Magnitude();
return(((_local2 == 0) ? this : (Div(_local2))));
}
}
Symbol 1168 MovieClip [__Packages.FloatingTextHelper] Frame 0
class FloatingTextHelper
{
var mText;
function FloatingTextHelper () {
mText = new Array();
}
function AddText(theString, theFont, theColor) {
mText.push(new TextDesc(theString, theFont, theFont.GetStringWidth(theString), 16, theColor));
}
function AddToMgr(theMgr, x, y, theStagger, theScoreInc) {
if (theStagger == undefined) {
theStagger = 0;
}
if (theScoreInc == undefined) {
theScoreInc = 0;
}
if (mText.length != 0) {
var _local5 = 0;
var _local6 = 0;
var _local2 = 0;
while (_local2 < mText.length) {
if (mText[_local2].mWidth > _local5) {
_local5 = mText[_local2].mWidth;
}
_local6 = _local6 + mText[_local2].mHeight;
_local2++;
}
x = x - (_local5 / 2);
y = y + (_local6 / 2);
if ((x + _local5) > 450) {
x = 450 - _local5;
}
if ((y + _local6) > 330) {
y = 330 - _local6;
}
if (y < 100) {
y = 100;
}
if (x < 40) {
x = 40;
}
_local2 = 0;
for(;;){
if (_local2 >= mText.length) {
return(undefined);
}
var _local3 = mText[_local2];
theMgr.AddFloatingText(x + ((_local5 - _local3.mWidth) / 2), y, _local3.mColor, _local3.mString, _local3.mFont, theStagger, theScoreInc);
y = y + _local3.mHeight;
_local2++;
};
}
}
function Clear() {
mText = [];
}
}
Symbol 1169 MovieClip [__Packages.TextDesc] Frame 0
class TextDesc
{
var mString, mFont, mWidth, mHeight, mColor;
function TextDesc (theString, theFont, theWidth, theHeight, theColor) {
mString = theString;
mFont = theFont;
mWidth = theWidth;
mHeight = theHeight;
mColor = theColor;
}
}
Symbol 1170 MovieClip [__Packages.SpriteMgr] Frame 0
class SpriteMgr
{
var mHoleFlashList, mHoleMappings, mHoleInfo, mNumHoles, mUpdateCnt;
function SpriteMgr () {
mHoleFlashList = new Array();
mHoleMappings = new Array(3);
mHoleInfo = new Array(3);
mNumHoles = 0;
}
function PlaceHole(theCurveNum, theX, theY, theRotation) {
while (theRotation < 0) {
theRotation = theRotation + 6.28318530718;
}
while (theRotation > 6.28318530718) {
theRotation = theRotation - 6.28318530718;
}
if (Math.abs(theRotation) < 0.2) {
theRotation = 0;
} else if (Math.abs(theRotation - 1.57079632679) < 0.2) {
theRotation = 1.57079632679;
} else if (Math.abs(theRotation - 3.14159265359) < 0.2) {
theRotation = 3.14159265359;
} else if (Math.abs(theRotation - 4.71238898038) < 0.2) {
theRotation = 4.71238898038;
} else if (Math.abs(theRotation - 6.28318530718) < 0.2) {
theRotation = 0;
}
var _local5 = 0;
while (_local5 < mNumHoles) {
var _local2 = mHoleInfo[_local5];
if ((((_local2.mx - theX) * (_local2.mx - theX)) + ((_local2.my - theY) * (_local2.my - theY))) < 400) {
break;
}
_local5++;
}
if (_local5 == mNumHoles) {
if (mHoleInfo[_local5].mc) {
mHoleInfo[_local5].mc.removeMovieClip();
}
var _local2 = new HoleInfo();
mHoleInfo[_local5] = _local2;
_local2.mx = theX;
_local2.my = theY;
_local2.mTotalBrightness = 0;
_local2.mRotation = theRotation;
var _local4 = 0;
while (_local4 < 3) {
_local2.mPercentOpen[_local4] = 0;
_local2.mBrightness[_local4] = 0;
_local4++;
}
mNumHoles++;
}
mHoleMappings[theCurveNum] = _local5;
}
function AddHoleFlash(theCurveNum, theStagger) {
mHoleFlashList.push(new HoleFlash(theCurveNum, -theStagger));
}
function ClearHoleFlashes() {
mHoleFlashList = [];
var _local4 = 0;
for(;;){
if (_local4 >= 3) {
return(undefined);
}
var _local3 = mHoleInfo[_local4];
var _local2 = 0;
while (_local2 < 3) {
_local3.mBrightness[_local2] = 0;
_local2++;
}
_local3.mTotalBrightness = 0;
UpdateHoleBrightness(_local4, 0);
_local4++;
};
}
function UpdateHole(theCurveNum, thePercentOpen) {
var _local4 = mHoleInfo[mHoleMappings[theCurveNum]];
_local4.mPercentOpen[theCurveNum] = thePercentOpen;
var _local3 = thePercentOpen;
var _local2 = 0;
while (_local2 < 3) {
if (_local4.mPercentOpen[_local2] > _local3) {
_local3 = _local4.mPercentOpen[_local2];
}
_local2++;
}
if (_local3 > 1) {
_local3 = 1;
}
_local4.mc.skullAnimMC.gotoAndStop(1 + Math.round(100 * _local3));
}
function UpdateHoles() {
var _local4 = 0;
for(;;){
if (_local4 >= mHoleFlashList.length) {
return(undefined);
}
var _local3 = mHoleFlashList[_local4];
_local3.mUpdateCount++;
if (_local3.mUpdateCount >= 0) {
var _local2 = _local3.mUpdateCount;
var _local5 = false;
if (_local2 < 10) {
_local2 = Math.round((128 * _local2) / 10);
} else if (_local2 < 20) {
_local2 = Math.round((128 * (20 - _local2)) / 10);
} else {
_local2 = 0;
_local5 = true;
}
UpdateHoleBrightness(_local3.mCurveNum, _local2);
if (_local5) {
mHoleFlashList.splice(_local4, 1);
// unexpected jump
}
} else {
_local4++;
}
};
}
function UpdateHoleBrightness(theCurveNum, theBrightness) {
var _local3 = mHoleInfo[mHoleMappings[theCurveNum]];
if (_local3 != undefined) {
_local3.mBrightness[theCurveNum] = theBrightness;
var _local4 = theBrightness;
var _local2 = 0;
while (_local2 < 3) {
if (_local3.mBrightness[_local2] > _local4) {
_local4 = _local3.mBrightness[_local2];
}
_local2++;
}
_local3.mTotalBrightness = _local4;
var _local6 = new Color(_local3.mc.skullAnimMC);
var _local5 = _local6.getTransform();
_local5.rb = (_local5.gb = (_local5.bb = _local3.mTotalBrightness));
_local6.setTransform(_local5);
}
}
function Update() {
mUpdateCnt++;
UpdateHoles();
}
function SetupLevel(theLevel) {
mNumHoles = 0;
mUpdateCnt = 0;
mHoleFlashList = [];
trace("Setting background to: " + theLevel.mImagePath);
if (theLevel.mImagePath.length) {
_root.screenMC.backMC.gotoAndStop(theLevel.mImagePath);
}
}
}
Symbol 1171 MovieClip [__Packages.HoleInfo] Frame 0
class HoleInfo
{
var mPercentOpen, mBrightness;
function HoleInfo () {
mPercentOpen = new Array(3);
mBrightness = new Array(3);
}
}
Symbol 1172 MovieClip [__Packages.HoleFlash] Frame 0
class HoleFlash
{
var mCurveNum, mUpdateCount;
function HoleFlash (theCurveNum, theUpdateCount) {
mCurveNum = theCurveNum;
mUpdateCount = theUpdateCount;
}
}
Symbol 1173 MovieClip [__Packages.ParticleMgr] Frame 0
class ParticleMgr
{
var mBoard, mSparkleList, mExplosionList, mFloatingTextList;
function ParticleMgr (theBoard) {
mBoard = theBoard;
mSparkleList = new Array([], [], [], [], []);
mExplosionList = new Array();
mFloatingTextList = new Array();
}
function Clear() {
var _local4 = 0;
while (_local4 < mSparkleList.length) {
var _local2 = 0;
while (_local2 < mSparkleList[_local4].length) {
mSparkleList[_local4][_local2].Delete();
_local2++;
}
_local4++;
}
mSparkleList = new Array([], [], [], [], []);
var _local3 = 0;
while (_local3 < mExplosionList.length) {
mExplosionList[_local3].Delete();
_local3++;
}
mExplosionList = [];
_local3 = 0;
while (_local3 < mFloatingTextList.length) {
mFloatingTextList[_local3].Delete();
_local3++;
}
mFloatingTextList = [];
}
function AddSparkle(x, y, vx, vy, thePriority, theDuration, theStagger, theColor) {
var _local2 = new Sparkle();
_local2.x = x;
_local2.y = y;
_local2.vx = vx;
_local2.vy = vy;
if (theDuration == 0) {
_local2.mDuration = 7;
} else {
_local2.mDuration = theDuration;
}
_local2.mFrame = 0;
_local2.mUpdateCnt = -theStagger;
_local2.mColor = theColor;
mSparkleList[thePriority].push(_local2);
}
function AddExplosion(x, y, theRadius, theColor, theStagger) {
if (x > 0) {
if (y > 20) {
if (x < 480) {
if (y < 360) {
mExplosionList.push(new Explosion(x, y, theRadius, theColor, -theStagger));
}
}
}
}
}
function AddFloatingText(x, y, theColor, theText, theFont, theStagger, theScoreInc) {
if (theStagger == undefined) {
theStagger = 0;
}
if (theScoreInc == undefined) {
theScoreInc = 0;
}
mFloatingTextList.push(new FloatingText(x, y, -theStagger, theColor, theText, theFont, theScoreInc));
}
function UpdateSparkles() {
var _local8 = [_root.screenMC.backMC, _root.screenMC.backMC, _root.screenMC.backMC, _root.screenMC.backMC, _root.screenMC];
var _local7 = 0;
for(;;){
if (_local7 >= mSparkleList.length) {
return(undefined);
}
var _local5 = mSparkleList[_local7];
var _local4 = 0;
while (_local4 < _local5.length) {
var _local3 = _local5[_local4];
if ((++_local3.mUpdateCnt) >= 0) {
if (_local3.mUpdateCnt >= _local3.mDuration) {
_local5[_local4].mc.removeMovieClip();
_local5.splice(_local4, 1);
} else {
if (_local3.mUpdateCnt == 1) {
var _local6 = _local8[_local7].getNextHighestDepth();
_local3.mc = _local8[_local7].attachMovie("sparkleMC", _local6.toString(), _local6);
_local3.mc.shouldPause = true;
new Color(_local3.mc).setRGB(_local3.mColor);
} else {
_local3.mc.gotoAndStop(Math.round((_local3.mUpdateCnt * 15) / _local3.mDuration));
}
_local3.x = _local3.x + _local3.vx;
_local3.y = _local3.y + _local3.vy;
_local3.mc._x = _local3.x;
_local3.mc._y = _local3.y;
_local4++;
}
} else {
_local4++;
}
}
_local7++;
};
}
function UpdateExplosions() {
var _local4 = 0;
for(;;){
if (_local4 >= mExplosionList.length) {
return(undefined);
}
var _local3 = mExplosionList[_local4];
var _local6 = ++_local3.mUpdateCnt;
if (_local6 < 0) {
_local4++;
} else {
mExplosionList[_local4].Delete();
mExplosionList.splice(_local4, 1);
var _local5 = _root.screenMC.particleMC.getNextHighestDepth();
_local3.mc = _root.screenMC.particleMC.attachMovie("explosionMC", _local5.toString(), _local5);
_local3.mc._x = _local3.x;
_local3.mc._y = _local3.y;
_local3.mCurRadius = _local3.mRadius;
}
};
}
function UpdateFloatingText() {
var _local3 = 0;
for(;;){
if (_local3 >= mFloatingTextList.length) {
return(undefined);
}
var _local2 = mFloatingTextList[_local3];
var _local4 = ++_local2.mUpdateCnt;
if (_local4 == 1) {
if (_local2.mScoreInc > 0) {
mBoard.IncScore(_local2.mScoreInc, true);
}
}
if (_local4 < 0) {
_local3++;
} else if ((_local4 > 33) || (_local2.y < 28)) {
mFloatingTextList[_local3].Delete();
mFloatingTextList.splice(_local3, 1);
} else {
_local2.mc._visible = true;
_local2.y = _local2.y - 3;
_local3++;
}
_local2.mc._y = Math.round(_local2.y);
};
}
function Update() {
UpdateSparkles();
UpdateExplosions();
UpdateFloatingText();
}
}
Symbol 1174 MovieClip [__Packages.Sparkle] Frame 0
class Sparkle
{
var mc;
function Sparkle () {
}
function Delete() {
mc.removeMovieClip();
delete mc;
}
}
Symbol 1175 MovieClip [__Packages.Explosion] Frame 0
class Explosion
{
var x, y, mRadius, mColor, mUpdateCnt, mc;
function Explosion (theX, theY, theRadius, theColor, theUpdateCnt) {
x = theX;
y = theY;
mRadius = theRadius;
mColor = theColor;
mUpdateCnt = theUpdateCnt;
}
function Delete() {
mc.removeMovieClip();
delete mc;
}
}
Symbol 1176 MovieClip [__Packages.FloatingText] Frame 0
class FloatingText
{
var x, y, mUpdateCnt, mColor, mText, mFont, mScoreInc, mc;
function FloatingText (theX, theY, theUpdateCnt, theColor, theText, theFont, theScoreInc) {
x = theX;
y = theY;
mUpdateCnt = theUpdateCnt;
mColor = theColor;
mText = theText;
mFont = theFont;
mScoreInc = theScoreInc;
var _local5 = _root.screenMC.particleMC.getNextHighestDepth();
mc = _root.screenMC.particleMC.createEmptyMovieClip(_local5.toString(), _local5);
mc._x = x;
mc._y = y;
mFont.DrawString(mText, mc);
var _local4 = new Color(mc);
var _local3 = _local4.getTransform();
_local3.rb = ((mColor >> 16) & 255) - 255;
_local3.gb = ((mColor >> 8) & 255) - 255;
_local3.bb = (mColor & 255) - 255;
_local4.setTransform(_local3);
mc._visible = false;
}
function Delete() {
mc.removeMovieClip();
delete mc;
}
}
Symbol 1177 MovieClip [__Packages.TransitionMgr] Frame 0
class TransitionMgr
{
var mBoard, mFrogMoveList, mFrogScaleList, mLetterStampList, mCurFrogScale, mQuakeFrame, mState, mLevelFade, mTargetLevelFade, mLevelFadeInc, FONT_TITLE, mResetFrame, mStateCount, mCurFrogAngle;
function TransitionMgr (theBoard) {
mBoard = theBoard;
mFrogMoveList = new Array();
mFrogScaleList = new Array();
mLetterStampList = new Array();
mCurFrogScale = 1;
mQuakeFrame = 0;
mState = TransitionState_None;
mLevelFade = 0;
mTargetLevelFade = 0;
mLevelFadeInc = 5;
FONT_TITLE = new ImageFont("MAIN10");
}
function Clear() {
mFrogScaleList = [];
mFrogMoveList = [];
var _local2 = 0;
while (_local2 < mLetterStampList.length) {
mLetterStampList[_local2].Delete();
_local2++;
}
mLetterStampList = [];
mCurFrogScale = 1;
mLevelFade = 0;
mTargetLevelFade = 0;
mLevelFadeInc = 5;
mResetFrame = 0;
mStateCount = 0;
mCurFrogAngle = 0;
mState = TransitionState_None;
}
function AddFrogMove(theStartPos, theEndPos, theDuration, theStagger) {
if (theDuration == undefined) {
theDuration = 0;
}
if (theStagger == undefined) {
theStagger = 0;
}
mFrogMoveList.push(new FrogMove(-theStagger, theDuration, theStartPos, theEndPos));
}
function AddLetterStamp(theStr, theX, theY, theColor, theStagger, theFont, theDuration) {
mLetterStampList.push(new LetterStamp(theStr, theX, theY, theColor, theFont, theDuration, -theStagger));
}
function DoLosing() {
Clear();
mResetFrame = 0;
mStateCount = 0;
mState = TransitionState_Losing;
mCurFrogAngle = mBoard.mGun.mAngle;
}
function DoLevelUp() {
Clear();
mQuakeFrame = 7;
var _local2 = 0;
while (_local2 < mBoard.mNumCurves) {
if (_local2 != 0) {
mQuakeFrame = mQuakeFrame + 17;
}
mQuakeFrame = mBoard.mCurveMgr[_local2].DrawEndLevelBonus(mQuakeFrame);
_local2++;
}
mQuakeFrame = mQuakeFrame + 17;
mState = TransitionState_Bonus;
mStateCount = 0;
}
function DoLevelBegin(firstTime) {
var _local2 = 7;
var _local3 = 0;
while (_local3 < mBoard.mNumCurves) {
_local2 = _local2 + (mBoard.mCurveMgr[_local3].DrawPathSparkles(0, _local2, true) - _local2);
_local3++;
}
mResetFrame = _local2;
if (mResetFrame < 100) {
mResetFrame = 100;
}
mState = TransitionState_LevelBegin;
mStateCount = 0;
var _local7 = FONT_TITLE.GetStringWidth(mBoard.mVerboseLevelString);
var _local4 = (mBoard.mWidth - _local7) - 30;
var _local5 = mBoard.mHeight - 30;
var _local6 = mResetFrame - 40;
AddLetterStamp(mBoard.mVerboseLevelString, _local4, _local5, 16777215, 6, FONT_TITLE, _local6);
}
function MouseDown(x, y) {
if (mState == TransitionState_LevelBegin) {
mBoard.mSoundMgr.KillAllSounds();
mBoard.StartLevel();
return(undefined);
}
if (mState == TransitionState_Losing) {
if (mResetFrame > 0) {
if (mBoard.mLives > 0) {
mBoard.Reset(false, true);
}
}
}
}
function Update() {
mStateCount++;
var _local2 = mBoard.mGun.GetFiredBullet();
if (_local2 != null) {
_local2.Delete();
mBoard.mGun.EmptyBullets();
}
UpdateFrogMove();
UpdateLetterStamp();
if (((__reg0 = mState)) === TransitionState_LevelBegin) {
UpdateLevelBegin();
return(undefined);
}
if (__reg0 === TransitionState_Bonus) {
UpdateBonus();
return(undefined);
}
if (!(__reg0 === TransitionState_Losing)) {
return(undefined);
}
UpdateLosing();
return(undefined);
}
function UpdateBonus() {
if (mStateCount < mQuakeFrame) {
if (mStateCount == (mQuakeFrame - 1)) {
mBoard.mSoundMgr.PlaySample("chant4");
mBoard.mScoreDisplay = mBoard.mScore - 1;
mBoard.mApp.DoStatsDialog();
}
return(undefined);
}
mBoard.Reset(false);
}
function UpdateFrogMove() {
if (mFrogMoveList.length != 0) {
var _local3 = mFrogMoveList[0];
var _local5 = ++_local3.mUpdateCnt;
if (_local5 >= 0) {
var _local4 = _local5 / _local3.mDuration;
var _local6 = int(((1 - _local4) * _local3.mStartPos.mX) + (_local4 * _local3.mEndPos.mX));
var _local7 = int(((1 - _local4) * _local3.mStartPos.mY) + (_local4 * _local3.mEndPos.mY));
mBoard.mGun.SetPos(_local6, _local7);
mBoard.MouseMove(_root._xmouse, _root._ymouse);
if (_local5 >= _local3.mDuration) {
mFrogMoveList.shift();
}
}
}
}
function UpdateLetterStamp() {
var _local3 = 0;
for(;;){
if (_local3 >= mLetterStampList.length) {
return(undefined);
}
var _local2 = mLetterStampList[_local3];
_local2.mUpdateCnt++;
if (_local2.mUpdateCnt >= 0) {
_local2.mc._visible = true;
var _local4 = _local2.mDuration - _local2.mUpdateCnt;
if ((_local2.mDuration > 0) && (_local4 <= 0)) {
_local2.Delete();
mLetterStampList.splice(_local3, 1);
} else {
_local3++;
}
} else {
_local3++;
}
};
}
function UpdateLevelBegin() {
if (mStateCount > mResetFrame) {
mBoard.StartLevel();
}
}
function UpdateLosing() {
if ((mStateCount % 10) == 0) {
if ((mResetFrame == 0) || ((mResetFrame - mStateCount) > 66.6666666667)) {
mBoard.mSoundMgr.AddSound("lighttrail2", 0, 0, mStateCount / 10);
}
}
if (mResetFrame > 0) {
if ((mResetFrame - mStateCount) == 68) {
if (mResetFrame > 0) {
mBoard.mSoundMgr.AddSound("popSound", 0, 0, 0);
}
}
}
if (mStateCount > 25) {
if ((mResetFrame == 0) || ((mResetFrame - mStateCount) > 73.3333333333)) {
var _local8 = Math.round(mStateCount / 20);
if (_local8 > 5) {
_local8 = 5;
}
var _local4 = 0;
while (_local4 < _local8) {
var _local5 = Math.random() * 6.28318530718;
var _local6 = Math.round((random(10) + 1) * 3);
mBoard.mParticleMgr.AddSparkle(mBoard.mGun.mCenterX, mBoard.mGun.mCenterY, _local6 * Math.sin(_local5), _local6 * Math.cos(_local5), 4, Math.round((random(30) + 20) / 3), 0, _global.gBrightBallColors[random(6)]);
_local4++;
}
}
}
if (mResetFrame) {
if (mStateCount == mResetFrame) {
if (mBoard.mLives > 0) {
var _local10 = mLevelFade;
mBoard.Reset(false, true);
mLevelFade = _local10;
mTargetLevelFade = 0;
AddFrogMove({mX:-100, mY:-100}, {mX:mBoard.mLevelDesc.mGunX, mY:mBoard.mLevelDesc.mGunY}, 17);
mBoard.mGun.SetPos(-100, -100);
} else {
mBoard.mApp.DoStatsDialog();
}
}
return(undefined);
}
var _local9 = true;
var _local4 = 0;
while (_local4 < mBoard.mNumCurves) {
mBoard.mCurveMgr[_local4].UpdateLosing();
if (!mBoard.mCurveMgr[_local4].CanRestart()) {
_local9 = false;
}
_local4++;
}
if (_local9 && (mStateCount > 50)) {
mResetFrame = mStateCount + 100;
if (mBoard.mLives <= 0) {
__reg10 = "B\"N \u0110, THUA";
} else if (mBoard.mLives == 1) {
var __reg10 = "M`T M\"NG!";
} else {
__reg10 = mBoard.mLives + " HAI M\"NG";
}
var _local7 = _root.screenMC.particleMC.createEmptyMovieClip("fadeMC", _root.screenMC.particleMC.getNextHighestDepth());
_local7.beginFill(0, 100);
_local7.moveTo(0, 0);
_local7.lineTo(480, 0);
_local7.lineTo(480, 360);
_local7.lineTo(0, 360);
_local7.endFill();
_local7._alpha = 0;
_local7.onEnterFrame = function () {
this._alpha = this._alpha + 3;
if (this._alpha >= 50) {
delete this.onEnterFrame;
}
};
AddLetterStamp(__reg10, 240 - (FONT_TITLE.GetStringWidth(__reg10) / 2), 180, 16777215, 36, FONT_TITLE, 160);
mTargetLevelFade = 128;
mLevelFadeInc = 2;
}
}
function DrawDefault() {
mBoard.mGun.Draw();
}
function Draw() {
if (((__reg0 = mState)) === TransitionState_LevelBegin) {
DrawLevelBegin();
return(undefined);
}
if (__reg0 === TransitionState_Losing) {
DrawLosing();
return(undefined);
}
DrawDefault();
return(undefined);
}
function DrawLevelBegin() {
mBoard.mGun.Draw();
}
function DrawLosing() {
if (!mBoard.mPauseCount) {
var _local2 = 0;
while (_local2 < mBoard.mNumCurves) {
mBoard.mCurveMgr[_local2].DrawBalls();
_local2++;
}
}
mBoard.DrawBullets();
if ((mResetFrame == 0) || ((mResetFrame - mStateCount) > 66.6666666667)) {
mBoard.mGun.SetAngle(mCurFrogAngle + ((((mStateCount * 3) * mStateCount) * 3) / 2000));
mBoard.mGun.Draw();
return(undefined);
}
mBoard.mGun.SetPos(-100, -100);
}
static var TransitionState_None = 0;
static var TransitionState_LevelBegin = 1;
static var TransitionState_Bonus = 2;
static var TransitionState_Losing = 3;
}
Symbol 1178 MovieClip [__Packages.FrogMove] Frame 0
class FrogMove
{
var mUpdateCnt, mDuration, mStartPos, mEndPos;
function FrogMove (theUpdateCnt, theDuration, theStartPos, theEndPos) {
mUpdateCnt = theUpdateCnt;
mDuration = theDuration;
mStartPos = theStartPos;
mEndPos = theEndPos;
}
}
Symbol 1179 MovieClip [__Packages.LetterStamp] Frame 0
class LetterStamp
{
var mLetter, mPos, mColor, mFont, mDuration, mUpdateCnt, mc;
function LetterStamp (theStr, theX, theY, theColor, theFont, theDuration, theStagger) {
mLetter = theStr;
mPos = {mX:theX, mY:theY};
mColor = theColor;
mFont = theFont;
mDuration = theDuration;
mUpdateCnt = theStagger;
var _local3 = _root.screenMC.particleMC.getNextHighestDepth();
mc = _root.screenMC.particleMC.createEmptyMovieClip(_local3.toString(), _local3);
mFont.DrawString(theStr, mc, theX, theY);
mc._visible = false;
}
function Delete() {
mc.removeMovieClip();
delete mc;
}
}
Symbol 1180 MovieClip [__Packages.SoundMgr] Frame 0
class SoundMgr
{
var mUpdateCnt, mSoundMap;
function SoundMgr () {
mUpdateCnt = 0;
mSoundMap = new Array();
}
function PlaySampleDesc(theDesc, vol) {
if (vol == undefined) {
vol = 1;
}
if (theDesc.mPitchShift == 0) {
_global.playSound(theDesc.mSoundId, 1, vol);
return(undefined);
}
_global.playSound((theDesc.mSoundId + "_pitch") + Math.abs(theDesc.mPitchShift), 1, vol);
}
function PlaySample(theSound, vol) {
if (vol == undefined) {
vol = 1;
}
_global.playSound(theSound, 1, vol);
}
function AddSound(theSound, theDelay, thePan, thePitchShift) {
var _local2 = new SoundDesc(theSound, thePan, thePitchShift);
if (theDelay == 0) {
PlaySampleDesc(_local2);
return(undefined);
}
mSoundMap[Math.round(mUpdateCnt + theDelay)] = _local2;
}
function Update() {
mUpdateCnt++;
for (var _local2 in mSoundMap) {
if (parseInt(_local2) <= mUpdateCnt) {
PlaySampleDesc(mSoundMap[_local2]);
delete mSoundMap[_local2];
}
}
}
function Clear() {
mSoundMap = [];
}
function KillAllSounds() {
mSoundMap = [];
}
}
Symbol 1181 MovieClip [__Packages.SoundDesc] Frame 0
class SoundDesc
{
var mSoundId, mPan, mPitchShift;
function SoundDesc (theSoundId, thePan, thePitchShift) {
mSoundId = theSoundId;
mPan = thePan;
mPitchShift = thePitchShift;
}
}
Symbol 1100 MovieClip Frame 1
stop();
Symbol 1134 MovieClip Frame 1
stop();
Symbol 1142 Button
on (press) {
playSound("button1", 1, 1);
}
on (release) {
if (_global.gameBoard.mDialogCount == 0) {
if (_global.gameBoard.mPauseCount > 0) {
_global.gameBoard.UnpauseFully();
}
}
}
on (release) {
_root.DoOptionsDialog();
}