Frame 1
function __com_mochibot__(swfid, mc, lv, trk) {
var x;
var g;
var s;
var fv;
var sb;
var u;
var res;
var mb;
var mbc;
var pv;
mb = "__mochibot__";
mbc = "mochibot.com";
g = (_global ? (_global) : (_level0._root));
if (g[mb + swfid]) {
return(g[mb + swfid]);
}
s = System.security;
x = mc._root.getSWFVersion;
fv = (x ? (mc.getSWFVersion()) : ((_global ? 6 : 5)));
if (!s) {
s = {};
}
sb = s.sandboxType;
if (sb == "localWithFile") {
return(null);
}
x = s.allowDomain;
if (x) {
s.allowDomain(mbc);
}
x = s.allowInsecureDomain;
if (x) {
s.allowInsecureDomain(mbc);
}
pv = ((fv == 5) ? (getVersion()) : (System.capabilities.version));
u = (((((((((((("http://" + mbc) + "/my/core.swf?mv=8&fv=") + fv) + "&v=") + escape(pv)) + "&swfid=") + escape(swfid)) + "&l=") + lv) + "&f=") + mc) + (sb ? ("&sb=" + sb) : "")) + (trk ? "&t=1" : "");
lv = ((fv > 6) ? (mc.getNextHighestDepth()) : ((g[mb + "level"] ? (g[mb + "level"] + 1) : (lv))));
g[mb + "level"] = lv;
if (fv == 5) {
res = "_level" + lv;
if (!eval (res)) {
loadMovieNum (u, lv);
}
} else {
res = mc.createEmptyMovieClip(mb + swfid, lv);
res.loadMovie(u);
}
return(res);
}
function GameVarsLoaded(vars, response) {
trace("GameVarsLoaded called");
if (response.Success) {
trace("Response for GameVars is successful");
AdBlockedDomains = vars.AdBlockSites;
AdBlockedDomains = AdBlockedDomains.toString();
adblockedtext.text = "Adblocked: " + AdBlockedDomains;
trace("Blocked domains: " + AdBlockedDomains);
var _local2 = new Array();
var _local3 = 0;
i = 0;
while (i < AdBlockedDomains.length) {
if (AdBlockedDomains.charAt(i) == " ") {
_local2.push(AdBlockedDomains.substr(_local3, i - _local3));
i++;
_local3 = i;
}
i++;
}
_local2.push(AdBlockedDomains.substr(_local3, i - _local3));
var _local5 = _root._url;
siteurltext.text = "This site: " + _local5;
var _local4 = false;
i = 0;
while (i < _local2.length) {
trace("Current iteration checks: " + _local2[i]);
if (_local5.indexOf(_local2[i], 0) >= 1) {
_local4 = true;
}
i++;
}
if (!_local4) {
var _local6 = "5503Q801EC657";
System.security.allowDomain("server.cpmstar.com");
adBox.loadMovie("http://server.cpmstar.com/adviewas2.swf?contentspotid=" + _local6);
} else {
blackbox._x = blackbox._x + 1000;
adBox._x = adBox._x + 1000;
}
} else {
adBox._x = adBox._x + 1000;
}
}
Stage.scaleMode = "showAll";
Stage.showMenu = false;
__com_mochibot__("b7d5b2b0", this, 10301, true);
onEnterFrame = function () {
loaded = _root.getBytesLoaded();
total = _root.getBytesTotal();
perc = Math.floor((loaded / total) * 1000) / 10;
if ((perc % 1) == 0) {
textbox.text = ("Loading " + perc) + ".0%";
} else {
textbox.text = ("Loading " + perc) + "%";
}
preloader.gotoAndStop((perc * 10) + 1);
if (loaded == total) {
textbox.text = "";
onEnterFrame = null;
}
};
Playtomic.Log.View(4340, "449212f73a254aaa", _root._url);
Playtomic.Log.ForceSend();
var AdBlockedDomains = "";
Playtomic.GameVars.Load(this.GameVarsLoaded);
var kongregate = _global.kongregate;
kongregate.services.connect();
stop();
Frame 2
Stage.scaleMode = "showAll";
Stage.showMenu = false;
removeMovieClip(adBox);
stop();
Frame 4
musicPlaying = false;
var sound_junction = new Sound();
var sound_hover = new Sound();
var sound_click = new Sound();
var sound_explosion1 = new Sound();
var sound_explosion2 = new Sound();
var sound_explosion3 = new Sound();
var sound_scream1 = new Sound();
var sound_scream2 = new Sound();
var menuMusic1 = new Sound();
var sound_win = new Sound();
var sound_lose = new Sound();
var sound_trainIn = new Sound();
var sound_trainOut = new Sound();
var sound_drop1 = new Sound();
var sound_drop2 = new Sound();
var sound_drop3 = new Sound();
var sound_drop4 = new Sound();
var sound_drop5 = new Sound();
var sound_drop6 = new Sound();
var sound_beach = new Sound();
var sound_desert = new Sound();
var sound_grassy = new Sound();
var sound_snow = new Sound();
var sound_urban = new Sound();
var sound_train = new Sound();
menuMusic1.attachSound("menu");
sound_junction.attachSound("junction");
sound_hover.attachSound("hover");
sound_click.attachSound("click");
sound_explosion1.attachSound("explosion1");
sound_explosion2.attachSound("explosion2");
sound_explosion3.attachSound("explosion3");
sound_scream1.attachSound("scream1");
sound_scream2.attachSound("scream2");
sound_win.attachSound("win");
sound_lose.attachSound("lose");
sound_trainIn.attachSound("trainIn");
sound_trainOut.attachSound("trainOut");
sound_drop1.attachSound("drop1");
sound_drop2.attachSound("drop2");
sound_drop3.attachSound("drop3");
sound_drop4.attachSound("drop4");
sound_drop5.attachSound("drop5");
sound_drop6.attachSound("drop6");
sound_beach.attachSound("beach");
sound_desert.attachSound("desert");
sound_grassy.attachSound("grassy");
sound_snow.attachSound("snow");
sound_urban.attachSound("urban");
sound_train.attachSound("train");
var screamLock = false;
sound_scream1.onSoundComplete = (sound_scream2.onSoundComplete = function () {
screamLock = false;
});
playSound = function (soundName) {
if (_root.SOUNDS == true) {
if ((soundName == "scream1") || (soundName == "scream2")) {
if (screamLock == false) {
_root["sound_" + soundName].start();
screamLock = true;
} else {
playSound("explosion" + (Math.floor(Math.random() * 3) + 1));
}
} else if (soundName == "trainIn") {
if (_root.levelTimer > 5) {
_root["sound_" + soundName].start();
}
} else {
_root["sound_" + soundName].start();
}
}
};
playChime = function (chimeColour) {
playSound("drop" + chimeColour);
};
playAmbience = function (ambience) {
stopAllSounds();
if (SOUNDS) {
_root["sound_" + ambience].start(0, 100000);
}
};
var trainSounds = false;
playTrains = function () {
if (SOUNDS) {
if (!trainSounds) {
sound_train.start(0, 1);
trainSounds = true;
}
}
};
stopTrains = function () {
trainSounds = false;
};
sound_train.onSoundComplete = function () {
if (trainSounds) {
sound_train.start(0, 1);
}
};
Playtomic.Log.Play();
levelArray2 = [[[0, 11, 24], [0, 11, 23], [0, 11, 22], [0, 11, 21], [0, 11, 20], [0, 11, 19], [22, 12, 19], [1, 15, 20], [1, 16, 20], [1, 17, 20], [39, 18, 19], [82, 16, 20], [7, 21, 17], [4, 20, 13], [17, 11, 13], [55, 19, 13, 0], [1, 17, 13], [1, 18, 13], [42, 15, 12], [42, 14, 11], [42, 13, 10], [28, 20, 12], [0, 20, 11], [32, 20, 10], [26, 20, 8], [63, 12, 9, 0], [33, 13, 8], [1, 14, 8], [1, 15, 8], [1, 16, 8], [1, 17, 8], [1, 18, 8], [1, 19, 8], [1, 11, 9], [1, 0, 15], [16, 8, 2], [38, 16, 2], [1, 12, 2], [1, 13, 2], [1, 14, 2], [1, 15, 2], [38, 20, 3], [3, 23, 4], [7, 23, 7], [1, 22, 9], [1, 19, 3], [81, 16, 8], [84, 13, 2], [23, 8, 6], [16, 4, 9], [7, 2, 13], [1, 1, 15], [1, 9, 9], [1, 8, 9], [56, 11, 18, 2], [53, 10, 9, 2], [53, 16, 13, 1], [65, 21, 9, 2]], [[1, 0, 2.5, 0, [1, 2, 4]], [2, 1, 2.5, 0, [4, 2, 1]]], "Greenview", 705, 960, 1368, "This quaint little village lies between two farms and is surrounded by luscious countryside. What a lovely location to start your train-driving career!", "grassy"];
levelArray3 = [[[64, 13, 15, 0], [21, 18, 16], [22, 14, 16], [66, 13, 9, 0], [18, 18, 7], [25, 14, 7], [0, 13, 14], [0, 13, 13], [0, 13, 12], [0, 13, 11], [0, 13, 10], [0, 21, 14], [0, 21, 13], [0, 21, 12], [0, 21, 11], [0, 21, 10], [1, 17, 7], [1, 17, 17], [25, 22, 7], [18, 26, 7], [18, 10, 7], [25, 6, 7], [21, 10, 16], [21, 26, 16], [22, 22, 16], [22, 6, 16], [31, 5, 15], [32, 5, 9], [27, 29, 9], [28, 29, 15], [1, 25, 7], [1, 9, 17], [0, 5, 14], [0, 5, 13], [0, 5, 12], [0, 5, 11], [0, 5, 10], [0, 29, 14], [0, 29, 13], [0, 29, 12], [0, 29, 11], [0, 29, 10], [51, 25, 17, 1], [55, 9, 7, 1], [25, 12, 3], [22, 28, 20], [42, 26, 18], [42, 27, 19], [43, 10, 6], [43, 11, 5], [1, 31, 21], [1, 32, 21], [1, 33, 21], [1, 34, 21], [1, 15, 3], [1, 16, 3], [1, 17, 3], [1, 18, 3], [1, 19, 3], [1, 20, 3], [1, 21, 3], [1, 22, 3], [1, 23, 3], [1, 24, 3], [1, 25, 3], [1, 26, 3], [1, 27, 3], [1, 28, 3], [1, 29, 3], [1, 30, 3], [1, 31, 3], [1, 32, 3], [1, 34, 3], [1, 33, 3], [81, 5, 12], [82, 13, 12], [83, 21, 12], [85, 29, 12], [66, 21, 9, 4], [64, 21, 15, 4]], [[1, 0, 2.5, 0, [5, 2, 3]], [2, 1, 2.5, 0, [2, 1, 3]]], "Roundabout Town", 540, 780, 1240, "Four stations are connected by a series of roundabouts in this suburban town. Focus on one train at a time to ensure they don't collide - trains are expensive to replace!", "grassy"];
levelArray10 = [[[1, 15, 7], [1, 16, 7], [1, 18, 7], [1, 19, 7], [1, 14, 7], [1, 14, 17], [1, 15, 17], [1, 16, 17], [1, 14, 20], [1, 18, 17], [1, 19, 17], [0, 22, 13], [0, 22, 12], [0, 12, 10], [0, 12, 11], [0, 12, 13], [0, 12, 15], [10, 12, 16], [2, 21, 7], [14, 12, 7], [3, 21, 6], [4, 21, 5], [5, 21, 4], [15, 11, 6], [16, 10, 5], [17, 9, 4], [9, 21, 16], [11, 11, 16], [8, 21, 16], [0, 11, 9], [0, 11, 12], [0, 11, 14], [0, 10, 15], [0, 10, 13], [0, 10, 12], [0, 10, 11], [0, 10, 10], [0, 9, 9], [0, 9, 11], [0, 9, 12], [0, 9, 13], [0, 9, 14], [0, 23, 10], [0, 23, 12], [0, 23, 15], [0, 24, 15], [0, 24, 13], [0, 24, 11], [0, 24, 9], [0, 25, 9], [0, 25, 10], [0, 25, 12], [0, 25, 13], [0, 25, 14], [1, 14, 5], [1, 14, 4], [1, 15, 4], [1, 15, 6], [1, 16, 6], [1, 16, 5], [1, 17, 4], [1, 17, 6], [1, 18, 5], [1, 18, 4], [1, 19, 4], [1, 19, 5], [1, 20, 6], [1, 20, 4], [1, 14, 19], [1, 15, 20], [1, 15, 18], [1, 16, 18], [1, 18, 18], [1, 20, 18], [1, 19, 19], [1, 17, 19], [1, 16, 20], [1, 18, 20], [1, 20, 20], [52, 9, 15, 1], [32, 8, 16], [20, 7, 19], [21, 4, 22], [1, 3, 23], [1, 2, 23], [1, 1, 23], [1, 0, 23], [0, 8, 18], [0, 8, 17], [0, 22, 11], [56, 22, 10, 0], [58, 23, 11, 0], [54, 11, 15, 0], [52, 23, 14, 0], [58, 24, 10, 0], [58, 25, 15, 0], [56, 24, 14, 0], [57, 20, 19, 0], [57, 20, 17, 0], [55, 19, 18, 0], [55, 19, 20, 0], [53, 17, 20, 0], [53, 15, 19, 0], [51, 14, 18, 0], [51, 16, 19, 0], [52, 10, 9, 0], [54, 10, 14, 0], [56, 11, 11, 0], [57, 15, 5, 0], [53, 17, 5, 0], [1, 17, 17], [0, 22, 9], [55, 20, 7, 1], [43, 21, 6], [43, 22, 5], [25, 23, 3], [82, 16, 17], [84, 25, 13], [81, 19, 4], [83, 9, 12], [1, 26, 3], [7, 27, 1], [0, 29, 0], [54, 9, 10, 4], [51, 16, 4, 4], [52, 25, 11, 4], [0, 11, 10], [0, 12, 9], [1, 17, 18], [1, 18, 19], [1, 19, 6], [1, 20, 5], [13, 9, 16], [12, 10, 16], [6, 21, 16], [7, 21, 16], [0, 22, 14], [0, 23, 13], [54, 24, 12, 0], [56, 23, 9, 0], [52, 12, 14, 0], [58, 12, 12, 0], [52, 11, 13, 0], [55, 17, 7, 0], [57, 18, 6, 0], [54, 22, 15, 0], [55, 14, 6, 0]], [[1, 0, 2, 0, [1, 2, 3, 4]], [2, 1, 2, 0, [4, 3, 2, 1]]], "Loco Island", 1218, 1533, 2388, "This island once had a volcano at the centre and is now a popular holiday resort. So we laid tracks all over it to suck in the cash. It's dormant, right? No? I'm sure it'll be fine...", "beach"];
levelArray34 = [[[0, 29, 24], [0, 29, 0], [0, 5, 24], [0, 5, 0], [1, 34, 19], [1, 34, 5], [1, 0, 5], [1, 0, 19], [1, 19, 12], [1, 11, 12], [1, 21, 12], [1, 23, 12], [0, 32, 17], [0, 32, 16], [0, 32, 14], [0, 32, 13], [0, 32, 12], [0, 32, 11], [0, 32, 10], [0, 32, 8], [0, 32, 7], [0, 32, 19], [0, 32, 5], [0, 30, 19], [0, 30, 18], [0, 30, 17], [0, 30, 16], [0, 30, 14], [0, 30, 12], [0, 30, 10], [0, 30, 8], [0, 30, 7], [0, 30, 6], [0, 30, 5], [0, 26, 5], [0, 26, 6], [0, 26, 8], [0, 26, 10], [0, 26, 11], [0, 26, 12], [0, 26, 13], [0, 26, 14], [0, 26, 16], [0, 26, 18], [0, 26, 19], [0, 24, 18], [0, 24, 16], [0, 24, 13], [0, 24, 12], [0, 24, 11], [0, 24, 8], [0, 24, 6], [2, 29, 3], [14, 26, 3], [10, 26, 20], [6, 29, 20], [1, 28, 21], [1, 28, 3], [7, 30, 20], [15, 24, 2], [3, 30, 2], [11, 24, 20], [1, 27, 2], [1, 29, 2], [1, 27, 22], [1, 29, 22], [1, 24, 12], [1, 25, 12], [1, 26, 12], [27, 29, 23], [33, 33, 5], [28, 29, 1], [30, 33, 19], [59, 22, 12, 0], [52, 24, 10, 0], [58, 24, 14, 0], [54, 24, 17, 0], [62, 26, 17, 0], [52, 26, 15, 0], [60, 26, 7, 0], [58, 26, 9, 0], [52, 30, 9, 0], [62, 30, 11, 0], [60, 30, 13, 0], [58, 30, 15, 0], [52, 32, 9, 0], [63, 27, 12, 0], [42, 29, 14], [42, 28, 13], [42, 29, 10], [42, 28, 9], [42, 27, 8], [42, 25, 16], [42, 25, 8], [42, 31, 14], [43, 25, 16], [43, 25, 8], [43, 29, 10], [43, 28, 11], [43, 29, 14], [43, 28, 15], [43, 27, 16], [43, 31, 10], [61, 12, 12, 0], [54, 10, 14, 0], [56, 10, 10, 0], [58, 10, 17, 0], [62, 8, 17, 0], [60, 8, 7, 0], [54, 8, 9, 0], [56, 8, 15, 0], [65, 7, 12, 0], [60, 4, 13, 0], [62, 4, 11, 0], [56, 2, 9, 0], [56, 4, 9, 0], [54, 4, 15, 0], [3, 8, 2], [15, 2, 2], [7, 8, 20], [11, 2, 20], [10, 4, 20], [6, 7, 20], [14, 4, 3], [2, 7, 3], [32, 5, 23], [29, 1, 19], [26, 1, 5], [31, 5, 1], [1, 18, 12], [1, 17, 12], [1, 13, 12], [1, 14, 12], [1, 6, 3], [1, 5, 2], [1, 7, 2], [1, 5, 22], [1, 7, 22], [1, 6, 21], [1, 10, 12], [1, 9, 12], [1, 8, 12], [0, 2, 19], [0, 2, 17], [0, 2, 16], [0, 2, 14], [0, 2, 13], [0, 2, 12], [0, 2, 11], [0, 2, 10], [0, 2, 8], [0, 2, 7], [0, 2, 5], [0, 10, 6], [0, 10, 8], [0, 10, 11], [0, 10, 12], [0, 10, 13], [0, 10, 16], [0, 10, 18], [0, 4, 19], [0, 4, 18], [0, 4, 17], [0, 4, 16], [0, 4, 14], [0, 4, 12], [0, 4, 10], [0, 4, 8], [0, 4, 7], [0, 4, 6], [0, 4, 5], [0, 8, 5], [0, 8, 6], [0, 8, 8], [0, 8, 10], [0, 8, 11], [0, 8, 12], [0, 8, 13], [0, 8, 14], [0, 8, 16], [0, 8, 18], [0, 8, 19], [42, 9, 16], [42, 9, 8], [42, 3, 10], [42, 6, 11], [42, 5, 10], [42, 7, 16], [42, 6, 15], [42, 5, 14], [43, 5, 14], [43, 6, 13], [43, 5, 10], [43, 6, 9], [43, 7, 8], [43, 9, 8], [43, 9, 16], [43, 3, 14], [1, 15, 12], [1, 16, 12], [54, 32, 6, 1], [55, 28, 2, 1], [57, 6, 22, 1], [51, 28, 22, 1], [56, 32, 18, 1], [52, 2, 18, 1], [58, 2, 6, 1], [53, 6, 2, 1], [1, 20, 12], [0, 10, 19], [0, 10, 5], [0, 24, 5], [0, 24, 19], [56, 24, 15, 0], [54, 24, 9, 0], [58, 10, 9, 0], [52, 10, 15, 0], [84, 4, 6], [82, 30, 6], [83, 30, 18], [85, 4, 18], [54, 2, 15, 4], [58, 32, 15, 4], [42, 11, 11], [42, 23, 13], [43, 11, 13], [43, 23, 11], [52, 10, 7, 0], [56, 24, 7, 0]], [[1, 0, 1, 0, [4, 2]], [2, 1, 1, 0, [3, 5]], [3, 2, 1, 0, [4, 3]], [4, 3, 1, 0, [2, 5]], [5, 4, 1, 0, [4, 5]], [6, 5, 1, 0, [2, 3]], [7, 6, 1, 0, [3, 5]], [8, 7, 1, 0, [2, 5]]], "Bottleneck River", 7335, 8400, 10233, "This was once the first area used to train new drivers, but we lost a lot of customers very quickly. Our funeral business got very popular, though.", "urban"];
levelArray19 = [[[6, 21, 16], [10, 11, 16], [14, 12, 7], [2, 21, 7], [0, 22, 14], [0, 23, 13], [0, 22, 12], [0, 23, 10], [0, 24, 11], [7, 21, 16], [15, 11, 6], [12, 10, 16], [8, 21, 16], [16, 10, 5], [2, 22, 5], [2, 23, 6], [10, 12, 17], [0, 24, 13], [0, 23, 15], [0, 23, 9], [0, 23, 12], [0, 22, 11], [0, 23, 8], [0, 23, 7], [0, 24, 8], [0, 24, 9], [0, 22, 9], [0, 24, 12], [0, 22, 13], [0, 24, 14], [0, 11, 15], [0, 11, 14], [0, 11, 12], [0, 11, 9], [0, 12, 10], [0, 12, 11], [0, 12, 12], [0, 12, 13], [0, 12, 15], [0, 12, 16], [0, 10, 13], [0, 10, 12], [0, 10, 11], [0, 10, 10], [1, 13, 17], [1, 14, 17], [1, 16, 17], [1, 17, 17], [1, 18, 17], [1, 20, 17], [1, 19, 18], [1, 18, 18], [1, 17, 18], [1, 16, 18], [1, 15, 18], [1, 14, 19], [1, 16, 19], [1, 17, 19], [1, 18, 19], [1, 20, 19], [1, 20, 7], [1, 19, 7], [1, 18, 7], [1, 17, 7], [1, 16, 7], [1, 15, 7], [1, 14, 7], [1, 14, 6], [1, 15, 6], [1, 16, 6], [1, 17, 6], [1, 19, 6], [1, 20, 6], [1, 21, 6], [1, 22, 6], [1, 21, 5], [1, 20, 5], [1, 19, 5], [1, 18, 5], [1, 17, 5], [1, 16, 5], [1, 15, 5], [1, 14, 5], [55, 18, 6, 1], [43, 19, 5], [43, 20, 4], [43, 21, 3], [43, 22, 2], [0, 23, 0], [28, 23, 1], [52, 10, 15, 1], [43, 9, 16], [43, 8, 17], [43, 7, 18], [43, 6, 19], [43, 5, 20], [43, 4, 21], [43, 3, 22], [0, 2, 24], [32, 2, 23], [62, 11, 10, 0], [58, 12, 14, 0], [54, 10, 14, 0], [60, 23, 14, 0], [52, 24, 10, 0], [56, 22, 10, 0], [0, 11, 11], [81, 10, 11], [81, 10, 12], [84, 24, 13], [84, 24, 12], [82, 16, 17], [82, 17, 17], [83, 17, 7], [83, 18, 7], [61, 20, 18, 0], [57, 15, 17, 0], [53, 15, 19, 0], [56, 10, 9, 1], [62, 23, 11, 1], [54, 22, 15, 1], [58, 24, 15, 1], [52, 12, 9, 1], [60, 11, 13, 1], [55, 19, 19, 1], [51, 19, 17, 1], [59, 14, 18, 1]], [[0, 0, 1.5, 0, [2, 4, 1, 3]], [1, 1, 1.5, 0, [1, 3, 4, 2]]], "Whirl Basin", 1503, 1866, 2196, "The track around this desert oasis was a little hastily constructed. Nothing like witholding water from engineers to make them build faster! Sadly, they are no longer with us.", "desert"];
levelArray29 = [[[5, 29, 7], [9, 29, 12], [1, 28, 7], [1, 27, 7], [1, 26, 7], [1, 25, 7], [1, 24, 7], [1, 23, 7], [1, 22, 7], [1, 21, 7], [1, 20, 7], [1, 19, 7], [1, 18, 7], [1, 17, 7], [1, 16, 7], [1, 15, 7], [1, 14, 7], [1, 13, 7], [1, 12, 7], [1, 11, 7], [1, 10, 7], [1, 9, 7], [1, 8, 7], [1, 7, 7], [17, 1, 7], [1, 3, 5], [1, 2, 5], [1, 1, 5], [1, 0, 5], [1, 28, 16], [1, 27, 16], [1, 26, 16], [1, 25, 16], [1, 24, 16], [1, 23, 16], [1, 22, 16], [1, 21, 16], [1, 20, 16], [1, 19, 16], [1, 18, 16], [1, 17, 16], [1, 16, 16], [1, 15, 16], [1, 14, 16], [1, 13, 16], [1, 12, 16], [1, 11, 16], [1, 10, 16], [1, 9, 16], [1, 8, 16], [1, 7, 16], [1, 6, 16], [13, 1, 12], [26, 4, 5], [42, 5, 6], [3, 29, 9], [7, 29, 12], [1, 28, 9], [1, 27, 9], [1, 25, 9], [1, 24, 9], [1, 23, 9], [1, 19, 9], [1, 21, 9], [1, 22, 9], [1, 19, 14], [1, 21, 14], [1, 22, 14], [1, 23, 14], [1, 25, 14], [1, 26, 14], [1, 27, 14], [1, 28, 14], [1, 13, 9], [1, 12, 9], [1, 11, 9], [1, 10, 9], [1, 9, 9], [1, 7, 9], [1, 6, 9], [1, 13, 14], [1, 11, 14], [1, 10, 14], [1, 9, 14], [1, 7, 14], [1, 6, 14], [15, 3, 9], [11, 3, 12], [1, 18, 9], [1, 17, 9], [1, 16, 9], [1, 15, 9], [1, 15, 14], [1, 16, 14], [1, 17, 14], [53, 6, 7, 1], [56, 7, 21, 1], [0, 7, 16], [0, 7, 15], [0, 7, 14], [0, 7, 13], [0, 7, 12], [0, 7, 11], [32, 7, 10], [0, 7, 22], [0, 7, 23], [0, 7, 24], [2, 27, 18], [2, 21, 18], [2, 15, 18], [0, 16, 20], [0, 22, 20], [0, 28, 20], [0, 13, 22], [0, 13, 23], [0, 13, 24], [0, 19, 24], [0, 19, 23], [0, 19, 22], [0, 25, 22], [0, 25, 23], [0, 25, 24], [6, 27, 21], [6, 21, 21], [6, 15, 21], [30, 14, 22], [30, 20, 22], [30, 26, 22], [56, 25, 21, 1], [56, 19, 21, 1], [56, 13, 21, 1], [0, 13, 16], [0, 13, 15], [0, 13, 14], [0, 13, 13], [0, 13, 12], [0, 13, 11], [0, 19, 16], [0, 19, 15], [0, 19, 14], [0, 19, 13], [0, 19, 12], [0, 19, 11], [0, 25, 16], [0, 25, 15], [0, 25, 14], [0, 25, 13], [0, 25, 12], [0, 25, 11], [32, 13, 10], [32, 19, 10], [32, 25, 10], [53, 24, 14, 0], [53, 18, 14, 0], [53, 12, 14, 0], [0, 10, 11], [0, 10, 10], [0, 10, 9], [0, 10, 8], [0, 10, 7], [0, 10, 6], [0, 16, 11], [0, 16, 10], [0, 16, 9], [0, 16, 8], [0, 16, 7], [0, 16, 6], [0, 22, 11], [0, 22, 10], [0, 22, 9], [0, 22, 8], [0, 22, 7], [0, 22, 6], [51, 9, 4, 0], [51, 15, 4, 0], [51, 21, 4, 0], [28, 11, 4], [28, 17, 4], [28, 23, 4], [29, 10, 4], [29, 16, 4], [29, 22, 4], [10, 7, 3], [10, 13, 3], [10, 19, 3], [2, 22, 1], [2, 16, 1], [2, 10, 1], [14, 7, 1], [14, 13, 1], [14, 19, 1], [1, 9, 1], [1, 15, 1], [1, 21, 1], [81, 9, 1], [82, 15, 1], [84, 21, 1], [85, 16, 16], [57, 26, 9, 1], [57, 20, 9, 1], [57, 14, 9, 1], [57, 8, 9, 1], [55, 8, 14, 1], [55, 14, 14, 1], [55, 20, 14, 1], [64, 10, 12, 2], [64, 16, 12, 2], [64, 22, 12, 2], [43, 9, 13], [43, 15, 13], [43, 21, 13], [42, 11, 13], [42, 17, 13], [42, 23, 13], [66, 22, 5, 2], [66, 16, 5, 2], [66, 10, 5, 2], [52, 11, 3, 2], [52, 17, 3, 2], [52, 23, 3, 2], [54, 7, 19, 4], [33, 8, 18], [30, 8, 22], [0, 7, 20], [0, 10, 20], [2, 9, 18], [6, 9, 21], [0, 7, 18], [0, 7, 17], [54, 13, 19, 4], [54, 19, 19, 4], [54, 25, 19, 4], [0, 13, 20], [0, 13, 18], [0, 13, 17], [0, 19, 17], [0, 19, 18], [0, 19, 20], [0, 25, 20], [0, 25, 18], [0, 25, 17], [33, 14, 18], [33, 20, 18], [33, 26, 18]], [[1, 0, 5, 0, [5, 5, 5, 5, 5]], [2, 1, 2, 0, [1, 1, 1, 1]], [3, 2, 2, 0, [2, 2, 2, 2]], [4, 3, 2, 0, [4, 4, 4, 4]], [5, 4, 2, 0, [1, 2, 4]]], "Bullet Train", 3150, 3783, 5139, "We've invested in one of them fast trains. We can't yet control it properly though, so watch out for it! Do the multi-coloured train first to save yourself a world of hassle.", "grassy"];
levelArray28 = [[[0, 4, 24], [0, 25, 24], [32, 25, 23], [41, 3, 21], [56, 3, 20, 2], [57, 26, 22, 1], [41, 2, 17], [28, 33, 19], [22, 4, 21], [39, 7, 21], [1, 10, 21], [1, 12, 21], [18, 13, 21], [22, 16, 23], [39, 19, 23], [65, 24, 22, 0], [29, 23, 23], [26, 23, 21], [1, 22, 23], [39, 20, 21], [22, 17, 21], [26, 15, 19], [55, 11, 21, 0], [43, 12, 20], [42, 16, 20], [1, 14, 19], [33, 10, 18], [65, 13, 19, 0], [26, 12, 18], [21, 7, 19], [1, 11, 18], [11, 4, 18], [1, 25, 22], [56, 2, 15, 0], [27, 4, 17], [42, 3, 16], [0, 2, 16], [0, 2, 14], [41, 1, 11], [54, 1, 10, 0], [0, 1, 9], [0, 1, 8], [0, 1, 7], [0, 1, 6], [20, 2, 7], [24, 1, 3], [32, 3, 6], [33, 4, 1], [38, 5, 1], [43, 3, 2], [43, 4, 5], [33, 5, 4], [57, 9, 2, 0], [1, 8, 2], [1, 6, 4], [43, 8, 3], [63, 7, 4, 0], [51, 13, 1, 0], [30, 8, 5], [39, 10, 1], [66, 15, 3, 0], [66, 18, 3, 0], [26, 17, 2], [33, 16, 2], [64, 15, 4, 0], [64, 18, 4, 0], [29, 17, 5], [30, 16, 5], [39, 9, 4], [29, 14, 5], [30, 13, 5], [26, 12, 4], [42, 14, 2], [33, 19, 2], [53, 20, 2, 0], [26, 19, 1], [29, 14, 1], [33, 15, 0], [38, 16, 0], [42, 19, 5], [42, 20, 6], [42, 21, 7], [42, 22, 8], [42, 24, 13], [42, 25, 14], [27, 23, 9], [31, 23, 12], [0, 23, 11], [0, 23, 10], [58, 33, 18, 0], [18, 30, 16], [22, 26, 15], [1, 29, 16], [38, 27, 22], [7, 30, 21], [32, 32, 20], [0, 33, 17], [41, 32, 14], [66, 32, 13, 0], [28, 33, 12], [23, 30, 10], [0, 33, 11], [0, 33, 10], [0, 33, 9], [0, 33, 8], [27, 33, 7], [56, 32, 6, 0], [28, 32, 7], [54, 30, 9, 0], [43, 31, 8], [0, 32, 5], [0, 32, 4], [41, 29, 6], [0, 29, 5], [2, 28, 3], [55, 27, 3, 0], [57, 29, 1, 0], [3, 30, 1], [43, 28, 2], [63, 21, 2, 0], [22, 22, 3], [29, 25, 4], [33, 26, 3], [25, 22, 0], [38, 26, 0], [1, 25, 0], [81, 33, 10], [81, 33, 9], [82, 1, 7], [82, 1, 8], [84, 23, 10], [84, 23, 11], [85, 12, 21], [85, 13, 21], [83, 13, 5], [83, 14, 5]], [[1, 0, 2, 0, [1, 2, 3, 4, 5]], [2, 0, 2, 165, [1, 2, 3, 4, 5]], [3, 1, 2, 60, [1, 2, 3, 4, 5]], [4, 1, 2, 230, [1, 2, 3, 4, 5]]], "Lethal Lake", 1827, 2100, 2280, "This was called Lazy Lake but then it became a big tourist attraction. We thought renaming it might help put people off - but at least it acts as a nice disclaimer.", "beach"];
levelArray15 = [[[55, 18, 15, 0], [56, 14, 13, 0], [57, 16, 9, 0], [58, 20, 11, 0], [42, 15, 14], [42, 19, 10], [43, 15, 10], [43, 19, 14], [1, 17, 9], [1, 17, 15], [0, 14, 12], [0, 20, 12], [33, 15, 15], [26, 19, 15], [31, 20, 14], [32, 20, 10], [29, 19, 9], [30, 15, 9], [27, 14, 10], [28, 14, 14], [25, 21, 8], [20, 20, 6], [23, 13, 6], [21, 11, 15], [18, 11, 8], [22, 21, 15], [19, 20, 16], [24, 13, 16], [2, 20, 4], [14, 13, 4], [0, 13, 19], [0, 21, 19], [6, 20, 21], [10, 13, 21], [0, 21, 20], [0, 13, 20], [1, 10, 8], [1, 9, 8], [1, 8, 8], [1, 7, 8], [1, 10, 16], [1, 9, 16], [1, 8, 16], [1, 7, 16], [1, 24, 8], [1, 25, 8], [1, 26, 8], [1, 27, 8], [1, 28, 8], [1, 29, 8], [1, 24, 16], [1, 25, 16], [1, 26, 16], [1, 27, 16], [1, 28, 16], [1, 29, 16], [10, 5, 15], [2, 30, 8], [6, 30, 15], [14, 5, 8], [0, 5, 10], [0, 5, 11], [0, 5, 12], [0, 5, 13], [0, 31, 11], [0, 31, 12], [0, 31, 13], [0, 31, 14], [1, 15, 22], [1, 16, 22], [1, 17, 22], [1, 18, 22], [1, 19, 4], [1, 18, 4], [1, 17, 4], [1, 16, 4], [52, 5, 14, 1], [53, 15, 4, 1], [54, 31, 10, 1], [51, 19, 22, 1], [27, 20, 23], [33, 32, 9], [21, 2, 15], [23, 13, 1], [0, 13, 0], [1, 1, 16], [1, 0, 16], [1, 33, 9], [1, 34, 9], [53, 16, 15, 2], [54, 14, 11, 2], [51, 18, 9, 2], [52, 20, 13, 2], [0, 20, 24], [81, 5, 12], [82, 17, 4], [83, 31, 12], [85, 17, 22]], [[1, 3, 2, 0, [1, 1, 1]], [2, 1, 2, 0, [2, 2, 2]], [3, 0, 2, 0, [3, 3, 3]], [4, 2, 2, 0, [5, 5, 5]]], "Petal Parkway", 1440, 1815, 2310, "Stop and smell the roses, but watch out for the thorns. Don't get leafed behind, I'll be uprooting the employees who don't have the stamen-a. Get it?! Ha. Stamen-a.", "urban"];
levelArray14 = [[[63, 24, 12, 0], [66, 17, 5, 0], [64, 17, 19, 0], [65, 10, 12, 0], [14, 8, 3], [10, 8, 20], [2, 25, 3], [6, 25, 20], [59, 15, 12, 0], [1, 16, 12], [1, 17, 12], [0, 17, 11], [0, 17, 12], [0, 17, 13], [42, 16, 13], [43, 16, 11], [1, 20, 3], [1, 21, 3], [1, 22, 3], [1, 23, 3], [1, 24, 3], [1, 20, 21], [1, 21, 21], [1, 22, 21], [1, 23, 21], [1, 24, 21], [1, 10, 21], [1, 11, 21], [1, 12, 21], [1, 13, 21], [1, 14, 21], [1, 11, 12], [1, 12, 12], [1, 13, 12], [1, 14, 12], [1, 10, 3], [1, 11, 3], [1, 12, 3], [1, 13, 3], [1, 14, 3], [0, 8, 12], [0, 8, 15], [0, 8, 16], [0, 8, 17], [0, 8, 18], [0, 8, 19], [0, 26, 19], [0, 26, 18], [0, 26, 17], [0, 26, 16], [0, 26, 15], [0, 26, 12], [0, 8, 9], [0, 8, 11], [0, 8, 7], [0, 8, 6], [0, 26, 11], [0, 26, 9], [0, 26, 8], [0, 26, 7], [0, 26, 5], [0, 26, 6], [0, 17, 6], [0, 17, 7], [0, 17, 8], [0, 17, 9], [0, 17, 15], [0, 17, 16], [0, 17, 17], [0, 17, 18], [1, 6, 6], [1, 5, 6], [1, 4, 6], [1, 3, 6], [1, 2, 6], [1, 1, 6], [1, 0, 6], [1, 6, 7], [1, 5, 7], [1, 4, 7], [1, 3, 7], [1, 2, 7], [1, 1, 7], [1, 0, 7], [29, 7, 6], [26, 7, 7], [58, 8, 8, 1], [52, 8, 5, 1], [52, 26, 10, 0], [58, 26, 14, 0], [42, 16, 4], [42, 25, 13], [42, 18, 20], [42, 9, 11], [43, 9, 13], [43, 16, 20], [43, 25, 11], [43, 18, 4], [56, 8, 10, 0], [54, 8, 14, 0], [0, 8, 13], [0, 26, 13], [82, 8, 6], [82, 8, 7], [81, 23, 3], [84, 11, 21], [84, 13, 21], [83, 26, 18], [29, 15, 21], [30, 19, 21], [58, 17, 14, 0], [52, 17, 10, 0], [29, 22, 13], [33, 23, 12], [30, 20, 13], [26, 19, 12], [1, 18, 12], [1, 21, 13], [85, 20, 13], [85, 22, 13], [81, 21, 3], [83, 26, 16], [26, 15, 3], [33, 19, 3]], [[1, 0, 2, 120, [1, 2, 3, 4, 5]], [2, 1, 2, 0, [1, 2, 3, 4, 5]]], "Metro City", 1560, 1650, 2070, "Be very careful - there are lots of witnesses in the middle of this busy city if something goes wrong! If you're finding it hard, trap one train in a loop and focus on the other.", "urban"];
levelArray22 = [[[63, 24, 12, 0], [64, 17, 19, 0], [65, 10, 12, 0], [14, 8, 3], [2, 25, 3], [59, 15, 12, 0], [1, 16, 12], [1, 17, 12], [0, 17, 11], [0, 17, 12], [0, 17, 13], [42, 16, 13], [43, 16, 11], [1, 20, 3], [1, 21, 3], [1, 22, 3], [1, 23, 3], [1, 24, 3], [1, 20, 21], [1, 21, 21], [1, 22, 21], [1, 23, 21], [1, 24, 21], [1, 10, 21], [1, 11, 21], [1, 12, 21], [1, 13, 21], [1, 14, 21], [1, 11, 12], [1, 12, 12], [1, 13, 12], [1, 14, 12], [1, 10, 3], [1, 11, 3], [1, 12, 3], [1, 13, 3], [1, 14, 3], [0, 8, 12], [0, 8, 15], [0, 8, 16], [0, 8, 17], [0, 8, 18], [0, 8, 19], [0, 26, 19], [0, 26, 18], [0, 26, 17], [0, 26, 16], [0, 26, 15], [0, 26, 12], [0, 8, 9], [0, 8, 11], [0, 8, 7], [0, 8, 6], [0, 26, 11], [0, 26, 9], [0, 26, 8], [0, 26, 7], [0, 26, 5], [0, 26, 6], [0, 17, 6], [0, 17, 7], [0, 17, 8], [0, 17, 9], [0, 17, 15], [0, 17, 16], [0, 17, 17], [0, 17, 18], [52, 26, 10, 0], [58, 26, 14, 0], [42, 25, 13], [42, 18, 20], [42, 9, 11], [43, 9, 13], [43, 16, 20], [43, 25, 11], [43, 18, 4], [56, 8, 10, 0], [54, 8, 14, 0], [0, 8, 13], [0, 26, 13], [58, 17, 14, 0], [52, 17, 10, 0], [1, 18, 12], [1, 16, 21], [1, 17, 21], [1, 18, 21], [0, 8, 5], [0, 8, 8], [1, 19, 12], [1, 20, 12], [1, 21, 12], [1, 22, 12], [1, 23, 12], [53, 19, 21, 0], [55, 15, 21, 0], [30, 9, 21], [29, 25, 21], [0, 8, 21], [0, 8, 22], [0, 8, 23], [0, 8, 24], [0, 26, 21], [0, 26, 22], [0, 26, 23], [0, 26, 24], [32, 17, 5], [57, 19, 3, 0], [1, 18, 3], [1, 17, 3], [1, 16, 3], [1, 15, 3], [56, 8, 20, 2], [52, 26, 20, 2], [81, 8, 6], [81, 8, 8], [82, 26, 6], [82, 26, 8], [83, 11, 21], [83, 13, 21], [85, 21, 21], [85, 23, 21], [84, 17, 6], [84, 17, 8]], [[1, 0, 1, 30, [1, 2, 3, 4, 5]], [2, 1, 3, 0, [1, 2, 3, 4, 5]]], "Priority Line", 1890, 2490, 3150, "Customers are paying top-dollar for these first-class fast trains. I was all for crashing the slow one to raise the quality of our clientele but my wife protested. We're now divorced.", "urban"];
levelArray5 = [[[1, 0, 8], [1, 0, 12], [1, 0, 16], [1, 1, 8], [1, 2, 8], [1, 3, 8], [1, 4, 8], [1, 5, 8], [1, 6, 8], [1, 7, 8], [1, 8, 8], [1, 9, 8], [1, 1, 12], [1, 2, 12], [1, 3, 12], [1, 4, 12], [1, 5, 12], [1, 6, 12], [1, 7, 12], [1, 8, 12], [1, 9, 12], [1, 11, 8], [1, 12, 8], [1, 11, 12], [1, 12, 12], [1, 9, 16], [1, 8, 16], [1, 7, 16], [1, 6, 16], [1, 5, 16], [1, 4, 16], [1, 3, 16], [1, 2, 16], [1, 1, 16], [1, 11, 16], [1, 12, 16], [1, 13, 16], [1, 15, 16], [1, 16, 16], [1, 13, 8], [1, 15, 8], [1, 16, 8], [1, 13, 12], [1, 15, 12], [1, 16, 12], [1, 20, 12], [1, 20, 8], [1, 20, 16], [1, 18, 16], [1, 18, 12], [1, 18, 8], [1, 19, 8], [1, 19, 12], [1, 19, 16], [1, 23, 16], [1, 22, 16], [1, 25, 16], [1, 26, 16], [1, 27, 16], [1, 29, 16], [1, 30, 16], [1, 31, 16], [1, 32, 16], [1, 33, 16], [1, 34, 16], [1, 23, 12], [1, 22, 12], [1, 25, 12], [1, 26, 12], [1, 27, 12], [1, 29, 12], [1, 30, 12], [1, 31, 12], [1, 32, 12], [1, 33, 12], [1, 34, 12], [1, 23, 8], [1, 22, 8], [1, 25, 8], [1, 26, 8], [1, 27, 8], [1, 29, 8], [1, 30, 8], [1, 31, 8], [1, 32, 8], [1, 33, 8], [1, 34, 8], [61, 28, 12, 1], [61, 14, 12, 1], [59, 10, 12, 0], [59, 24, 12, 0], [51, 24, 8, 0], [55, 24, 16, 0], [51, 10, 8, 0], [55, 10, 16, 0], [53, 14, 16, 1], [53, 28, 16, 1], [57, 28, 8, 1], [57, 14, 8, 1], [42, 12, 10], [42, 13, 11], [42, 26, 14], [42, 27, 15], [42, 25, 9], [42, 25, 13], [42, 11, 13], [42, 12, 14], [43, 12, 14], [43, 13, 13], [43, 12, 10], [43, 11, 11], [42, 26, 10], [42, 27, 11], [42, 13, 15], [42, 11, 9], [43, 11, 15], [43, 13, 9], [43, 25, 11], [43, 26, 10], [43, 27, 9], [43, 25, 15], [43, 26, 14], [43, 27, 13], [82, 31, 8], [81, 31, 16], [83, 31, 12], [43, 18, 15], [43, 19, 14], [43, 20, 13], [43, 18, 11], [43, 19, 10], [43, 20, 9], [42, 18, 9], [42, 19, 10], [42, 20, 11], [42, 18, 13], [42, 19, 14], [42, 20, 15], [57, 21, 8, 1], [53, 21, 16, 1], [61, 21, 12, 1], [51, 17, 8, 0], [59, 17, 12, 0], [55, 17, 16, 0]], [[1, 1, 1.5, 0, [2, 2, 2]], [2, 1, 1.5, 150, [1, 1, 1]], [3, 1, 1.5, 300, [3, 3, 3]], [4, 2, 1.5, 450, [3, 3, 3]], [5, 0, 1.5, 600, [1, 1, 1]], [6, 0, 1.5, 750, [3, 3, 3]], [7, 2, 1.5, 900, [2, 2, 2]], [8, 1, 1.5, 1050, [1, 1, 1]]], "Three Ways", 1782, 1929, 2100, "This is a busy route into the city centre. Think fast and make sure all the trains get to the right stops. Our tickets are non-refundable by the way.", "urban"];
levelArray11 = [[[1, 0, 20], [1, 1, 20], [1, 2, 20], [1, 3, 20], [1, 4, 20], [1, 5, 20], [1, 6, 20], [1, 7, 20], [1, 8, 20], [1, 9, 20], [1, 10, 20], [1, 11, 20], [1, 12, 20], [1, 13, 20], [1, 14, 20], [1, 15, 20], [1, 16, 20], [1, 17, 20], [1, 18, 20], [1, 19, 20], [1, 20, 20], [1, 21, 20], [1, 22, 20], [1, 23, 20], [1, 24, 20], [1, 25, 20], [1, 26, 20], [1, 27, 20], [7, 28, 18], [0, 30, 17], [0, 30, 16], [0, 30, 15], [0, 30, 14], [0, 30, 13], [0, 30, 12], [0, 30, 11], [0, 30, 10], [0, 30, 9], [0, 30, 8], [0, 30, 7], [3, 28, 3], [1, 27, 3], [1, 26, 3], [1, 25, 3], [1, 23, 3], [1, 24, 3], [1, 22, 3], [1, 21, 3], [1, 20, 3], [1, 19, 3], [1, 18, 3], [1, 17, 3], [1, 16, 3], [1, 15, 3], [1, 14, 3], [1, 13, 3], [1, 12, 3], [1, 11, 3], [1, 10, 3], [1, 9, 3], [1, 8, 3], [1, 7, 3], [15, 4, 3], [0, 4, 7], [0, 4, 9], [0, 4, 8], [0, 4, 10], [0, 4, 11], [0, 4, 12], [0, 4, 13], [11, 4, 14], [1, 7, 16], [1, 8, 16], [1, 9, 16], [1, 10, 16], [1, 11, 16], [1, 12, 16], [1, 14, 16], [1, 13, 16], [1, 15, 16], [1, 16, 16], [1, 17, 16], [1, 18, 16], [1, 19, 16], [1, 20, 16], [1, 21, 16], [1, 22, 16], [1, 23, 16], [7, 24, 14], [3, 24, 7], [0, 26, 13], [0, 26, 12], [0, 26, 11], [1, 23, 7], [1, 22, 7], [1, 21, 7], [1, 20, 7], [1, 19, 7], [1, 18, 7], [1, 17, 7], [1, 16, 7], [1, 15, 7], [1, 14, 7], [1, 13, 7], [1, 12, 7], [1, 11, 7], [15, 8, 7], [11, 8, 10], [0, 26, 10], [0, 30, 6], [0, 4, 6], [1, 11, 12], [1, 12, 12], [1, 13, 12], [1, 14, 12], [1, 15, 12], [1, 16, 12], [1, 17, 12], [1, 18, 12], [1, 20, 12], [1, 19, 12], [1, 21, 12], [1, 22, 12], [1, 23, 12], [81, 17, 12], [0, 2, 0], [0, 2, 1], [0, 2, 2], [0, 2, 4], [0, 2, 3], [0, 32, 0], [0, 32, 1], [0, 32, 2], [0, 32, 3], [0, 32, 4], [0, 32, 5], [0, 32, 7], [0, 32, 8], [0, 32, 10], [0, 32, 11], [0, 32, 12], [0, 32, 13], [0, 32, 14], [0, 32, 16], [0, 2, 5], [0, 2, 7], [0, 2, 8], [0, 2, 10], [0, 2, 11], [0, 2, 12], [0, 2, 13], [0, 2, 14], [0, 2, 16], [6, 31, 17], [10, 2, 17], [1, 4, 18], [1, 5, 18], [1, 6, 18], [1, 8, 18], [1, 9, 18], [1, 10, 18], [1, 11, 18], [1, 13, 18], [1, 14, 18], [1, 15, 18], [1, 16, 18], [1, 17, 18], [1, 18, 18], [1, 19, 18], [1, 20, 18], [1, 21, 18], [1, 23, 18], [1, 24, 18], [1, 25, 18], [1, 26, 18], [1, 28, 18], [1, 29, 18], [1, 30, 18], [53, 22, 18, 0], [55, 12, 18, 0], [28, 13, 17], [31, 21, 17], [54, 21, 15, 0], [33, 22, 14], [58, 32, 15, 0], [26, 31, 14], [0, 21, 16], [0, 21, 14], [0, 21, 12], [0, 21, 10], [0, 21, 8], [0, 21, 7], [14, 21, 5], [1, 23, 5], [1, 24, 5], [1, 25, 5], [1, 26, 5], [1, 28, 5], [1, 29, 5], [1, 30, 5], [1, 23, 14], [1, 24, 14], [1, 25, 14], [1, 26, 14], [1, 27, 14], [1, 28, 14], [1, 29, 14], [1, 30, 14], [1, 23, 10], [1, 24, 10], [1, 25, 10], [1, 26, 10], [1, 27, 10], [1, 28, 10], [1, 29, 10], [1, 30, 10], [52, 32, 9, 0], [58, 32, 6, 2], [29, 31, 10], [26, 31, 5], [58, 21, 11, 0], [52, 21, 13, 0], [56, 21, 9, 0], [29, 20, 14], [26, 20, 10], [33, 14, 10], [30, 14, 14], [56, 13, 13, 0], [54, 13, 11, 0], [1, 15, 10], [1, 16, 10], [1, 17, 10], [1, 18, 10], [1, 19, 10], [1, 19, 14], [1, 18, 14], [1, 17, 14], [1, 16, 14], [1, 15, 14], [30, 22, 10], [0, 13, 16], [0, 13, 14], [0, 13, 12], [0, 13, 10], [0, 13, 8], [0, 13, 7], [58, 13, 15, 0], [26, 12, 14], [29, 12, 10], [2, 12, 5], [1, 11, 5], [1, 10, 5], [1, 9, 5], [1, 8, 5], [1, 6, 5], [1, 5, 5], [1, 4, 5], [1, 11, 10], [1, 10, 10], [1, 9, 10], [1, 8, 10], [1, 7, 10], [1, 6, 10], [1, 5, 10], [1, 4, 10], [1, 11, 14], [1, 10, 14], [1, 9, 14], [1, 8, 14], [1, 7, 14], [1, 6, 14], [1, 5, 14], [1, 4, 14], [52, 13, 9, 0], [33, 3, 5], [33, 3, 14], [30, 3, 10], [56, 2, 9, 0], [54, 2, 15, 0], [54, 2, 6, 2], [82, 26, 12], [84, 4, 8], [83, 23, 3], [85, 21, 20], [51, 7, 18, 4], [57, 27, 18, 4], [32, 26, 19], [27, 8, 19], [0, 8, 20], [0, 26, 20], [10, 8, 21], [6, 25, 21], [1, 10, 22], [1, 11, 22], [1, 12, 22], [1, 13, 22], [1, 14, 22], [1, 16, 22], [1, 15, 22], [1, 17, 22], [1, 18, 22], [1, 19, 22], [1, 20, 22], [1, 21, 22], [1, 22, 22], [1, 23, 22], [1, 24, 22], [55, 7, 5, 4], [53, 27, 5, 4], [31, 26, 4], [28, 8, 4], [0, 8, 3], [0, 26, 3], [14, 8, 1], [2, 25, 1], [1, 24, 1], [1, 23, 1], [1, 22, 1], [1, 21, 1], [1, 10, 1], [1, 11, 1], [1, 12, 1], [1, 13, 1], [1, 15, 1], [1, 14, 1], [1, 17, 1], [1, 20, 1], [1, 19, 1], [57, 16, 1, 0], [51, 18, 1, 0], [27, 19, 2], [32, 15, 2], [0, 15, 3], [0, 15, 4], [0, 15, 5], [0, 15, 6], [0, 15, 7], [0, 19, 3], [0, 19, 4], [0, 19, 5], [0, 19, 6], [0, 19, 7], [10, 15, 8], [6, 18, 8], [1, 17, 9]], [[0, 0, 1, 0, [2, 1, 3, 4, 5]], [1, 1, 2, 0, [0, 0, 0]], [2, 2, 2, 0, [0, 0, 0]]], "Runaway", 2457, 2547, 2667, "Somehow, and I'm sure it's nothing to do with saving money, we sent a passenger train out with no driver. You can't control it, so make sure to keep the other trains from hitting it!", "grassy"];
levelArray8 = [[[9, 22, 17], [8, 21, 16], [7, 20, 15], [6, 19, 14], [10, 14, 14], [2, 19, 9], [14, 14, 9], [3, 20, 7], [4, 21, 5], [5, 22, 3], [15, 12, 7], [16, 10, 5], [17, 8, 3], [1, 13, 3], [1, 15, 3], [1, 16, 3], [1, 17, 3], [1, 18, 3], [1, 19, 3], [1, 20, 3], [1, 21, 3], [1, 21, 21], [1, 19, 21], [1, 18, 21], [1, 16, 21], [1, 15, 21], [1, 14, 21], [1, 13, 21], [1, 20, 19], [1, 19, 19], [1, 18, 19], [1, 16, 19], [1, 15, 19], [1, 19, 17], [1, 17, 17], [1, 16, 17], [1, 15, 17], [1, 18, 15], [1, 17, 15], [1, 17, 9], [1, 16, 9], [1, 15, 7], [1, 17, 7], [1, 18, 7], [1, 19, 7], [1, 14, 5], [1, 15, 5], [1, 16, 5], [1, 17, 5], [1, 18, 5], [1, 19, 5], [0, 20, 13], [0, 20, 12], [0, 22, 10], [0, 22, 11], [0, 22, 12], [0, 22, 14], [0, 24, 10], [0, 24, 11], [0, 24, 12], [0, 24, 13], [0, 24, 14], [0, 24, 15], [0, 26, 8], [0, 26, 9], [0, 26, 10], [0, 26, 11], [0, 26, 12], [0, 26, 13], [0, 26, 14], [0, 26, 16], [0, 14, 11], [0, 14, 12], [0, 12, 10], [0, 12, 12], [0, 12, 13], [0, 12, 14], [0, 10, 9], [0, 10, 10], [0, 10, 11], [0, 10, 12], [0, 10, 13], [0, 10, 14], [0, 8, 8], [0, 8, 10], [0, 8, 11], [0, 8, 12], [0, 8, 13], [0, 8, 14], [0, 8, 15], [0, 8, 16], [13, 8, 17], [11, 12, 15], [12, 10, 16], [57, 16, 15, 0], [55, 18, 9, 0], [54, 20, 11, 0], [52, 14, 13, 0], [29, 13, 14], [32, 15, 16], [33, 21, 10], [28, 19, 8], [33, 11, 14], [57, 20, 5, 0], [52, 24, 9, 0], [55, 14, 19, 0], [54, 10, 15, 0], [28, 15, 18], [29, 23, 10], [32, 19, 6], [1, 12, 14], [1, 22, 10], [0, 15, 17], [0, 19, 7], [53, 20, 21, 0], [58, 26, 15, 0], [51, 14, 3, 0], [56, 8, 9, 0], [53, 16, 7, 0], [56, 22, 13, 0], [51, 18, 17, 0], [58, 12, 11, 0], [26, 11, 10], [26, 25, 14], [30, 9, 10], [30, 23, 14], [31, 19, 20], [31, 15, 6], [27, 15, 4], [27, 19, 18], [0, 19, 19], [0, 15, 5], [1, 24, 14], [1, 10, 10], [32, 16, 20], [0, 16, 21], [0, 16, 22], [0, 16, 23], [0, 16, 24], [0, 18, 24], [0, 18, 23], [57, 17, 19, 1], [51, 17, 21, 1], [27, 18, 22], [81, 14, 11], [81, 14, 12], [81, 12, 13], [81, 12, 12], [82, 20, 12], [82, 20, 13], [82, 22, 12], [82, 22, 11], [84, 17, 3], [84, 18, 3], [84, 17, 5], [84, 18, 5], [83, 8, 12], [83, 8, 13], [83, 10, 13], [83, 10, 12]], [[1, 0, 2, 0, [1, 2, 3, 4, 1, 2, 3, 4]], [2, 1, 2.5, 90, [3, 2, 1, 4, 2, 3, 1, 4]]], "Frying Pan", 796, 870, 1020, "Two junction changes is all it takes - but make them at the wrong time and we'll have ourselves a big, charred, metal omlette. Mmmm, omlette... I'll be right back.", "grassy"];
levelArray6 = [[[7, 14, 9], [11, 18, 9], [15, 18, 13], [3, 14, 13], [0, 16, 16], [0, 16, 17], [0, 16, 18], [1, 13, 13], [1, 12, 13], [1, 11, 13], [33, 10, 13], [28, 16, 19], [54, 9, 14, 2], [53, 19, 20, 2], [52, 25, 10, 2], [51, 15, 4, 2], [57, 19, 4, 0], [13, 9, 16], [1, 14, 20], [0, 9, 15], [1, 16, 20], [1, 17, 20], [1, 18, 20], [1, 16, 4], [1, 17, 4], [1, 18, 4], [0, 25, 11], [0, 25, 12], [0, 25, 13], [0, 9, 11], [0, 9, 13], [8, 22, 17], [15, 9, 4], [2, 24, 4], [1, 12, 4], [1, 13, 4], [1, 14, 4], [1, 20, 4], [1, 22, 4], [1, 23, 4], [1, 13, 11], [1, 12, 11], [1, 11, 11], [1, 21, 11], [1, 22, 11], [1, 23, 11], [1, 21, 13], [1, 22, 13], [1, 23, 13], [1, 20, 20], [0, 18, 16], [0, 18, 17], [0, 18, 18], [0, 18, 8], [0, 18, 7], [0, 18, 6], [0, 16, 8], [0, 16, 7], [0, 16, 6], [0, 9, 7], [0, 9, 9], [0, 25, 6], [0, 25, 7], [0, 25, 8], [0, 25, 9], [0, 25, 15], [0, 25, 16], [31, 18, 19], [26, 24, 13], [29, 24, 11], [32, 18, 5], [27, 16, 5], [30, 10, 11], [58, 9, 12, 1], [58, 9, 8, 1], [55, 21, 4, 1], [57, 21, 20, 1], [24, 19, 21], [20, 22, 1], [18, 6, 6], [18, 6, 10], [1, 5, 10], [1, 4, 10], [1, 3, 10], [1, 2, 10], [1, 1, 10], [1, 0, 10], [1, 5, 6], [1, 4, 6], [1, 3, 6], [1, 2, 6], [1, 1, 6], [1, 0, 6], [0, 19, 24], [0, 23, 0], [82, 16, 17], [84, 22, 13], [81, 18, 7], [85, 12, 11], [56, 9, 10, 4], [55, 15, 20, 4], [58, 25, 14, 4]], [[1, 1, 2.5, 0, [5, 4, 2, 1]], [2, 0, 2.5, 0, [5, 4, 2, 1]], [3, 2, 2.5, 0, [5, 4, 2, 1]], [4, 3, 2.5, 0, [5, 4, 2, 1]]], "The Quad", 1566, 1890, 2085, "Four trains, four entrances, four stations. I'm sure you can work out a few crafty tricks to optimise your time here. Health and Safety don't need to know.", "grassy"];
levelArray30 = [[[14, 12, 7], [10, 12, 16], [2, 21, 7], [52, 22, 9, 0], [58, 22, 11, 0], [52, 22, 13, 0], [58, 22, 15, 0], [55, 14, 17, 0], [53, 16, 17, 0], [55, 18, 17, 0], [53, 20, 17, 0], [54, 12, 15, 0], [56, 12, 13, 0], [54, 12, 11, 0], [56, 12, 9, 0], [0, 12, 10], [0, 12, 12], [0, 12, 14], [0, 22, 14], [0, 22, 12], [0, 22, 10], [1, 15, 17], [1, 17, 17], [1, 19, 17], [57, 20, 7, 0], [51, 18, 7, 0], [57, 16, 7, 0], [51, 14, 7, 0], [1, 15, 7], [1, 17, 7], [1, 19, 7], [66, 15, 8, 0], [66, 19, 8, 0], [63, 21, 10, 0], [63, 21, 14, 0], [65, 13, 14, 0], [65, 13, 10, 0], [1, 14, 10], [1, 15, 10], [1, 16, 10], [1, 17, 10], [1, 18, 10], [1, 19, 10], [1, 20, 10], [1, 20, 14], [1, 19, 14], [1, 18, 14], [1, 17, 14], [1, 16, 14], [1, 15, 14], [1, 14, 14], [0, 15, 15], [0, 15, 14], [0, 15, 13], [0, 15, 12], [0, 15, 11], [0, 15, 10], [0, 15, 9], [0, 19, 9], [0, 19, 10], [0, 19, 11], [0, 19, 12], [0, 19, 13], [0, 19, 14], [0, 19, 15], [64, 19, 16, 0], [64, 15, 16, 0], [81, 15, 12], [82, 17, 10], [84, 19, 12], [83, 17, 14], [29, 21, 17], [52, 22, 16, 2], [0, 22, 17], [0, 22, 18], [0, 22, 19], [0, 22, 20], [0, 22, 21], [10, 22, 22], [6, 24, 22], [0, 25, 21], [0, 25, 20], [0, 25, 19], [0, 25, 18], [0, 25, 17], [0, 25, 16], [0, 25, 15], [0, 25, 14], [0, 25, 13], [0, 25, 12], [0, 25, 11], [0, 25, 10], [0, 25, 9], [0, 25, 8], [0, 25, 7], [0, 25, 6], [0, 25, 5], [0, 25, 4], [0, 25, 3], [2, 27, 1], [14, 25, 1], [0, 28, 3], [0, 28, 4], [0, 28, 5], [0, 28, 6], [0, 28, 7], [0, 28, 8], [0, 28, 9], [0, 28, 10], [10, 28, 11], [1, 30, 12], [1, 31, 12], [1, 32, 12], [1, 33, 12], [1, 34, 12]], [[1, 0, 2, 0, [2, 3, 4, 1]], [2, 0, 2, 120, [2, 3, 4, 1]], [3, 0, 2, 240, [2, 3, 4, 1]], [4, 0, 2, 360, [2, 3, 4, 1]]], "Gridlock", 2115, 2631, 3147, "Why do they call it rush hour when everything goes so slowly? Use the loops carefully in order to manage four trains in this tight space.", "urban"];
levelArray23 = [[[65, 15, 6, 0], [23, 10, 6], [18, 12, 4], [25, 19, 4], [20, 22, 6], [66, 21, 9, 0], [1, 17, 6], [1, 16, 6], [43, 14, 7], [43, 13, 8], [42, 19, 7], [42, 20, 8], [2, 22, 4], [14, 10, 4], [13, 12, 11], [9, 17, 11], [56, 21, 10, 0], [52, 12, 10, 0], [19, 22, 11], [24, 10, 11], [64, 10, 14, 0], [32, 9, 15], [27, 24, 15], [32, 22, 15], [6, 21, 16], [14, 19, 17], [27, 11, 15], [10, 11, 16], [2, 13, 17], [0, 24, 16], [0, 24, 17], [0, 24, 18], [0, 9, 16], [0, 9, 17], [0, 9, 18], [6, 15, 11], [10, 13, 11], [14, 13, 9], [2, 15, 9], [10, 17, 11], [6, 19, 11], [2, 19, 9], [14, 17, 9], [42, 24, 21], [43, 9, 21], [55, 8, 22, 2], [53, 25, 22, 2], [1, 10, 22], [1, 11, 22], [1, 12, 22], [1, 13, 22], [1, 14, 22], [1, 15, 22], [1, 16, 22], [1, 17, 22], [1, 18, 22], [1, 19, 22], [1, 20, 22], [1, 21, 22], [1, 22, 22], [1, 24, 22], [1, 26, 22], [1, 27, 22], [1, 28, 22], [1, 29, 22], [1, 30, 22], [1, 31, 22], [1, 32, 22], [1, 33, 22], [1, 34, 22], [1, 9, 22], [1, 7, 22], [1, 6, 22], [1, 5, 22], [1, 4, 22], [1, 3, 22], [1, 2, 22], [1, 1, 22], [1, 0, 22], [66, 12, 9, 4], [63, 18, 6, 4], [64, 23, 14, 4], [82, 13, 8], [82, 14, 7], [81, 19, 7], [81, 20, 8], [1, 23, 22], [83, 24, 17], [83, 24, 18], [85, 9, 17], [85, 9, 18], [1, 11, 20], [63, 23, 20, 1], [1, 21, 20], [1, 22, 20], [28, 24, 19], [65, 10, 20, 2], [31, 9, 19], [1, 12, 20], [29, 13, 20], [30, 20, 20], [64, 14, 19, 4], [64, 19, 19, 0], [29, 18, 20], [30, 15, 20], [1, 16, 20], [1, 17, 20], [84, 16, 20], [84, 17, 20]], [[1, 1, 2, 0, [1, 2, 3, 5]], [2, 0, 2, 15, [5, 4, 3, 2, 1]]], "Koala Cape", 1473, 1650, 1800, "Koalas may look cuddly but did you know their favourite food is actually children's faces? Just ask my sister. She'll have to write it down since she can't talk no more.", "desert"];
levelArray31 = [[[0, 17, 19], [62, 17, 18, 0], [62, 17, 16, 0], [33, 18, 17], [33, 18, 15], [33, 18, 13], [26, 16, 13], [26, 16, 15], [26, 16, 17], [0, 17, 17], [0, 17, 15], [0, 23, 17], [0, 23, 16], [0, 23, 15], [0, 23, 14], [0, 24, 12], [0, 24, 13], [0, 24, 14], [0, 24, 15], [0, 24, 16], [0, 24, 17], [0, 11, 14], [0, 11, 15], [0, 11, 16], [0, 11, 17], [0, 10, 9], [0, 10, 8], [0, 10, 7], [0, 10, 6], [0, 10, 5], [0, 10, 4], [1, 17, 1], [1, 18, 1], [1, 19, 1], [1, 20, 1], [1, 21, 1], [1, 18, 2], [1, 17, 2], [1, 16, 2], [22, 18, 21], [21, 14, 21], [9, 22, 18], [13, 8, 18], [1, 21, 22], [0, 26, 16], [0, 26, 15], [0, 26, 14], [0, 26, 13], [0, 26, 11], [0, 26, 10], [0, 26, 9], [0, 26, 8], [0, 26, 6], [0, 26, 5], [0, 26, 4], [0, 26, 3], [0, 26, 2], [0, 26, 1], [0, 26, 0], [0, 8, 16], [0, 8, 15], [0, 8, 14], [0, 8, 13], [0, 8, 11], [0, 8, 10], [0, 8, 9], [0, 8, 8], [0, 8, 6], [0, 8, 5], [0, 8, 4], [0, 8, 3], [0, 8, 2], [0, 8, 1], [0, 8, 0], [58, 8, 7, 2], [54, 26, 7, 2], [26, 7, 6], [26, 7, 11], [26, 7, 16], [33, 27, 16], [33, 27, 11], [33, 27, 6], [1, 29, 11], [1, 29, 6], [1, 5, 6], [57, 28, 16, 2], [51, 6, 16, 2], [27, 7, 17], [14, 4, 16], [10, 4, 18], [6, 6, 18], [57, 28, 11, 2], [57, 28, 6, 2], [51, 6, 11, 2], [51, 6, 6, 2], [1, 4, 6], [1, 5, 9], [1, 4, 9], [1, 30, 6], [1, 29, 9], [1, 30, 9], [1, 5, 11], [1, 5, 14], [1, 29, 14], [27, 7, 12], [27, 7, 7], [32, 27, 7], [32, 27, 12], [32, 27, 17], [2, 29, 16], [2, 30, 11], [2, 31, 6], [14, 2, 6], [14, 3, 11], [10, 3, 13], [10, 2, 8], [10, 27, 8], [10, 27, 13], [10, 27, 18], [6, 6, 13], [6, 6, 8], [6, 31, 8], [6, 30, 13], [6, 29, 18], [1, 13, 22], [64, 17, 20, 4], [58, 8, 17, 4], [58, 8, 12, 4], [54, 26, 17, 4], [54, 26, 12, 4], [14, 14, 17], [2, 19, 17], [6, 13, 19], [11, 10, 18], [10, 20, 19], [7, 22, 18], [0, 24, 11], [0, 24, 10], [0, 24, 9], [0, 24, 8], [0, 24, 7], [0, 24, 6], [0, 24, 5], [0, 24, 4], [0, 10, 17], [0, 10, 15], [0, 10, 16], [0, 10, 14], [0, 10, 12], [0, 10, 13], [0, 10, 11], [0, 10, 10], [15, 10, 1], [3, 22, 1], [1, 13, 1], [1, 14, 1], [1, 15, 1], [1, 16, 1], [36, 11, 18], [36, 21, 18], [3, 19, 15], [15, 13, 15], [0, 23, 13], [0, 23, 12], [0, 23, 11], [0, 23, 10], [0, 23, 9], [0, 23, 8], [0, 23, 7], [0, 23, 6], [0, 23, 5], [0, 23, 4], [0, 11, 13], [0, 11, 12], [0, 11, 11], [0, 11, 10], [0, 11, 9], [0, 11, 8], [0, 11, 7], [0, 11, 6], [0, 11, 5], [0, 11, 4], [14, 11, 2], [2, 22, 2], [1, 13, 2], [1, 14, 2], [1, 15, 2], [1, 19, 2], [1, 20, 2], [1, 21, 2], [82, 4, 17], [82, 4, 18], [82, 31, 12], [82, 31, 13], [82, 32, 7], [82, 32, 8], [85, 30, 18], [85, 30, 17], [85, 3, 13], [85, 3, 12], [85, 2, 8], [85, 2, 7], [66, 17, 14, 1], [1, 19, 13], [1, 20, 13], [1, 15, 13], [1, 14, 13], [10, 12, 12], [6, 21, 12], [0, 22, 11], [0, 22, 10], [0, 12, 11], [0, 12, 10], [1, 14, 8], [1, 15, 8], [1, 16, 8], [1, 17, 8], [1, 18, 8], [1, 19, 8], [1, 20, 8], [2, 21, 8], [14, 12, 8]], [[1, 0, 1, 0, [2, 2, 2, 2, 2, 2, 2, 2, 2, 2]], [2, 0, 3, 770, [2, 2, 2, 2, 2, 2, 2, 2]], [3, 0, 5, 970, [2, 2, 2, 2, 2, 2]], [4, 1, 1, 215, [5, 5, 5, 5, 5, 5, 5, 5, 5, 5]], [5, 1, 3, 830, [5, 5, 5, 5, 5, 5, 5, 5]], [6, 1, 5, 1020, [5, 5, 5, 5, 5, 5]]], "Cyclic Exchange", 2874, 2964, 3114, "Six trains will come in at different speeds - seperate them accordingly and then direct them into the right-sized loop to avoid any nasty PR nightmares.", "desert"];
levelArray9 = [[[63, 6, 12, 0], [25, 8, 9], [22, 8, 14], [63, 11, 9, 0], [63, 11, 15, 0], [43, 7, 11], [42, 7, 13], [25, 12, 13], [22, 12, 16], [22, 12, 10], [25, 12, 7], [1, 15, 7], [1, 16, 7], [1, 17, 7], [1, 18, 7], [1, 19, 7], [1, 20, 7], [1, 21, 7], [1, 22, 7], [1, 15, 11], [1, 21, 11], [1, 20, 11], [1, 18, 11], [1, 17, 11], [1, 16, 11], [1, 19, 11], [1, 22, 11], [1, 15, 13], [1, 16, 13], [1, 17, 13], [1, 18, 13], [1, 19, 13], [1, 20, 13], [1, 21, 13], [1, 22, 13], [1, 15, 17], [1, 16, 17], [1, 17, 17], [1, 18, 17], [1, 19, 17], [1, 20, 17], [1, 21, 17], [1, 22, 17], [65, 27, 15, 1], [65, 27, 9, 1], [65, 32, 12, 1], [1, 33, 12], [1, 34, 12], [13, 1, 8], [0, 1, 7], [0, 1, 6], [0, 1, 5], [0, 1, 4], [0, 1, 3], [0, 1, 2], [0, 1, 1], [0, 1, 0], [81, 16, 7], [82, 22, 7], [85, 22, 11], [82, 16, 13], [85, 22, 13], [81, 16, 17], [83, 22, 17], [83, 16, 11], [18, 28, 9], [21, 28, 14], [1, 23, 13], [1, 23, 17], [1, 23, 11], [1, 23, 7], [42, 31, 11], [43, 31, 13], [18, 24, 7], [18, 24, 13], [21, 24, 16], [21, 24, 10]], [[1, 1, 2, 0, [3, 5]], [2, 1, 2, 90, [1, 3]], [3, 1, 2, 180, [2, 5]], [4, 1, 2, 270, [1, 2]], [5, 1, 2, 360, [5, 2, 5, 2]], [6, 1, 2, 450, [3, 5, 5, 5]], [7, 1, 2, 540, [1, 1, 1, 1, 1]]], "Kwiksaut", 1104, 1164, 1224, "Think quick, and sort these incoming trains into the correct lanes. Minimise junction changes, we need to keep our costs down. Ooh, a penny!", "urban"];
levelArray25 = [[[0, 2, 23], [0, 2, 22], [0, 2, 21], [0, 2, 20], [0, 2, 19], [0, 2, 18], [0, 2, 17], [0, 4, 23], [0, 4, 22], [15, 4, 18], [0, 4, 21], [15, 2, 14], [1, 8, 18], [1, 10, 18], [1, 12, 18], [1, 13, 18], [1, 14, 18], [1, 16, 18], [7, 17, 16], [0, 19, 15], [0, 19, 14], [0, 19, 12], [0, 19, 10], [0, 19, 8], [15, 19, 3], [1, 22, 3], [1, 24, 3], [1, 25, 3], [1, 26, 3], [1, 28, 3], [3, 29, 3], [0, 31, 8], [0, 31, 9], [0, 31, 10], [0, 31, 14], [0, 31, 15], [0, 31, 16], [0, 31, 18], [0, 31, 19], [7, 29, 20], [1, 28, 22], [1, 27, 22], [1, 27, 15], [1, 28, 15], [11, 24, 20], [15, 24, 15], [0, 24, 18], [0, 24, 19], [58, 31, 17, 0], [52, 31, 13, 0], [63, 29, 15, 0], [58, 31, 11, 0], [52, 31, 7, 0], [63, 29, 9, 0], [57, 27, 3, 0], [51, 23, 3, 0], [66, 25, 5, 0], [64, 25, 7, 0], [53, 27, 9, 0], [55, 23, 9, 0], [65, 21, 9, 0], [56, 19, 7, 0], [54, 19, 11, 0], [0, 31, 12], [0, 31, 6], [0, 25, 6], [0, 19, 6], [1, 22, 9], [1, 28, 9], [1, 24, 9], [1, 25, 9], [1, 26, 9], [43, 24, 8], [43, 20, 10], [43, 26, 4], [43, 30, 8], [43, 30, 14], [42, 26, 8], [42, 24, 4], [42, 20, 8], [42, 30, 10], [42, 30, 16], [58, 19, 13, 0], [52, 19, 9, 0], [63, 17, 11, 0], [57, 15, 11, 0], [51, 11, 11, 0], [66, 13, 13, 0], [64, 13, 16, 0], [53, 15, 18, 0], [55, 11, 18, 0], [15, 7, 11], [1, 7, 18], [53, 9, 18, 2], [31, 7, 16], [42, 8, 17], [0, 7, 15], [0, 7, 14], [0, 13, 14], [0, 13, 15], [1, 10, 11], [1, 12, 11], [1, 13, 11], [1, 14, 11], [1, 16, 11], [43, 14, 12], [43, 12, 17], [43, 18, 10], [42, 14, 17], [42, 12, 12], [42, 18, 12], [0, 2, 24], [0, 4, 24], [3, 8, 14], [0, 10, 17], [0, 10, 18], [1, 7, 14], [1, 6, 14], [43, 14, 17], [43, 13, 18], [32, 12, 19], [31, 12, 20], [27, 13, 21], [6, 12, 22], [10, 10, 22], [0, 10, 21], [0, 10, 20], [0, 10, 19], [42, 14, 12], [42, 13, 11], [53, 5, 14, 2], [31, 3, 12], [26, 11, 9], [15, 3, 9], [42, 4, 13], [42, 12, 10], [42, 15, 13], [33, 16, 15], [42, 16, 14], [43, 15, 16], [1, 10, 9], [1, 9, 9], [1, 8, 9], [1, 7, 9], [1, 6, 9], [1, 18, 15], [1, 19, 15], [26, 20, 15], [42, 21, 16], [42, 22, 17], [42, 23, 18], [42, 24, 19], [30, 25, 20], [29, 29, 20], [43, 30, 19], [43, 31, 18], [43, 32, 17], [43, 27, 19], [28, 28, 18], [28, 34, 15], [42, 27, 15], [42, 26, 14], [42, 25, 13], [42, 24, 12], [42, 23, 11], [27, 28, 16], [31, 22, 10], [3, 20, 6], [0, 22, 9], [0, 28, 17], [1, 27, 20], [1, 28, 20], [1, 19, 6], [11, 16, 4], [15, 16, 0], [3, 20, 0], [11, 22, 4], [11, 28, 10], [3, 26, 6], [3, 32, 12], [0, 16, 3], [0, 22, 3], [0, 28, 9], [43, 33, 16], [1, 31, 12], [1, 25, 6], [1, 19, 0], [82, 27, 22], [82, 28, 22], [81, 31, 15], [84, 25, 3], [83, 25, 9], [85, 13, 14], [85, 13, 15], [53, 17, 15, 2], [55, 26, 20, 2]], [[1, 0, 3, 0, [0, 0, 0, 0, 0]], [2, 1, 1, 0, [1, 2, 3, 4, 5]]], "Dysjunction", 1560, 2193, 3186, "Our rivals have set up a route overlapping ours, and with a faster train. Avoid colliding with it - we can't afford to keep replacing trains. And families might be upset or something.", "beach"];
levelArray20 = [[[63, 17, 5, 2], [65, 16, 5, 1], [43, 18, 4], [42, 15, 4], [20, 19, 1], [23, 13, 1], [0, 20, 0], [0, 13, 0], [32, 15, 6], [27, 18, 6], [0, 15, 7], [0, 15, 8], [54, 18, 9, 0], [58, 15, 9, 0], [25, 19, 7], [18, 12, 7], [1, 11, 7], [1, 10, 7], [1, 9, 7], [1, 22, 7], [1, 23, 7], [3, 25, 7], [15, 6, 7], [23, 6, 10], [20, 26, 10], [56, 18, 15, 0], [30, 19, 16], [52, 15, 15, 0], [29, 14, 16], [42, 9, 14], [42, 8, 13], [43, 24, 14], [43, 25, 13], [43, 10, 17], [42, 23, 17], [19, 24, 18], [24, 8, 18], [6, 24, 22], [10, 8, 22], [21, 12, 22], [22, 19, 22], [52, 15, 21, 0], [56, 18, 21, 0], [10, 15, 22], [6, 17, 22], [0, 18, 7], [0, 18, 8], [0, 18, 10], [0, 18, 11], [0, 18, 12], [0, 18, 13], [0, 18, 14], [0, 18, 16], [0, 18, 17], [0, 18, 18], [0, 18, 19], [0, 18, 20], [0, 15, 20], [0, 15, 19], [0, 15, 18], [0, 15, 17], [0, 15, 16], [0, 15, 14], [0, 15, 13], [0, 15, 12], [0, 15, 11], [0, 15, 10], [65, 11, 16, 0], [63, 22, 16, 0], [1, 13, 16], [1, 20, 16], [1, 21, 16], [1, 12, 16], [42, 10, 15], [43, 23, 15], [1, 24, 7], [1, 10, 23], [1, 11, 23], [1, 22, 23], [1, 23, 23], [0, 8, 21], [0, 25, 21], [82, 10, 7], [81, 23, 7], [83, 11, 23], [85, 22, 23]], [[1, 0, 2, 0, [1, 2, 3, 5]], [2, 1, 2, 60, [1, 2, 3, 5]]], "Flutter Crossing", 1674, 1962, 2190, "This was the carcass of a giant man-eating butterfly that roamed the Scottish highlands for thousands of years, until it burnt up on a rare sunny day. You are what you eat.", "grassy"];
levelArray21 = [[[37, 16, 6], [37, 8, 6], [37, 24, 6], [28, 18, 8], [31, 16, 8], [28, 26, 8], [31, 24, 8], [28, 10, 8], [31, 8, 8], [66, 9, 9, 1], [66, 17, 9, 1], [66, 25, 9, 1], [64, 17, 10, 4], [42, 18, 11], [42, 19, 12], [42, 10, 11], [52, 25, 10, 4], [56, 9, 10, 4], [43, 16, 11], [43, 15, 12], [43, 24, 11], [0, 25, 11], [0, 25, 12], [0, 9, 11], [0, 9, 12], [42, 11, 12], [43, 23, 12], [55, 22, 13, 0], [53, 12, 13, 0], [53, 20, 13, 0], [55, 14, 13, 0], [54, 9, 14, 4], [58, 25, 14, 4], [26, 24, 13], [33, 10, 13], [1, 11, 13], [1, 15, 13], [1, 16, 13], [1, 17, 13], [1, 18, 13], [1, 19, 13], [1, 21, 13], [1, 23, 13], [1, 13, 13], [0, 9, 13], [0, 25, 13], [10, 9, 15], [1, 23, 16], [1, 11, 16], [35, 18, 15], [34, 15, 15], [26, 20, 15], [29, 20, 17], [33, 14, 15], [30, 14, 17], [65, 21, 16, 1], [63, 13, 16, 1], [29, 24, 16], [52, 25, 15, 2], [0, 25, 17], [0, 25, 18], [0, 25, 19], [0, 25, 20], [0, 25, 21], [0, 25, 22], [0, 25, 23], [0, 25, 24], [0, 25, 16], [82, 25, 12], [84, 17, 13], [81, 9, 12], [83, 11, 16], [85, 23, 16], [1, 12, 16], [1, 22, 16]], [[1, 0, 1.5, 0, [2, 1, 3]], [2, 0, 1.5, 65, [4, 1, 5]]], "Royal Rail", 1062, 1578, 2028, "A rich king constructed this island in the shape of a crown. We're in charge of transport and if we appease him then I'm sure there will be a pay rise on the way... for me.", "beach"];
levelArray17 = [[[1, 15, 2], [1, 15, 6], [1, 15, 10], [1, 15, 14], [1, 15, 18], [1, 15, 22], [1, 16, 22], [1, 17, 22], [1, 18, 22], [1, 19, 22], [1, 20, 22], [1, 21, 22], [1, 22, 22], [1, 23, 22], [1, 16, 18], [1, 17, 18], [1, 18, 18], [1, 19, 18], [1, 20, 18], [1, 21, 18], [1, 22, 18], [1, 23, 18], [1, 16, 14], [1, 17, 14], [1, 18, 14], [1, 19, 14], [1, 20, 14], [1, 21, 14], [1, 22, 14], [1, 23, 14], [1, 14, 14], [1, 13, 14], [1, 12, 14], [1, 11, 14], [1, 11, 18], [1, 12, 18], [1, 13, 18], [1, 14, 18], [1, 14, 22], [1, 13, 22], [1, 12, 22], [1, 11, 22], [1, 14, 10], [1, 13, 10], [1, 12, 10], [1, 11, 10], [1, 16, 10], [1, 17, 10], [1, 18, 10], [1, 19, 10], [1, 20, 10], [1, 21, 10], [1, 22, 10], [1, 23, 10], [1, 23, 6], [1, 22, 6], [1, 21, 6], [1, 20, 6], [1, 19, 6], [1, 18, 6], [1, 17, 6], [1, 16, 6], [1, 14, 6], [1, 13, 6], [1, 12, 6], [1, 11, 6], [1, 11, 2], [1, 12, 2], [1, 13, 2], [1, 14, 2], [1, 16, 2], [1, 17, 2], [1, 18, 2], [1, 19, 2], [1, 20, 2], [1, 21, 2], [1, 22, 2], [1, 23, 2], [1, 24, 2], [1, 24, 6], [1, 24, 10], [1, 24, 14], [1, 24, 18], [1, 24, 22], [1, 10, 2], [1, 10, 6], [1, 10, 10], [1, 10, 14], [1, 10, 18], [1, 10, 22], [1, 9, 2], [1, 9, 6], [1, 9, 10], [1, 9, 14], [1, 9, 18], [1, 9, 22], [1, 25, 22], [1, 25, 18], [1, 25, 14], [1, 25, 10], [1, 25, 6], [1, 25, 2], [0, 7, 24], [0, 7, 23], [0, 7, 22], [0, 7, 20], [0, 7, 18], [0, 7, 16], [0, 7, 14], [0, 7, 12], [0, 7, 10], [0, 7, 8], [0, 7, 6], [0, 7, 4], [0, 27, 4], [0, 27, 6], [0, 27, 8], [0, 27, 10], [0, 27, 12], [0, 27, 14], [0, 27, 16], [0, 27, 18], [0, 27, 20], [0, 27, 22], [0, 27, 23], [0, 27, 24], [29, 26, 22], [30, 8, 22], [14, 7, 2], [2, 26, 2], [56, 7, 17, 1], [56, 7, 13, 1], [56, 7, 9, 1], [56, 7, 5, 1], [52, 27, 5, 1], [52, 27, 9, 1], [52, 27, 13, 1], [52, 27, 17, 1], [63, 26, 18, 1], [63, 26, 14, 1], [63, 26, 10, 1], [63, 26, 6, 1], [65, 8, 18, 2], [65, 8, 14, 2], [65, 8, 10, 2], [65, 8, 6, 2], [58, 27, 19, 0], [58, 27, 15, 0], [58, 27, 11, 0], [58, 27, 7, 0], [54, 7, 19, 0], [54, 7, 15, 0], [54, 7, 11, 0], [54, 7, 7, 0], [52, 27, 21, 2], [56, 7, 21, 2], [81, 17, 22], [82, 17, 18], [84, 17, 14], [83, 17, 10], [85, 17, 6]], [[1, 0, 2, 0, [1, 1, 1, 1, 1]], [2, 1, 2, 0, [2, 2, 2, 2, 2]], [3, 0, 2, 80, [3, 3, 3, 3, 3]], [4, 1, 2, 160, [4, 4, 4, 4, 4]], [5, 0, 2, 240, [5, 5, 5, 5, 5]]], "Abacus", 1035, 1182, 1701, "It's as easy as one, two, four. Wait, that's not it... Can you come up with some crafty shortcuts to get the gold medal for this one? I'm COUNTING on you!", "snow"];
levelArray7 = [[[5, 19, 3], [17, 11, 3], [2, 25, 9], [14, 8, 9], [10, 8, 13], [6, 25, 13], [0, 26, 12], [0, 26, 11], [0, 8, 12], [0, 8, 11], [0, 11, 16], [0, 11, 17], [40, 10, 18], [0, 10, 21], [0, 10, 22], [0, 10, 23], [0, 10, 24], [0, 11, 14], [0, 11, 12], [0, 11, 11], [0, 11, 9], [52, 11, 8, 0], [63, 10, 9, 0], [1, 16, 4], [1, 17, 4], [1, 18, 4], [16, 12, 4], [4, 19, 4], [62, 11, 15, 0], [28, 12, 14], [0, 12, 13], [0, 12, 12], [0, 12, 11], [0, 12, 10], [0, 12, 8], [62, 11, 10, 0], [1, 16, 3], [1, 17, 3], [1, 18, 3], [65, 24, 9, 0], [60, 23, 8, 0], [54, 22, 9, 0], [0, 22, 8], [0, 22, 10], [0, 22, 11], [0, 22, 12], [53, 24, 14, 0], [31, 23, 13], [10, 22, 13], [0, 23, 9], [0, 23, 11], [0, 23, 12], [54, 23, 10, 0], [84, 17, 4], [85, 26, 12], [83, 8, 12], [85, 26, 11], [83, 8, 11], [52, 11, 13, 2], [63, 10, 14, 1], [52, 12, 9, 2]], [[1, 0, 2, 0, [3, 4, 5]], [2, 0, 2, 60, [3, 4, 5]], [3, 0, 2, 120, [3, 4, 5]]], "Easy Listening", 690, 840, 990, "Keep calm and carry on. There are two easy ways of doing this and one is very slightly faster - oh, you aren't even listening are you. Turn that racket off.", "desert"];
levelArray16 = [[[54, 6, 4, 2], [33, 7, 3], [2, 8, 3], [0, 6, 3], [0, 6, 2], [0, 6, 1], [0, 6, 5], [0, 6, 6], [0, 6, 7], [0, 6, 8], [0, 6, 9], [0, 6, 10], [0, 6, 11], [0, 6, 12], [0, 6, 13], [0, 6, 14], [0, 9, 14], [0, 9, 13], [0, 9, 12], [0, 9, 11], [0, 9, 10], [0, 9, 8], [0, 9, 9], [0, 9, 7], [0, 9, 6], [0, 9, 5], [10, 6, 15], [6, 8, 15], [51, 3, 9, 4], [27, 4, 10], [32, 1, 10], [6, 3, 11], [10, 1, 11], [1, 4, 9], [1, 5, 9], [1, 6, 9], [1, 7, 9], [1, 8, 9], [1, 9, 9], [1, 10, 9], [65, 2, 9, 1], [31, 1, 8], [0, 1, 7], [0, 1, 6], [0, 1, 5], [0, 1, 4], [0, 1, 3], [0, 1, 2], [0, 1, 1], [63, 13, 9, 4], [57, 12, 9, 2], [1, 11, 9], [32, 11, 10], [27, 14, 10], [10, 11, 11], [6, 13, 11], [20, 14, 6], [27, 15, 5], [31, 14, 4], [37, 14, 2], [10, 16, 6], [0, 16, 4], [0, 16, 5], [0, 18, 1], [0, 18, 2], [0, 18, 3], [0, 18, 5], [0, 18, 6], [0, 18, 7], [0, 18, 8], [0, 18, 9], [0, 18, 10], [0, 18, 11], [0, 18, 12], [0, 18, 13], [0, 18, 14], [0, 21, 5], [0, 21, 6], [0, 21, 7], [0, 21, 8], [0, 21, 9], [0, 21, 10], [0, 21, 11], [0, 21, 13], [0, 21, 14], [0, 21, 12], [2, 20, 3], [6, 20, 15], [10, 18, 15], [33, 19, 3], [54, 18, 4, 2], [1, 18, 7], [1, 19, 7], [1, 20, 7], [1, 21, 7], [1, 22, 7], [14, 23, 18], [10, 23, 21], [0, 23, 20], [8, 25, 15], [9, 28, 18], [1, 27, 22], [1, 26, 22], [0, 32, 17], [0, 32, 16], [0, 32, 15], [1, 25, 22], [0, 28, 14], [0, 28, 11], [0, 28, 7], [0, 28, 6], [0, 32, 13], [0, 32, 12], [0, 32, 11], [0, 32, 10], [0, 32, 8], [0, 32, 7], [0, 32, 6], [0, 32, 5], [2, 31, 3], [1, 30, 3], [33, 29, 3], [54, 28, 4, 2], [0, 28, 3], [0, 28, 2], [0, 28, 1], [0, 28, 13], [0, 28, 12], [0, 28, 10], [0, 28, 9], [0, 28, 8], [0, 28, 5], [1, 27, 7], [57, 24, 7, 2], [51, 25, 7, 4], [27, 26, 8], [32, 23, 8], [6, 25, 9], [10, 23, 9], [1, 23, 7], [1, 26, 7], [1, 28, 7], [58, 32, 9, 1], [18, 29, 7], [52, 32, 14, 2], [32, 30, 16], [43, 31, 15], [8, 27, 17], [1, 26, 20], [1, 25, 20], [1, 24, 20], [1, 23, 20], [1, 22, 20], [1, 21, 20], [1, 20, 20], [1, 18, 20], [1, 19, 20], [17, 13, 20], [84, 19, 20], [0, 1, 0], [0, 6, 0], [0, 18, 0], [0, 28, 0]], [[1, 0, 2.5, 25, [4, 4]], [2, 1, 2, 0, [0, 0, 0, 0]], [3, 2, 3, 5, [0, 0]], [4, 2, 3, 30, [0, 0]], [5, 3, 2.5, 40, []], [6, 3, 2.5, 70, []], [7, 3, 2.5, 175, []]], "Gauntlet", 1065, 1362, 2190, "What a nice relaxing beach, it's good to have a pleasant route once in a - OH MY GOD WHAT IS GOING ON HERE?! Be very careful; timing is of the utmost importance.", "beach"];
levelArray18 = [[[56, 4, 5, 4], [56, 4, 8, 4], [60, 4, 10, 5], [27, 5, 11], [10, 4, 11], [0, 5, 12], [1, 6, 12], [1, 8, 12], [1, 6, 9], [1, 7, 9], [0, 4, 9], [0, 4, 7], [0, 4, 6], [30, 5, 9], [32, 3, 11], [10, 3, 12], [1, 5, 13], [29, 6, 13], [57, 7, 12, 1], [0, 5, 13], [52, 5, 14, 4], [10, 5, 15], [0, 3, 19], [0, 3, 18], [82, 3, 19], [53, 29, 20, 4], [10, 27, 19], [26, 28, 19], [33, 27, 19], [29, 26, 20], [61, 25, 20, 4], [26, 24, 19], [10, 23, 19], [29, 24, 21], [10, 22, 20], [0, 22, 19], [0, 23, 18], [32, 22, 18], [52, 23, 17, 1], [39, 21, 19], [26, 19, 19], [61, 20, 20, 5], [29, 19, 21], [35, 17, 19], [1, 19, 20], [1, 18, 20], [1, 17, 20], [57, 16, 20, 0], [10, 14, 19], [29, 15, 21], [1, 14, 21], [1, 13, 21], [1, 12, 21], [1, 11, 21], [1, 10, 21], [82, 11, 21], [24, 3, 15], [58, 30, 14, 4], [31, 29, 12], [28, 31, 12], [41, 30, 8], [32, 29, 10], [20, 30, 7], [58, 30, 7, 4], [27, 31, 6], [31, 30, 5], [26, 29, 6], [58, 31, 11, 4], [2, 30, 2], [14, 28, 2], [28, 28, 5], [1, 28, 6], [55, 27, 6, 1], [0, 30, 4], [0, 30, 3], [0, 30, 2], [0, 30, 1], [58, 29, 11, 4], [18, 27, 12], [82, 30, 1], [59, 10, 4, 4], [18, 28, 9], [51, 27, 9, 1], [42, 28, 10], [27, 11, 5], [36, 11, 6], [37, 13, 0], [36, 15, 6], [37, 17, 0], [36, 19, 6], [37, 21, 0], [33, 11, 3], [38, 12, 3], [39, 11, 3], [38, 14, 3], [39, 15, 3], [38, 18, 3], [2, 17, 4], [26, 21, 4], [42, 22, 5], [58, 23, 6, 1], [0, 23, 5], [0, 23, 4], [0, 23, 3], [0, 23, 2], [0, 23, 7], [0, 23, 8], [0, 13, 5], [0, 13, 4], [0, 13, 3], [0, 13, 2], [0, 15, 2], [0, 15, 3], [0, 15, 5], [0, 15, 4], [0, 17, 5], [0, 17, 4], [0, 17, 3], [0, 17, 2], [0, 19, 2], [0, 19, 3], [0, 19, 4], [0, 19, 5], [0, 21, 5], [0, 21, 4], [0, 21, 3], [0, 21, 2], [28, 23, 9], [55, 22, 10, 1], [59, 23, 10, 1], [39, 24, 9], [15, 24, 6], [28, 24, 9], [22, 24, 11], [0, 18, 6], [0, 18, 7], [0, 18, 8], [1, 21, 10], [1, 20, 10], [19, 26, 16], [27, 23, 16], [51, 22, 15, 1], [26, 25, 15], [1, 24, 15], [1, 23, 15], [22, 19, 14], [40, 14, 16], [0, 15, 15], [21, 7, 15], [42, 5, 6], [42, 6, 7], [42, 7, 8], [53, 8, 9, 1], [38, 9, 9], [21, 9, 11], [57, 12, 10, 1], [1, 13, 10], [1, 14, 10], [25, 10, 13], [1, 13, 13], [82, 23, 7], [66, 30, 13, 4], [1, 9, 21], [15, 5, 21], [7, 1, 21], [1, 8, 21], [0, 3, 20], [1, 30, 20], [1, 31, 20], [1, 32, 20], [1, 33, 20], [12, 30, 15], [0, 4, 4], [0, 4, 3], [0, 4, 2], [0, 4, 1], [11, 7, 2], [0, 7, 1], [0, 4, 0], [0, 7, 0], [0, 30, 0], [1, 34, 18], [1, 34, 20], [0, 5, 24], [1, 0, 23], [40, 30, 4], [0, 28, 4]], [[1, 0, 1.5, 240, [2, 2, 2]], [2, 1, 1.5, 210, [2, 2, 2]], [3, 3, 1.5, 270, [2, 2, 2]], [4, 4, 1.5, 300, [2, 2, 2]]], "National Fail", 1149, 1209, 1299, "There was a board meeting going on in the resort in the middle of this forest until hell itself opened up and took back all of our executives. Watch out for the lava!", "grassy"];
levelArray26 = [[[41, 18, 13], [41, 19, 13], [41, 20, 13], [16, 19, 9], [15, 20, 10], [9, 17, 16], [8, 17, 16], [7, 17, 16], [1, 18, 15], [1, 19, 15], [1, 20, 15], [1, 21, 15], [1, 21, 14], [1, 20, 14], [1, 19, 14], [1, 18, 14], [1, 18, 13], [1, 19, 13], [1, 20, 13], [1, 21, 13], [17, 18, 8], [58, 26, 12, 0], [18, 23, 10], [18, 24, 9], [18, 25, 8], [1, 23, 9], [1, 23, 8], [1, 24, 8], [58, 27, 11, 0], [58, 28, 10, 0], [0, 26, 11], [0, 26, 10], [0, 26, 9], [0, 26, 8], [0, 27, 8], [0, 27, 9], [0, 27, 10], [0, 28, 9], [0, 28, 8], [2, 25, 6], [3, 25, 5], [4, 25, 4], [4, 22, 13], [3, 22, 14], [2, 22, 15], [11, 24, 17], [12, 23, 17], [10, 25, 17], [6, 27, 17], [7, 27, 17], [8, 27, 17], [19, 27, 14], [19, 28, 13], [19, 29, 12], [31, 26, 13], [31, 27, 12], [31, 28, 11], [0, 29, 16], [0, 30, 15], [0, 30, 16], [38, 22, 3], [39, 13, 3], [1, 21, 3], [1, 20, 3], [1, 24, 5], [1, 22, 5], [1, 23, 5], [1, 21, 5], [1, 20, 5], [1, 19, 5], [1, 17, 5], [1, 18, 5], [1, 24, 6], [1, 23, 6], [1, 22, 6], [1, 21, 6], [1, 20, 6], [1, 18, 6], [1, 17, 6], [1, 19, 6], [15, 6, 6], [16, 5, 5], [17, 4, 4], [61, 10, 5, 0], [53, 12, 6, 0], [51, 9, 4, 1], [55, 9, 6, 1], [59, 11, 5, 1], [57, 12, 4, 0], [1, 10, 4], [1, 11, 4], [1, 9, 5], [1, 10, 6], [1, 11, 6], [1, 13, 6], [1, 14, 6], [1, 15, 6], [1, 16, 6], [1, 16, 5], [1, 15, 5], [1, 13, 5], [1, 12, 5], [1, 14, 5], [1, 16, 3], [1, 17, 3], [1, 18, 3], [1, 19, 3], [1, 2, 13], [1, 3, 13], [1, 2, 14], [1, 3, 14], [1, 2, 15], [1, 3, 15], [23, 4, 12], [23, 5, 11], [23, 6, 10], [0, 4, 11], [0, 4, 10], [0, 4, 9], [0, 5, 10], [0, 5, 9], [0, 6, 9], [10, 11, 17], [53, 6, 15, 2], [53, 7, 14, 2], [53, 8, 13, 2], [11, 10, 17], [12, 9, 17], [32, 11, 16], [32, 10, 15], [32, 9, 14], [0, 9, 15], [0, 9, 16], [0, 10, 16], [57, 12, 15, 2], [57, 11, 14, 2], [57, 10, 13, 2], [1, 4, 15], [1, 4, 14], [1, 4, 13], [1, 5, 13], [1, 6, 13], [1, 7, 13], [1, 5, 14], [1, 6, 14], [1, 5, 15], [1, 7, 15], [1, 8, 15], [1, 8, 14], [1, 9, 13], [1, 9, 14], [1, 9, 15], [1, 10, 15], [1, 10, 14], [1, 11, 15], [1, 11, 13], [1, 12, 13], [1, 12, 14], [1, 13, 15], [1, 13, 14], [1, 13, 13], [1, 14, 13], [1, 14, 14], [1, 14, 15], [1, 15, 15], [1, 16, 15], [1, 17, 15], [1, 17, 14], [1, 16, 14], [1, 15, 14], [1, 15, 13], [1, 16, 13], [1, 17, 13], [1, 13, 18], [1, 13, 19], [1, 13, 20], [1, 14, 20], [1, 14, 19], [1, 14, 18], [1, 15, 18], [1, 15, 19], [1, 15, 20], [1, 16, 20], [1, 16, 19], [1, 16, 18], [84, 16, 3], [83, 18, 3], [82, 20, 3], [84, 17, 3], [83, 19, 3], [82, 21, 3], [1, 0, 13], [1, 1, 13], [1, 1, 14], [1, 0, 14], [1, 0, 15], [1, 1, 15], [85, 14, 20], [85, 15, 20]], [[1, 0, 4, 0, [2, 3, 4, 5]], [2, 1, 4, 0, [2, 3, 4, 5]], [3, 2, 4, 0, [2, 3, 4, 5]]], "Pit Lane", 1350, 2622, 3633, "Most racing teams can change a car tyre in four seconds. Knowing this won't help you. This might: use the different lanes to change how far apart the three trains are.", "snow"];
levelArray33 = [[[31, 5, 1], [29, 2, 6], [53, 6, 2, 1], [15, 3, 2], [1, 1, 6], [1, 33, 20], [52, 3, 5, 1], [11, 3, 6], [51, 6, 8, 0], [22, 7, 9], [1, 10, 10], [1, 11, 10], [1, 13, 10], [1, 14, 10], [1, 15, 10], [1, 16, 10], [1, 17, 10], [1, 20, 10], [1, 18, 10], [1, 19, 10], [1, 21, 10], [1, 23, 10], [7, 29, 6], [21, 25, 9], [1, 24, 10], [3, 29, 2], [34, 29, 4], [35, 4, 4], [21, 7, 7], [22, 25, 7], [57, 10, 6, 0], [1, 11, 6], [1, 23, 6], [51, 15, 6, 0], [57, 19, 6, 0], [21, 15, 8], [22, 17, 8], [42, 16, 7], [43, 18, 7], [1, 16, 6], [1, 17, 6], [1, 18, 6], [51, 20, 6, 0], [6, 20, 8], [10, 13, 8], [57, 14, 6, 0], [1, 13, 6], [1, 21, 6], [1, 22, 6], [32, 13, 7], [27, 21, 7], [31, 21, 1], [20, 12, 1], [20, 28, 1], [53, 22, 2, 1], [55, 11, 4, 1], [55, 27, 4, 1], [1, 28, 4], [1, 28, 2], [1, 27, 2], [1, 26, 2], [1, 25, 2], [1, 24, 2], [1, 23, 2], [1, 21, 2], [1, 20, 2], [1, 19, 2], [1, 18, 2], [1, 17, 2], [1, 16, 2], [1, 15, 2], [1, 14, 2], [1, 13, 2], [1, 12, 2], [1, 10, 2], [1, 9, 2], [1, 8, 2], [1, 7, 2], [1, 11, 2], [1, 6, 4], [1, 7, 4], [1, 8, 4], [1, 9, 4], [1, 10, 4], [1, 12, 4], [1, 13, 4], [1, 15, 4], [1, 16, 4], [1, 18, 4], [1, 17, 4], [1, 19, 4], [1, 20, 4], [1, 21, 4], [1, 22, 4], [1, 23, 4], [1, 24, 4], [1, 25, 4], [1, 26, 4], [1, 27, 6], [1, 26, 6], [1, 25, 6], [1, 9, 6], [1, 8, 6], [1, 7, 6], [1, 6, 6], [1, 28, 6], [54, 31, 5, 1], [33, 32, 4], [1, 33, 4], [51, 12, 10, 0], [57, 22, 10, 0], [1, 1, 18], [19, 12, 21], [32, 21, 23], [19, 28, 21], [32, 5, 23], [26, 2, 18], [30, 32, 20], [51, 27, 20, 1], [51, 11, 20, 1], [56, 31, 19, 1], [58, 3, 19, 1], [57, 6, 22, 1], [57, 22, 22, 1], [7, 29, 20], [3, 29, 16], [15, 3, 16], [11, 3, 20], [1, 7, 22], [1, 8, 22], [1, 9, 22], [1, 10, 22], [1, 11, 22], [1, 12, 22], [1, 13, 22], [1, 14, 22], [1, 15, 22], [1, 16, 22], [1, 17, 22], [1, 18, 22], [1, 19, 22], [1, 20, 22], [1, 21, 22], [1, 24, 22], [1, 23, 22], [1, 25, 22], [1, 26, 22], [1, 27, 22], [1, 28, 22], [34, 29, 18], [35, 4, 18], [1, 7, 20], [1, 6, 20], [1, 9, 20], [1, 8, 20], [1, 10, 20], [1, 12, 20], [1, 13, 20], [1, 16, 20], [1, 15, 20], [1, 17, 20], [1, 18, 20], [1, 20, 20], [1, 19, 20], [1, 21, 20], [1, 23, 20], [1, 22, 20], [1, 25, 20], [1, 24, 20], [1, 26, 20], [18, 7, 16], [25, 7, 14], [25, 25, 16], [18, 25, 14], [1, 24, 14], [1, 23, 14], [1, 21, 14], [1, 20, 14], [1, 19, 14], [1, 18, 14], [1, 16, 14], [1, 17, 14], [1, 15, 14], [1, 14, 14], [1, 13, 14], [1, 11, 14], [1, 10, 14], [1, 11, 18], [1, 6, 18], [1, 7, 18], [1, 8, 18], [1, 9, 18], [1, 13, 18], [1, 16, 18], [1, 17, 18], [1, 18, 18], [1, 21, 18], [1, 22, 18], [1, 23, 18], [1, 25, 18], [1, 26, 18], [1, 27, 18], [1, 28, 20], [1, 28, 18], [25, 17, 15], [18, 15, 15], [2, 20, 15], [14, 13, 15], [31, 13, 17], [28, 21, 17], [42, 18, 17], [43, 16, 17], [55, 20, 18, 0], [53, 19, 18, 0], [53, 14, 18, 0], [55, 15, 18, 0], [53, 10, 18, 0], [55, 6, 16, 0], [55, 12, 14, 0], [53, 22, 14, 0], [65, 14, 12, 0], [1, 15, 12], [1, 16, 12], [1, 17, 12], [1, 18, 12], [1, 19, 12], [42, 21, 13], [42, 13, 11], [43, 13, 13], [43, 21, 11], [82, 17, 12], [81, 17, 4], [83, 17, 20], [55, 24, 18, 4], [51, 24, 6, 4], [51, 12, 18, 0], [57, 14, 4, 0], [55, 12, 6, 0], [43, 13, 5], [42, 13, 19], [53, 14, 20, 0], [53, 28, 16, 4], [57, 28, 8, 4], [0, 5, 0], [0, 13, 0], [0, 21, 0], [0, 29, 0], [1, 34, 4], [1, 34, 20], [0, 29, 24], [0, 21, 24], [0, 13, 24], [0, 5, 24], [1, 0, 18], [1, 0, 6], [63, 20, 12, 4]], [[0, 0, 2, 0, [1, 2]], [1, 1, 2, 0, [3, 2]], [2, 2, 2, 0, [1, 2]], [3, 3, 2, 0, [3, 2]], [4, 4, 2, 0, [1, 2]], [5, 5, 2, 0, [3, 2]], [6, 6, 2, 0, [1, 2]], [7, 7, 2, 0, [3, 2]], [8, 8, 2, 0, [1, 2]], [9, 9, 2, 0, [3, 2]], [10, 10, 2, 0, [3, 2]], [11, 11, 2, 0, [1, 2]]], "Sleeper by the Dozen", 5304, 6654, 9207, "Twelve trains test timing, tact, tenacity; trying to track the total taxes timid travellers. Textual tales teach techniques tantamount to triumph: tease the trains together.", "urban"];
levelArray13 = [[[22, 14, 9], [21, 18, 9], [21, 18, 13], [22, 14, 13], [32, 13, 7], [43, 14, 6], [0, 13, 13], [0, 13, 14], [0, 13, 11], [0, 13, 10], [0, 13, 9], [0, 21, 9], [0, 21, 10], [0, 21, 11], [0, 21, 14], [0, 21, 13], [60, 13, 8, 0], [60, 21, 8, 0], [27, 21, 7], [42, 20, 6], [64, 15, 5, 0], [64, 19, 5, 4], [2, 18, 1], [14, 15, 1], [1, 17, 1], [0, 15, 4], [0, 15, 3], [0, 19, 3], [0, 19, 4], [42, 22, 9], [42, 23, 10], [42, 24, 11], [43, 12, 9], [43, 11, 10], [43, 10, 11], [0, 13, 23], [0, 13, 22], [0, 13, 21], [0, 13, 19], [0, 13, 18], [0, 13, 17], [0, 13, 15], [0, 21, 23], [0, 21, 22], [0, 21, 21], [0, 21, 19], [0, 21, 18], [0, 21, 17], [0, 21, 15], [60, 21, 12, 0], [60, 13, 12, 0], [56, 13, 20, 2], [52, 21, 20, 2], [1, 17, 22], [22, 14, 21], [21, 18, 21], [1, 17, 10], [22, 14, 17], [21, 18, 17], [60, 21, 16, 0], [60, 13, 16, 0], [42, 22, 17], [42, 22, 13], [43, 12, 17], [43, 8, 13], [43, 9, 12], [43, 12, 13], [43, 11, 14], [43, 10, 15], [42, 23, 14], [42, 24, 15], [42, 25, 12], [42, 26, 13], [64, 25, 17, 0], [30, 26, 18], [30, 23, 18], [29, 24, 18], [27, 25, 16], [29, 11, 18], [30, 10, 18], [32, 9, 16], [29, 8, 18], [6, 28, 17], [10, 5, 17], [32, 5, 16], [27, 29, 16], [42, 27, 14], [42, 28, 15], [43, 7, 14], [43, 6, 15], [1, 7, 18], [1, 27, 18], [64, 9, 17, 4], [27, 16, 6], [32, 18, 6], [53, 17, 14, 0], [55, 17, 18, 0], [28, 18, 17], [31, 16, 13], [0, 18, 16], [0, 18, 15], [0, 18, 14], [0, 18, 13], [0, 18, 12], [0, 18, 11], [0, 18, 10], [0, 18, 9], [0, 18, 8], [0, 18, 7], [0, 16, 7], [0, 16, 8], [0, 16, 9], [0, 16, 10], [0, 16, 11], [0, 16, 12], [84, 7, 18], [81, 27, 18], [83, 16, 8], [82, 18, 12], [0, 13, 24], [0, 21, 24]], [[0, 0, 2, 0, [2, 3, 1, 4]], [1, 1, 2, 210, [4, 1, 2, 3]]], "Iron Angel", 1791, 1980, 2190, "Treat her well, because when she's upset she hungers for crashing and screaming. Go for the outer stations first and it'll probably be fine. It's only human lives at stake...", "desert"];
levelArray32 = [[[56, 4, 3, 2], [30, 5, 4], [6, 6, 3], [14, 4, 1], [2, 6, 1], [0, 4, 5], [0, 4, 4], [0, 4, 6], [58, 4, 7, 1], [52, 4, 8, 2], [10, 1, 8], [14, 1, 6], [83, 1, 7], [26, 3, 6], [63, 3, 9, 1], [27, 5, 11], [28, 5, 12], [54, 4, 13, 4], [0, 4, 12], [0, 4, 11], [0, 4, 10], [0, 4, 9], [42, 4, 10], [82, 7, 2], [84, 7, 3], [81, 1, 8], [14, 7, 6], [10, 7, 8], [14, 10, 1], [2, 12, 1], [6, 12, 3], [14, 13, 6], [10, 13, 8], [14, 16, 1], [2, 18, 1], [6, 18, 3], [14, 19, 6], [10, 19, 8], [14, 22, 1], [2, 24, 1], [6, 24, 3], [30, 23, 4], [30, 17, 4], [30, 11, 4], [26, 9, 6], [26, 15, 6], [26, 21, 6], [28, 11, 12], [28, 17, 12], [28, 23, 12], [27, 11, 11], [27, 17, 11], [27, 23, 11], [54, 10, 13, 4], [54, 16, 13, 4], [54, 22, 13, 4], [63, 21, 9, 1], [63, 15, 9, 1], [63, 9, 9, 1], [58, 10, 7, 1], [58, 16, 7, 1], [58, 22, 7, 1], [56, 10, 3, 2], [56, 16, 3, 2], [56, 22, 3, 2], [52, 16, 8, 2], [52, 10, 8, 2], [52, 22, 8, 2], [42, 10, 10], [42, 16, 10], [42, 22, 10], [0, 10, 12], [0, 10, 11], [0, 10, 10], [0, 10, 9], [0, 10, 6], [0, 10, 5], [0, 10, 4], [0, 16, 4], [0, 16, 5], [0, 16, 6], [0, 16, 9], [0, 16, 10], [0, 16, 11], [0, 16, 12], [0, 22, 12], [0, 22, 11], [0, 22, 10], [0, 22, 9], [0, 22, 6], [0, 22, 5], [0, 22, 4], [82, 7, 7], [84, 7, 8], [81, 13, 8], [82, 13, 7], [85, 19, 7], [83, 19, 8], [81, 13, 3], [83, 13, 2], [81, 25, 3], [82, 25, 2], [85, 19, 2], [83, 19, 3], [0, 33, 0], [0, 31, 0], [0, 29, 0], [0, 27, 0], [56, 27, 5, 0], [52, 33, 5, 0], [60, 29, 5, 0], [60, 31, 5, 0], [62, 29, 7, 1], [62, 31, 7, 1], [54, 27, 7, 1], [58, 33, 7, 1], [62, 29, 11, 1], [62, 31, 11, 1], [60, 29, 9, 0], [60, 31, 9, 0], [60, 29, 13, 0], [60, 31, 13, 0], [52, 33, 9, 0], [52, 33, 13, 0], [56, 27, 13, 0], [56, 27, 9, 0], [54, 27, 11, 1], [58, 33, 11, 1], [58, 33, 15, 1], [54, 27, 15, 1], [62, 29, 15, 1], [62, 31, 15, 1], [9, 29, 19], [8, 28, 18], [7, 27, 17], [6, 26, 16], [10, 22, 16], [11, 16, 17], [12, 10, 18], [13, 4, 19], [0, 4, 15], [0, 4, 14], [0, 10, 15], [0, 10, 14], [0, 16, 15], [0, 16, 14], [0, 22, 15], [0, 22, 14], [1, 9, 23], [1, 11, 23], [1, 10, 23], [1, 12, 23], [1, 13, 23], [1, 14, 23], [1, 15, 23], [1, 17, 23], [1, 16, 23], [1, 18, 23], [1, 19, 23], [1, 21, 23], [1, 20, 23], [1, 22, 23], [1, 23, 23], [1, 25, 23], [1, 24, 23], [1, 27, 23], [1, 28, 23], [1, 26, 23], [1, 27, 21], [1, 26, 21], [1, 25, 21], [1, 24, 21], [1, 23, 21], [1, 22, 21], [1, 21, 21], [1, 20, 21], [1, 19, 21], [1, 18, 21], [1, 16, 21], [1, 17, 21], [1, 15, 21], [1, 14, 21], [1, 19, 19], [1, 20, 19], [1, 21, 19], [1, 22, 19], [1, 23, 19], [1, 24, 19], [1, 26, 19], [1, 25, 19], [1, 24, 17], [1, 25, 17], [0, 27, 12], [0, 27, 14], [0, 29, 14], [0, 29, 12], [0, 27, 10], [0, 29, 10], [0, 27, 8], [0, 29, 8], [0, 27, 6], [0, 29, 6], [0, 31, 6], [0, 31, 8], [0, 31, 10], [0, 31, 12], [0, 31, 14], [0, 33, 14], [0, 33, 12], [0, 33, 10], [0, 33, 8], [0, 33, 6], [0, 33, 4], [0, 33, 3], [0, 33, 2], [0, 33, 1], [0, 31, 1], [0, 31, 2], [0, 31, 3], [0, 31, 4], [0, 29, 4], [0, 29, 3], [0, 29, 2], [0, 29, 1], [0, 27, 1], [0, 27, 2], [0, 27, 3], [0, 27, 4], [42, 28, 14], [42, 30, 14], [42, 32, 14], [42, 32, 10], [42, 30, 10], [42, 28, 10], [42, 28, 6], [42, 30, 6], [42, 32, 6], [43, 28, 14], [43, 30, 14], [43, 32, 14], [43, 32, 10], [43, 30, 10], [43, 28, 10], [43, 28, 6], [43, 30, 6], [43, 32, 6], [0, 29, 16], [0, 31, 16], [0, 31, 17], [0, 33, 16], [0, 33, 17], [0, 33, 18], [0, 16, 16], [0, 10, 17], [0, 10, 16], [0, 4, 18], [0, 4, 17], [0, 4, 16]], [[1, 2, 1, 30, [1, 2]], [2, 1, 1, 120, [3, 5]], [3, 3, 1, 210, [3, 1]], [4, 0, 1, 300, [2, 4]], [5, 2, 1, 390, [5, 3]], [6, 1, 1, 480, [3, 1]], [7, 0, 1, 570, [2, 4]], [8, 3, 1, 660, [2, 1]]], "Switchboard", 2205, 2496, 2829, "Carefully filter trains onto the correct tracks to get to the right stations. Be wary of the loops - fill the top ones first. Change as few junctions as possible for gold!", "beach"];
levelArray12 = [[[4, 10, 3], [57, 8, 3, 4], [24, 6, 4], [1, 9, 3], [8, 10, 8], [1, 8, 11], [1, 7, 11], [1, 6, 11], [1, 5, 11], [1, 4, 11], [1, 3, 11], [1, 2, 11], [1, 1, 11], [1, 0, 11], [0, 6, 7], [0, 6, 8], [0, 6, 11], [0, 6, 12], [7, 4, 13], [24, 1, 10], [43, 3, 9], [25, 4, 7], [1, 7, 7], [1, 8, 7], [1, 9, 7], [0, 16, 14], [0, 16, 15], [0, 16, 16], [0, 16, 17], [0, 16, 18], [7, 14, 19], [11, 10, 19], [15, 10, 15], [1, 13, 15], [1, 14, 15], [1, 15, 15], [1, 16, 15], [21, 17, 14], [43, 20, 13], [43, 21, 12], [43, 22, 11], [43, 23, 10], [43, 24, 9], [43, 25, 8], [20, 26, 5], [37, 25, 2], [23, 25, 5], [19, 27, 8], [0, 28, 12], [0, 28, 13], [0, 28, 15], [0, 28, 16], [0, 28, 17], [0, 28, 18], [6, 27, 20], [10, 25, 20], [19, 23, 16], [23, 21, 13], [0, 21, 12], [1, 24, 9], [15, 21, 9], [2, 25, 9], [10, 25, 14], [1, 9, 11], [18, 10, 7], [19, 15, 11], [42, 14, 10], [42, 13, 9], [40, 25, 11], [29, 27, 15], [52, 28, 14, 4], [6, 23, 20], [10, 20, 20], [0, 25, 19], [0, 25, 18], [2, 24, 16], [1, 23, 16], [15, 20, 16], [1, 22, 21], [27, 21, 20], [6, 20, 21], [14, 16, 21], [10, 16, 23], [30, 19, 22], [26, 18, 21], [39, 18, 23], [38, 21, 23], [34, 26, 22], [33, 25, 22], [29, 24, 23], [10, 22, 22], [1, 24, 24], [1, 25, 24], [56, 20, 19, 0], [52, 24, 19, 0], [32, 22, 21], [43, 23, 20], [15, 2, 3], [58, 6, 9, 0], [26, 5, 8], [11, 2, 6], [1, 5, 3], [1, 6, 3], [1, 7, 3], [56, 13, 7, 0], [22, 14, 8], [7, 17, 7], [0, 19, 6], [0, 19, 5], [0, 19, 4], [0, 19, 3], [0, 19, 2], [0, 19, 1], [0, 19, 0], [56, 6, 10, 0], [51, 3, 15, 0], [10, 1, 14], [0, 1, 13], [42, 7, 11], [42, 8, 12], [42, 4, 16], [42, 5, 17], [27, 9, 13], [30, 6, 18], [7, 7, 16], [0, 9, 15], [0, 9, 14], [21, 7, 19], [21, 10, 22], [14, 5, 20], [10, 5, 22], [57, 13, 21, 0], [52, 10, 18, 4], [1, 7, 23], [1, 8, 23], [1, 9, 23], [54, 27, 4, 0], [58, 25, 4, 0], [33, 28, 3], [26, 24, 3], [1, 22, 3], [1, 29, 3], [1, 29, 0], [1, 28, 0], [1, 27, 0], [1, 26, 0], [1, 25, 0], [1, 24, 0], [1, 22, 0], [6, 31, 2], [2, 31, 0], [14, 20, 0], [10, 20, 2], [51, 30, 0, 0], [55, 30, 3, 0], [57, 23, 0, 0], [53, 23, 3, 0], [32, 22, 1], [31, 22, 2], [27, 31, 1], [28, 31, 2], [56, 28, 11, 4], [54, 28, 19, 4], [25, 29, 17], [22, 29, 12], [6, 32, 16], [2, 32, 13], [0, 33, 15], [85, 19, 5], [85, 19, 4]], [[1, 0, 2.5, 0, [5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5]]], "Heavy Duty", 2874, 2952, 3051, "Sun, sea, sand... you hate these things, right? Because there's a massive freight train that needs directing through the middle of Serbia. Make sure it doesn't hit itself!", "snow"];
levelArray24 = [[[63, 2, 12, 0], [1, 0, 12], [1, 1, 12], [25, 3, 10], [22, 3, 13], [1, 6, 14], [1, 7, 14], [1, 6, 10], [1, 7, 10], [55, 14, 8, 0], [51, 14, 16, 0], [42, 15, 17], [42, 16, 18], [42, 17, 19], [42, 18, 20], [42, 19, 21], [42, 20, 22], [43, 15, 7], [43, 16, 6], [43, 17, 5], [43, 18, 4], [43, 19, 3], [43, 20, 2], [33, 21, 1], [30, 21, 23], [1, 13, 8], [1, 13, 16], [33, 12, 8], [30, 12, 16], [42, 11, 15], [43, 11, 9], [1, 9, 14], [1, 9, 10], [6, 22, 22], [2, 22, 1], [0, 23, 21], [0, 23, 20], [0, 23, 19], [0, 23, 18], [0, 23, 17], [0, 23, 16], [0, 23, 8], [0, 23, 7], [0, 23, 6], [0, 23, 5], [0, 23, 3], [0, 23, 4], [31, 23, 9], [32, 23, 15], [51, 10, 14, 4], [55, 10, 10, 4], [1, 11, 14], [1, 11, 10], [1, 13, 10], [1, 14, 10], [1, 13, 14], [1, 14, 14], [57, 24, 14, 0], [53, 24, 10, 0], [51, 25, 14, 0], [42, 26, 15], [42, 27, 16], [30, 28, 17], [1, 29, 17], [6, 30, 16], [27, 31, 15], [42, 30, 14], [51, 29, 13, 0], [34, 30, 11], [55, 29, 11, 0], [55, 25, 10, 0], [38, 26, 10], [39, 26, 13], [43, 26, 9], [43, 27, 8], [43, 30, 10], [1, 29, 7], [2, 30, 7], [33, 28, 7], [28, 31, 9], [55, 15, 14, 0], [51, 15, 10, 0], [1, 16, 14], [1, 17, 14], [1, 18, 14], [1, 21, 14], [1, 20, 13], [1, 23, 14], [1, 23, 10], [1, 20, 11], [1, 21, 10], [1, 18, 10], [1, 17, 10], [1, 16, 10], [43, 16, 13], [42, 16, 11], [82, 29, 17], [84, 7, 12], [85, 23, 5], [83, 23, 19], [81, 29, 7], [55, 12, 14, 0], [51, 12, 10, 0], [28, 13, 13], [27, 13, 11], [0, 13, 12], [1, 20, 14], [1, 20, 10], [31, 7, 13], [32, 7, 11], [0, 7, 12], [29, 21, 11], [22, 17, 12], [25, 17, 11], [26, 21, 13], [1, 19, 14], [1, 19, 10], [1, 15, 16], [1, 16, 16], [1, 17, 16], [39, 18, 15], [38, 18, 8], [29, 21, 15], [26, 21, 9], [1, 15, 8], [1, 16, 8], [1, 17, 8], [61, 22, 10, 0], [61, 22, 14, 0], [53, 8, 14, 4], [57, 8, 10, 4]], [[1, 0, 2, 0, [1, 3, 4, 5]], [2, 0, 2, 150, [2, 1, 5, 3]], [3, 0, 2, 400, [4, 2, 1]]], "Shirley", 1830, 2610, 3060, "Surely you can't be serious! The timing of the trains makes this level difficult. Use every available route, and don't forget that empty trains are allowed to leave at the left.", "beach"];
levelArray4 = [[[1, 2, 3], [1, 3, 3], [1, 4, 3], [1, 5, 3], [1, 6, 3], [28, 8, 2], [37, 8, 0], [36, 10, 2], [37, 12, 0], [36, 14, 2], [37, 16, 0], [30, 8, 4], [1, 9, 4], [1, 10, 4], [1, 11, 4], [1, 12, 4], [1, 13, 4], [1, 14, 4], [1, 15, 4], [0, 17, 6], [58, 17, 5, 1], [26, 16, 4], [40, 17, 2], [64, 17, 7, 0], [29, 16, 8], [1, 15, 8], [1, 14, 8], [1, 13, 8], [1, 12, 8], [1, 11, 8], [1, 10, 8], [35, 8, 8], [1, 10, 10], [1, 11, 10], [1, 12, 10], [1, 13, 10], [1, 14, 10], [1, 15, 10], [26, 16, 10], [66, 17, 11, 1], [0, 17, 12], [33, 18, 10], [30, 18, 8], [1, 19, 10], [1, 20, 10], [1, 19, 8], [1, 20, 8], [34, 21, 8], [0, 29, 0], [0, 29, 1], [0, 29, 2], [8, 26, 3], [1, 19, 6], [1, 18, 6], [1, 17, 6], [1, 16, 6], [1, 15, 6], [1, 14, 6], [1, 13, 6], [1, 12, 6], [1, 11, 6], [1, 10, 6], [1, 9, 6], [1, 8, 6], [1, 7, 6], [15, 4, 6], [11, 4, 10], [0, 4, 9], [1, 7, 12], [1, 8, 12], [1, 9, 12], [1, 10, 12], [1, 12, 12], [1, 11, 12], [1, 13, 12], [1, 14, 12], [1, 15, 12], [1, 16, 12], [1, 17, 12], [1, 18, 12], [1, 19, 12], [1, 20, 6], [1, 21, 6], [1, 23, 6], [1, 22, 6], [1, 25, 6], [1, 24, 6], [60, 17, 13, 0], [29, 16, 14], [30, 18, 14], [1, 19, 14], [1, 20, 14], [40, 16, 14], [36, 16, 17], [37, 18, 15], [40, 19, 17], [1, 17, 19], [1, 15, 19], [1, 16, 19], [1, 14, 19], [1, 13, 19], [1, 11, 19], [1, 12, 19], [1, 10, 19], [1, 9, 19], [1, 7, 19], [1, 8, 19], [1, 7, 14], [1, 15, 14], [26, 18, 19], [33, 20, 19], [11, 4, 17], [15, 4, 14], [1, 8, 14], [1, 9, 14], [1, 10, 14], [1, 11, 14], [1, 12, 14], [1, 13, 14], [1, 14, 14], [62, 19, 20, 1], [7, 21, 17], [3, 21, 14], [5, 27, 12], [9, 27, 17], [1, 20, 12], [1, 21, 12], [1, 22, 12], [1, 22, 21], [1, 21, 21], [1, 20, 21], [1, 19, 21], [1, 18, 21], [1, 17, 21], [1, 16, 21], [1, 15, 21], [1, 14, 21], [1, 13, 21], [1, 12, 21], [1, 11, 21], [1, 10, 21], [1, 9, 21], [1, 8, 21], [1, 7, 21], [1, 6, 21], [1, 4, 21], [1, 5, 21], [1, 3, 21], [1, 2, 21], [6, 18, 22], [1, 17, 23], [1, 15, 23], [1, 16, 23], [1, 14, 23], [1, 13, 23], [1, 12, 23], [1, 11, 23], [1, 10, 23], [1, 9, 23], [1, 8, 23], [1, 6, 23], [1, 5, 23], [1, 7, 23], [1, 4, 23], [1, 2, 23], [1, 3, 23], [82, 12, 23], [1, 23, 21], [1, 24, 21], [1, 25, 21], [1, 26, 21], [1, 23, 12], [1, 24, 12], [1, 25, 12], [1, 26, 12], [1, 1, 21], [1, 0, 21], [1, 0, 23], [1, 1, 23], [1, 1, 3], [1, 0, 3], [0, 19, 21], [63, 7, 3, 4]], [[0, 0, 3, 0, [0, 0, 0, 0, 0]], [1, 3, 2, 0, [2, 2, 2]]], "The Fast Lane", 600, 630, 690, "Two rivalling train lines meet in the middle of the desert. Pick a route which avoids a nasty accident. FreightCo could do with losing a few customers though, I guess...", "desert"];
levelArray27 = [[[9, 25, 15], [8, 25, 15], [7, 25, 15], [6, 25, 15], [40, 27, 12], [27, 28, 14], [42, 27, 13], [31, 26, 12], [27, 29, 13], [31, 27, 11], [28, 29, 11], [32, 26, 14], [42, 28, 12], [43, 27, 13], [43, 28, 12], [0, 26, 11], [0, 28, 11], [0, 29, 14], [0, 26, 10], [0, 27, 10], [0, 28, 10], [0, 29, 10], [5, 25, 5], [4, 25, 6], [3, 25, 7], [2, 25, 8], [42, 19, 9], [42, 18, 8], [42, 17, 7], [42, 16, 6], [42, 15, 5], [42, 14, 4], [33, 24, 8], [21, 21, 9], [30, 24, 5], [18, 21, 3], [39, 22, 7], [38, 22, 5], [1, 21, 5], [1, 21, 8], [53, 20, 10, 0], [1, 18, 10], [1, 17, 10], [1, 18, 5], [1, 19, 5], [1, 20, 5], [1, 19, 8], [1, 18, 8], [1, 17, 8], [1, 16, 8], [1, 15, 8], [1, 14, 8], [1, 16, 5], [1, 15, 5], [1, 14, 5], [1, 13, 5], [1, 13, 8], [1, 16, 10], [1, 15, 10], [1, 14, 10], [1, 13, 10], [42, 18, 6], [42, 19, 7], [55, 12, 8, 0], [31, 10, 7], [28, 13, 7], [27, 13, 6], [32, 10, 6], [53, 11, 8, 0], [57, 11, 5, 0], [51, 12, 5, 0], [57, 12, 10, 0], [1, 9, 8], [1, 10, 8], [1, 9, 5], [1, 10, 5], [29, 11, 11], [32, 7, 9], [1, 11, 10], [1, 10, 10], [1, 9, 10], [1, 8, 10], [1, 7, 10], [1, 6, 10], [1, 5, 10], [15, 2, 5], [11, 2, 8], [61, 8, 8, 0], [61, 8, 5, 0], [51, 13, 3, 0], [1, 19, 3], [1, 20, 3], [1, 18, 3], [1, 17, 3], [1, 16, 3], [1, 15, 3], [1, 14, 3], [1, 19, 10], [1, 8, 3], [1, 11, 3], [1, 10, 3], [1, 9, 3], [1, 7, 3], [53, 12, 3, 0], [26, 11, 2], [31, 7, 4], [1, 6, 3], [15, 3, 3], [11, 3, 6], [1, 6, 8], [1, 7, 8], [1, 5, 5], [1, 6, 5], [1, 7, 5], [31, 7, 7], [32, 7, 6], [30, 24, 16], [33, 24, 19], [21, 21, 20], [18, 21, 14], [38, 22, 16], [39, 22, 18], [1, 21, 19], [1, 21, 16], [57, 20, 14, 0], [53, 20, 8, 0], [57, 20, 16, 0], [43, 19, 17], [43, 18, 18], [55, 17, 19, 0], [51, 17, 5, 0], [1, 19, 19], [1, 20, 19], [1, 18, 19], [43, 19, 15], [43, 18, 16], [43, 17, 17], [43, 16, 18], [43, 15, 19], [43, 14, 20], [1, 20, 21], [1, 19, 21], [1, 18, 21], [1, 17, 21], [1, 16, 21], [1, 15, 21], [1, 14, 21], [55, 13, 21, 0], [57, 12, 21, 0], [53, 12, 14, 0], [14, 7, 2], [10, 7, 10], [1, 9, 11], [1, 10, 11], [1, 9, 2], [1, 10, 2], [26, 11, 13], [1, 10, 13], [1, 9, 13], [14, 7, 13], [31, 7, 15], [61, 8, 16, 0], [61, 8, 19, 0], [55, 12, 19, 0], [53, 11, 19, 0], [51, 12, 16, 0], [57, 11, 16, 0], [31, 10, 18], [31, 7, 18], [32, 7, 17], [32, 10, 17], [27, 13, 17], [28, 13, 18], [1, 9, 19], [1, 10, 19], [1, 9, 16], [1, 10, 16], [1, 7, 16], [1, 6, 16], [1, 7, 19], [1, 6, 19], [1, 5, 19], [1, 13, 16], [1, 13, 19], [1, 14, 19], [1, 15, 19], [1, 16, 19], [1, 14, 16], [1, 15, 16], [1, 16, 16], [1, 17, 16], [1, 19, 16], [1, 18, 16], [1, 13, 14], [1, 14, 14], [1, 15, 14], [1, 16, 14], [1, 17, 14], [1, 18, 14], [1, 19, 14], [1, 11, 14], [1, 10, 14], [1, 9, 14], [1, 8, 14], [1, 7, 14], [1, 6, 14], [1, 5, 14], [1, 11, 21], [1, 10, 21], [1, 9, 21], [1, 8, 21], [1, 7, 21], [1, 6, 21], [1, 10, 22], [1, 9, 22], [10, 7, 21], [29, 11, 22], [32, 7, 20], [53, 5, 21, 2], [53, 3, 19, 2], [57, 5, 16, 2], [57, 3, 14, 2], [1, 4, 14], [1, 2, 14], [1, 1, 14], [1, 4, 16], [1, 3, 16], [1, 2, 16], [1, 1, 16], [1, 4, 19], [1, 2, 19], [1, 1, 19], [1, 1, 21], [1, 2, 21], [1, 3, 21], [1, 4, 21], [31, 2, 18], [32, 2, 15], [32, 4, 17], [31, 4, 20], [0, 4, 19], [0, 4, 18], [0, 2, 17], [0, 2, 16], [82, 10, 11], [84, 10, 2], [1, 0, 14], [1, 0, 16], [1, 0, 19], [1, 0, 21]], [[1, 0, 2, 0, [2, 2]], [2, 1, 2, 30, [4, 4]], [3, 2, 2, 60, [4, 4]], [4, 3, 2, 90, [2, 2]]], "Fault Line", 1947, 2787, 3852, "These tracks have gotten twisted up over time - but why bother fixing them when they still work (just about)?", "desert"];
levelArray35 = [[[1, 15, 12], [1, 15, 8], [1, 15, 16], [31, 15, 7], [32, 15, 5], [32, 15, 9], [32, 15, 13], [32, 15, 17], [31, 15, 19], [31, 15, 15], [31, 15, 11], [0, 15, 18], [0, 15, 14], [0, 15, 6], [0, 15, 10], [59, 18, 16, 0], [59, 18, 12, 0], [59, 18, 8, 0], [61, 22, 16, 0], [59, 24, 16, 0], [61, 28, 16, 0], [61, 22, 12, 0], [61, 22, 8, 0], [53, 22, 20, 0], [55, 18, 20, 0], [55, 24, 20, 0], [53, 28, 20, 0], [57, 22, 4, 0], [51, 18, 4, 0], [51, 24, 4, 0], [57, 28, 4, 0], [59, 24, 12, 0], [59, 24, 8, 0], [61, 28, 12, 0], [61, 28, 8, 0], [1, 17, 20], [1, 19, 20], [1, 26, 20], [1, 21, 20], [1, 23, 20], [1, 25, 20], [1, 27, 20], [1, 29, 20], [1, 29, 16], [1, 27, 16], [1, 26, 16], [1, 25, 16], [1, 23, 16], [1, 21, 16], [1, 20, 16], [1, 19, 16], [1, 17, 16], [1, 17, 12], [1, 19, 12], [1, 20, 12], [1, 21, 12], [1, 23, 12], [1, 25, 12], [1, 26, 12], [1, 27, 12], [1, 29, 12], [1, 29, 8], [1, 27, 8], [1, 26, 8], [1, 25, 8], [1, 23, 8], [1, 20, 8], [1, 21, 8], [1, 19, 8], [1, 17, 8], [1, 17, 4], [1, 19, 4], [1, 20, 4], [1, 21, 4], [1, 23, 4], [1, 25, 4], [1, 26, 4], [1, 27, 4], [1, 29, 4], [0, 19, 18], [0, 21, 18], [0, 25, 18], [0, 27, 18], [0, 31, 18], [0, 31, 14], [0, 31, 10], [0, 31, 6], [0, 25, 6], [0, 27, 6], [0, 21, 6], [0, 19, 6], [0, 19, 10], [0, 19, 14], [0, 21, 14], [0, 21, 10], [0, 25, 14], [0, 25, 10], [0, 27, 10], [0, 27, 14], [28, 31, 15], [28, 31, 11], [28, 31, 7], [28, 25, 7], [28, 19, 7], [28, 19, 11], [28, 19, 15], [28, 19, 19], [28, 25, 19], [28, 25, 15], [28, 25, 11], [31, 21, 19], [31, 21, 15], [31, 21, 11], [31, 21, 7], [31, 27, 7], [31, 27, 11], [31, 27, 15], [31, 27, 19], [27, 31, 17], [27, 25, 17], [27, 19, 17], [27, 19, 13], [27, 25, 13], [27, 31, 13], [27, 31, 9], [27, 25, 9], [27, 19, 9], [27, 19, 5], [27, 25, 5], [32, 21, 5], [32, 21, 9], [32, 21, 13], [32, 21, 17], [32, 27, 17], [32, 27, 13], [32, 27, 9], [32, 27, 5], [1, 15, 20], [1, 8, 20], [1, 13, 20], [1, 13, 16], [1, 14, 16], [1, 13, 12], [1, 14, 12], [1, 14, 8], [1, 13, 8], [1, 11, 8], [1, 11, 12], [1, 11, 16], [1, 11, 20], [1, 11, 4], [1, 13, 4], [1, 14, 4], [1, 15, 4], [1, 9, 16], [1, 8, 16], [1, 7, 16], [1, 9, 20], [1, 7, 20], [1, 7, 12], [1, 8, 12], [1, 9, 12], [1, 7, 8], [1, 8, 8], [1, 9, 8], [1, 9, 4], [1, 8, 4], [1, 7, 4], [1, 5, 4], [1, 5, 8], [1, 5, 12], [1, 5, 16], [1, 5, 20], [59, 30, 16, 2], [59, 30, 12, 2], [59, 30, 8, 3], [27, 31, 5], [28, 31, 19], [1, 31, 20], [1, 31, 16], [1, 31, 12], [1, 31, 8], [1, 31, 4], [53, 16, 20, 0], [53, 10, 20, 0], [57, 16, 4, 0], [57, 10, 4, 0], [51, 12, 4, 0], [51, 6, 4, 0], [55, 6, 20, 0], [55, 12, 20, 0], [61, 16, 16, 0], [61, 16, 12, 0], [61, 16, 8, 0], [61, 10, 16, 0], [61, 10, 12, 0], [61, 10, 8, 0], [59, 12, 16, 0], [59, 12, 12, 0], [59, 12, 8, 0], [59, 6, 8, 0], [59, 6, 12, 0], [59, 6, 16, 0], [53, 4, 20, 2], [57, 4, 4, 2], [61, 4, 8, 2], [61, 4, 12, 2], [61, 4, 16, 3], [1, 1, 20], [1, 2, 20], [1, 3, 20], [1, 3, 16], [1, 2, 16], [1, 1, 16], [1, 1, 12], [1, 2, 12], [1, 3, 12], [1, 3, 8], [1, 2, 8], [1, 1, 8], [1, 1, 4], [1, 2, 4], [1, 3, 4], [0, 9, 18], [0, 13, 18], [0, 13, 14], [0, 9, 14], [0, 7, 14], [0, 7, 18], [0, 7, 10], [0, 9, 10], [0, 13, 10], [0, 13, 6], [0, 9, 6], [0, 7, 6], [0, 3, 6], [0, 3, 10], [0, 3, 14], [0, 3, 18], [31, 3, 19], [31, 3, 15], [31, 3, 11], [31, 3, 7], [31, 9, 7], [31, 9, 11], [31, 9, 15], [31, 9, 19], [32, 3, 17], [32, 3, 13], [32, 3, 9], [32, 3, 5], [32, 9, 5], [32, 9, 9], [32, 9, 13], [32, 9, 17], [27, 7, 17], [27, 7, 13], [27, 7, 9], [27, 7, 5], [27, 13, 5], [27, 13, 9], [27, 13, 13], [27, 13, 17], [28, 13, 19], [28, 13, 15], [28, 13, 11], [28, 13, 7], [28, 7, 7], [28, 7, 11], [28, 7, 15], [28, 7, 19], [82, 17, 20], [84, 17, 16], [81, 17, 12], [83, 17, 8], [85, 17, 4], [51, 30, 4, 2], [55, 30, 20, 2], [1, 32, 4], [1, 33, 4], [1, 32, 8], [1, 33, 8], [1, 33, 12], [1, 32, 12], [1, 32, 20], [1, 33, 20], [1, 32, 16], [1, 33, 16], [1, 0, 4], [1, 0, 8], [1, 0, 12], [1, 0, 16], [1, 0, 20], [1, 34, 4], [1, 34, 8], [1, 34, 12], [1, 34, 16], [1, 34, 20], [51, 14, 20, 0], [57, 20, 20, 0], [24, 18, 21], [19, 15, 21], [0, 18, 24], [0, 16, 24]], [[0, 0, 1, 220, [1, 2, 4]], [1, 1, 1, 280, [2, 4, 5]], [2, 2, 1, 340, [2, 3, 5]], [3, 3, 1, 400, [1, 3, 5]], [4, 4, 1, 460, [1, 3, 4]], [5, 5, 1, 520, [1, 3, 4]], [6, 6, 1, 580, [1, 2, 4]], [7, 7, 1, 640, [2, 4, 5]], [8, 8, 1, 700, [2, 3, 5]], [9, 9, 1, 760, [1, 3, 5]]], "Matrix", 7821, 9021, 11178, "You've done well to get this far, trainee! This is your last challenge. You should start by getting all of the trains into loops so that you can focus on one at a time.", "snow"];
var pieces = new Array();
var linearPieces = new Array();
var twoWayJunctions = new Array();
var threeWayJunctions = new Array();
var buildings = new Array();
var engines = new Array();
var carriages = new Array();
var stdup = 1;
var cdup = 1;
var entrances = new Array();
var COLOUR_NEUTRAL = 0;
var COLOUR_BLUE = 1;
var COLOUR_RED = 2;
var COLOUR_YELLOW = 3;
var COLOUR_GREEN = 4;
var COLOUR_PURPLE = 5;
var JUNCTION_PENALTY = 30;
var COLOURBLIND = false;
var SOUNDS = true;
var SFX = true;
var ALLUNLOCK = false;
var MUSIC = true;
_root._quality = "HIGH";
var piece0route1X = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
var piece0route1Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
var piece1route1X = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
var piece1route1Y = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
var piece2route1X = [0, 0.99, 1.98, 2.97, 3.95, 4.93, 5.89, 6.85, 7.79, 8.73, 9.64, 10.54, 11.42, 12.29, 13.13, 13.95, 14.74, 15.51, 16.26, 16.97, 17.66, 18.31, 18.94, 19.53, 20.09, 20.62, 21.11, 21.56, 21.98, 22.36, 22.7, 23, 23.27, 23.49, 23.67, 23.82, 23.92, 23.98, 24];
var piece2route1Y = [8, 8.02, 8.08, 8.18, 8.33, 8.51, 8.73, 9, 9.3, 9.64, 10.02, 10.44, 10.89, 11.38, 11.91, 12.47, 13.06, 13.69, 14.34, 15.03, 15.75, 16.49, 17.26, 18.06, 18.87, 19.72, 20.58, 21.46, 22.36, 23.28, 24.21, 25.15, 26.11, 27.08, 28.05, 29.03, 30.02, 31.01, 32];
var piece3route1X = [0, 1, 2, 2.99, 3.99, 4.98, 5.97, 6.95, 7.93, 8.9, 9.87, 10.84, 11.79, 12.74, 13.68, 14.62, 15.54, 16.45, 17.36, 18.25, 19.13, 20, 20.86, 21.7, 22.54, 23.35, 24.15, 24.94, 25.71, 26.47, 27.21, 27.93, 28.64, 29.32, 29.99, 30.64, 31.27, 31.89, 32.48, 33.05, 33.6, 34.13, 34.64, 35.13, 35.6, 36.04, 36.46, 36.86, 37.24, 37.59, 37.92, 38.22, 38.51, 38.76, 39, 39.21, 39.39, 39.55, 39.69, 39.8, 39.89, 39.95, 39.99, 40];
var piece3route1Y = [8, 8.01, 8.05, 8.11, 8.2, 8.31, 8.45, 8.61, 8.79, 9, 9.24, 9.5, 9.78, 10.08, 10.41, 10.77, 11.14, 11.54, 11.96, 12.41, 12.87, 13.36, 13.87, 14.4, 14.95, 15.52, 16.12, 16.73, 17.36, 18.01, 18.68, 19.37, 20.07, 20.79, 21.53, 22.29, 23.06, 23.85, 24.65, 25.47, 26.3, 27.14, 28, 28.87, 29.75, 30.65, 31.55, 32.46, 33.39, 34.32, 35.26, 36.21, 37.17, 38.13, 39.1, 40.07, 41.05, 42.04, 43.03, 44.02, 45.01, 46.01, 47, 48];
var piece4route1X = [0, 1.01, 2.01, 3, 4, 5, 5.99, 6.98, 7.98, 8.96, 9.95, 10.93, 11.91, 12.88, 13.85, 14.82, 15.78, 16.74, 17.69, 18.64, 19.57, 20.51, 21.43, 22.35, 23.27, 24.17, 25.07, 25.96, 26.84, 27.71, 28.58, 29.43, 30.28, 31.12, 31.94, 32.76, 33.56, 34.36, 35.14, 35.91, 36.67, 37.42, 38.16, 38.89, 39.6, 40.3, 40.99, 41.66, 42.32, 42.97, 43.61, 44.23, 44.83, 45.42, 46, 46.56, 47.11, 47.64, 48.16, 48.66, 49.15, 49.62, 50.08, 50.52, 50.94, 51.35, 51.74, 52.11, 52.47, 52.81, 53.13, 53.44, 53.73, 54, 54.26, 54.5, 54.72, 54.92, 55.11, 55.28, 55.43, 55.56, 55.68, 55.78, 55.86, 55.92, 55.96, 55.99, 56];
var piece4route1Y = [8, 8.01, 8.04, 8.08, 8.14, 8.22, 8.32, 8.44, 8.57, 8.72, 8.89, 9.08, 9.28, 9.5, 9.74, 10, 10.27, 10.56, 10.87, 11.19, 11.53, 11.89, 12.26, 12.66, 13.06, 13.49, 13.93, 14.38, 14.85, 15.34, 15.84, 16.36, 16.89, 17.44, 18, 18.58, 19.17, 19.78, 20.4, 21.03, 21.68, 22.34, 23.02, 23.7, 24.4, 25.12, 25.84, 26.58, 27.33, 28.09, 28.86, 29.65, 30.44, 31.25, 32.06, 32.89, 33.73, 34.57, 35.43, 36.29, 37.16, 38.05, 38.94, 39.83, 40.74, 41.65, 42.57, 43.5, 44.43, 45.37, 46.32, 47.27, 48.22, 49.19, 50.15, 51.12, 52.1, 53.08, 54.06, 55.04, 56.03, 57.02, 58.01, 59.01, 60.01, 61, 62, 63, 64];
var piece5route1X = [0, 1.11, 2.2, 3.3, 4.4, 5.49, 6.59, 7.68, 8.77, 9.86, 10.95, 12.03, 13.11, 14.19, 15.26, 16.33, 17.4, 18.46, 19.52, 20.58, 21.63, 22.67, 23.71, 24.75, 25.77, 26.8, 27.81, 28.82, 29.82, 30.82, 31.81, 32.79, 33.76, 34.73, 35.69, 36.64, 37.58, 38.51, 39.43, 40.35, 41.25, 42.15, 43.03, 43.91, 44.77, 45.63, 46.47, 47.3, 48.13, 48.94, 49.74, 50.52, 51.3, 52.07, 52.82, 53.56, 54.29, 55, 55.7, 56.39, 57.07, 57.73, 58.38, 59.02, 59.64, 60.25, 60.84, 61.42, 61.99, 62.54, 63.07, 63.6, 64.1, 64.6, 65.07, 65.54, 65.98, 66.41, 66.83, 67.23, 67.62, 67.99, 68.34, 68.68, 69, 69.3, 69.59, 69.87, 70.12, 70.37, 70.59, 70.8, 70.99, 71.16, 71.32, 71.46, 71.59, 71.7, 71.79, 71.87, 71.92, 71.97, 71.99, 72];
var piece5route1Y = [8, 8.01, 8.03, 8.08, 8.13, 8.21, 8.3, 8.41, 8.54, 8.68, 8.84, 9.01, 9.2, 9.41, 9.64, 9.88, 10.13, 10.41, 10.7, 11, 11.33, 11.66, 12.02, 12.39, 12.77, 13.17, 13.59, 14.02, 14.47, 14.93, 15.41, 15.9, 16.41, 16.93, 17.47, 18.02, 18.58, 19.16, 19.76, 20.37, 20.99, 21.62, 22.27, 22.94, 23.61, 24.3, 25, 25.72, 26.45, 27.19, 27.94, 28.7, 29.48, 30.27, 31.07, 31.88, 32.7, 33.54, 34.38, 35.23, 36.1, 36.97, 37.86, 38.76, 39.66, 40.57, 41.5, 42.43, 43.37, 44.32, 45.28, 46.24, 47.22, 48.2, 49.19, 50.18, 51.19, 52.2, 53.21, 54.23, 55.26, 56.3, 57.34, 58.38, 59.43, 60.48, 61.54, 62.61, 63.67, 64.75, 65.82, 66.9, 67.98, 69.06, 70.15, 71.24, 72.33, 73.42, 74.52, 75.61, 76.71, 77.8, 78.9, 80];
var piece6route1X = [24, 23.98, 23.92, 23.82, 23.67, 23.49, 23.27, 23, 22.7, 22.36, 21.98, 21.56, 21.11, 20.62, 20.09, 19.53, 18.94, 18.31, 17.66, 16.97, 16.26, 15.51, 14.74, 13.95, 13.13, 12.29, 11.42, 10.54, 9.64, 8.73, 7.79, 6.85, 5.89, 4.93, 3.95, 2.97, 1.98, 0.99, 0];
var piece6route1Y = [0, 0.99, 1.98, 2.97, 3.95, 4.92, 5.89, 6.85, 7.79, 8.72, 9.64, 10.54, 11.42, 12.28, 13.13, 13.94, 14.74, 15.51, 16.25, 16.97, 17.66, 18.31, 18.94, 19.53, 20.09, 20.62, 21.11, 21.56, 21.98, 22.36, 22.7, 23, 23.27, 23.49, 23.67, 23.82, 23.92, 23.98, 24];
var piece7route1X = [40, 39.99, 39.95, 39.89, 39.8, 39.69, 39.55, 39.39, 39.21, 39, 38.76, 38.51, 38.22, 37.92, 37.59, 37.24, 36.86, 36.46, 36.04, 35.6, 35.13, 34.64, 34.13, 33.6, 33.05, 32.48, 31.89, 31.27, 30.64, 29.99, 29.32, 28.64, 27.93, 27.21, 26.47, 25.71, 24.94, 24.15, 23.35, 22.54, 21.7, 20.86, 20, 19.13, 18.25, 17.36, 16.45, 15.54, 14.62, 13.68, 12.74, 11.79, 10.84, 9.87, 8.9, 7.93, 6.95, 5.97, 4.98, 3.99, 2.99, 2, 1, 0];
var piece7route1Y = [0, 1, 1.99, 2.99, 3.98, 4.97, 5.96, 6.95, 7.93, 8.9, 9.87, 10.83, 11.79, 12.74, 13.68, 14.61, 15.54, 16.45, 17.35, 18.25, 19.13, 20, 20.86, 21.7, 22.53, 23.35, 24.15, 24.94, 25.71, 26.47, 27.21, 27.93, 28.63, 29.32, 29.99, 30.64, 31.27, 31.88, 32.48, 33.05, 33.6, 34.13, 34.64, 35.13, 35.59, 36.04, 36.46, 36.86, 37.23, 37.59, 37.92, 38.22, 38.5, 38.76, 39, 39.21, 39.39, 39.55, 39.69, 39.8, 39.89, 39.95, 39.99, 40];
var piece8route1X = [56, 55.99, 55.96, 55.92, 55.86, 55.78, 55.68, 55.56, 55.43, 55.28, 55.11, 54.92, 54.72, 54.5, 54.26, 54, 53.73, 53.44, 53.13, 52.81, 52.47, 52.11, 51.74, 51.35, 50.94, 50.52, 50.08, 49.62, 49.15, 48.66, 48.16, 47.64, 47.11, 46.56, 46, 45.42, 44.83, 44.23, 43.61, 42.97, 42.32, 41.66, 40.99, 40.3, 39.6, 38.89, 38.16, 37.42, 36.67, 35.91, 35.14, 34.36, 33.56, 32.76, 31.94, 31.12, 30.28, 29.43, 28.58, 27.71, 26.84, 25.96, 25.07, 24.17, 23.27, 22.35, 21.43, 20.51, 19.57, 18.64, 17.69, 16.74, 15.78, 14.82, 13.85, 12.88, 11.91, 10.93, 9.95, 8.96, 7.98, 6.98, 5.99, 5, 4, 3, 2.01, 1.01, 0];
var piece8route1Y = [0, 1, 2, 3, 3.99, 4.99, 5.99, 6.98, 7.97, 8.96, 9.94, 10.92, 11.9, 12.88, 13.85, 14.81, 15.78, 16.73, 17.68, 18.63, 19.57, 20.5, 21.43, 22.35, 23.26, 24.17, 25.06, 25.95, 26.84, 27.71, 28.57, 29.43, 30.27, 31.11, 31.94, 32.75, 33.56, 34.35, 35.14, 35.91, 36.67, 37.42, 38.16, 38.88, 39.6, 40.3, 40.98, 41.66, 42.32, 42.97, 43.6, 44.22, 44.83, 45.42, 46, 46.56, 47.11, 47.64, 48.16, 48.66, 49.15, 49.62, 50.07, 50.51, 50.94, 51.34, 51.74, 52.11, 52.47, 52.81, 53.13, 53.44, 53.73, 54, 54.26, 54.5, 54.72, 54.92, 55.11, 55.28, 55.43, 55.56, 55.68, 55.78, 55.86, 55.92, 55.96, 55.99, 56];
var piece9route1X = [72, 71.99, 71.97, 71.92, 71.87, 71.79, 71.7, 71.59, 71.46, 71.32, 71.16, 70.99, 70.8, 70.59, 70.37, 70.12, 69.87, 69.59, 69.3, 69, 68.68, 68.34, 67.99, 67.62, 67.23, 66.83, 66.41, 65.98, 65.54, 65.07, 64.6, 64.1, 63.6, 63.07, 62.54, 61.99, 61.42, 60.84, 60.25, 59.64, 59.02, 58.38, 57.73, 57.07, 56.39, 55.7, 55, 54.29, 53.56, 52.82, 52.07, 51.3, 50.52, 49.74, 48.94, 48.13, 47.3, 46.47, 45.63, 44.77, 43.91, 43.03, 42.15, 41.25, 40.35, 39.43, 38.51, 37.58, 36.64, 35.69, 34.73, 33.76, 32.79, 31.81, 30.82, 29.82, 28.82, 27.81, 26.8, 25.77, 24.75, 23.71, 22.67, 21.63, 20.58, 19.52, 18.46, 17.4, 16.33, 15.26, 14.19, 13.11, 12.03, 10.95, 9.86, 8.77, 7.68, 6.59, 5.49, 4.4, 3.3, 2.2, 1.11, 0];
var piece9route1Y = [0, 1.1, 2.2, 3.29, 4.39, 5.48, 6.58, 7.67, 8.76, 9.85, 10.94, 12.02, 13.1, 14.18, 15.25, 16.33, 17.39, 18.46, 19.52, 20.57, 21.62, 22.66, 23.7, 24.74, 25.77, 26.79, 27.8, 28.81, 29.82, 30.81, 31.8, 32.78, 33.76, 34.72, 35.68, 36.63, 37.57, 38.5, 39.43, 40.34, 41.24, 42.14, 43.03, 43.9, 44.77, 45.62, 46.46, 47.3, 48.12, 48.93, 49.73, 50.52, 51.3, 52.06, 52.81, 53.55, 54.28, 55, 55.7, 56.39, 57.06, 57.73, 58.38, 59.01, 59.63, 60.24, 60.84, 61.42, 61.98, 62.53, 63.07, 63.59, 64.1, 64.59, 65.07, 65.53, 65.98, 66.41, 66.83, 67.23, 67.61, 67.98, 68.34, 68.67, 69, 69.3, 69.59, 69.87, 70.12, 70.36, 70.59, 70.8, 70.99, 71.16, 71.32, 71.46, 71.59, 71.7, 71.79, 71.87, 71.92, 71.97, 71.99, 72];
var piece10route1X = [32, 31.01, 30.02, 29.03, 28.05, 27.08, 26.11, 25.16, 24.21, 23.28, 22.36, 21.46, 20.58, 19.72, 18.88, 18.06, 17.26, 16.49, 15.75, 15.03, 14.35, 13.69, 13.06, 12.47, 11.91, 11.39, 10.89, 10.44, 10.02, 9.64, 9.3, 9, 8.74, 8.51, 8.33, 8.18, 8.08, 8.02, 8];
var piece10route1Y = [24, 23.98, 23.92, 23.82, 23.67, 23.49, 23.27, 23, 22.7, 22.36, 21.98, 21.56, 21.11, 20.62, 20.09, 19.53, 18.94, 18.32, 17.66, 16.97, 16.26, 15.51, 14.74, 13.95, 13.13, 12.29, 11.43, 10.54, 9.65, 8.73, 7.8, 6.85, 5.9, 4.93, 3.96, 2.97, 1.99, 1, 0];
var piece11route1X = [48, 47.01, 46.01, 45.02, 44.02, 43.03, 42.04, 41.06, 40.08, 39.1, 38.13, 37.17, 36.22, 35.27, 34.32, 33.39, 32.47, 31.55, 30.65, 29.76, 28.88, 28.01, 27.15, 26.3, 25.47, 24.66, 23.85, 23.07, 22.29, 21.54, 20.8, 20.08, 19.37, 18.68, 18.01, 17.36, 16.73, 16.12, 15.53, 14.95, 14.4, 13.87, 13.36, 12.87, 12.41, 11.96, 11.54, 11.14, 10.77, 10.42, 10.09, 9.78, 9.5, 9.24, 9, 8.79, 8.61, 8.45, 8.31, 8.2, 8.11, 8.05, 8.01, 8];
var piece11route1Y = [40, 39.99, 39.95, 39.89, 39.8, 39.69, 39.55, 39.39, 39.21, 39, 38.76, 38.51, 38.22, 37.92, 37.59, 37.24, 36.86, 36.46, 36.04, 35.6, 35.13, 34.64, 34.13, 33.6, 33.05, 32.48, 31.89, 31.28, 30.65, 30, 29.33, 28.64, 27.93, 27.21, 26.47, 25.72, 24.95, 24.16, 23.36, 22.54, 21.71, 20.86, 20.01, 19.14, 18.26, 17.36, 16.46, 15.54, 14.62, 13.69, 12.75, 11.8, 10.84, 9.88, 8.91, 7.93, 6.95, 5.97, 4.98, 3.99, 3, 2, 1.01, 0];
var piece12route1X = [64, 63.01, 62.01, 61.01, 60.01, 59.02, 58.02, 57.03, 56.04, 55.05, 54.06, 53.08, 52.1, 51.13, 50.16, 49.19, 48.23, 47.27, 46.32, 45.38, 44.44, 43.5, 42.58, 41.66, 40.74, 39.84, 38.94, 38.05, 37.17, 36.3, 35.43, 34.58, 33.73, 32.9, 32.07, 31.25, 30.45, 29.65, 28.87, 28.1, 27.33, 26.59, 25.85, 25.12, 24.41, 23.71, 23.02, 22.35, 21.68, 21.04, 20.4, 19.78, 19.18, 18.58, 18.01, 17.44, 16.9, 16.36, 15.84, 15.34, 14.86, 14.38, 13.93, 13.49, 13.07, 12.66, 12.27, 11.89, 11.53, 11.19, 10.87, 10.56, 10.27, 10, 9.74, 9.5, 9.28, 9.08, 8.89, 8.72, 8.57, 8.44, 8.32, 8.22, 8.14, 8.08, 8.04, 8.01, 8];
var piece12route1Y = [56, 55.99, 55.96, 55.92, 55.86, 55.78, 55.68, 55.56, 55.43, 55.28, 55.11, 54.93, 54.72, 54.5, 54.26, 54.01, 53.73, 53.44, 53.14, 52.81, 52.47, 52.11, 51.74, 51.35, 50.94, 50.52, 50.08, 49.63, 49.15, 48.67, 48.17, 47.65, 47.11, 46.57, 46, 45.43, 44.84, 44.23, 43.61, 42.98, 42.33, 41.67, 40.99, 40.31, 39.6, 38.89, 38.17, 37.43, 36.68, 35.92, 35.15, 34.36, 33.57, 32.76, 31.95, 31.12, 30.28, 29.44, 28.58, 27.72, 26.85, 25.97, 25.08, 24.18, 23.27, 22.36, 21.44, 20.51, 19.58, 18.64, 17.7, 16.74, 15.79, 14.83, 13.86, 12.89, 11.92, 10.94, 9.96, 8.97, 7.98, 6.99, 6, 5, 4.01, 3.01, 2.01, 1.01, 0];
var piece13route1X = [80, 78.91, 77.81, 76.72, 75.62, 74.52, 73.43, 72.34, 71.25, 70.16, 69.07, 67.99, 66.91, 65.83, 64.75, 63.68, 62.61, 61.55, 60.49, 59.44, 58.39, 57.34, 56.3, 55.27, 54.24, 53.22, 52.2, 51.19, 50.19, 49.19, 48.21, 47.22, 46.25, 45.28, 44.33, 43.38, 42.44, 41.5, 40.58, 39.67, 38.76, 37.87, 36.98, 36.11, 35.24, 34.39, 33.54, 32.71, 31.89, 31.07, 30.28, 29.49, 28.71, 27.95, 27.19, 26.45, 25.73, 25.01, 24.31, 23.62, 22.94, 22.28, 21.63, 20.99, 20.37, 19.76, 19.17, 18.59, 18.02, 17.47, 16.93, 16.41, 15.9, 15.41, 14.93, 14.47, 14.02, 13.59, 13.18, 12.77, 12.39, 12.02, 11.67, 11.33, 11.01, 10.7, 10.41, 10.14, 9.88, 9.64, 9.41, 9.21, 9.01, 8.84, 8.68, 8.54, 8.41, 8.3, 8.21, 8.13, 8.08, 8.03, 8.01, 8];
var piece13route1Y = [72, 71.99, 71.97, 71.93, 71.87, 71.79, 71.7, 71.59, 71.47, 71.32, 71.17, 70.99, 70.8, 70.59, 70.37, 70.13, 69.87, 69.6, 69.31, 69, 68.68, 68.34, 67.99, 67.62, 67.23, 66.83, 66.42, 65.99, 65.54, 65.08, 64.6, 64.11, 63.6, 63.08, 62.54, 61.99, 61.42, 60.84, 60.25, 59.64, 59.02, 58.38, 57.74, 57.07, 56.4, 55.71, 55.01, 54.29, 53.56, 52.82, 52.07, 51.31, 50.53, 49.74, 48.94, 48.13, 47.31, 46.48, 45.63, 44.78, 43.91, 43.04, 42.15, 41.26, 40.35, 39.44, 38.52, 37.58, 36.64, 35.69, 34.74, 33.77, 32.8, 31.82, 30.83, 29.83, 28.83, 27.82, 26.8, 25.78, 24.75, 23.72, 22.68, 21.64, 20.59, 19.53, 18.47, 17.41, 16.34, 15.27, 14.2, 13.12, 12.04, 10.95, 9.87, 8.78, 7.69, 6.6, 5.5, 4.41, 3.31, 2.21, 1.11, 0];
var piece14route1X = [8, 8.02, 8.08, 8.18, 8.33, 8.51, 8.74, 9, 9.3, 9.64, 10.02, 10.44, 10.89, 11.39, 11.91, 12.47, 13.06, 13.69, 14.35, 15.03, 15.75, 16.49, 17.26, 18.06, 18.88, 19.72, 20.58, 21.46, 22.36, 23.28, 24.21, 25.16, 26.11, 27.08, 28.05, 29.03, 30.02, 31.01, 32];
var piece14route1Y = [32, 31, 30.01, 29.03, 28.04, 27.07, 26.1, 25.15, 24.2, 23.27, 22.35, 21.46, 20.57, 19.71, 18.87, 18.05, 17.26, 16.49, 15.74, 15.03, 14.34, 13.68, 13.06, 12.47, 11.91, 11.38, 10.89, 10.44, 10.02, 9.64, 9.3, 9, 8.73, 8.51, 8.33, 8.18, 8.08, 8.02, 8];
var piece15route1X = [8, 8.01, 8.05, 8.11, 8.2, 8.31, 8.45, 8.61, 8.79, 9, 9.24, 9.5, 9.78, 10.09, 10.42, 10.77, 11.14, 11.54, 11.96, 12.41, 12.87, 13.36, 13.87, 14.4, 14.95, 15.53, 16.12, 16.73, 17.36, 18.01, 18.68, 19.37, 20.08, 20.8, 21.54, 22.29, 23.07, 23.85, 24.66, 25.47, 26.3, 27.15, 28.01, 28.88, 29.76, 30.65, 31.55, 32.47, 33.39, 34.32, 35.27, 36.22, 37.17, 38.13, 39.1, 40.08, 41.06, 42.04, 43.03, 44.02, 45.02, 46.01, 47.01, 48];
var piece15route1Y = [48, 46.99, 46, 45, 44.01, 43.02, 42.03, 41.05, 40.07, 39.09, 38.12, 37.16, 36.2, 35.25, 34.31, 33.38, 32.46, 31.54, 30.64, 29.74, 28.86, 27.99, 27.14, 26.29, 25.46, 24.64, 23.84, 23.05, 22.28, 21.53, 20.79, 20.07, 19.36, 18.67, 18, 17.35, 16.72, 16.11, 15.52, 14.95, 14.4, 13.87, 13.36, 12.87, 12.4, 11.96, 11.54, 11.14, 10.76, 10.41, 10.08, 9.78, 9.49, 9.24, 9, 8.79, 8.61, 8.45, 8.31, 8.2, 8.11, 8.05, 8.01, 8];
var piece16route1X = [8, 8.01, 8.04, 8.08, 8.14, 8.22, 8.32, 8.44, 8.57, 8.72, 8.89, 9.08, 9.28, 9.5, 9.74, 10, 10.27, 10.56, 10.87, 11.19, 11.53, 11.89, 12.27, 12.66, 13.07, 13.49, 13.93, 14.38, 14.86, 15.34, 15.84, 16.36, 16.9, 17.44, 18.01, 18.58, 19.18, 19.78, 20.4, 21.04, 21.68, 22.35, 23.02, 23.71, 24.41, 25.12, 25.85, 26.59, 27.33, 28.1, 28.87, 29.65, 30.45, 31.25, 32.07, 32.9, 33.73, 34.58, 35.43, 36.3, 37.17, 38.05, 38.94, 39.84, 40.74, 41.66, 42.58, 43.5, 44.44, 45.38, 46.32, 47.27, 48.23, 49.19, 50.16, 51.13, 52.1, 53.08, 54.06, 55.05, 56.04, 57.03, 58.02, 59.02, 60.01, 61.01, 62.01, 63.01, 64];
var piece16route1Y = [64, 62.99, 61.99, 60.99, 59.99, 59, 58, 57.01, 56.02, 55.03, 54.04, 53.06, 52.08, 51.11, 50.14, 49.17, 48.21, 47.26, 46.3, 45.36, 44.42, 43.49, 42.56, 41.64, 40.73, 39.82, 38.92, 38.03, 37.15, 36.28, 35.42, 34.56, 33.72, 32.88, 32.05, 31.24, 30.43, 29.64, 28.85, 28.08, 27.32, 26.57, 25.83, 25.11, 24.4, 23.69, 23.01, 22.33, 21.67, 21.02, 20.39, 19.77, 19.16, 18.57, 18, 17.43, 16.89, 16.35, 15.83, 15.33, 14.85, 14.37, 13.92, 13.48, 13.06, 12.65, 12.26, 11.89, 11.53, 11.19, 10.86, 10.56, 10.27, 9.99, 9.74, 9.5, 9.28, 9.07, 8.89, 8.72, 8.57, 8.44, 8.32, 8.22, 8.14, 8.08, 8.04, 8.01, 8];
var piece17route1X = [8, 8.01, 8.03, 8.08, 8.13, 8.21, 8.3, 8.41, 8.54, 8.68, 8.84, 9.01, 9.21, 9.41, 9.64, 9.88, 10.14, 10.41, 10.7, 11.01, 11.33, 11.67, 12.02, 12.39, 12.77, 13.18, 13.59, 14.02, 14.47, 14.93, 15.41, 15.9, 16.41, 16.93, 17.47, 18.02, 18.59, 19.17, 19.76, 20.37, 20.99, 21.63, 22.28, 22.94, 23.62, 24.31, 25.01, 25.73, 26.45, 27.19, 27.95, 28.71, 29.49, 30.28, 31.07, 31.89, 32.71, 33.54, 34.39, 35.24, 36.11, 36.98, 37.87, 38.76, 39.67, 40.58, 41.5, 42.44, 43.38, 44.33, 45.28, 46.25, 47.22, 48.21, 49.19, 50.19, 51.19, 52.2, 53.22, 54.24, 55.27, 56.3, 57.34, 58.39, 59.44, 60.49, 61.55, 62.61, 63.68, 64.75, 65.83, 66.91, 67.99, 69.07, 70.16, 71.25, 72.34, 73.43, 74.52, 75.62, 76.72, 77.81, 78.91, 80];
var piece17route1Y = [80, 78.89, 77.79, 76.69, 75.59, 74.5, 73.4, 72.31, 71.22, 70.13, 69.05, 67.96, 66.88, 65.8, 64.73, 63.66, 62.59, 61.53, 60.47, 59.41, 58.36, 57.32, 56.28, 55.25, 54.22, 53.2, 52.18, 51.17, 50.17, 49.17, 48.18, 47.2, 46.23, 45.26, 44.31, 43.36, 42.42, 41.48, 40.56, 39.65, 38.74, 37.85, 36.96, 36.09, 35.22, 34.37, 33.52, 32.69, 31.87, 31.06, 30.26, 29.47, 28.69, 27.93, 27.18, 26.44, 25.71, 24.99, 24.29, 23.6, 22.93, 22.26, 21.62, 20.98, 20.36, 19.75, 19.16, 18.58, 18.01, 17.46, 16.92, 16.4, 15.89, 15.4, 14.92, 14.46, 14.01, 13.58, 13.17, 12.77, 12.38, 12.01, 11.66, 11.32, 11, 10.69, 10.4, 10.13, 9.87, 9.63, 9.41, 9.2, 9.01, 8.83, 8.68, 8.53, 8.41, 8.3, 8.21, 8.13, 8.07, 8.03, 8.01, 8];
var piece18route1X = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9.9, 10.9, 11.9, 12.8, 13.8, 14.8, 15.7, 16.7, 17.6, 18.5, 19.5, 20.4, 21.4, 22.3, 23.2, 24.1, 25, 25.9, 26.8, 27.7, 28.6, 29.5, 30.3, 31.2, 32.1, 32.9, 33.7, 34.5, 35.4, 36.2, 36.9, 37.7, 38.5, 39.3, 40.1, 40.8, 41.6, 42.3, 43.1, 43.8, 44.5, 45.2, 45.9, 46.6, 47.3, 48];
var piece18route1Y = [8, 8, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.8, 9, 9.1, 9.3, 9.6, 9.8, 10.1, 10.3, 10.6, 10.9, 11.2, 11.6, 11.9, 12.3, 12.6, 13, 13.4, 13.9, 14.3, 14.8, 15.2, 15.7, 16.2, 16.7, 17.3, 17.8, 18.3, 18.9, 19.4, 20, 20.6, 21.2, 21.8, 22.4, 23.1, 23.7, 24.4, 25, 25.7, 26.4, 27, 27.7, 28.4, 29.1, 29.9, 30.6, 31.3, 32];
var piece19route1X = [0, 0.7, 1.4, 2.1, 2.9, 3.6, 4.3, 5, 5.6, 6.3, 7, 7.6, 8.3, 8.9, 9.6, 10.2, 10.8, 11.4, 12, 12.6, 13.1, 13.7, 14.2, 14.7, 15.3, 15.8, 16.3, 16.8, 17.2, 17.7, 18.1, 18.6, 19, 19.4, 19.7, 20.1, 20.4, 20.8, 21.1, 21.4, 21.7, 21.9, 22.2, 22.4, 22.7, 22.9, 23, 23.2, 23.4, 23.5, 23.6, 23.7, 23.8, 23.9, 24, 24];
var piece19route1Y = [0, 0.7, 1.4, 2.1, 2.8, 3.5, 4.2, 4.9, 5.7, 6.4, 7.2, 7.9, 8.7, 9.5, 10.3, 11.1, 11.8, 12.6, 13.5, 14.3, 15.1, 15.9, 16.8, 17.7, 18.5, 19.4, 20.3, 21.2, 22.1, 23, 23.9, 24.8, 25.7, 26.6, 27.6, 28.5, 29.5, 30.4, 31.3, 32.3, 33.2, 34.2, 35.2, 36.1, 37.1, 38.1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48];
var piece20route1X = [24, 24, 23.9, 23.8, 23.7, 23.6, 23.5, 23.4, 23.2, 23, 22.9, 22.7, 22.4, 22.2, 21.9, 21.7, 21.4, 21.1, 20.8, 20.4, 20.1, 19.7, 19.4, 19, 18.6, 18.1, 17.7, 17.2, 16.8, 16.3, 15.8, 15.3, 14.7, 14.2, 13.7, 13.1, 12.6, 12, 11.4, 10.8, 10.2, 9.6, 8.9, 8.3, 7.6, 7, 6.3, 5.6, 5, 4.3, 3.6, 2.9, 2.1, 1.4, 0.7, 0];
var piece20route1Y = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 9.9, 10.9, 11.9, 12.8, 13.8, 14.8, 15.7, 16.7, 17.6, 18.5, 19.5, 20.4, 21.4, 22.3, 23.2, 24.1, 25, 25.9, 26.8, 27.7, 28.6, 29.5, 30.3, 31.2, 32.1, 32.9, 33.7, 34.5, 35.4, 36.2, 36.9, 37.7, 38.5, 39.3, 40.1, 40.8, 41.6, 42.3, 43.1, 43.8, 44.5, 45.2, 45.9, 46.6, 47.3, 48];
var piece21route1X = [48, 47.3, 46.6, 45.9, 45.2, 44.5, 43.8, 43.1, 42.3, 41.6, 40.8, 40.1, 39.3, 38.5, 37.7, 36.9, 36.2, 35.4, 34.5, 33.7, 32.9, 32.1, 31.2, 30.3, 29.5, 28.6, 27.7, 26.8, 25.9, 25, 24.1, 23.2, 22.3, 21.4, 20.4, 19.5, 18.5, 17.6, 16.7, 15.7, 14.8, 13.8, 12.8, 11.9, 10.9, 9.9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
var piece21route1Y = [0, 0.7, 1.4, 2.1, 2.9, 3.6, 4.3, 5, 5.6, 6.3, 7, 7.6, 8.3, 8.9, 9.6, 10.2, 10.8, 11.4, 12, 12.6, 13.1, 13.7, 14.2, 14.7, 15.3, 15.8, 16.3, 16.8, 17.2, 17.7, 18.1, 18.6, 19, 19.4, 19.7, 20.1, 20.4, 20.8, 21.1, 21.4, 21.7, 21.9, 22.2, 22.4, 22.7, 22.9, 23, 23.2, 23.4, 23.5, 23.6, 23.7, 23.8, 23.9, 24, 24];
var piece22route1X = [48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38.1, 37.1, 36.1, 35.2, 34.2, 33.2, 32.3, 31.3, 30.4, 29.5, 28.5, 27.6, 26.6, 25.7, 24.8, 23.9, 23, 22.1, 21.2, 20.3, 19.4, 18.5, 17.7, 16.8, 15.9, 15.1, 14.3, 13.5, 12.6, 11.8, 11.1, 10.3, 9.5, 8.7, 7.9, 7.2, 6.4, 5.7, 4.9, 4.2, 3.5, 2.8, 2.1, 1.4, 0.7, 0];
var piece22route1Y = [24, 24, 23.9, 23.8, 23.7, 23.6, 23.5, 23.4, 23.2, 23, 22.9, 22.7, 22.4, 22.2, 21.9, 21.7, 21.4, 21.1, 20.8, 20.4, 20.1, 19.7, 19.4, 19, 18.6, 18.1, 17.7, 17.2, 16.8, 16.3, 15.8, 15.3, 14.7, 14.2, 13.7, 13.1, 12.6, 12, 11.4, 10.8, 10.2, 9.6, 8.9, 8.3, 7.6, 7, 6.3, 5.6, 5, 4.3, 3.6, 2.9, 2.1, 1.4, 0.7, 0];
var piece23route1X = [32, 31.3, 30.6, 29.9, 29.1, 28.4, 27.7, 27, 26.4, 25.7, 25, 24.4, 23.7, 23.1, 22.4, 21.8, 21.2, 20.6, 20, 19.4, 18.9, 18.3, 17.8, 17.3, 16.7, 16.2, 15.7, 15.2, 14.8, 14.3, 13.9, 13.4, 13, 12.6, 12.3, 11.9, 11.6, 11.2, 10.9, 10.6, 10.3, 10.1, 9.8, 9.6, 9.3, 9.1, 9, 8.8, 8.6, 8.5, 8.4, 8.3, 8.2, 8.1, 8, 8];
var piece23route1Y = [48, 47.3, 46.6, 45.9, 45.2, 44.5, 43.8, 43.1, 42.3, 41.6, 40.8, 40.1, 39.3, 38.5, 37.7, 36.9, 36.2, 35.4, 34.5, 33.7, 32.9, 32.1, 31.2, 30.3, 29.5, 28.6, 27.7, 26.8, 25.9, 25, 24.1, 23.2, 22.3, 21.4, 20.4, 19.5, 18.5, 17.6, 16.7, 15.7, 14.8, 13.8, 12.8, 11.9, 10.9, 9.9, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0];
var piece24route1X = [8, 8, 8.1, 8.2, 8.3, 8.4, 8.5, 8.6, 8.8, 9, 9.1, 9.3, 9.6, 9.8, 10.1, 10.3, 10.6, 10.9, 11.2, 11.6, 11.9, 12.3, 12.6, 13, 13.4, 13.9, 14.3, 14.8, 15.2, 15.7, 16.2, 16.7, 17.3, 17.8, 18.3, 18.9, 19.4, 20, 20.6, 21.2, 21.8, 22.4, 23.1, 23.7, 24.4, 25, 25.7, 26.4, 27, 27.7, 28.4, 29.1, 29.9, 30.6, 31.3, 32];
var piece24route1Y = [48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38.1, 37.1, 36.1, 35.2, 34.2, 33.2, 32.3, 31.3, 30.4, 29.5, 28.5, 27.6, 26.6, 25.7, 24.8, 23.9, 23, 22.1, 21.2, 20.3, 19.4, 18.5, 17.7, 16.8, 15.9, 15.1, 14.3, 13.5, 12.6, 11.8, 11.1, 10.3, 9.5, 8.7, 7.9, 7.2, 6.4, 5.7, 4.9, 4.2, 3.5, 2.8, 2.1, 1.4, 0.7, 0];
var piece25route1X = [0, 0.7, 1.4, 2.1, 2.8, 3.5, 4.2, 4.9, 5.7, 6.4, 7.2, 7.9, 8.7, 9.5, 10.3, 11.1, 11.8, 12.6, 13.5, 14.3, 15.1, 15.9, 16.8, 17.7, 18.5, 19.4, 20.3, 21.2, 22.1, 23, 23.9, 24.8, 25.7, 26.6, 27.6, 28.5, 29.5, 30.4, 31.3, 32.3, 33.2, 34.2, 35.2, 36.1, 37.1, 38.1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48];
var piece25route1Y = [32, 31.3, 30.6, 29.9, 29.1, 28.4, 27.7, 27, 26.4, 25.7, 25, 24.4, 23.7, 23.1, 22.4, 21.8, 21.2, 20.6, 20, 19.4, 18.9, 18.3, 17.8, 17.3, 16.7, 16.2, 15.7, 15.2, 14.8, 14.3, 13.9, 13.4, 13, 12.6, 12.3, 11.9, 11.6, 11.2, 10.9, 10.6, 10.3, 10.1, 9.8, 9.6, 9.3, 9.1, 9, 8.8, 8.6, 8.5, 8.4, 8.3, 8.2, 8.1, 8, 8];
var piece26route1X = [0, 1, 2, 3, 4, 5, 5.8, 6.8, 7.7, 8.6, 9.5, 10.4, 11.2, 12.1, 12.9, 13.7, 14.4, 15.3, 16];
var piece26route1Y = [8, 8, 8.2, 8.3, 8.6, 8.8, 9.2, 9.6, 10.1, 10.5, 11.1, 11.6, 12.2, 12.8, 13.4, 14, 14.7, 15.3, 16];
var piece27route1X = [0, 0.7, 1.3, 2, 2.6, 3.2, 3.8, 4.4, 4.9, 5.5, 5.9, 6.4, 6.8, 7.2, 7.4, 7.7, 7.8, 8, 8];
var piece27route1Y = [0, 0.7, 1.6, 2.3, 3.1, 3.9, 4.8, 5.6, 6.5, 7.4, 8.3, 9.2, 10.2, 11, 12, 13, 14, 15, 16];
var piece28route1X = [8, 8, 7.8, 7.7, 7.4, 7.2, 6.8, 6.4, 5.9, 5.5, 4.9, 4.4, 3.8, 3.2, 2.6, 2, 1.3, 0.7, 0];
var piece28route1Y = [0, 1, 2, 3, 4, 5, 5.8, 6.8, 7.7, 8.6, 9.5, 10.4, 11.2, 12.1, 12.9, 13.7, 14.4, 15.3, 16];
var piece29route1X = [16, 15.3, 14.4, 13.7, 12.9, 12.1, 11.2, 10.4, 9.5, 8.6, 7.7, 6.8, 5.8, 5, 4, 3, 2, 1, 0];
var piece29route1Y = [0, 0.7, 1.3, 2, 2.6, 3.2, 3.8, 4.4, 4.9, 5.5, 5.9, 6.4, 6.8, 7.2, 7.4, 7.7, 7.8, 8, 8];
var piece30route1X = [16, 15, 14, 13, 12, 11, 10.2, 9.2, 8.3, 7.4, 6.5, 5.6, 4.8, 3.9, 3.1, 2.3, 1.6, 0.7, 0];
var piece30route1Y = [8, 8, 7.8, 7.7, 7.4, 7.2, 6.8, 6.4, 5.9, 5.5, 4.9, 4.4, 3.8, 3.2, 2.6, 2, 1.3, 0.7, 0];
var piece31route1X = [16, 15.3, 14.7, 14, 13.4, 12.8, 12.2, 11.6, 11.1, 10.5, 10.1, 9.6, 9.2, 8.8, 8.6, 8.3, 8.2, 8, 8];
var piece31route1Y = [16, 15.3, 14.4, 13.7, 12.9, 12.1, 11.2, 10.4, 9.5, 8.6, 7.7, 6.8, 5.8, 5, 4, 3, 2, 1, 0];
var piece32route1X = [8, 8, 8.2, 8.3, 8.6, 8.8, 9.2, 9.6, 10.1, 10.5, 11.1, 11.6, 12.2, 12.8, 13.4, 14, 14.7, 15.3, 16];
var piece32route1Y = [16, 15, 14, 13, 12, 11, 10.2, 9.2, 8.3, 7.4, 6.5, 5.6, 4.8, 3.9, 3.1, 2.3, 1.6, 0.7, 0];
var piece33route1X = [0, 0.7, 1.6, 2.3, 3.1, 3.9, 4.8, 5.6, 6.5, 7.4, 8.3, 9.2, 10.2, 11, 12, 13, 14, 15, 16];
var piece33route1Y = [16, 15.3, 14.7, 14, 13.4, 12.8, 12.2, 11.6, 11.1, 10.5, 10.1, 9.6, 9.2, 8.8, 8.6, 8.3, 8.2, 8, 8];
var piece34route1X = [0, 1.01, 2.01, 3, 3.98, 4.95, 5.89, 6.81, 7.71, 8.57, 9.41, 10.2, 10.95, 11.66, 12.33, 12.94, 13.51, 14.02, 14.48, 14.88, 15.22, 15.5, 15.72, 15.87, 15.97, 16, 15.97, 15.87, 15.72, 15.5, 15.22, 14.88, 14.48, 14.02, 13.51, 12.94, 12.33, 11.66, 10.95, 10.2, 9.41, 8.57, 7.71, 6.81, 5.89, 4.95, 3.98, 3, 2.01, 1.01, 0];
var piece34route1Y = [8, 8.03, 8.13, 8.28, 8.5, 8.78, 9.12, 9.52, 9.98, 10.49, 11.06, 11.67, 12.34, 13.05, 13.8, 14.6, 15.43, 16.29, 17.19, 18.11, 19.06, 20.02, 21, 21.99, 23, 24, 25, 26.01, 27, 27.98, 28.94, 29.89, 30.81, 31.71, 32.57, 33.4, 34.2, 34.95, 35.66, 36.33, 36.94, 37.51, 38.02, 38.48, 38.88, 39.22, 39.5, 39.72, 39.87, 39.97, 40];
var piece35route1X = [32, 31, 30, 29, 28.02, 27.06, 26.11, 25.19, 24.29, 23.43, 22.6, 21.8, 21.05, 20.34, 19.67, 19.06, 18.49, 17.98, 17.52, 17.12, 16.78, 16.5, 16.28, 16.13, 16.03, 16, 16.03, 16.13, 16.28, 16.5, 16.78, 17.12, 17.52, 17.98, 18.49, 19.05, 19.67, 20.33, 21.04, 21.8, 22.59, 23.42, 24.29, 25.18, 26.11, 27.05, 28.02, 29, 29.99, 30.99, 32];
var piece35route1Y = [40, 39.97, 39.87, 39.72, 39.5, 39.22, 38.88, 38.48, 38.02, 37.51, 36.95, 36.33, 35.67, 34.95, 34.2, 33.41, 32.58, 31.71, 30.82, 29.89, 28.95, 27.98, 27, 26.01, 25.01, 24, 23, 22, 21.01, 20.02, 19.06, 18.11, 17.19, 16.3, 15.43, 14.6, 13.8, 13.05, 12.34, 11.67, 11.06, 10.49, 9.98, 9.52, 9.13, 8.78, 8.5, 8.28, 8.13, 8.03, 8];
var piece36route1X = [40, 39.97, 39.87, 39.72, 39.5, 39.22, 38.88, 38.48, 38.02, 37.51, 36.94, 36.33, 35.66, 34.95, 34.2, 33.41, 32.57, 31.71, 30.81, 29.89, 28.95, 27.98, 27, 26.01, 25.01, 24, 23, 22, 21, 20.02, 19.06, 18.11, 17.19, 16.29, 15.43, 14.6, 13.8, 13.05, 12.34, 11.67, 11.06, 10.49, 9.98, 9.52, 9.12, 8.78, 8.5, 8.28, 8.13, 8.03, 8];
var piece36route1Y = [0, 1, 2.01, 3, 3.98, 4.94, 5.89, 6.81, 7.71, 8.57, 9.4, 10.2, 10.95, 11.66, 12.33, 12.94, 13.51, 14.02, 14.48, 14.88, 15.22, 15.5, 15.72, 15.87, 15.97, 16, 15.97, 15.87, 15.72, 15.5, 15.22, 14.88, 14.48, 14.02, 13.51, 12.95, 12.33, 11.67, 10.95, 10.2, 9.41, 8.58, 7.71, 6.82, 5.89, 4.95, 3.98, 3, 2.01, 1.01, 0];
var piece37route1X = [8, 8.03, 8.13, 8.28, 8.5, 8.78, 9.12, 9.52, 9.98, 10.49, 11.05, 11.67, 12.33, 13.04, 13.8, 14.59, 15.42, 16.29, 17.18, 18.11, 19.05, 20.02, 21, 21.99, 22.99, 23.99, 25, 26, 26.99, 27.97, 28.94, 29.88, 30.81, 31.7, 32.57, 33.4, 34.19, 34.95, 35.66, 36.32, 36.94, 37.51, 38.02, 38.47, 38.87, 39.21, 39.5, 39.72, 39.87, 39.97, 40];
var piece37route1Y = [32, 31, 30, 29.01, 28.02, 27.06, 26.11, 25.19, 24.3, 23.43, 22.6, 21.8, 21.05, 20.34, 19.67, 19.06, 18.49, 17.98, 17.52, 17.13, 16.78, 16.5, 16.28, 16.13, 16.03, 16, 16.03, 16.13, 16.28, 16.5, 16.78, 17.12, 17.52, 17.98, 18.49, 19.05, 19.67, 20.33, 21.04, 21.8, 22.59, 23.42, 24.29, 25.18, 26.1, 27.05, 28.01, 28.99, 29.99, 30.99, 32];
var piece38route1X = [0, 1, 2, 3, 4, 4.9, 5.9, 6.8, 7.8, 8.8, 9.8, 10.7, 11.7, 12.6, 13.6, 14.4, 15.4, 16.2, 17.1, 17.9, 18.9, 19.7, 20.5, 21.4, 22.3, 23.1, 23.9, 24.7, 25.6, 26.4, 27.1, 28, 28.9, 29.7, 30.6, 31.5, 32.4, 33.4, 34.3, 35.2, 36.1, 37.1, 38.1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48];
var piece38route1Y = [8, 8, 8, 8.1, 8.1, 8.2, 8.3, 8.5, 8.7, 8.9, 9.1, 9.3, 9.7, 10, 10.4, 10.8, 11.2, 11.6, 12.1, 12.6, 13.1, 13.7, 14.2, 14.7, 15.3, 15.8, 16.4, 16.9, 17.4, 18, 18.6, 19.1, 19.6, 20.1, 20.5, 20.9, 21.4, 21.7, 22.1, 22.4, 22.7, 23, 23.2, 23.4, 23.6, 23.8, 23.9, 23.9, 24, 24, 24, 24, 24];
var piece39route1X = [0, 1, 2, 3, 4, 4.9, 5.9, 6.8, 7.8, 8.8, 9.8, 10.7, 11.7, 12.6, 13.6, 14.4, 15.4, 16.2, 17.1, 17.9, 18.9, 19.7, 20.5, 21.4, 22.3, 23.1, 23.9, 24.7, 25.6, 26.4, 27.1, 28, 28.9, 29.7, 30.6, 31.5, 32.4, 33.4, 34.3, 35.2, 36.1, 37.1, 38.1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48];
var piece39route1Y = [24, 24, 24, 23.9, 23.9, 23.8, 23.7, 23.5, 23.3, 23.1, 22.9, 22.7, 22.3, 22, 21.6, 21.2, 20.8, 20.4, 19.9, 19.4, 18.9, 18.3, 17.8, 17.3, 16.7, 16.2, 15.6, 15.1, 14.6, 14, 13.4, 12.9, 12.4, 11.9, 11.5, 11.1, 10.6, 10.3, 9.9, 9.6, 9.3, 9, 8.8, 8.6, 8.4, 8.2, 8.1, 8.1, 8, 8, 8, 8, 8];
var piece40route1X = [24, 24, 24, 23.9, 23.9, 23.8, 23.7, 23.5, 23.3, 23.1, 22.9, 22.7, 22.3, 22, 21.6, 21.2, 20.8, 20.4, 19.9, 19.4, 18.9, 18.3, 17.8, 17.3, 16.7, 16.2, 15.6, 15.1, 14.6, 14, 13.4, 12.9, 12.4, 11.9, 11.5, 11.1, 10.6, 10.3, 9.9, 9.6, 9.3, 9, 8.8, 8.6, 8.4, 8.2, 8.1, 8.1, 8, 8, 8, 8, 8];
var piece40route1Y = [0, 1, 2, 3, 4, 4.9, 5.9, 6.8, 7.8, 8.8, 9.8, 10.7, 11.7, 12.6, 13.6, 14.4, 15.4, 16.2, 17.1, 17.9, 18.9, 19.7, 20.5, 21.4, 22.3, 23.1, 23.9, 24.7, 25.6, 26.4, 27.1, 28, 28.9, 29.7, 30.6, 31.5, 32.4, 33.4, 34.3, 35.2, 36.1, 37.1, 38.1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48];
var piece41route1X = [8, 8, 8, 8.1, 8.1, 8.2, 8.3, 8.5, 8.7, 8.9, 9.1, 9.3, 9.7, 10, 10.4, 10.8, 11.2, 11.6, 12.1, 12.6, 13.1, 13.7, 14.2, 14.7, 15.3, 15.8, 16.4, 16.9, 17.4, 18, 18.6, 19.1, 19.6, 20.1, 20.5, 20.9, 21.4, 21.7, 22.1, 22.4, 22.7, 23, 23.2, 23.4, 23.6, 23.8, 23.9, 23.9, 24, 24, 24, 24, 24];
var piece41route1Y = [0, 1, 2, 3, 4, 4.9, 5.9, 6.8, 7.8, 8.8, 9.8, 10.7, 11.7, 12.6, 13.6, 14.4, 15.4, 16.2, 17.1, 17.9, 18.9, 19.7, 20.5, 21.4, 22.3, 23.1, 23.9, 24.7, 25.6, 26.4, 27.1, 28, 28.9, 29.7, 30.6, 31.5, 32.4, 33.4, 34.3, 35.2, 36.1, 37.1, 38.1, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48];
var piece42route1X = [0, 0.7, 1.39, 2.09, 2.78, 3.48, 4.17, 4.87, 5.57, 6.26, 6.96, 7.65, 8.35, 9.04, 9.74, 10.43, 11.13, 11.83, 12.52, 13.22, 13.91, 14.61, 15.3, 16];
var piece42route1Y = [0, 0.7, 1.39, 2.09, 2.78, 3.48, 4.17, 4.87, 5.57, 6.26, 6.96, 7.65, 8.35, 9.04, 9.74, 10.43, 11.13, 11.83, 12.52, 13.22, 13.91, 14.61, 15.3, 16];
var piece43route1X = [0, 0.7, 1.39, 2.09, 2.78, 3.48, 4.17, 4.87, 5.57, 6.26, 6.96, 7.65, 8.35, 9.04, 9.74, 10.43, 11.13, 11.83, 12.52, 13.22, 13.91, 14.61, 15.3, 16];
var piece43route1Y = [16, 15.3, 14.61, 13.91, 13.22, 12.52, 11.83, 11.13, 10.43, 9.74, 9.04, 8.35, 7.65, 6.96, 6.26, 5.57, 4.87, 4.17, 3.48, 2.78, 2.09, 1.39, 0.7, 0];
var piece0route1Xr = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
var piece0route1Yr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
var piece1route1Xr = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16];
var piece1route1Yr = [8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8];
piece0route1Xr.reverse();
piece0route1Yr.reverse();
piece1route1Xr.reverse();
piece1route1Yr.reverse();
var piece26route1Xr = [0, 1, 2, 3, 4, 5, 5.8, 6.8, 7.7, 8.6, 9.5, 10.4, 11.2, 12.1, 12.9, 13.7, 14.4, 15.3, 16];
var piece26route1Yr = [8, 8, 8.2, 8.3, 8.6, 8.8, 9.2, 9.6, 10.1, 10.5, 11.1, 11.6, 12.2, 12.8, 13.4, 14, 14.7, 15.3, 16];
var piece27route1Xr = [0, 0.7, 1.3, 2, 2.6, 3.2, 3.8, 4.4, 4.9, 5.5, 5.9, 6.4, 6.8, 7.2, 7.4, 7.7, 7.8, 8, 8];
var piece27route1Yr = [0, 0.7, 1.6, 2.3, 3.1, 3.9, 4.8, 5.6, 6.5, 7.4, 8.3, 9.2, 10.2, 11, 12, 13, 14, 15, 16];
var piece28route1Xr = [8, 8, 7.8, 7.7, 7.4, 7.2, 6.8, 6.4, 5.9, 5.5, 4.9, 4.4, 3.8, 3.2, 2.6, 2, 1.3, 0.7, 0];
var piece28route1Yr = [0, 1, 2, 3, 4, 5, 5.8, 6.8, 7.7, 8.6, 9.5, 10.4, 11.2, 12.1, 12.9, 13.7, 14.4, 15.3, 16];
var piece29route1Xr = [16, 15.3, 14.4, 13.7, 12.9, 12.1, 11.2, 10.4, 9.5, 8.6, 7.7, 6.8, 5.8, 5, 4, 3, 2, 1, 0];
var piece29route1Yr = [0, 0.7, 1.3, 2, 2.6, 3.2, 3.8, 4.4, 4.9, 5.5, 5.9, 6.4, 6.8, 7.2, 7.4, 7.7, 7.8, 8, 8];
var piece30route1Xr = [16, 15, 14, 13, 12, 11, 10.2, 9.2, 8.3, 7.4, 6.5, 5.6, 4.8, 3.9, 3.1, 2.3, 1.6, 0.7, 0];
var piece30route1Yr = [8, 8, 7.8, 7.7, 7.4, 7.2, 6.8, 6.4, 5.9, 5.5, 4.9, 4.4, 3.8, 3.2, 2.6, 2, 1.3, 0.7, 0];
var piece31route1Xr = [16, 15.3, 14.7, 14, 13.4, 12.8, 12.2, 11.6, 11.1, 10.5, 10.1, 9.6, 9.2, 8.8, 8.6, 8.3, 8.2, 8, 8];
var piece31route1Yr = [16, 15.3, 14.4, 13.7, 12.9, 12.1, 11.2, 10.4, 9.5, 8.6, 7.7, 6.8, 5.8, 5, 4, 3, 2, 1, 0];
var piece32route1Xr = [8, 8, 8.2, 8.3, 8.6, 8.8, 9.2, 9.6, 10.1, 10.5, 11.1, 11.6, 12.2, 12.8, 13.4, 14, 14.7, 15.3, 16];
var piece32route1Yr = [16, 15, 14, 13, 12, 11, 10.2, 9.2, 8.3, 7.4, 6.5, 5.6, 4.8, 3.9, 3.1, 2.3, 1.6, 0.7, 0];
var piece33route1Xr = [0, 0.7, 1.6, 2.3, 3.1, 3.9, 4.8, 5.6, 6.5, 7.4, 8.3, 9.2, 10.2, 11, 12, 13, 14, 15, 16];
var piece33route1Yr = [16, 15.3, 14.7, 14, 13.4, 12.8, 12.2, 11.6, 11.1, 10.5, 10.1, 9.6, 9.2, 8.8, 8.6, 8.3, 8.2, 8, 8];
i = 26;
while (i <= 33) {
_root[("piece" + i) + "route1Xr"].reverse();
_root[("piece" + i) + "route1Yr"].reverse();
i++;
}
var end1Xarray = new Array();
var end1Yarray = new Array();
var end2Xarray = new Array();
var end2Yarray = new Array();
i = 0;
while (i <= 43) {
end1Xarray.push(_root[("piece" + i) + "route1X"][0]);
end2Xarray.push(_root[("piece" + i) + "route1X"][_root[("piece" + i) + "route1X"].length - 1]);
end1Yarray.push(_root[("piece" + i) + "route1Y"][0]);
end2Yarray.push(_root[("piece" + i) + "route1Y"][_root[("piece" + i) + "route1X"].length - 1]);
i++;
}
distance = function (X1, Y1, X2, Y2) {
return(Math.sqrt(Math.pow(X2 - X1, 2) + Math.pow(Y2 - Y1, 2)));
};
copyArray = function (COPY, TARGET) {
k = 0;
while (k < COPY.length) {
TARGET[k] = COPY[k];
k++;
}
};
getLevelName = function (ID) {
return(_root["levelArray" + ID][2]);
};
getGoldTime = function (ID) {
return(_root["levelArray" + ID][3]);
};
getSilverTime = function (ID) {
return(_root["levelArray" + ID][4]);
};
getBronzeTime = function (ID) {
return(_root["levelArray" + ID][5]);
};
getBestTimeToString = function (ID) {
var _local1 = myBests[ID - 1];
if (_local1 == 0) {
return("not set");
}
return(timeToString(_local1));
};
getBestTime = function (ID) {
return(myBests[ID - 1]);
};
setBestTime = function (ID, SBT) {
if (SBT < 1) {
SBT = 1;
}
myBests[ID - 1] = SBT;
gameSave("RAILS1");
};
getWins = function (ID) {
return(myWins[ID - 1]);
};
recordWin = function (ID) {
myWins[ID - 1]++;
gameSave("RAILS1");
trace("Recorded a win");
};
getLosses = function (ID) {
return(myLosses[ID - 1]);
};
recordLoss = function (ID) {
myLosses[ID - 1]++;
gameSave("RAILS1");
trace("Recorded a 'loss'");
};
addDeaths = function (ID, deathsIn) {
trace("Deaths added: " + Math.ceil(deathsIn));
_root.thisDeathToll = _root.thisDeathToll + Math.ceil(deathsIn);
myDeaths[ID - 1] = myDeaths[ID - 1] + Math.ceil(deathsIn);
trace("Total deaths on this level: " + getDeaths(ID));
};
getDeaths = function (ID) {
return(myDeaths[ID - 1]);
};
getLevelAward = function (ID) {
return(getScoreLevel(getBestTime(ID), ID));
};
timeToString = function (Finput) {
if (Finput <= 0) {
return("not set");
}
var _local1 = Finput % 30;
Finput = Finput - _local1;
Finput = Finput / 30;
var _local3 = Finput % 60;
Finput = Finput - _local3;
Finput = Finput / 60;
var _local4 = Finput;
_local4 = _local4.toString();
_local3 = _local3.toString();
if (_local3.length < 2) {
_local3 = "0" + _local3;
}
_local1 = _local1 * 3.33333333333333;
_local1 = Math.floor(_local1);
_local1 = _local1.toString();
if (_local1.length < 2) {
_local1 = "0" + _local1;
}
return((((_local4 + ":") + _local3) + ".") + _local1);
};
longTimeToString = function (Finput) {
if (Finput <= 0) {
return("not set");
}
var _local5 = Finput % 30;
Finput = Finput - _local5;
Finput = Finput / 30;
var _local3 = Finput % 60;
Finput = Finput - _local3;
Finput = Finput / 60;
var _local2 = Finput % 60;
Finput = Finput - _local2;
Finput = Finput / 60;
var _local4 = Finput;
_local4 = _local4.toString();
_local2 = _local2.toString();
_local3 = _local3.toString();
if (_local3.length < 2) {
_local3 = "0" + _local3;
}
if (_local2.length < 2) {
_local2 = "0" + _local2;
}
return(((((_local4 + "h ") + _local2) + "m ") + _local3) + "s");
};
var myWins = new Array(36);
var myLosses = new Array(36);
var myDeaths = new Array(36);
var myBests = new Array(36);
var playTime = 0;
var trainCrashes = 0;
var junctionChanges = 0;
var carriagesEmptied = 0;
var distanceTravelled = 0;
var levelPlaysTriggered = [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];
gameLoad = function (fileName) {
var _local1 = 0;
var _local2;
_local2 = SharedObject.getLocal(fileName);
if (_local2.data.wins1 == undefined) {
i = 0;
while (i < 36) {
myWins[i] = (myLosses[i] = (myDeaths[i] = (myBests[i] = 0)));
i++;
}
playTime = (trainCrashes = (junctionChanges = (carriagesEmptied = (distancetravelled = 0))));
gameSave(fileName);
trace(("File name " + fileName) + " not detected. New save file created.");
} else {
i = 0;
while (i < 36) {
myWins[i] = _local2.data["wins" + i];
myLosses[i] = _local2.data["losses" + i];
myDeaths[i] = _local2.data["deaths" + i];
myBests[i] = _local2.data["bests" + i];
if (myWins[i] == undefined) {
myWins[i] = 0;
_local1++;
}
if (myLosses[i] == undefined) {
myLosses[i] = 0;
_local1++;
}
if (myBests[i] == undefined) {
myBests[i] = 0;
_local1++;
}
if (myDeaths[i] == undefined) {
myDeaths[i] = 0;
_local1++;
}
i++;
}
playTime = _local2.data.playTime;
trainCrashes = _local2.data.trainCrashes;
junctionChanges = _local2.data.junctionChanges;
carriagesEmptied = _local2.data.carriagesEmptied;
distanceTravelled = _local2.data.distanceTravelled;
if (trainCrashes == undefined) {
trainCrashes = 0;
_local1++;
}
if (playTime == undefined) {
playTime = 0;
_local1++;
}
if (junctionChanges == undefined) {
junctionChanges = 0;
_local1++;
}
if (carriagesEmptied == undefined) {
carriagesEmptied = 0;
_local1++;
}
if (distanceTravelled == undefined) {
distanceTravelled = 0;
_local1++;
}
trace(((("Save file successfully loaded from " + fileName) + " with ") + _local1) + " errors fixed.");
}
};
gameSave = function (fileName) {
var _local1 = SharedObject.getLocal(fileName);
i = 0;
while (i < 36) {
_local1.data["wins" + i] = myWins[i];
_local1.data["losses" + i] = myLosses[i];
_local1.data["deaths" + i] = myDeaths[i];
_local1.data["bests" + i] = myBests[i];
i++;
}
distanceTravelled = Math.ceil(distanceTravelled);
_local1.data.playTime = playTime;
_local1.data.trainCrashes = trainCrashes;
_local1.data.junctionChanges = junctionChanges;
_local1.data.carriagesEmptied = carriagesEmptied;
_local1.data.distanceTravelled = distanceTravelled;
_local1.flush();
trace("Save file saved under " + fileName);
kongregate.services.connect();
kongregate.stats.submit("TotalPlayTime", playTime);
kongregate.stats.submit("TrainCrashes", trainCrashes);
kongregate.stats.submit("JunctionChanges", junctionChanges);
kongregate.stats.submit("CarriagesEmptied", carriagesEmptied);
kongregate.stats.submit("DistanceTravelled", distanceTravelled);
var _local4 = 0;
var _local2 = 0;
var _local5 = 0;
var _local3 = 0;
i = 2;
while (i <= 35) {
if (getBestTime(i) > 2) {
_local4++;
}
switch (getLevelAward(i)) {
case 3 :
_local2++;
case 2 :
_local5++;
case 1 :
_local3++;
}
i++;
}
trace("Levels Completed: " + _local4);
trace("Golds: " + _local2);
trace("Silvers: " + _local5);
trace("Bronzes: " + _local3);
kongregate.stats.submit("LevelsCompleted", _local4);
kongregate.stats.submit("GoldMedals", _local2);
kongregate.stats.submit("SilverMedals", _local5);
kongregate.stats.submit("BronzeMedals", _local3);
};
resetData = function (fileName) {
var _local1 = SharedObject.getLocal(fileName);
i = 0;
while (i < 36) {
_local1.data["wins" + i] = (myWins[i] = 0);
_local1.data["losses" + i] = (myLosses[i] = 0);
_local1.data["deaths" + i] = (myDeaths[i] = 0);
_local1.data["bests" + i] = (myBests[i] = 0);
i++;
}
playTime = (trainCrashes = (junctionChanges = (carriagesEmptied = (distancetravelled = 0))));
_local1.flush();
trace("Reset saved data");
};
gameLoad("RAILS1");
getScoreLevel = function (scoreIn, levelIn) {
GSLgold = getGoldTime(levelIn);
GSLsilver = getSilverTime(levelIn);
GSLbronze = getBronzeTime(levelIn);
if ((scoreIn <= 0) || (scoreIn > GSLbronze)) {
return(0);
}
if (scoreIn > GSLsilver) {
return(1);
}
if (scoreIn > GSLgold) {
return(2);
}
return(3);
};
getLevelFlavourText = function (levelIn) {
return(_root["levelArray" + levelIn][6]);
};
levelIsUnlocked = function (levelIn) {
if (ALLUNLOCK) {
return(true);
}
if (levelIn <= 2) {
return(true);
}
if (getBestTime(levelIn - 1) > 0) {
return(true);
}
return(false);
};
buildLevel = function (L_A) {
if (levelPlaysTriggered[_root.level_id] == 0) {
Playtomic.Log.LevelCounterMetric("Plays", (("" + _root.level_id) + "_") + getLevelName(_root.level_id));
levelPlaysTriggered[_root.level_id] = 1;
}
Playtomic.Log.LevelCounterMetric("Starts", (("" + _root.level_id) + "_") + getLevelName(_root.level_id));
trace(L_A);
var _local4 = 1;
entrances = [];
_root.gamePause = false;
playAmbience(L_A[7]);
it = 0;
while (it < L_A[0].length) {
if (L_A[0][it][0] < 50) {
placeLinear(L_A[0][it][0], _local4, L_A[0][it][1], L_A[0][it][2]);
_local4++;
if (L_A[0][it][0] == 1) {
if (L_A[0][it][1] == 0) {
placeLinear(1, _local4, -1, L_A[0][it][2]);
entrances.push("track" + _local4);
_local4++;
} else if (L_A[0][it][1] == 34) {
placeLinear(1, _local4, 35, L_A[0][it][2]);
entrances.push("track" + _local4);
_local4++;
}
} else if (L_A[0][it][0] == 0) {
if (L_A[0][it][2] == 0) {
placeLinear(0, _local4, L_A[0][it][1], -1);
entrances.push("track" + _local4);
_local4++;
} else if (L_A[0][it][2] == 24) {
placeLinear(0, _local4, L_A[0][it][1], 25);
entrances.push("track" + _local4);
_local4++;
}
}
} else if (L_A[0][it][0] < 70) {
placeJunction(L_A[0][it][0], _local4, L_A[0][it][1], L_A[0][it][2], L_A[0][it][3]);
_local4++;
} else if (L_A[0][it][0] < 90) {
placeStation(L_A[0][it][0] - 80, L_A[0][it][1], L_A[0][it][2]);
}
it++;
}
backgrounds.gotoAndStop(_root.level_id);
levelTimer = 0;
junctionCount = 0;
hasControl = true;
gameStatus = "play";
it = 0;
while (it < L_A[1].length) {
placeEngine(L_A[1][it][0], L_A[1][it][1], L_A[1][it][2], L_A[1][it][3], L_A[1][it][4]);
it++;
}
pdown = false;
onEnterFrame = function () {
if (gameStatus == "play") {
if (Key.isDown(80)) {
if (pdown) {
} else if (_root.gamePause) {
_root.gamePause = false;
_root.hasControl = true;
pause_overlay.removeMovieClip();
} else {
_root.gamePause = true;
_root.hasControl = false;
overlay.duplicateMovieClip("pause_overlay", getNextHighestDepth());
pause_overlay.gotoAndPlay(2);
}
pdown = true;
} else {
pdown = false;
}
}
if (!_root.gamePause) {
if (gameStatus == "play") {
levelTimer++;
levelTimerText.text = (("time: " + (Math.round((levelTimer / 30) * 10) / 10)) + "; junctions: ") + junctionCount;
var _local2 = levelTimer + (junctionCount * JUNCTION_PENALTY);
var _local3 = getScoreLevel(_local2, level_id);
switch (_local3) {
case 0 :
cursor.gotoAndStop(4);
break;
case 1 :
cursor.gotoAndStop(3);
break;
case 2 :
cursor.gotoAndStop(2);
break;
case 3 :
cursor.gotoAndStop(1);
break;
default :
cursor.gotoAndStop(4);
}
}
}
};
trace("BUILD_LEVEL called");
trace("Entrance pieces: " + entrances);
__com_mochibot__("c23a5f75", this, 10301, true);
if (_root.COLOURBLIND) {
__com_mochibot__("6c66b998", this, 10301, true);
}
};
placeLinear = function (TYPE, NUMBER, X, Y) {
_root["track" + NUMBER].removeMovieClip();
_root["piece" + TYPE].duplicateMovieClip("track" + NUMBER, getNextHighestDepth());
_root["track" + NUMBER]._x = X * 16;
_root["track" + NUMBER]._y = Y * 16;
_root["track" + NUMBER]._visible = false;
_root["track" + NUMBER].trackType = TYPE;
_root["track" + NUMBER].end1 = "undefined";
_root["track" + NUMBER].end2 = "undefined";
_root["track" + NUMBER].end1X = end1Xarray[TYPE] + (X * 16);
_root["track" + NUMBER].end1Y = end1Yarray[TYPE] + (Y * 16);
_root["track" + NUMBER].end2X = end2Xarray[TYPE] + (X * 16);
_root["track" + NUMBER].end2Y = end2Yarray[TYPE] + (Y * 16);
_root["track" + NUMBER].route1Y = _root[("piece" + TYPE) + "route1Y"];
_root["track" + NUMBER].route1X = _root[("piece" + TYPE) + "route1X"];
pieces.push("track" + NUMBER);
linearPieces.push("track" + NUMBER);
joinEndsAt(_root["track" + NUMBER].end1X, _root["track" + NUMBER].end1Y);
joinEndsAt(_root["track" + NUMBER].end2X, _root["track" + NUMBER].end2Y);
_root["track" + NUMBER].getRouteX = function (PREV_PIECE) {
if (PREV_PIECE == this.end1) {
var _local2 = new Array();
copyArray(this.route1X, _local2);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._x;
a++;
}
_local2.splice(0, 1);
return(_local2);
}
if (PREV_PIECE == this.end2) {
var _local2 = new Array();
copyArray(this.route1X, _local2);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._x;
a++;
}
_local2.reverse();
_local2.splice(0, 1);
return(_local2);
}
trace((("Error 1: " + this._name) + " isn't matching one of it's ends to ") + PREV_PIECE);
};
_root["track" + NUMBER].getRouteY = function (PREV_PIECE) {
if (PREV_PIECE == this.end1) {
var _local2 = new Array();
copyArray(this.route1Y, _local2);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._y;
a++;
}
_local2.splice(0, 1);
return(_local2);
}
if (PREV_PIECE == this.end2) {
var _local2 = new Array();
copyArray(this.route1Y, _local2);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._y;
a++;
}
_local2.reverse();
_local2.splice(0, 1);
return(_local2);
}
trace((("Error 1: " + this._name) + " isn't matching one of it's ends to ") + PREV_PIECE);
};
_root["track" + NUMBER].getNext = function (PREV_PIECE) {
if (PREV_PIECE == this.end1) {
return(this.end2);
}
if (PREV_PIECE == this.end2) {
return(this.end1);
}
trace(((("Error 2: " + this._name) + " isn't matching one of it's ends to ") + PREV_PIECE) + " when trying to find the Next piece");
};
};
placeJunction = function (TYPE, NUMBER, X, Y, FIX) {
_root["track" + NUMBER].removeMovieClip();
_root["piece" + TYPE].duplicateMovieClip("track" + NUMBER, getNextHighestDepth());
_root["track" + NUMBER]._x = X * 16;
_root["track" + NUMBER]._y = Y * 16;
_root["track" + NUMBER].trackType = TYPE;
_root["track" + NUMBER].end1 = "undefined";
_root["track" + NUMBER].end2 = "undefined";
_root["track" + NUMBER].end3 = "undefined";
_root["track" + NUMBER].route = 1;
if (FIX == undefined) {
_root["track" + NUMBER].fix = 0;
} else {
_root["track" + NUMBER].fix = FIX;
if ((FIX > 0) && (FIX < 4)) {
_root["track" + NUMBER].gotoAndStop(FIX);
_root["track" + NUMBER].route = FIX;
_root["track" + NUMBER].highl._visible = false;
_root["track" + NUMBER].g._visible = false;
_root["track" + NUMBER]._visible = false;
} else if (FIX <= 0) {
_root["track" + NUMBER].route = 1;
_root["track" + NUMBER].gotoAndStop(1);
} else if (FIX == 4) {
_root["track" + NUMBER].route = 2;
_root["track" + NUMBER].gotoAndStop(2);
} else if (FIX >= 5) {
_root["track" + NUMBER].route = 3;
_root["track" + NUMBER].gotoAndStop(3);
}
}
_root["track" + NUMBER].b._visible = false;
if ((TYPE >= 59) && (TYPE <= 62)) {
_root["track" + NUMBER].end4 = "undefined";
threeWayJunctions.push("track" + NUMBER);
} else {
_root["track" + NUMBER].end4 = "BLANK";
twoWayJunctions.push("track" + NUMBER);
}
pieces.push("track" + NUMBER);
_root["track" + NUMBER].end1X = X * 16;
_root["track" + NUMBER].end1Y = Y * 16;
_root["track" + NUMBER].end2X = X * 16;
_root["track" + NUMBER].end2Y = Y * 16;
_root["track" + NUMBER].end3X = X * 16;
_root["track" + NUMBER].end3Y = Y * 16;
_root["track" + NUMBER].end4X = X * 16;
_root["track" + NUMBER].end4Y = Y * 16;
_root["track" + NUMBER].route1Y = new Array();
_root["track" + NUMBER].route1X = new Array();
_root["track" + NUMBER].route2Y = new Array();
_root["track" + NUMBER].route2X = new Array();
_root["track" + NUMBER].route3Y = new Array();
_root["track" + NUMBER].route3X = new Array();
if (TYPE == 51) {
_root["track" + NUMBER].route1Y = piece1route1Y;
_root["track" + NUMBER].route1X = piece1route1X;
_root["track" + NUMBER].route2Y = piece26route1Y;
_root["track" + NUMBER].route2X = piece26route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 0;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 16;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 8;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
} else if (TYPE == 52) {
_root["track" + NUMBER].route1Y = piece0route1Y;
_root["track" + NUMBER].route1X = piece0route1X;
_root["track" + NUMBER].route2Y = piece28route1Y;
_root["track" + NUMBER].route2X = piece28route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 0;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 8;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 16;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
} else if (TYPE == 53) {
_root["track" + NUMBER].route1Y = piece1route1Yr;
_root["track" + NUMBER].route1X = piece1route1Xr;
_root["track" + NUMBER].route2Y = piece30route1Y;
_root["track" + NUMBER].route2X = piece30route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 16;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 0;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 8;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
} else if (TYPE == 54) {
_root["track" + NUMBER].route1Y = piece0route1Yr;
_root["track" + NUMBER].route1X = piece0route1Xr;
_root["track" + NUMBER].route2Y = piece32route1Y;
_root["track" + NUMBER].route2X = piece32route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 16;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 8;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 0;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
} else if (TYPE == 55) {
_root["track" + NUMBER].route1Y = piece1route1Y;
_root["track" + NUMBER].route1X = piece1route1X;
_root["track" + NUMBER].route2Y = piece29route1Yr;
_root["track" + NUMBER].route2X = piece29route1Xr;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 0;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 16;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 8;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
} else if (TYPE == 56) {
_root["track" + NUMBER].route1Y = piece0route1Y;
_root["track" + NUMBER].route1X = piece0route1X;
_root["track" + NUMBER].route2Y = piece31route1Yr;
_root["track" + NUMBER].route2X = piece31route1Xr;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 0;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 8;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 16;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
} else if (TYPE == 57) {
_root["track" + NUMBER].route1Y = piece1route1Yr;
_root["track" + NUMBER].route1X = piece1route1Xr;
_root["track" + NUMBER].route2Y = piece33route1Yr;
_root["track" + NUMBER].route2X = piece33route1Xr;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 16;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 0;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 8;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
} else if (TYPE == 58) {
_root["track" + NUMBER].route1Y = piece0route1Yr;
_root["track" + NUMBER].route1X = piece0route1Xr;
_root["track" + NUMBER].route2Y = piece27route1Yr;
_root["track" + NUMBER].route2X = piece27route1Xr;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 16;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 8;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 0;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
} else if (TYPE == 59) {
_root["track" + NUMBER].route1Y = piece1route1Y;
_root["track" + NUMBER].route1X = piece1route1X;
_root["track" + NUMBER].route2Y = piece29route1Yr;
_root["track" + NUMBER].route2X = piece29route1Xr;
_root["track" + NUMBER].route3Y = piece26route1Y;
_root["track" + NUMBER].route3X = piece26route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 0;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 16;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 8;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
_root["track" + NUMBER].end4X = _root["track" + NUMBER].end4X + 16;
_root["track" + NUMBER].end4Y = _root["track" + NUMBER].end4Y + 16;
} else if (TYPE == 60) {
_root["track" + NUMBER].route1Y = piece0route1Y;
_root["track" + NUMBER].route1X = piece0route1X;
_root["track" + NUMBER].route2Y = piece31route1Yr;
_root["track" + NUMBER].route2X = piece31route1Xr;
_root["track" + NUMBER].route3Y = piece28route1Y;
_root["track" + NUMBER].route3X = piece28route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 0;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 8;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 16;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
_root["track" + NUMBER].end4X = _root["track" + NUMBER].end4X + 0;
_root["track" + NUMBER].end4Y = _root["track" + NUMBER].end4Y + 16;
} else if (TYPE == 61) {
_root["track" + NUMBER].route1Y = piece1route1Yr;
_root["track" + NUMBER].route1X = piece1route1Xr;
_root["track" + NUMBER].route2Y = piece33route1Yr;
_root["track" + NUMBER].route2X = piece33route1Xr;
_root["track" + NUMBER].route3Y = piece30route1Y;
_root["track" + NUMBER].route3X = piece30route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 16;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 0;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 8;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
_root["track" + NUMBER].end4X = _root["track" + NUMBER].end4X + 0;
_root["track" + NUMBER].end4Y = _root["track" + NUMBER].end4Y + 0;
} else if (TYPE == 62) {
_root["track" + NUMBER].route1Y = piece0route1Yr;
_root["track" + NUMBER].route1X = piece0route1Xr;
_root["track" + NUMBER].route2Y = piece27route1Yr;
_root["track" + NUMBER].route2X = piece27route1Xr;
_root["track" + NUMBER].route3Y = piece32route1Y;
_root["track" + NUMBER].route3X = piece32route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 16;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 8;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 0;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
_root["track" + NUMBER].end4X = _root["track" + NUMBER].end4X + 16;
_root["track" + NUMBER].end4Y = _root["track" + NUMBER].end4Y + 0;
} else if (TYPE == 63) {
_root["track" + NUMBER].route1Y = piece29route1Yr;
_root["track" + NUMBER].route1X = piece29route1Xr;
_root["track" + NUMBER].route2Y = piece26route1Y;
_root["track" + NUMBER].route2X = piece26route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 0;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 16;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 0;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
} else if (TYPE == 64) {
_root["track" + NUMBER].route1Y = piece31route1Yr;
_root["track" + NUMBER].route1X = piece31route1Xr;
_root["track" + NUMBER].route2Y = piece28route1Y;
_root["track" + NUMBER].route2X = piece28route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 0;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 16;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 16;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 16;
} else if (TYPE == 65) {
_root["track" + NUMBER].route1Y = piece33route1Yr;
_root["track" + NUMBER].route1X = piece33route1Xr;
_root["track" + NUMBER].route2Y = piece30route1Y;
_root["track" + NUMBER].route2X = piece30route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 16;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 8;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 0;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 16;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 0;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
} else if (TYPE == 66) {
_root["track" + NUMBER].route1Y = piece27route1Yr;
_root["track" + NUMBER].route1X = piece27route1Xr;
_root["track" + NUMBER].route2Y = piece32route1Y;
_root["track" + NUMBER].route2X = piece32route1X;
_root["track" + NUMBER].end1X = _root["track" + NUMBER].end1X + 8;
_root["track" + NUMBER].end1Y = _root["track" + NUMBER].end1Y + 16;
_root["track" + NUMBER].end2X = _root["track" + NUMBER].end2X + 0;
_root["track" + NUMBER].end2Y = _root["track" + NUMBER].end2Y + 0;
_root["track" + NUMBER].end3X = _root["track" + NUMBER].end3X + 16;
_root["track" + NUMBER].end3Y = _root["track" + NUMBER].end3Y + 0;
}
joinEndsAt(_root["track" + NUMBER].end1X, _root["track" + NUMBER].end1Y);
joinEndsAt(_root["track" + NUMBER].end2X, _root["track" + NUMBER].end2Y);
joinEndsAt(_root["track" + NUMBER].end3X, _root["track" + NUMBER].end3Y);
joinEndsAt(_root["track" + NUMBER].end4X, _root["track" + NUMBER].end4Y);
_root["track" + NUMBER].getRouteX = function (PREV_PIECE) {
var _local2 = new Array();
if (PREV_PIECE == this.end1) {
if (this.route == 1) {
copyArray(this.route1X, _local2);
} else if (this.route == 2) {
copyArray(this.route2X, _local2);
} else if (this.route == 3) {
copyArray(this.route3X, _local2);
}
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._x;
a++;
}
_local2.splice(0, 1);
this.UPDATE();
return(_local2);
}
if (PREV_PIECE == this.end2) {
copyArray(this.route1X, _local2);
_local2.reverse();
_local2.splice(0, 1);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._x;
a++;
}
this.UPDATE();
return(_local2);
}
if (PREV_PIECE == this.end3) {
copyArray(this.route2X, _local2);
_local2.reverse();
_local2.splice(0, 1);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._x;
a++;
}
this.UPDATE();
return(_local2);
}
if (PREV_PIECE == this.end4) {
copyArray(this.route3X, _local2);
_local2.reverse();
_local2.splice(0, 1);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._x;
a++;
}
this.UPDATE();
return(_local2);
}
trace((("Error 1: " + this._name) + " isn't matching one of it's ends to ") + PREV_PIECE);
};
_root["track" + NUMBER].getRouteY = function (PREV_PIECE) {
var _local2 = new Array();
if (PREV_PIECE == this.end1) {
if (this.route == 1) {
copyArray(this.route1Y, _local2);
} else if (this.route == 2) {
copyArray(this.route2Y, _local2);
} else if (this.route == 3) {
copyArray(this.route3Y, _local2);
}
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._y;
a++;
}
_local2.splice(0, 1);
return(_local2);
}
if (PREV_PIECE == this.end2) {
copyArray(this.route1Y, _local2);
_local2.reverse();
_local2.splice(0, 1);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._y;
a++;
}
return(_local2);
}
if (PREV_PIECE == this.end3) {
copyArray(this.route2Y, _local2);
_local2.reverse();
_local2.splice(0, 1);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._y;
a++;
}
return(_local2);
}
if (PREV_PIECE == this.end4) {
copyArray(this.route3Y, _local2);
_local2.reverse();
_local2.splice(0, 1);
a = 0;
while (a < _local2.length) {
_local2[a] = _local2[a] + this._y;
a++;
}
return(_local2);
}
trace((("Error 1: " + this._name) + " isn't matching one of it's ends to ") + PREV_PIECE);
};
_root["track" + NUMBER].getNext = function (PREV_PIECE) {
if (PREV_PIECE == this.end1) {
return(this["end" + (this.route + 1)]);
}
if (((PREV_PIECE == this.end2) || (PREV_PIECE == this.end3)) || (PREV_PIECE == this.end4)) {
return(this.end1);
}
trace(((("Error 2: " + this._name) + " isn't matching one of it's ends to ") + PREV_PIECE) + " when trying to find the Next piece");
};
if (((_root["track" + NUMBER].fix == 0) || (_root["track" + NUMBER].fix == 4)) || (_root["track" + NUMBER].fix == 5)) {
_root["track" + NUMBER].onRollOver = function () {
if (_root.hasControl) {
this.highl.gotoAndStop(51);
this.b._visible = true;
this.g._visible = false;
}
};
_root["track" + NUMBER].onRollOut = (_root["track" + NUMBER].onReleaseOutside = function () {
this.highl.play();
this.b._visible = false;
this.g._visible = true;
});
_root["track" + NUMBER].onPress = function () {
if (_root.hasControl) {
trace("afasdf" + this.route);
if (this.end4 == "BLANK") {
this.route++;
if (this.route >= 3) {
this.route = 1;
}
} else {
this.route++;
if (this.route >= 4) {
this.route = 1;
}
}
this.UPDATE();
this.b._visible = false;
this.g._visible = true;
_root.playSound("junction");
junctionCount++;
_root.junctionChanges++;
}
};
}
_root["track" + NUMBER].UPDATE = function () {
if (((this.fix != 0) && (this.fix != 5)) && (this.fix != 4)) {
this.route = this.fix;
}
this.gotoAndStop(this.route);
};
};
placeStation = function (C, X, Y) {
station.duplicateMovieClip("station" + stdup, getNextHighestDepth());
_root["station" + stdup]._x = X * 16;
_root["station" + stdup]._y = Y * 16;
_root["station" + stdup].COLOUR = C;
_root["station" + stdup].trainCheckX = 8;
_root["station" + stdup].trainCheckY = 8;
_root["station" + stdup].gotoAndStop(1 + C);
_root["station" + stdup]._visible = false;
_root["station" + stdup].onEnterFrame = function () {
if (!_root.gamePause) {
m = 0;
while (m < carriages.length) {
if (_root[carriages[m]].getColour() == this.COLOUR) {
if (_root[carriages[m]].hitTest(this.trainCheckX + this._x, this.trainCheckY + this._y, true)) {
trace("There's a carriage here, my colour");
_root[carriages[m]].removePassenger();
m = 10000;
}
}
m++;
}
}
};
buildings.push("station" + stdup);
stdup++;
};
joinEndsAt = function (endX, endY) {
var _local2 = "FALSE";
var _local4 = 0;
var _local3 = "FALSE";
var _local5 = 0;
r = 0;
while (r < linearPieces.length) {
if ((_root[linearPieces[r]].end1X == endX) && (_root[linearPieces[r]].end1Y == endY)) {
if (_local2 == "FALSE") {
_local2 = linearPieces[r];
_local4 = 1;
} else {
_local3 = linearPieces[r];
_local5 = 1;
}
} else if ((_root[linearPieces[r]].end2X == endX) && (_root[linearPieces[r]].end2Y == endY)) {
if (_local2 == "FALSE") {
_local2 = linearPieces[r];
_local4 = 2;
} else {
_local3 = linearPieces[r];
_local5 = 2;
}
}
r++;
}
if (_local3 == "FALSE") {
r = 0;
while (r < twoWayJunctions.length) {
if ((_root[twoWayJunctions[r]].end1X == endX) && (_root[twoWayJunctions[r]].end1Y == endY)) {
if (_local2 == "FALSE") {
_local2 = twoWayJunctions[r];
_local4 = 1;
} else {
_local3 = twoWayJunctions[r];
_local5 = 1;
}
} else if ((_root[twoWayJunctions[r]].end2X == endX) && (_root[twoWayJunctions[r]].end2Y == endY)) {
if (_local2 == "FALSE") {
_local2 = twoWayJunctions[r];
_local4 = 2;
} else {
_local3 = twoWayJunctions[r];
_local5 = 2;
}
} else if ((_root[twoWayJunctions[r]].end3X == endX) && (_root[twoWayJunctions[r]].end3Y == endY)) {
if (_local2 == "FALSE") {
_local2 = twoWayJunctions[r];
_local4 = 3;
} else {
_local3 = twoWayJunctions[r];
_local5 = 3;
}
}
r++;
}
r = 0;
while (r < threeWayJunctions.length) {
if ((_root[threeWayJunctions[r]].end1X == endX) && (_root[threeWayJunctions[r]].end1Y == endY)) {
if (_local2 == "FALSE") {
_local2 = threeWayJunctions[r];
_local4 = 1;
} else {
_local3 = threeWayJunctions[r];
_local5 = 1;
}
} else if ((_root[threeWayJunctions[r]].end2X == endX) && (_root[threeWayJunctions[r]].end2Y == endY)) {
if (_local2 == "FALSE") {
_local2 = threeWayJunctions[r];
_local4 = 2;
} else {
_local3 = threeWayJunctions[r];
_local5 = 2;
}
} else if ((_root[threeWayJunctions[r]].end3X == endX) && (_root[threeWayJunctions[r]].end3Y == endY)) {
if (_local2 == "FALSE") {
_local2 = threeWayJunctions[r];
_local4 = 3;
} else {
_local3 = threeWayJunctions[r];
_local5 = 3;
}
} else if ((_root[threeWayJunctions[r]].end4X == endX) && (_root[threeWayJunctions[r]].end4Y == endY)) {
if (_local2 == "FALSE") {
_local2 = threeWayJunctions[r];
_local4 = 4;
} else {
_local3 = threeWayJunctions[r];
_local5 = 4;
}
}
r++;
}
}
if (_local2 == "FALSE") {
return(undefined);
}
if (_local3 == "FALSE") {
_root[_local2]["end" + _local4] = "START";
return(undefined);
}
_root[_local2]["end" + _local4] = _local3;
_root[_local3]["end" + _local5] = _local2;
return(undefined);
};
var checkAngles = [-0.785340314136126, -0.523560209424084, 0, 0.523560209424084, 0.785340314136126];
var checkDistances = [5.66, 8.94, 8, 8.94, 5.66];
placeEngine = function (NUMBER, START, SPEED, DELAY, CARRIAGES) {
_root["engine" + NUMBER].removeMovieClip();
engine.duplicateMovieClip("engine" + NUMBER, getNextHighestDepth());
_root["engine" + NUMBER].positionX = new Array(0);
_root["engine" + NUMBER].positionY = new Array(0);
_root["engine" + NUMBER]._x = -100;
_root["engine" + NUMBER]._y = -100;
_root["engine" + NUMBER].speed = SPEED;
_root["engine" + NUMBER].targetSpeed = SPEED;
_root["engine" + NUMBER].acc = 0.02;
_root["engine" + NUMBER].pos = 0;
_root["engine" + NUMBER].currTrack = "START";
_root["engine" + NUMBER].nextTrack = entrances[START];
_root["engine" + NUMBER].head = "BLANK";
_root["engine" + NUMBER].tail = "BLANK";
_root["engine" + NUMBER].back = "engine" + NUMBER;
_root["engine" + NUMBER].stop();
_root["engine" + NUMBER].carriages = new Array();
_root["engine" + NUMBER].derailed = false;
_root["engine" + NUMBER].startDelay = DELAY;
_root["engine" + NUMBER].tempNext = PREV;
_root["engine" + NUMBER].tempCurr = START;
_root["engine" + NUMBER].entered = false;
while (_root["engine" + NUMBER].positionX.length < ((CARRIAGES.length * 20) + 10)) {
_root["engine" + NUMBER].tempX = new Array();
_root["engine" + NUMBER].tempY = new Array();
_root["engine" + NUMBER].tempX = _root[_root["engine" + NUMBER].tempNext].getRouteX(_root["engine" + NUMBER].tempCurr);
_root["engine" + NUMBER].tempY = _root[_root["engine" + NUMBER].tempNext].getRouteY(_root["engine" + NUMBER].tempCurr);
m = 0;
while (m < _root["engine" + NUMBER].tempX.length) {
_root["engine" + NUMBER].positionX.unshift(_root["engine" + NUMBER].tempX[m]);
_root["engine" + NUMBER].positionY.unshift(_root["engine" + NUMBER].tempY[m]);
_root["engine" + NUMBER].pos++;
m++;
}
tempytemp = _root["engine" + NUMBER].tempNext;
_root["engine" + NUMBER].tempNext = _root[_root["engine" + NUMBER].tempNext].getNext(_root["engine" + NUMBER].tempCurr);
_root["engine" + NUMBER].tempCurr = tempytemp;
trace(_root["engine" + NUMBER].tempNext);
if (_root["engine" + NUMBER].tempNext == undefined) {
trace("dead end reached");
break;
}
}
trace("engine history: " + _root["engine" + NUMBER].positionX);
m = 0;
while (m < CARRIAGES.length) {
placeCarriage(NUMBER, 2, CARRIAGES[m]);
m++;
}
engines.push("engine" + NUMBER);
_root["engine" + NUMBER].onEnterFrame = function () {
if (!_root.gamePause) {
if (this.startDelay <= 0) {
if (this.derailed == false) {
this.pos = this.pos + this.speed;
_root.distanceTravelled = _root.distanceTravelled + this.speed;
if ((this.pos + this.speed) >= (this.positionX.length - 1)) {
if ((this.nextTrack == "undefined") || (this.nextTrack == undefined)) {
if (this.entered) {
this.isHit(0, 0, 0);
}
}
this.tempX = new Array();
this.tempX = _root[this.nextTrack].getRouteX(this.currTrack);
i = 0;
while (i < this.tempX.length) {
this.positionX.push(this.tempX[i]);
i++;
}
this.tempY = new Array();
this.tempY = _root[this.nextTrack].getRouteY(this.currTrack);
i = 0;
while (i < this.tempY.length) {
this.positionY.push(this.tempY[i]);
i++;
}
this.tempTrack = _root[this.nextTrack].getNext(this.currTrack);
this.currTrack = this.nextTrack;
this.nextTrack = this.tempTrack;
while (this.positionX.length > 500) {
this.positionX.splice(0, 10);
this.positionY.splice(0, 10);
this.pos = this.pos - 10;
}
}
this.intPos = Math.floor(this.pos);
this.fracPos = this.pos - this.intPos;
this._x = this.positionX[this.intPos] + ((this.positionX[this.intPos + 1] - this.positionX[this.intPos]) * this.fracPos);
this._y = this.positionY[this.intPos] + ((this.positionY[this.intPos + 1] - this.positionY[this.intPos]) * this.fracPos);
this._rotation = Math.atan2(this._y - this.positionY[Math.floor(this.pos - 2)], this._x - this.positionX[Math.floor(this.pos - 2)]) * 57.3;
if (this.speed != this.targetSpeed) {
this.speed = this.speed + (this.acc * (1 + ((this.speed > this.targetSpeed) * -2)));
}
if (this.speed <= this.acc) {
this.speed = 0;
}
} else {
this._x = this._x + ((this.xspeed = this.xspeed * 0.95));
this._y = this._y + ((this.yspeed = this.yspeed * 0.95));
this._rotation = this._rotation + ((this.rspeed = this.rspeed * 0.95));
if ((Math.abs(this.xspeed) <= 0.1) || (Math.abs(this.yspeed) <= 0.1)) {
this.rspeed = 0;
this.xspeed = 0;
this.yspeed = 0;
}
}
if ((((this._x >= 0) && (this._x <= 560)) && (this._y >= 0)) && (this._y <= 400)) {
if (!this.entered) {
playSound("trainIn");
playTrains();
}
this.entered = true;
var _local3 = new Array();
_local3 = [];
i = 0;
while (i < engines.length) {
if ((Math.abs(_root[engines[i]]._x - this._x) < 25) && (Math.abs(_root[engines[i]]._y - this._y) < 25)) {
if ((engines[i] != this._name) && (_root[engines[i]].entered == true)) {
_local3.push(engines[i]);
}
}
i++;
}
i = 0;
while (i < carriages.length) {
if ((Math.abs(_root[carriages[i]]._x - this._x) < 25) && (Math.abs(_root[carriages[i]]._y - this._y) < 25)) {
if ((carriages[i] != this.tail) && (_root[carriages[i]].entered == true)) {
_local3.push(carriages[i]);
}
}
i++;
}
i = 0;
while (i < _local3.length) {
if (distance(this._x, this._y, _root[_local3[i]]._x, _root[_local3[i]]._y) > 25) {
_local3.splice(i, 1);
}
i++;
}
this.success = false;
i = 0;
while (i < _local3.length) {
j = 0;
while (j < checkAngles.length) {
checkX = (Math.cos(checkAngles[j] + (this._rotation / 57.3)) * checkDistances[j]) + this._x;
checkY = (Math.sin(checkAngles[j] + (this._rotation / 57.3)) * checkDistances[j]) + this._y;
if (_root[_local3[i]].hitTest(checkX, checkY, true)) {
_root[_local3[i]].isHit(checkY, checkY, this._name);
_root[_local3[i]].explode();
this.success = true;
i = 100000 /* 0x0186A0 */;
j = 100000 /* 0x0186A0 */;
}
j++;
}
i++;
}
if (this.success) {
this.isHit(checkX, checkY);
this.explode();
}
} else if (this.entered) {
this.speed = 6;
playSound("trainOut");
this.entered = false;
}
}
if (gameStatus == "play") {
this.startDelay--;
}
}
};
_root["engine" + NUMBER].getCarriages = function () {
return(this.carriages);
};
_root["engine" + NUMBER].isHit = function (hitX, hitY, hitName) {
if (_root.gameStatus != "win") {
if (this.derailed == false) {
_root[this.tail].isHit();
this.derailed = true;
this.xspeed = (Math.random() * 4) - 2;
this.yspeed = (Math.random() * 4) - 2;
this.rspeed = (Math.random() * 16) - 8;
_root.trainCrashes++;
}
this.explode();
_root.GAME_EVENT("collision");
} else {
this.speed = 0;
}
};
_root["engine" + NUMBER].explode = function () {
_root.addDeaths(_root.level_id, (Math.random() * 40) + 10);
if (_root.gameStatus != "win") {
_root.make_explode(this._x, this._y);
this.removeMovieClip();
}
};
note.duplicateMovieClip("note" + NUMBER, _root.getNextHighestDepth());
_root["note" + NUMBER]._visible = false;
_root["note" + NUMBER].myTrain = "engine" + NUMBER;
_root["note" + NUMBER].targetX = _root[_root["engine" + NUMBER].nextTrack]._x + 8;
_root["note" + NUMBER].targetY = _root[_root["engine" + NUMBER].nextTrack]._y + 8;
if (_root["note" + NUMBER].targetX < 0) {
_root["note" + NUMBER]._x = 0;
_root["note" + NUMBER].gotoAndStop(4);
_root["note" + NUMBER]._y = _root["note" + NUMBER].targetY;
} else if (_root["note" + NUMBER].targetX > 560) {
_root["note" + NUMBER]._x = 560;
_root["note" + NUMBER].gotoAndStop(2);
_root["note" + NUMBER]._y = _root["note" + NUMBER].targetY;
} else if (_root["note" + NUMBER].targetY < 0) {
_root["note" + NUMBER]._x = _root["note" + NUMBER].targetX;
_root["note" + NUMBER].gotoAndStop(3);
_root["note" + NUMBER]._y = 0;
} else {
_root["note" + NUMBER]._x = _root["note" + NUMBER].targetX;
_root["note" + NUMBER].gotoAndStop(1);
_root["note" + NUMBER]._y = 400;
}
_root["note" + NUMBER]._alpha = 0;
_root["note" + NUMBER].onEnterFrame = function () {
if (_root._currentframe < 10) {
this.removeMovieClip();
}
this.number = _root[this.myTrain].startDelay;
if ((_root[this.myTrain].startDelay >= 0) && (this.number < 300)) {
this.number = Math.floor(this.number);
this._visible = true;
if (this._alpha < 100) {
this._alpha = this._alpha + 3;
}
this.arrow.gotoAndStop(300 - this.number);
}
if (this.number <= 0) {
this._alpha = this._alpha - 3;
if (this._alpha <= 0) {
this.removeMovieClip();
}
}
};
};
placeCarriage = function (ENGINE, METHOD, COLOUR) {
ENGINE.toString();
if (ENGINE.charAt(0) == "e") {
ENGINE = ENGINE.slice(6, ENGINE.length);
}
if (COLOURBLIND) {
cbcarriage.duplicateMovieClip("carriage" + cdup, getNextHighestDepth());
} else {
carriage.duplicateMovieClip("carriage" + cdup, getNextHighestDepth());
}
_root["carriage" + cdup]._x = _root["engine" + ENGINE]._x;
_root["carriage" + cdup]._y = _root["engine" + ENGINE]._y;
_root["carriage" + cdup]._rotation = _root["engine" + ENGINE]._rotation;
var _local3 = "engine" + ENGINE;
_root["carriage" + cdup].tail = "BLANK";
_root["carriage" + cdup].lead = "engine" + ENGINE;
_root["carriage" + cdup].car = 1;
while (_root[_local3].tail != "BLANK") {
_local3 = _root[_local3].tail;
_root["carriage" + cdup].car++;
}
_root[_local3].tail = "carriage" + cdup;
_root["carriage" + cdup].head = _local3;
_root["carriage" + cdup].rpos = -18 * _root["carriage" + cdup].car;
_root["carriage" + cdup].pos = 0;
_root["engine" + ENGINE].carriages.push("carriage" + cdup);
_root["engine" + ENGINE].back = "carriage" + cdup;
_root["carriage" + cdup].wait = 0;
_root["carriage" + cdup].derailed = false;
if (METHOD == 1) {
_root["carriage" + cdup].wait = (18 * _root["carriage" + cdup].car) + 1;
}
_root["carriage" + cdup].colour = COLOUR;
_root["carriage" + cdup].gotoAndStop(COLOUR + 1);
_root["carriage" + cdup].passengers = 0;
_root["carriage" + cdup].entered = false;
if (COLOUR != COLOUR_NEUTRAL) {
_root["carriage" + cdup].passengers = 1;
}
_root["carriage" + cdup].onEnterFrame = function () {
if (!_root.gamePause) {
if (!this.derailed) {
this.wait = this.wait - _root[this.lead].speed;
if (this.wait <= 0) {
this.pos = (_root[this.lead].pos + this.rpos) + _root[this.lead].speed;
this.intPos = Math.floor(this.pos);
this.fracPos = this.pos - this.intPos;
this.prevX = _root[this.lead].positionX[this.intPos - 2] + ((_root[this.lead].positionX[this.intPos - 1] - _root[this.lead].positionX[this.intPos - 2]) * this.fracPos);
this.prevY = _root[this.lead].positionY[this.intPos - 2] + ((_root[this.lead].positionY[this.intPos - 1] - _root[this.lead].positionY[this.intPos - 2]) * this.fracPos);
this._x = _root[this.lead].positionX[this.intPos] + ((_root[this.lead].positionX[this.intPos + 1] - _root[this.lead].positionX[this.intPos]) * this.fracPos);
this._y = _root[this.lead].positionY[this.intPos] + ((_root[this.lead].positionY[this.intPos + 1] - _root[this.lead].positionY[this.intPos]) * this.fracPos);
if ((this._x != this.prev2X) || (this._y != this.prev2Y)) {
this._rotation = Math.atan2(this._y - this.prevY, this._x - this.prevX) * 57.3;
}
if (!this.entered) {
if ((((this._x >= 0) && (this._x <= 560)) && (this._y >= 0)) && (this._y <= 400)) {
this.entered = true;
}
} else if (!((((this._x >= 0) && (this._x <= 560)) && (this._y >= 0)) && (this._y <= 400))) {
if (this.colour != COLOUR_NEUTRAL) {
_root.GAME_EVENT("lost");
}
this.entered = false;
}
}
} else {
this._x = this._x + ((this.xspeed = this.xspeed * 0.98));
this._y = this._y + ((this.yspeed = this.yspeed * 0.98));
this._rotation = this._rotation + ((this.rspeed = this.rspeed * 0.98));
if (Math.random() < ((distance(this.xspeed, this.yspeed, 0, 0) / 80) + 0.002)) {
this.explode();
}
if ((Math.abs(this.xspeed) <= 0.1) || (Math.abs(this.yspeed) <= 0.1)) {
this.rspeed = 0;
this.xspeed = 0;
this.yspeed = 0;
}
}
}
};
_root["carriage" + cdup].addPassenger = function (COLOUR) {
if ((COLOUR == this.colour) || (this.colour == COLOUR_NEUTRAL)) {
this.passengers++;
this.colour = COLOUR;
this.gotoAndStop(this.colour + 1);
}
};
_root["carriage" + cdup].getColour = function () {
return(this.colour);
};
_root["carriage" + cdup].removePassenger = function () {
var _local3 = false;
_root.playChime(this.colour);
particleEffect(this._x, this._y, this.colour);
if (this.passengers > 0) {
this.passengers--;
_local3 = true;
}
if (this.passengers == 0) {
this.colour = COLOUR_NEUTRAL;
this.gotoAndStop(1);
}
_root.carriagesEmptied++;
GAME_EVENT("drop-off");
return(_local3);
};
_root["carriage" + cdup].removeCarriage = function () {
if (this.tail == "BLANK") {
_root[this.lead].back = this.head;
_root[this.head].tail = "BLANK";
p = 0;
while (p < _root[this.lead].carriages.length) {
if (_root[this.lead].carriages[p] == this._name) {
_root[this.lead].carriages.splice(p, 1);
}
p++;
}
p = 0;
while (p < carriages.length) {
if (carriages[p] == this._name) {
carriages.splice(p, 1);
}
p++;
}
this.removeMovieClip();
}
};
_root["carriage" + cdup].isHit = function (hitX, hitY, hitName) {
if (this.derailed == false) {
_root[this.tail].isHit();
this.derailed = true;
this._rotation = this._rotation + 90;
this.xspeed = (Math.random() * 4) - 2;
this.yspeed = (Math.random() * 4) - 2;
this.rspeed = (Math.random() * 16) - 8;
this.tail = (this.head = (this.lead = "BLANK"));
}
_root.GAME_EVENT("collision");
};
_root["carriage" + cdup].explode = function () {
_root.make_explode(this._x, this._y);
if (this.colour != _root.COLOUR_NEUTRAL) {
_root.addDeaths(_root.level_id, (Math.random() * 40) + 10);
}
this.removeCarriage();
};
carriages.push("carriage" + cdup);
cdup++;
};
make_explode = function (eX, eY) {
explosion.duplicateMovieClip("exp" + dup, getNextHighestDepth());
_root["exp" + dup]._x = eX;
_root["exp" + dup]._y = eY;
_root["exp" + dup]._rotation = Math.random() * 360;
_root["exp" + dup]._xscale = (_root["exp" + dup]._yscale = (Math.random() * 50) + 100);
dup++;
overlay.swapDepths(getNextHighestDepth());
};
GAME_EVENT = function (condition) {
if (condition == "collision") {
if (gameStatus == "play") {
GAME_LOSE();
}
} else if (condition == "drop-off") {
if (gameStatus == "play") {
var _local2 = true;
m = 0;
while (m < carriages.length) {
if (_root[carriages[m]].getColour() != COLOUR_NEUTRAL) {
_local2 = false;
}
m++;
}
if (_local2) {
GAME_WIN();
}
}
} else if (condition == "lost") {
if (gameStatus == "play") {
GAME_LOSE2();
}
} else {
trace("GAME_EVENT: Unrecognised event: " + condition);
}
};
RESET = function () {
_root.thisDeathToll = 0;
_root.clearFlag = false;
while (pieces.length > 0) {
_root[pieces[0]].removeMovieClip();
pieces.splice(0, 1);
}
while (linearPieces.length > 0) {
_root[linearPieces[0]].removeMovieClip();
linearPieces.splice(0, 1);
}
while (twoWayJunctions.length > 0) {
_root[twoWayJunctions[0]].removeMovieClip();
twoWayJunctions.splice(0, 1);
}
while (threeWayJunctions.length > 0) {
_root[threeWayJunctions[0]].removeMovieClip();
threeWayJunctions.splice(0, 1);
}
while (buildings.length > 0) {
_root[buildings[0]].removeMovieClip();
buildings.splice(0, 1);
}
while (engines.length > 0) {
_root[engines[0]].removeMovieClip();
engines.splice(0, 1);
}
while (carriages.length > 0) {
_root[carriages[0]].removeMovieClip();
carriages.splice(0, 1);
}
pieces = [];
linearPieces = [];
twoWayJunctions = [];
threeWayJunctions = [];
buildings = [];
adderSheds = [];
takerSheds = [];
engines = [];
carriages = [];
stdup = 1;
cdup = 1;
dup = 1;
hasControl = true;
gameStatus = "reset";
skidmarks.clear();
_root.gamePause = false;
onEnterFrame = null;
};
RESET();
GAME_WIN = function () {
clearFlag = true;
winScore = levelTimer + (junctionCount * JUNCTION_PENALTY);
kongregate.stats.submit("BestTimeOnLevel" + (_root.level_id - 1), winScore);
text_line1 = ((level_id - 1) + ". ") + _root["levelArray" + level_id][2];
text_line2 = "Your time: " + timeToString(winScore);
text_line3 = "Previous best: " + timeToString(getBestTime(_root.level_id));
oldLevel = getScoreLevel(getBestTime(_root.level_id), _root.level_id);
if (oldLevel == undefined) {
oldLevel = 0;
trace("Error: frame 5, line 96, oldLevel is undefined. WTF, man?");
}
newLevel = getScoreLevel(winScore, _root.level_id);
if ((getBestTime == 0) && (_root.level_id == 35)) {
_root.__com_mochibot__("838cec0b", this, 10301, true);
}
if (oldLevel >= newLevel) {
if (oldLevel == 3) {
text_line4 = "All medals awarded.";
} else if (oldLevel == 0) {
text_line4 = "Bronze medal at: " + timeToString(getBronzeTime(level_id));
} else if (oldLevel == 1) {
text_line4 = "Silver medal at: " + timeToString(getSilverTime(level_id));
} else {
text_line4 = "Gold medal at: " + timeToString(getGoldTime(level_id));
}
if (getBestTime(_root.level_id) <= winScore) {
if (getBestTime(_root.level_id) <= 1) {
text_line5 = "Your time has been saved.";
} else {
text_line5 = "You didn't beat your best.";
}
} else {
text_line5 = "You set a new best time!";
}
} else if (newLevel == 1) {
text_line4 = "Bronze medal awarded!";
text_line5 = "Silver medal at: " + timeToString(getSilverTime(level_id));
} else if (newLevel == 2) {
text_line4 = "Silver medal awarded!";
text_line5 = "Gold medal at: " + timeToString(getGoldTime(level_id));
} else if (newLevel == 3) {
text_line4 = "Gold medal awarded,";
text_line5 = "congratulations!";
}
if (_root["levelArray" + (_root.level_id + 1)] == undefined) {
text_line6 = "Report unlocked on menu!";
} else {
text_line6 = "Next: " + _root["levelArray" + (level_id + 1)][2];
}
overlay._visible = true;
overlay.gotoAndPlay(4);
overlay.swapDepths(_root.getNextHighestDepth());
hasControl = false;
gameStatus = "win";
_root.previousScore = getBestTime(_root.level_id);
if ((winScore < _root.previousScore) || (_root.previousScore <= 0)) {
setBestTime(_root.level_id, winScore);
}
_root.playTime = _root.playTime + winScore;
_root.recordWin(_root.level_id);
trace("total playtime: " + _root.playTime);
k = 0;
while (k < engines.length) {
_root[engines[k]].targetSpeed = 0;
k++;
}
};
GAME_LOSE = function () {
clearFlag = true;
winScore = levelTimer + (junctionCount * JUNCTION_PENALTY);
_root.playTime = _root.playTime + winScore;
trace("total playtime: " + _root.playTime);
overlay._visible = true;
overlay.gotoAndPlay(3);
overlay.swapDepths(_root.getNextHighestDepth());
hasControl = false;
gameStatus = "lose";
k = 0;
while (k < engines.length) {
_root[engines[k]].targetSpeed = 0;
k++;
}
};
GAME_LOSE2 = function () {
clearFlag = true;
winScore = levelTimer + (junctionCount * JUNCTION_PENALTY);
_root.playTime = _root.playTime + winScore;
trace("total playtime: " + _root.playTime);
overlay._visible = true;
overlay.gotoAndPlay(5);
overlay.swapDepths(_root.getNextHighestDepth());
hasControl = false;
gameStatus = "lose";
k = 0;
while (k < engines.length) {
_root[engines[k]].targetSpeed = 0;
k++;
}
};
particleEffect = function (X, Y, C) {
if (_root.SFX == true) {
h = 0;
while (h < 6) {
particle.duplicateMovieClip("part" + dup, _root.getNextHighestDepth());
_root["part" + dup]._x = (X + (Math.random() * 18)) - 9;
_root["part" + dup]._y = (Y + (Math.random() * 18)) - 9;
_root["part" + dup]._width = (_root["part" + dup]._height = 10 + (Math.random() * 4));
_root["part" + dup]._alpha = 50;
_root["part" + dup].gotoAndStop(((C * 3) - 2) + Math.floor(Math.random() * 3));
_root["part" + dup].onEnterFrame = function () {
this._width = this._width + 0.5;
this._height = this._height + 0.5;
this._alpha = this._alpha - 3;
if ((this._alpha <= 0) || (_root.clearFlag == true)) {
this.removeMovieClip();
}
};
dup++;
h++;
}
h = 0;
while (h < 40) {
particle.duplicateMovieClip("part" + dup, _root.getNextHighestDepth());
_root["part" + dup]._x = X;
_root["part" + dup]._y = Y;
_root["part" + dup].gotoAndStop(((C * 3) - 2) + Math.floor(Math.random() * 3));
sp = (Math.random() * 1.5) + 1;
ang = (Math.random() * 2) * Math.PI;
_root["part" + dup].xspeed = sp * Math.cos(ang);
_root["part" + dup].yspeed = sp * Math.sin(ang);
_root["part" + dup].onEnterFrame = function () {
this._x = this._x + this.xspeed;
this._y = this._y + this.yspeed;
this._alpha = this._alpha - 5;
this.xspeed = this.xspeed * 0.9;
this.yspeed = this.yspeed * 0.9;
if ((this._alpha <= 0) || (_root.clearFlag == true)) {
this.removeMovieClip();
}
};
dup++;
h++;
}
}
};
__com_mochibot__("5116405b", this, 10301, true);
Instance of Symbol 65 MovieClip "cursor" in Frame 4
onClipEvent (load) {
this._x = _root._xmouse;
this._y = _root._ymouse;
this.swapDepths(_root.getNextHighestDepth());
Mouse.hide();
this.gotoAndStop(4);
}
onClipEvent (enterFrame) {
this._x = _root._xmouse;
this._y = _root._ymouse;
this.swapDepths(_root.getNextHighestDepth());
}
onClipEvent (mouseMove) {
this._x = _root._xmouse;
this._y = _root._ymouse;
this.swapDepths(_root.getNextHighestDepth());
Mouse.hide();
updateAfterEvent();
}
Frame 5
cursor.gotoAndStop(4);
var levelArray = new Array();
overlay.removeMovieClip();
bleh.text = (((((((("playTime=" + playTime) + ", trainsCrashed=") + trainCrashes) + ", junctionsChanged=") + junctionChanges) + ", carriagesEmptied=") + carriagesEmptied) + ", distanceTravelled=") + distanceTravelled;
var clearFlag = false;
if (!musicPlaying) {
stopAllSounds();
if (MUSIC) {
menuMusic1.start(0, 100000);
musicPlaying = true;
}
}
if (!MUSIC) {
stopAllSounds();
}
if (getBestTime(35) > 0) {
statsText.text = "Your Report";
statsbutton._alpha = 100;
clickstop._x = 1000;
} else {
statsText.text = "";
statsbutton._alpha = 50;
}
stop();
Instance of Symbol 109 MovieClip in Frame 5
onClipEvent (load) {
if (_root.getBestTime(2) > 0) {
firstTime = false;
this.textbox.text = "Continue";
} else {
firstTime = true;
this.textbox.text = "New Game";
}
this.stop();
}
on (press) {
_root.playSound("click");
if (firstTime) {
_root.LS_offY = 0;
_root.level_id = 2;
_root.levelArray = _root.levelArray2;
menuMusic1.stop();
musicPlaying = false;
_root.gotoAndPlay(11);
} else {
_root.LS_offY = 0;
_root.gotoAndPlay(6);
}
}
on (rollOver) {
this.gotoAndStop(2);
_root.playSound("hover");
}
on (rollOut) {
this.gotoAndStop(1);
}
Instance of Symbol 310 MovieClip "clickstop" in Frame 5
on (rollOver) {
}
Frame 6
cursor.gotoAndStop(4);
if (_root.LS_offY == undefined) {
_root.LS_offY = 0;
}
LS_previews._visible = false;
RESET();
overlay.removeMovieClip();
pause_overlay.removeMovieClip();
if (!musicPlaying) {
stopAllSounds();
if (MUSIC) {
menuMusic1.start(0, 100000);
musicPlaying = true;
}
}
if (!MUSIC) {
stopAllSounds();
}
LS_lbest = "";
LS_show = function (LS_ID) {
LS_lname.htmlText = ("<b>" + getLevelName(LS_ID)) + "</b>";
LS_ldesc.text = getLevelFlavourText(LS_ID);
LS_previews.gotoAndStop(LS_ID);
LS_previews._visible = true;
_root.level_id = LS_ID;
};
for (var i in _root) {
if ((typeof(_root[i]) == "movieclip") && (_root[i]._name != "cursor")) {
_root[i].removeMovieClip();
}
}
clearFlag = true;
stop();
Instance of Symbol 512 MovieClip "LS_previews" in Frame 6
on (release) {
if (_root.levelArray != undefined) {
_root.playSound("click");
_root.recordLoss(_root.level_id);
_root.menuMusic1.stop();
_root.musicPlaying = false;
_root.gotoAndPlay(11);
}
}
on (rollOver) {
_root.playSound("hover");
}
Frame 7
cursor.gotoAndStop(4);
RESET();
overlay.removeMovieClip();
pause_overlay.removeMovieClip();
if (!musicPlaying) {
stopAllSounds();
if (MUSIC) {
menuMusic1.start(0, 100000);
musicPlaying = true;
}
}
if (!MUSIC) {
stopAllSounds();
}
stop();
Frame 11
menuMusic1.stop();
musicPlaying = false;
buildLevel(levelArray);
thisDeathToll = 0;
gamePause = false;
clearFlag = false;
stop();
Frame 13
textbox.text = domain;
_root._x = -560;
_root._y = -400;
stop();
Frame 15
totalPlayTime.text = longTimeToString(playTime);
totalTrainsCrashed.text = trainCrashes.toString();
totalJunctionChanges.text = junctionChanges.toString();
totalCarriagesEmptied.text = carriagesEmptied.toString();
totalDistanceTravelled.text = Math.round(distanceTravelled / 1000) + " miles";
var totalDeaths = 0;
i = 2;
while (i <= 36) {
totalDeaths = totalDeaths + getDeaths(i);
i++;
}
trace("total deaths = " + totalDeaths);
totalCasualties.text = totalDeaths.toString();
var bestTimeTotal = 0;
i = 2;
while (i <= 36) {
bestTimeTotal = bestTimeTotal + getBestTime(i);
i++;
}
totalBestTimes.text = longTimeToString(bestTimeTotal);
GRAPH = function () {
var _local1 = graphArray[0];
i = 1;
while (i < 35) {
if (graphArray[i] > _local1) {
_local1 = graphArray[i];
}
i++;
}
trace(_local1);
var _local4 = Math.ceil(_local1);
var _local5 = Math.round(0.8 * _local1);
var _local6 = Math.round(0.6 * _local1);
var _local2 = Math.round(0.4 * _local1);
var _local3 = Math.round(0.2 * _local1);
n0.text = 0;
n1.text = _local3;
n2.text = _local2;
n3.text = _local6;
n4.text = _local5;
n5.text = _local4;
i = 1;
while (i < 36) {
bars["bar" + i]._y = (-(graphArray[i - 1] / _local1)) * 230;
bars["bar" + i].gotoAndStop((i % 5) + 2);
i++;
}
};
var graphArray = new Array(35);
stop();
Frame 16
GRAPH = function () {
var _local1 = graphArray[0];
i = 1;
while (i < 35) {
if (graphArray[i] > _local1) {
_local1 = graphArray[i];
}
i++;
}
trace(_local1);
var _local4 = Math.ceil(_local1);
var _local5 = Math.round(0.8 * _local1);
var _local6 = Math.round(0.6 * _local1);
var _local2 = Math.round(0.4 * _local1);
var _local3 = Math.round(0.2 * _local1);
n0.text = 0;
n1.text = _local3;
n2.text = _local2;
n3.text = _local6;
n4.text = _local5;
n5.text = _local4;
i = 1;
while (i < 36) {
bars["bar" + i]._y = (-(graphArray[i - 1] / _local1)) * 230;
bars["bar" + i].gotoAndStop((i % 5) + 2);
i++;
}
};
var graphArray = new Array(35);
i = 0;
while (i < 35) {
graphArray[i] = (getBestTime(i + 2) / getGoldTime(i + 2)) * 100;
i++;
}
GRAPH();
stop();
Frame 17
i = 0;
while (i < 35) {
graphArray[i] = getDeaths(i + 2);
i++;
}
GRAPH();
stop();
Frame 18
i = 0;
while (i < 35) {
graphArray[i] = (getWins(i + 2) / getLosses(i + 2)) * 100;
i++;
}
GRAPH();
stop();
Symbol 25 Button
on (press) {
_root.__com_mochibot__("a18edd3a", this, 10301, true);
Playtomic.Log.CustomMetric("PreloaderLink", "Links");
_root.getURL("http://www.notdoppler.com/?ref=epicrail", "_blank");
}
Symbol 35 Button
on (press) {
play();
_root.textbox.text = "";
}
Symbol 37 MovieClip Frame 1061
_root.play();
Symbol 1045 MovieClip [__Packages.Playtomic.LogRequest] Frame 0
class Playtomic.LogRequest
{
var Pieces;
function LogRequest () {
}
function Queue(data) {
Pieces++;
Data = Data + (((Data == "") ? "" : "~") + data);
if ((Pieces == 8) || (Data.length > 300)) {
Pieces = 0;
Ready = true;
}
}
function Send() {
var _local3 = function (success) {
if ((this.Data.indexOf("v/") == 0) || (this.Data.indexOf("~v/") > -1)) {
Playtomic.Log.IncreaseViews();
}
if ((this.Data.indexOf("p/") == 0) || (this.Data.indexOf("~p/") > -1)) {
Playtomic.Log.IncreasePlays();
}
};
var _local2 = new LoadVars();
_local2.sendAndLoad(((((((((("http://g" + Playtomic.Log.GUID) + ".api.playtomic.com/Tracker/q.aspx?swfid=") + Playtomic.Log.SWFID) + "&q=") + Data) + "&url=") + Playtomic.Log.SourceUrl) + "&") + Math.random()) + "z", _local3, "POST");
}
var Data = "";
var Ready = false;
}
Symbol 1046 MovieClip [__Packages.Playtomic.Log] Frame 0
class Playtomic.Log
{
static var SourceUrl, Cookie;
function Log () {
}
static function View(swfid, guid, defaulturl) {
if (swfid == undefined) {
swfid = 0;
}
if (guid == undefined) {
guid = "";
}
if (defaulturl == undefined) {
defaulturl = "";
}
if (SWFID > 0) {
return(undefined);
}
SWFID = swfid;
GUID = guid;
Enabled = true;
if ((SWFID == 0) || (GUID == "")) {
Enabled = false;
return(undefined);
}
if (defaulturl.indexOf("http://") != 0) {
Enabled = false;
return(undefined);
}
SourceUrl = defaulturl;
if (((SourceUrl == null) || (SourceUrl == "")) || (SourceUrl.indexOf("https://") == 0)) {
Enabled = false;
return(undefined);
}
Cookie = SharedObject.getLocal("playtomic");
var _local5 = GetCookie("views");
Send("v/" + _local5, true);
_global.setTimeout(PingServer, 60000);
}
static function ForceSend() {
if (Request == null) {
return(undefined);
}
Request.Send();
Request = new Playtomic.LogRequest();
}
static function Play() {
if (!Enabled) {
return(undefined);
}
LevelCounters = new Array();
LevelAverages = new Array();
LevelRangeds = new Array();
Send("p/" + (Plays + 1), true);
}
static function CustomMetric(name, group, unique) {
if (!Enabled) {
return(undefined);
}
if ((group == null) || (group == undefined)) {
group = "";
}
if ((unique == null) || (unique == undefined)) {
unique = false;
}
if (unique) {
if (Contains(Customs, name)) {
return(undefined);
}
Customs.push(name);
}
Send((("c/" + Clean(name)) + "/") + Clean(group));
}
static function Link(url, name, group, unique, total, fail) {
if (!Enabled) {
return(undefined);
}
Send((((((((((("l/" + Clean(name)) + "/") + Clean(group)) + "/") + Clean(url)) + "/") + unique) + "/") + total) + "/") + fail);
}
static function LevelCounterMetric(name, level, unique) {
if (!Enabled) {
return(undefined);
}
if (unique) {
var _local1 = (name + ".") + level.toString();
if (Contains(LevelCounters, _local1)) {
return(undefined);
}
LevelCounters.push(_local1);
}
Send((("lc/" + Clean(name)) + "/") + Clean(level));
}
static function LevelRangedMetric(name, level, value, unique) {
if (!Enabled) {
return(undefined);
}
if (unique) {
var _local1 = (name + ".") + level.toString();
if (Contains(LevelRangeds, _local1)) {
return(undefined);
}
LevelRangeds.push(_local1);
SaveCookie("lr_" + name, 1);
}
Send((((("lr/" + Clean(name)) + "/") + Clean(level)) + "/") + value);
}
static function LevelAverageMetric(name, level, value, unique) {
if (!Enabled) {
return(undefined);
}
if (unique) {
var _local1 = (name + ".") + level.toString();
if (Contains(LevelAverages, _local1)) {
return(undefined);
}
LevelAverages.push(_local1);
}
Send((((("la/" + Clean(name)) + "/") + Clean(level)) + "/") + value);
}
static function Contains(arr, key) {
var _local1 = arr.length - 1;
while (_local1 > -1) {
if (arr[_local1] == key) {
return(true);
}
_local1--;
}
return(false);
}
static function Heatmap(metric, heatmap, x, y) {
if (!Enabled) {
return(undefined);
}
Send((((((("h/" + Clean(metric)) + "/") + Clean(heatmap)) + "/") + x) + "/") + y);
}
static function Funnel(name, step, stepnum) {
if (!Enabled) {
return(undefined);
}
Send((((("f/" + Clean(name)) + "/") + Clean(step)) + "/") + stepnum);
}
static function PlayerLevelStart(levelid) {
if (!Enabled) {
return(undefined);
}
Send("pls/" + levelid);
}
static function PlayerLevelWin(levelid) {
if (!Enabled) {
return(undefined);
}
Send("plw/" + levelid);
}
static function PlayerLevelQuit(levelid) {
if (!Enabled) {
return(undefined);
}
Send("plq/" + levelid);
}
static function PlayerLevelRetry(levelid) {
if (!Enabled) {
return(undefined);
}
Send("plr/" + levelid);
}
static function PlayerLevelFlag(levelid) {
if (!Enabled) {
return(undefined);
}
Send("plf/" + levelid);
}
static function PingServer() {
if (!Enabled) {
return(undefined);
}
Pings++;
Send((("t/" + (FirstPing ? "y" : "n")) + "/") + Pings, true);
if (FirstPing) {
FirstPing = false;
setInterval(PingServer, 60000);
}
}
static function Send(s, view) {
if (view == undefined) {
view = false;
}
Request.Queue(s);
if ((Request.Ready || (view)) || (!Queue)) {
Request.Send();
Request = new Playtomic.LogRequest();
}
}
static function GetCookie(n) {
if (Cookie.data[n] == undefined) {
return(0);
}
return(parseInt(Cookie.data[n]));
}
static function SaveCookie(n, v) {
Cookie.data[n] = v.toString();
Cookie.flush();
}
static function Clean(s) {
while (s.indexOf("/") > -1) {
s = Replace(s, "/", "\\");
}
while (s.indexOf("~") > -1) {
s = Replace(s, "~", "-");
}
return(escape(s));
}
static function Replace(str, find, replace) {
return(str.split(find).join(replace));
}
static function IncreaseViews() {
var _local1 = GetCookie("views");
_local1++;
SaveCookie("views", _local1);
}
static function IncreasePlays() {
Plays++;
}
static var Enabled = false;
static var Queue = true;
static var SWFID = 0;
static var GUID = "";
static var Request = new Playtomic.LogRequest();
static var FirstPing = true;
static var Pings = 0;
static var Plays = 0;
static var HighestGoal = 0;
static var Customs = new Array();
static var LevelCounters = new Array();
static var LevelAverages = new Array();
static var LevelRangeds = new Array();
}
Symbol 1047 MovieClip [__Packages.Playtomic.GameVars] Frame 0
class Playtomic.GameVars
{
function GameVars () {
}
static function Load(callback) {
var _local8 = new LoadVars();
_local8.onLoad = function (success) {
if (callback == null) {
return(undefined);
}
if (!success) {
callback(result, Playtomic.Response.GeneralFailure());
return(undefined);
}
var _local5 = new XML(this["<?xml version"]);
_local5.ignoreWhite = true;
var _local7 = parseInt(_local5.lastChild.childNodes[0].firstChild);
var _local8 = parseInt(_local5.lastChild.childNodes[1].firstChild);
if (_local7 == 1) {
var _local2 = _local5.lastChild.childNodes;
var _local3;
var _local4;
for (var _local6 in _local2) {
_local3 = _local2[_local6].firstChild.firstChild;
_local4 = _local2[_local6].lastChild.firstChild;
if ((_local3 == null) || (_local4 == null)) {
continue;
}
result[_local3] = _local4;
}
}
callback(result, new Playtomic.Response(_local7, _local8));
};
var result = {};
var _local9 = new LoadVars();
_local9.sendAndLoad((((("http://g" + Playtomic.Log.GUID) + ".api.playtomic.com/gamevars/load.aspx?swfid=") + Playtomic.Log.SWFID) + "&") + Math.random(), _local8, "POST");
}
}
Symbol 1048 MovieClip [__Packages.Playtomic.Response] Frame 0
class Playtomic.Response extends Object
{
function Response (status, errorcode) {
super();
Success = status == 1;
ErrorCode = errorcode;
}
static function GeneralFailure() {
return(new Playtomic.Response(0, 1));
}
function get ErrorMessage() {
if (ErrorCode == 0) {
return("Nothing went wrong!");
}
switch (ErrorCode) {
case 1 :
return("General error, this typically means the player is unable to connect to the Playtomic servers");
case 2 :
return("Invalid game credentials. Make sure you use your SWFID and GUID from the `API` section in the dashboard.");
case 100 :
return("GeoIP API has been disabled. This may occur if your game is faulty or overwhelming the Playtomic servers.");
case 200 :
return("Leaderboard API has been disabled. This may occur if your game is faulty or overwhelming the Playtomic servers.");
case 201 :
return("The source URL or name weren't provided when saving a score. Make sure the player specifies a name and the game is initialized before anything else using the code in the `Set your game up` section.");
case 202 :
return("Invalid auth key. You should not see this normally, players might if they tamper with your game.");
case 203 :
return("No Facebook user id on a score specified as a Facebook submission.");
case 300 :
return("GameVars API has been disabled. This may occur if your game is faulty or overwhelming the Playtomic servers.");
case 400 :
return("Level sharing API has been disabled. This may occur if your game is faulty or overwhelming the Playtomic servers.");
case 401 :
return("Invalid rating value (must be 1 - 10).");
case 402 :
return("Player has already rated that level.");
case 403 :
return("The level name wasn't provided when saving a level.");
case 404 :
return("Invalid image auth. You should not see this normally, players might if they tamper with your game.");
case 405 :
return("Invalid image auth (again). You should not see this normally, players might if they tamper with your game.");
case 500 :
return("Data API has been disabled. This may occur if the Data API is not enabled for your game, or your game is faulty or overwhelming the Playtomic servers.");
}
return(("An unknown error of type " + ErrorCode) + " occurred. Check the API docs at http://playtomic.com/api");
}
function toString() {
return((((("Playtomic.Response:\nSuccess: " + Success) + "\nErrorCode: ") + ErrorCode) + "\nErrorMessage: ") + ErrorMessage);
}
var Success = false;
var ErrorCode = 0;
}
Symbol 42 MovieClip Frame 6
stop();
Symbol 43 Button
on (release) {
_root.__com_mochibot__("a18edd3a", this, 10301, true);
Playtomic.Log.CustomMetric("SplashScreen", "Links");
getURL ("http://www.notdoppler.com/?ref=epicrail", "_blank");
}
Symbol 56 MovieClip Frame 186
_root.play();
stop();
Symbol 69 MovieClip Frame 1
stop();
Symbol 69 MovieClip Frame 2
play();
Symbol 69 MovieClip Frame 20
_parent.removeMovieClip();
Symbol 70 MovieClip Frame 1
stop();
Symbol 70 MovieClip Frame 2
play();
Symbol 70 MovieClip Frame 19
_parent.removeMovieClip();
Symbol 72 MovieClip Frame 1
stop();
Symbol 72 MovieClip Frame 2
play();
Symbol 72 MovieClip Frame 20
_parent.removeMovieClip();
Symbol 74 MovieClip Frame 1
stop();
Symbol 74 MovieClip Frame 2
play();
Symbol 74 MovieClip Frame 74
_parent.removeMovieClip();
Symbol 76 MovieClip Frame 1
stop();
Symbol 76 MovieClip Frame 2
play();
Symbol 76 MovieClip Frame 42
_parent.removeMovieClip();
Symbol 78 MovieClip Frame 1
stop();
Symbol 78 MovieClip Frame 2
play();
Symbol 78 MovieClip Frame 42
_parent.removeMovieClip();
Symbol 80 MovieClip Frame 1
stop();
Symbol 80 MovieClip Frame 2
play();
Symbol 80 MovieClip Frame 45
_parent.removeMovieClip();
Symbol 82 MovieClip Frame 1
stop();
Symbol 82 MovieClip Frame 2
play();
Symbol 82 MovieClip Frame 45
_parent.removeMovieClip();
Symbol 100 MovieClip Frame 1
stop();
Symbol 100 MovieClip Frame 2
play();
Symbol 100 MovieClip Frame 45
_parent.removeMovieClip();
Symbol 115 Button
on (release) {
Playtomic.Log.CustomMetric("MainMenuPlayMoreGames", "Links");
_root.playSound("click");
_root.__com_mochibot__("a18edd3a", this, 10301, true);
_root.getURL("http://www.notdoppler.com/?ref=epicrail", "_blank");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 137 MovieClip Frame 34
_root.particleEffect(239, 242, 1);
Symbol 137 MovieClip Frame 83
_root.particleEffect(320, 242, 2);
Symbol 147 MovieClip Frame 1
stop();
Symbol 147 MovieClip Frame 45
gotoAndPlay (1);
Symbol 163 MovieClip Frame 1
junction.b._visible = false;
junction.gotoAndStop(1);
Symbol 163 MovieClip Frame 88
junction.b._visible = true;
junction.g._visible = false;
Symbol 163 MovieClip Frame 104
junction.gotoAndStop(2);
junction.b._visible = false;
junction.g._visible = true;
Symbol 163 MovieClip Frame 185
junction.b._visible = true;
junction.g._visible = false;
Symbol 163 MovieClip Frame 198
junction.gotoAndStop(1);
junction.b._visible = false;
junction.g._visible = true;
Symbol 229 MovieClip Frame 1
stop();
Symbol 241 Button
on (press) {
_root.SOUNDS = true;
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 242 Button
on (press) {
_root.SOUNDS = false;
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 243 Button
on (press) {
_root._quality = "HIGH";
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 244 Button
on (press) {
_root._quality = "MEDIUM";
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 245 Button
on (press) {
_root._quality = "LOW";
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 246 Button
on (press) {
_root.SFX = true;
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 247 Button
on (press) {
_root.SFX = false;
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 249 Button
on (press) {
_root.COLOURBLIND = true;
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 250 Button
on (press) {
_root.COLOURBLIND = false;
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 257 Button
on (press) {
_root.MUSIC = true;
if (!_root.musicPlaying) {
_root.musicPlaying = true;
_root.menuMusic1.start(0, 1000000);
}
_root.playSound("click");
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 258 Button
on (press) {
_root.MUSIC = false;
_root.playSound("click");
if (_root.musicPlaying) {
_root.musicPlaying = false;
_root.menuMusic1.stop();
}
rebutton();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 260 MovieClip Frame 1
stop();
Symbol 277 Button
on (release) {
Playtomic.Log.CustomMetric("CreditsSponsorLink", "Links");
_root.__com_mochibot__("a18edd3a", this, 10301, true);
_root.getURL("http://www.notdoppler.com/?ref=epicrail", "_blank");
}
Symbol 278 MovieClip Frame 1
stop();
Symbol 278 MovieClip Frame 2
rebutton = function () {
if (_root.COLOURBLIND) {
colourblindOff.gotoAndStop(1);
colourblindOn.gotoAndStop(2);
} else {
colourblindOff.gotoAndStop(2);
colourblindOn.gotoAndStop(1);
}
if (_root.SOUNDS) {
soundsOff.gotoAndStop(1);
soundsOn.gotoAndStop(2);
} else {
soundsOff.gotoAndStop(2);
soundsOn.gotoAndStop(1);
}
if (_root.SFX) {
effectsOff.gotoAndStop(1);
effectsOn.gotoAndStop(2);
} else {
effectsOff.gotoAndStop(2);
effectsOn.gotoAndStop(1);
}
if (_root.MUSIC) {
musicOff.gotoAndStop(1);
musicOn.gotoAndStop(2);
} else {
musicOn.gotoAndStop(1);
musicOff.gotoAndStop(2);
}
if (_root._quality == "HIGH") {
qualityHigh.gotoAndStop(2);
qualityMed.gotoAndStop(1);
qualityLow.gotoAndStop(1);
} else if (_root._quality == "MEDIUM") {
qualityHigh.gotoAndStop(1);
qualityMed.gotoAndStop(2);
qualityLow.gotoAndStop(1);
} else {
qualityHigh.gotoAndStop(1);
qualityMed.gotoAndStop(1);
qualityLow.gotoAndStop(2);
}
};
rebutton();
stop();
Symbol 283 Button
on (press) {
if (getBestTime(35) > 0) {
_root.gotoAndPlay(7);
_root.playSound("click");
}
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 285 Button
on (press) {
minimenu.gotoAndStop(1);
minimenu.flashy.play();
clearFlag = false;
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 287 Button
on (press) {
minimenu.gotoAndPlay(2);
minimenu.flashy.play();
clearFlag = true;
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 290 Button
on (release) {
Playtomic.Log.CustomMetric("MainMenuWalkthrough", "Links");
_root.playSound("click");
_root.__com_mochibot__("0af301dc", this, 10301, true);
_root.getURL("http://www.notdoppler.com/epicrail-walkthrough.php", "_blank");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 311 Button
on (press) {
resetData("RAILS1");
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 321 Button
on (release) {
Playtomic.Log.CustomMetric("LevelSelectWalkthrough", "Links");
_root.playSound("click");
_root.__com_mochibot__("0af301dc", this, 10301, true);
_root.getURL("http://www.notdoppler.com/epicrail-walkthrough.php", "_blank");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 409 MovieClip Frame 1
i = 1;
while (i <= 34) {
plate.duplicateMovieClip("plate" + i, getNextHighestDepth());
this["plate" + i].offY = 50 * (i - 1);
this["plate" + i].id = i + 1;
this["plate" + i]._x = 0;
this["plate" + i]._y = 50 * (i - 1);
if (_root.levelIsUnlocked(i + 1)) {
this["plate" + i].line1.text = _root.getLevelName(this.i + 1);
if (_root.getScoreLevel(_root.getBestTime(i + 1), i + 1) < 3) {
this["plate" + i].line2.text = (("Best: " + _root.getBestTimeToString(this.i + 1)) + " Gold at: ") + _root.timeToString(_root.getGoldTime(this.i + 1));
} else {
this["plate" + i].line2.text = "Best: " + _root.getBestTimeToString(this.i + 1);
}
this["plate" + i].icon.gotoAndStop(i + 1);
this["plate" + i].medal.gotoAndStop(_root.getScoreLevel(_root.getBestTime(i + 1), i + 1) + 1);
this["plate" + i].gotoAndStop(2);
this["plate" + i].onPress = function () {
_root.LS_show(this.id);
_root.levelArray = _root["levelArray" + this.id];
_root.playSound("click");
i = 1;
while (i <= 35) {
if (this._parent["plate" + i]._currentframe == 3) {
this._parent["plate" + i].gotoAndStop(2);
}
i++;
}
this.gotoAndStop(3);
};
this["plate" + i].onRollOver = function () {
_root.playSound("hover");
};
} else {
this["plate" + i].line1.text = "Locked";
this["plate" + i].line2.text = "Complete previous level to unlock";
this["plate" + i].icon.gotoAndStop(i + 1);
this["plate" + i].medal.gotoAndStop(1);
this["plate" + i].gotoAndStop(1);
}
this["plate" + i].onEnterFrame = function () {
this._y = _root.LS_offY + this.offY;
};
i++;
}
plate.swapDepths(getNextHighestDepth());
plate.removeMovieClip();
_root.LS_height = 1700;
stop();
Symbol 417 MovieClip Frame 1
stop();
Symbol 422 MovieClip Frame 1
stop();
Symbol 425 MovieClip Frame 1
stop();
Instance of Symbol 417 MovieClip in Symbol 426 MovieClip Frame 1
on (press) {
this.onEnterFrame = function () {
_root.LS_offY = _root.LS_offY + 20;
if (_root.LS_offY >= 0) {
_root.LS_offY = 0;
}
trace(_root.LS_offY);
};
_root.playSound("click");
this.gotoAndStop(3);
}
on (release) {
this.onEnterFrame = null;
this.gotoAndStop(2);
}
on (releaseOutside) {
this.onEnterFrame = null;
this.gotoAndStop(1);
}
on (rollOver) {
_root.playSound("hover");
this.gotoAndStop(2);
}
on (rollOut) {
this.gotoAndStop(1);
}
Instance of Symbol 422 MovieClip in Symbol 426 MovieClip Frame 1
on (press) {
this.onEnterFrame = function () {
_root.LS_offY = _root.LS_offY - 20;
if (_root.LS_offY <= -1440) {
_root.LS_offY = -1440;
}
trace(_root.LS_offY);
};
_root.playSound("click");
this.gotoAndStop(3);
}
on (release) {
this.onEnterFrame = null;
this.gotoAndStop(2);
}
on (releaseOutside) {
this.onEnterFrame = null;
this.gotoAndStop(1);
}
on (rollOver) {
_root.playSound("hover");
this.gotoAndStop(2);
}
on (rollOut) {
this.gotoAndStop(1);
}
Instance of Symbol 425 MovieClip in Symbol 426 MovieClip Frame 1
on (press) {
this.startDrag(false, 229, 52, 229, 247);
this.drag = true;
_root.playSound("click");
this.gotoAndStop(3);
}
on (release) {
this.stopDrag();
this.drag = false;
this.gotoAndStop(2);
}
on (releaseOutside) {
this.stopDrag();
this.drag = false;
this.gotoAndStop(1);
}
onClipEvent (enterFrame) {
if (drag == true) {
_root.LS_offY = 1440 * ((this._y - 52) / -195);
} else {
drag = false;
this._y = ((_root.LS_offY / 1440) * -195) + 52;
}
}
on (rollOver) {
this.gotoAndStop(2);
_root.playSound("hover");
}
on (rollOut) {
this.gotoAndStop(1);
}
Symbol 434 Button
on (press) {
_root.playSound("click");
gotoAndPlay (5);
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 515 Button
on (press) {
_root.gotoAndPlay(5);
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 516 Button
on (release) {
Playtomic.Log.CustomMetric("CongratulationsScreen", "Links");
_root.__com_mochibot__("a18edd3a", this, 10301, true);
_root.getURL("http://www.notdoppler.com/?ref=epicrail", "_blank");
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 517 Button
on (press) {
_root.gotoAndPlay(15);
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 525 MovieClip Frame 1
if (_root.COLOURBLIND) {
play();
} else {
stop();
}
Symbol 525 MovieClip Frame 2
stop();
Symbol 527 MovieClip Frame 1
if (_root.COLOURBLIND) {
play();
} else {
stop();
}
Symbol 527 MovieClip Frame 2
stop();
Symbol 529 MovieClip Frame 1
if (_root.COLOURBLIND) {
play();
} else {
stop();
}
Symbol 529 MovieClip Frame 2
stop();
Symbol 531 Button
on (press) {
_root.playSound("click");
gotoAndStop(_currentframe + 1);
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 532 Button
on (press) {
_root.playSound("click");
gotoAndPlay (14);
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 537 Button
on (press) {
_root.playSound("click");
gotoAndStop(_currentframe - 1);
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 538 Button
on (press) {
_root.playSound("click");
gotoAndStop(_currentframe + 2);
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 553 Button
on (press) {
_root.playSound("click");
play();
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 555 MovieClip Frame 5
stop();
Symbol 555 MovieClip Frame 19
stop();
Symbol 558 MovieClip Frame 1
if (_root.COLOURBLIND) {
play();
} else {
stop();
}
Symbol 558 MovieClip Frame 2
stop();
Symbol 560 MovieClip Frame 1
if (_root.COLOURBLIND) {
play();
} else {
stop();
}
Symbol 560 MovieClip Frame 2
stop();
Symbol 563 Button
on (release) {
Playtomic.Log.CustomMetric("GameplayPlayMoreGames", "Links");
_root.playSound("click");
_root.__com_mochibot__("a18edd3a", this, 10301, true);
_root.getURL("http://www.notdoppler.com/?ref=epicrail", "_blank");
if (_root.gamePause == false) {
_root.gamePause = true;
_root.hasControl = false;
_root.overlay.duplicateMovieClip("pause_overlay", _root.getNextHighestDepth());
_root.pause_overlay.gotoAndPlay(2);
} else {
_root.gamePause = false;
_root.hasControl = true;
_root.pause_overlay.removeMovieClip();
}
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 566 Button
on (release) {
Playtomic.Log.CustomMetric("GameplayWalkthrough", "Links");
_root.playSound("click");
_root.__com_mochibot__("0af301dc", this, 10301, true);
_root.getURL("http://www.notdoppler.com/epicrail-walkthrough.php", "_blank");
if (_root.gamePause == false) {
_root.gamePause = true;
_root.hasControl = false;
_root.overlay.duplicateMovieClip("pause_overlay", _root.getNextHighestDepth());
_root.pause_overlay.gotoAndPlay(2);
} else {
_root.gamePause = false;
_root.hasControl = true;
_root.pause_overlay.removeMovieClip();
}
}
on (rollOver) {
_root.playSound("hover");
}
Instance of Symbol 555 MovieClip in Symbol 610 MovieClip Frame 2
onClipEvent (enterFrame) {
if (this.hitTest(_root._xmouse, _root._ymouse, true)) {
this._alpha = this._alpha + 10;
} else {
this._alpha = this._alpha - 10;
}
if (this._alpha > 100) {
this._alpha = 100;
}
if (this._alpha < 50) {
this._alpha = 50;
}
}
Symbol 742 Button
on (press) {
_root.playSound("click");
if (_root.gamePause == false) {
_root.gamePause = true;
_root.hasControl = false;
_root.overlay.duplicateMovieClip("pause_overlay", _root.getNextHighestDepth());
_root.pause_overlay.gotoAndPlay(2);
} else {
_root.gamePause = false;
_root.hasControl = true;
_root.pause_overlay.removeMovieClip();
}
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 746 Button
on (release) {
Playtomic.Log.CustomMetric("OverlayPlayMoreGames", "Links");
_root.playSound("click");
_root.__com_mochibot__("a18edd3a", this, 10301, true);
_root.getURL("http://www.notdoppler.com/?ref=epicrail", "_blank");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 747 Button
on (release) {
Playtomic.Log.CustomMetric("OverlayWalkthrough", "Links");
_root.playSound("click");
_root.__com_mochibot__("0af301dc", this, 10301, true);
_root.getURL("http://www.notdoppler.com/epicrail-walkthrough.php", "_blank");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 752 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (2);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
_root.playSound("click");
_root.recordLoss(_root.level_id);
_root.gotoAndPlay("levelSelect");
}
Symbol 753 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (3);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
_root.playSound("click");
_root.RESET();
_root.recordLoss(_root.level_id);
_root.buildLevel(_root.levelArray);
_root.pause_overlay.removeMovieClip();
}
Symbol 754 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (4);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
_root.playSound("click");
_root.gamePause = false;
_root.hasControl = true;
_root.pause_overlay.removeMovieClip();
}
Symbol 761 MovieClip Frame 1
stop();
Symbol 776 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (2);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
_root.playSound("click");
_root.gameSave("RAILS1");
_root.RESET();
_root.gotoAndPlay("levelSelect");
}
Symbol 777 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (3);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
_root.playSound("click");
if (_root.MUSIC) {
_root.gameplayMusic.start(0, 1000000);
}
_root.recordLoss(_root.level_id);
_root.RESET();
_root.buildLevel(_root.levelArray);
_root.overlay.gotoAndPlay(1);
}
Symbol 783 MovieClip Frame 1
stop();
Symbol 784 MovieClip Frame 3
_root.stopTrains();
Symbol 784 MovieClip Frame 38
_root.playSound("lose");
Symbol 784 MovieClip Frame 55
stop();
Symbol 929 MovieClip Frame 1
var letters = ["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", "1", "2", "3", "4", "5", "6", "7", "8", "9", "0", ".", ",", "!", ":", "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", "'", " "];
getNum = function (input) {
i = 0;
while (i < letters.length) {
if (input == letters[i]) {
return(i + 1);
}
i++;
}
trace("Unrecognised character: " + input);
return(letters.length);
};
setText = function (string) {
j = 0;
while (j < string.length) {
this["c" + (j + 1)].gotoAndStop(getNum(string.charAt(j)));
j++;
}
j = string.length + 1;
while (j < 30) {
this["c" + j].gotoAndStop(letters.length);
j++;
}
};
setText(" ");
stop();
Symbol 931 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (2);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
_root.playSound("click");
_root.gameSave("RAILS1");
_root.RESET();
_root.gotoAndPlay("levelSelect");
}
Symbol 932 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (3);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
if (_root.MUSIC) {
_root.gameplayMusic.start(0, 1000000);
}
_root.playSound("click");
_root.recordLoss(_root.level_id);
_root.RESET();
_root.buildLevel(_root.levelArray);
_root.overlay.gotoAndPlay(1);
}
Symbol 933 Button
on (rollOver) {
_root.playSound("hover");
gotoAndStop (4);
}
on (rollOut) {
gotoAndStop (1);
}
on (press) {
if (_root.MUSIC) {
_root.gameplayMusic.start(0, 1000000);
}
_root.playSound("click");
_root.gameSave("RAILS1");
_root.RESET();
_root.level_id++;
_root.levelArray = _root["levelArray" + _root.level_id];
if (_root.levelArray == undefined) {
_root.level_id--;
_root.gotoAndPlay(7);
} else {
_root.recordLoss(_root.level_id);
_root.buildLevel(_root.levelArray);
_root.overlay.gotoAndPlay(1);
}
}
Symbol 936 MovieClip Frame 1
stop();
Symbol 937 MovieClip Frame 5
_root.stopTrains();
_root.playSound("win");
Symbol 937 MovieClip Frame 79
board.line1.setText(_root.text_line1);
board.line2.setText(_root.text_line2);
board.line3.setText(_root.text_line3);
board.line4.setText(_root.text_line4);
board.line5.setText(_root.text_line5);
board.line6.setText(_root.text_line6);
Symbol 937 MovieClip Frame 120
stop();
Symbol 943 MovieClip Frame 5
_root.stopTrains();
_root.playSound("lose");
Symbol 943 MovieClip Frame 120
stop();
Symbol 945 MovieClip Frame 1
stop();
Symbol 945 MovieClip Frame 2
stop();
Symbol 945 MovieClip Frame 3
trace("OVERLAY is on frame 3");
stop();
Symbol 945 MovieClip Frame 4
stop();
Symbol 945 MovieClip Frame 5
stop();
Symbol 953 MovieClip Frame 1
if (_name == "explosion") {
stop();
}
Symbol 953 MovieClip Frame 2
randno = Math.floor(Math.random() * 5) + 1;
if (randno <= 3) {
_root.playSound("explosion" + randno);
} else {
_root.playSound("scream" + (randno - 3));
}
Symbol 953 MovieClip Frame 80
this.removeMovieClip();
this.stop();
Symbol 960 MovieClip Frame 1
stop();
Symbol 966 Button
on (press) {
_root.gotoAndPlay(7);
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 967 Button
on (press) {
_root.gotoAndPlay(17);
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}
Symbol 1030 MovieClip Frame 1
stop();
Symbol 1040 Button
on (press) {
_root.gotoAndPlay(18);
_root.playSound("click");
}
on (rollOver) {
_root.playSound("hover");
}