Frame 1
if (!Performance) {
_global.Performance = new PerformanceTest(10);
}
Frame 2
play();
Frame 3
if (Performance.score > 0) {
play();
} else {
prevFrame();
}
Frame 4
function spawnFlyingCargo(o) {
var _local2 = this.sector.previous;
this.world.addObject(new FlyingCargo(o), _local2.x, _local2.y, _local2.z, _local2.index);
}
function _curve(spline, a0, a1, p1, rad, type, drawStyle, color, heightRatio) {
a0.x = a0.x + spline.lastVector.x;
a0.y = a0.y + spline.lastVector.y;
a0.z = a0.z + spline.lastVector.z;
a1.x = a1.x + spline.lastVector.x;
a1.y = a1.y + spline.lastVector.y;
a1.z = a1.z + spline.lastVector.z;
p1.x = p1.x + spline.lastVector.x;
p1.y = p1.y + spline.lastVector.y;
p1.z = p1.z + spline.lastVector.z;
var _local5 = spline.appendCurve(a0, a1, p1, rad, type, color);
if (heightRatio) {
_local5.yScale = heightRatio;
}
return(_local5);
}
function _line(spline, p1, rad, type, drawStyle, color, heightRatio) {
p1.x = p1.x + spline.lastVector.x;
p1.y = p1.y + spline.lastVector.y;
p1.z = p1.z + spline.lastVector.z;
seg = spline.appendLine(p1, rad, type, color);
if (heightRatio) {
seg.yScale = heightRatio;
}
return(seg);
}
function configureEngine(game) {
game.camera.hither = 30;
game.camera.depthFocus = 120;
if (Performance) {
sceneQuality = Math.ceil((300 / Performance.score) * 6) * 50;
PerformanceRes = Performance.toString();
if (recorderLimit) {
maxElapsedTime = 0.01;
game.camera.yon = 2000;
maxElapsedTime = 0.1;
game.processLevel(100, null, false);
return(undefined);
}
game.processLevel(Math.min(600, Math.max(100, sceneQuality)), null, false);
maxElapsedTime = 0.3;
if (Performance.processor > 1400) {
game.camera.yon = 6000;
} else if (Performance.processor > 700) {
_quality = "MEDIUM";
game.camera.yon = 4500;
} else {
_quality = "MEDIUM";
game.camera.yon = 3000;
}
} else {
game.camera.yon = 4000;
game.processLevel(500);
}
}
function initPreGame() {
countdownTime = 9;
countdownStartAt = 5;
countdownSeconds = 0;
gameDisplay.onMenuOpen = pauseGame;
gameDisplay.onMenuClose = unpauseGame;
KeysEnabled = true;
runGame(0.001);
updateGame = preGame;
}
function preGame(elapsed) {
countdownTime = countdownTime - elapsed;
var _local1 = countdownSeconds != ((countdownSeconds = Math.ceil(countdownTime)));
if (countdownTime <= 0.75) {
updateGame = runGame;
} else if (_local1) {
if (countdownSeconds == 8) {
gameDisplay.showRecordTime(currentLevel.records[0]);
} else if (countdownSeconds == 5) {
gameDisplay.hideRecordTime();
dinosaur = new GameNode(null, "DinoStart");
gameStage.addObject(dinosaur, gameSled.x, gameSled.y, gameSled.z, gameSled.sector.index);
dinosaur.addToScene();
gameStage.render();
} else if (countdownSeconds == 1) {
dinosaur.target.countdown.gotoAndPlay("Go");
} else if (countdownSeconds <= 4) {
dinosaur.target.countdown.gotoAndPlay("Num" + (countdownSeconds - 1));
}
}
updateCamera(elapsed * 0.5, gameSled);
gameStage.render();
}
function runGame(elapsed) {
var _local3;
var _local1;
if (KeysEnabled) {
_local3 = Key.isDown(39) - Key.isDown(37);
_local1 = Key.isDown(38) - Key.isDown(40);
}
gameSled.update(elapsed, _local3, _local1, _local1);
updateCamera(elapsed, gameSled);
gameStage.update(elapsed);
gameStage.render();
gameDisplay.update(elapsed);
}
function updateCamera(elapsed, target) {
if (target.elevated) {
cameraOffset.x = cameraOffset.x + ((((target.up.x * 100) - cameraOffset.x) * elapsed) * 4);
cameraOffset.y = cameraOffset.y + ((((target.up.y * 50) - cameraOffset.y) * elapsed) * 4);
} else {
cameraOffset.x = cameraOffset.x + ((((target.up.x * 150) - cameraOffset.x) * elapsed) * 4);
cameraOffset.y = cameraOffset.y + ((((target.up.y * 75) - cameraOffset.y) * elapsed) * 4);
}
cameraOffset.z = cameraOffset.z + ((((150 - Math.min(target.velocity.z * 0.03, 100)) - cameraOffset.z) * 2) * elapsed);
gameStage.camera.x = target.x - cameraOffset.x;
gameStage.camera.y = target.y - cameraOffset.y;
gameStage.camera.z = (target.z - (cameraOffset.z * 0.4)) - 30;
gameStage.camera.depthFocus = gameStage.camera.depthFocus + ((((150 - Math.min(target.velocity.z * 0.03, 100)) - gameStage.camera.depthFocus) * 4) * elapsed);
}
function update() {
var _local1 = Math.min(maxElapsedTime, (-lastTime) + ((lastTime = getTimer() * 0.001)));
if (paused) {
return(undefined);
}
updateGame(_local1);
}
function pauseGame() {
paused = true;
rootSoundControl.setVolume(0);
}
function unpauseGame() {
paused = false;
rootSoundControl.setVolume(100);
}
function startGameRun() {
lastTime = getTimer() * 0.001;
if (GameInterval) {
clearInterval(GameInterval);
}
GameInterval = setInterval(update, 1);
}
function stopGameRun() {
clearInterval(GameInterval);
}
function playAgain() {
gotoAndStop (4);
gotoAndStop ("Game");
Flash.setTimeout(startNewGame, 100);
}
function quitGame() {
_level0.quitGame(_root.gameScore);
forceExternalBreak();
_level2500.viewHighScores(_root.gameScore);
}
function startNewGame() {
if (gameScore) {
_level0.sendScore(_root.gameScore);
}
gameTrack = 0;
if (Key.isDown(50)) {
gameTrack = 1;
} else if (Key.isDown(51)) {
gameTrack = 2;
}
gameScore = 0;
gameLives = (PostVR_Lives ? 5 : 3);
nextLevel();
}
function startNextLevel() {
gameTrack++;
if (gameTrack == Tracks.length) {
gotoAndStop ("GameWin");
return(undefined);
}
gotoAndStop ("Game");
Flash.setTimeout(nextLevel, 10);
}
function nextLevel() {
switch (gameTrack) {
case 0 :
startLevel(Tracks[gameTrack], "Fred");
break;
case 1 :
startLevel(Tracks[gameTrack], "Barney");
break;
case 2 :
startLevel(Tracks[gameTrack], "Dino");
}
startGameRun();
}
function resetLevel() {
stopGameRun();
call(4);
gotoAndStop ("reset");
gotoAndStop ("Game");
stopAllSounds();
Flash.setTimeout(function (o) {
startLevel(Tracks[gameTrack], currentCharacter);
startGameRun();
updateAfterEvent();
}, 40, _root);
}
function loseGame() {
stopGameRun();
call(4);
stopAllSounds();
gotoAndStop ("GameLose");
}
function showScoreBoard() {
stopGameRun();
call(4);
gotoAndStop ("ScoreBoard");
currentLevel.records.sortOnNumeric("time");
var _local2 = 0;
while (_local2 < currentLevel.records.length) {
var _local3 = currentLevel.records[_local2];
var _local1 = scoreboard.attachMovie("ScoreBoard Rank Box", "sb" + _local2, _local2);
_local1._x = 85;
_local1._y = 85 + (50 * _local2);
_local1.player.gotoAndStop(_local3.name);
_local1.time = formatTime(_local3.time);
_local1.score = Math.floor((currentLevel.bonusTime / _local3.time) * 25000) * (currentLevel.records.length - _local2);
_local1.rank = "#" + (_local2 + 1);
if (_local3.current) {
_local1.gotoAndStop("red");
gameScore = gameScore + _local1.score;
}
_local2++;
}
stopAllSounds();
}
function getCharacterID(name) {
switch (name.toLowerCase()) {
case "fred" :
return(BB.FRED);
case "barney" :
return(BB.BARNEY);
case "dino" :
return(BB.DINO);
}
}
function setGlobalMusic(linkageID, repeat) {
gameAudio.stop();
if (linkageID != null) {
gameAudio.attachSound(linkageID);
}
gameAudio.start(0, (repeat ? 10000 : 0));
}
function gameMessages(message) {
if (gameSled.messagesDisabled) {
return(undefined);
}
if (gameSled.recorder) {
System.setClipboard(outputRecorderData(gameSled.recorder));
recordedData = gameSled.raceTime;
}
KeysEnabled = false;
gameSled.inMotion = false;
gameSled.keepTrackOfTime = false;
gameSled.messagesDisabled = true;
paused = true;
sled.sledSound.stop();
switch (message) {
case "finish" :
setGlobalMusic("finishRace");
gameDisplay.avatar.character.gotoAndStop("happy");
currentLevel.records.push({current:true, name:getCharacterID(currentCharacter), time:gameSled.raceTime});
currentLevel.records.sortOnNumeric("time");
if (gameDisplay.letters == BB.ALL_LETTERS) {
gameDisplay.showScreen("all_letters", gameSled.raceTime);
} else if (currentLevel.records[0].current) {
gameDisplay.showScreen("finishracebest", gameSled.raceTime);
} else {
gameDisplay.showScreen(message, gameSled.raceTime);
}
gameScore = gameSled.score;
Flash.setTimeout(function () {
showScoreBoard();
}, EndScreenTime);
break;
case "damage" :
case "timeout" :
setGlobalMusic("lose life");
gameDisplay.avatar.character.gotoAndStop("sad");
gameLives--;
gameDisplay.showScreen(message, gameSled.raceTime);
if (gameLives >= 1) {
Flash.setTimeout(resetLevel, EndScreenTime);
} else {
gameScore = gameSled.score;
Flash.setTimeout(loseGame, EndScreenTime);
}
}
}
function startLevel(level, character) {
currentLevel = level;
currentCharacter = character;
cameraOffset = new Vector(0, 0, 120);
paused = false;
if (level.fogColor) {
gameStage.setFog(level.fogColor, level.fogNear, level.fogFar, level.fogAmount);
}
if (level.outsideFogColor) {
gameStage.outsideFogColor = level.outsideFogColor;
}
if (level.outsideColor != null) {
level.course.setOutsideColor(level.outsideColor);
}
if (level.courseColor != null) {
level.course.setDefaultColor(level.courseColor);
}
gameStage.setLevelSpline(level.course);
gameDisplay.setOpenTextFieldColor(level.openTextColor);
var _local1 = 0;
while (_local1 < level.backgrounds.length) {
gameStage.addBackground(level.backgrounds[_local1]);
_local1++;
}
configureEngine(gameStage);
gameSled = new Sled("Bobsled " + character);
gameSled.score = gameScore;
gameSled.lives = gameLives;
gameSled.timeRemaining = level.startTime;
gameSled.onMessage = gameMessages;
if (useRecorder) {
gameSled.recorder = [];
}
if (recordedData) {
integrateRecordedData(gameStage, recordedData);
}
gameDisplay.watch(gameSled, character);
gameStage.addObject(gameSled, 0, 180, 300);
gameSled.addToScene();
gameStage.finalizeLevel();
cameraOffset.x = cameraOffset.x + ((gameSled.up.x * 150) - cameraOffset.x);
cameraOffset.y = cameraOffset.y + ((gameSled.up.y * 75) - cameraOffset.y);
gameStage.render();
updateGame = initPreGame;
}
PostVR_Magnets = _level0.PostVR_Magnets;
PostVR_Lasers = _level0.PostVR_Lasers;
PostVR_Blades = _level0.PostVR_Blades;
PostVR_Lives = _level0.PostVR_Lives;
PostVR_Burst = _level0.PostVR_Burst;
Array.prototype.sortOnNumeric = function (column) {
var _local7;
var _local3;
var _local2;
var _local6;
var _local4;
_local7 = this.length;
_local3 = _local7;
while (_local3-- , _local3 > -1) {
_local2 = _local3;
_local6 = _local2;
_local4 = ((nc = this[_local3]))[column];
while (_local2-- , _local2 > -1) {
if (this[_local2][column] > _local4) {
_local6 = _local2;
_local4 = ((nc = this[_local2]))[column];
}
}
this[_local6] = this[_local3];
this[_local3] = nc;
}
};
var Tracks = [];
var o = ((Tracks[0] = new GameLevel()));
o.addBackground(new Background("BG Bedrock Day", 600, 600, 32000));
o.addRecord(BB.SLATE, 89.6);
o.addRecord(BB.PEBBLES, 102.9);
o.addRecord(BB.BETTY, 111.8);
o.courseColor = new RGB(141, 215, 255);
o.fogColor = new RGB(62, 103, 255);
o.fogNear = 300;
o.fogFar = 4500;
var c;
var s;
o.course = (s = new Course(new Vector(0, 0, 0)));
c = _line(s, new Vector(0, 0, 1000), 150, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 0.661, 0, 0, 0.7731, 0, 0, 0.9037, 0, 0);
c = _curve(s, new Vector(0, 0, 1000), new Vector(0, 500, 2000), new Vector(0, 500, 3000), 150, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 1.24988097690242, -45, 0, 1.27759863963803, -45, 0, 1.29163600800997, -45, 0, 1.32004503869517, -45, 0, 1.30578627125394, -45, 0, 1.56004109230489, 45, 0, 1.5756366835076, 45, 0, 1.59128943149695, 45, 0, 1.60699784177017, 45, 0, 1.62276053631062, 45, 0, 1.89799534001481, -45, 0, 1.91456583802647, -45, 0, 1.93117348499426, -45, 0, 1.94781718393261, -45, 0, 1.96449571791384, -45, 0);
c.addObject(new SnowPile(), 1.9543, 45, 0);
c = _curve(s, new Vector(0, 500, 1000), new Vector(1500, -500, 5000), new Vector(0, 500, 7000), 150, Course.CLOSED, drawStyles.generic);
c.addObject(new RockPile(BB.TALL), 2.1716, 20, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 2.2454, 0, 0, 2.2532, 0, 0, 2.2609, 0, 0, 2.2685, 0, 0, 2.2834, 0, 0, 2.3542, 0, 0, 2.3812, -44, 0, 2.401, -82, 0, 2.4206, -116, 0, 2.4399, -148, 0, 2.478, -217, 0, 2.4968, -253, 0, 2.5155, 71, 0, 2.5341, 37, 0, 2.5527, 6, 0, 2.6767, -6, 0, 2.6956, -6, 0, 2.7146, -7, 0, 2.7338, -7, 0);
c.addObject(new RockPile(BB.TALL), 2.459, 0, 0);
c.addObject(new GameLetter(0), 2.459, -182, 0);
c.addObject(new SnowPile(BB.TALL), 2.7589, 60, 0);
c.addObject(new SnowPile(BB.TALL), 2.7589, -60, 0);
c.addObject(new SnowPile(BB.SMALL), 2.7438, 180, 0);
c.addObject(new GameBoostPad(), 2.7596, -8, 0);
c = _curve(s, new Vector(0, -500, 1000), new Vector(0, 500, 2000), new Vector(0, 0, 2500), 150, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 3.1529, 8, 0, 3.2252, 11, 0, 3.3213, 12, 0, 3.815, 5, 0, 3.8775, 4, 0, 3.9436, 3, 0);
c.addObject(new GameMagnet(), 3.64, 0, 0);
c.addObject(new SnowPile(BB.SHORT), 3.9436, 80, 0);
c.addObject(new SnowPile(BB.SHORT), 3.9436, 80, 0);
c = _curve(s, new Vector(0, -500, 1000), new Vector(0, 0, 3000), new Vector(0, 0, 4000), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GameCargo(), 4, 0, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 4.2132, 60, 0, 4.2933, 60, 0, 4.3692, 60, 0, 4.2132, -60, 0, 4.2933, -60, 0, 4.3692, -60, 0, 4.4666, 0, 0, 4.5025, 0, 0, 4.5383, 0, 0, 4.574, 0, 0, 4.6099, 0, 0, 4.6599, 20, 0, 4.7065, 60, 0, 4.7547, 60, 0, 4.7928, 20, 0, 4.6599, -20, 0, 4.7065, -60, 0, 4.7547, -60, 0, 4.7928, -20, 0);
c.addObject(new GamePoint(GamePoint.HIGH_VALUE), 4.7298, -80, 0);
c = _curve(s, new Vector(0, 0, 500), new Vector(1000, -500, 2500), new Vector(2000, -1000, 3500), 200, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 5.1144, 80, 0, 5.1901, 80, 0, 5.2577, 80, 0, 5.29, 80, 0, 5.1901, 0, 0, 5.224, 0, 0, 5.2577, 0, 0, 5.1144, -80, 0, 5.1901, -80, 0, 5.2577, -80, 0, 5.29, -80, 0);
c.addObject(new GamePoint(GamePoint.HIGH_VALUE), 5.4851, 90, 0);
c.addObject(new GamePoint(GamePoint.HIGH_VALUE), 5.4851, -90, 0);
c.addObject(new SnowPile(BB.SHORT), 5.4951, 50, 0);
c.addObject(new SnowPile(BB.SHORT), 5.4951, -50, 0);
c = _curve(s, new Vector(1000, -500, 1000), new Vector(2000, -1000, 3000), new Vector(2000, -500, 3500), 200, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 6.1191, -1, 0, 6.1407, -19, 0, 6.1618, -41, 0, 6.3503, -71, 0, 6.3796, -77, 0, 6.3894, -71, 0);
c.addObject(new PalmTree(BB.TALL), 6.2, 45, 0);
c.addObject(new GameLetter(1), 6.3698, 79, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 6.51, -2, 0, 6.5415, -3, 0, 6.5737, -4, 0, 6.6183, -4, 0);
c.addObject(new PalmTree(BB.SMALL), 6.5629, 45, 0);
c.addObject(new GameBoostPad(), 6.6795, -5, 0);
c = _curve(s, new Vector(0, 500, 500), new Vector(300, 800, 1000), new Vector(500, 1200, 3500), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GamePoint(GamePoint.HIGH_VALUE), 7.8767, 30, 0);
c.addObject(new GameBlades(), 7.9167, 30, 0);
c.addObject(new GameCheckPoint(25), 7.5, 0, 200);
c.addObject(new PalmTree(BB.TALL), 7.8018, 45, 0);
c.addObject(new RockPile(BB.SMALL), 7.9767, 60, 0);
c.addObject(new RockPile(BB.TALL), 7.9767, -70, 0);
c = _curve(s, new Vector(0, 200, 500), new Vector(0, 300, 1000), new Vector(1000, 200, 1500), 200, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 8.1827, -8, 0, 8.3368, 33, 0, 8.486, 81, 0, 8.6288, -248, 0, 8.7645, -226, 0, 8.8924, -208, 0, 8.9999, -191, 0);
c = _curve(s, new Vector(1000, -100, 500), new Vector(0, 900, 2000), new Vector(-1000, 800, 3500), 200, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 9.1385, -145, 0, 9.2077, -116, 0, 9.2674, -93, 0, 9.3214, -71, 0, 9.3715, -50, 0, 9.4187, -29, 0, 9.4609, -7, 0, 9.5041, 14, 0);
c.addObject(new SnowPile(BB.SMALL), 9.8, 60, 0);
c.addObject(new SnowPile(BB.SMALL), 9.95, -60, 0);
c.addObject(new GameBoostPad(), 9.8921, 6, 0);
c.addObject(new GameHealth(), 9.7171, 12, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 9.9641, 4, 0, 9.9945, 3, 0);
c = _curve(s, new Vector(-1000, 700, 1500), new Vector(0, 1200, 2000), new Vector(0, 600, 4000), 200, Course.OPEN, drawStyles.generic);
c.addCluster(PalmTree, [BB.SMALL], true, 10.768, -60, 0, 10.4791, 31, 0, 10.6211, 45, 0, 10.6933, -72, 0);
c = _curve(s, new Vector(0, -600, 1500), new Vector(500, -2000, 2000), new Vector(800, -1000, 3000), 200, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 11.1333, -264, 0, 11.1521, -249, 0, 11.1808, -229, 0, 11.2007, -215, 0, 11.2325, -192, 0, 11.253, -177, 0, 11.2736, -162, 0, 11.295, -146, 0, 11.33, -120, 0, 11.3532, -102, 0);
c = _curve(s, new Vector(300, 1000, 1000), new Vector(600, 2500, 2000), new Vector(600, 0, 5000), 150, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 12.0011, -172, 0, 12.0296, -172, 0, 12.0497, -172, 0, 12.07, -171, 0, 12.1, -171, 0, 12.1195, -170, 0, 12.1395, -170, 0, 12.1695, -169, 0, 12.1853, -168, 0, 12.2108, -166, 0, 12.2271, -164, 0, 12.2502, -162, 0, 12.2741, -158, 0);
c.addObject(new GameBoostPad(), 12.5965, -4, 0);
c.addObject(new GameHealth(), 12.7024, -4, 0);
c.addObject(new GameLasers(), 12.98, -2, 0);
c.addObject(new GameLetter(2), 12.9198, -2, 0);
c = _curve(s, new Vector(0, 0, 1000), new Vector(0, 0, 3000), new Vector(0, 500, 4000), 150, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 13.2318, 1, 0, 13.2531, 22, 0, 13.2785, 58, 0, 13.3019, 89, 0);
c.addCluster(SnowPile, [BB.TALL], true, 13.348, 60, 0, 13.348, 30, 0, 13.348, -30, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 13.9288, 0, 0, 13.9042, 0, 0, 13.8802, 0, 0, 13.9565, 0, 0, 13.9877, 0, 0);
c.addCluster(SnowPile, [BB.TALL], true, 13.9288, -50, 0, 13.9288, -90, 0, 13.9288, 90, 0, 13.9288, 50, 0);
c = _curve(s, new Vector(0, 0, 1000), new Vector(600, 600, 2000), new Vector(600, 400, 3000), 150, Course.OPEN, drawStyles.generic);
c.addObject(new GameCheckPoint(30), 0.99, 0, 200);
c.addObject(new GameBoostPad(), 14.4573, -73, 0);
c = _curve(s, new Vector(0, 400, 1000), new Vector(600, -200, 2000), new Vector(600, -800, 3000), 100, Course.OPEN, drawStyles.generic);
c = _line(s, new Vector(0, 1000, 4000), 200, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 16.6, -70, 0, 16.6152, -69, 0, 16.6319, -68, 0, 16.6471, -67, 0, 16.6624, -65, 0, 16.6776, -63, 0, 16.9308, 45, 0, 16.9645, 50, 0, 16.9476, 49, 0, 16.9813, 50, 0, 16.9996, 50, 0);
c.addObject(new GameHealth(), 0.8, 0, 0);
c.addObject(new SnowPile(BB.SMALL), 16.88, -50, 0);
c = _curve(s, new Vector(0, 0, 1000), new Vector(600, -300, 2000), new Vector(200, -1000, 3000), 300, Course.OPEN, drawStyles.generic);
c.addObject(new GameLetter(3), 17.4427, 0, 0);
c.addObject(new SnowPile(BB.TALL), 17.4427, 45, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 17.5658, -31, 0, 17.5919, -32, 0, 17.6179, -32, 0, 17.6418, -31, 0, 17.691, -30, 0, 17.6676, -31, 0);
c = _curve(s, new Vector(0, 0, 1000), new Vector(600, -300, 2000), new Vector(200, -1500, 3000), 150, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 18.9252, 2, 0, 18.9472, 1, 0, 18.9688, 0, 0, 18.9901, -1, 0);
c = _curve(s, new Vector(400, -1000, 1500), new Vector(600, 0, 2000), new Vector(2000, -1000, 3500), 150, Course.CLOSED, drawStyles.generic);
c.addObject(new GameHealth(), 0.7024, -40, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 19.0099, 8, 0, 19.0391, 48, 0, 19.068, 77, 0, 19.0997, -255, 0, 19.1327, -227, 0, 19.1653, -201, 0, 19.1845, -186, 0, 19.2199, -158, 0, 19.2578, -128, 0, 19.2996, -95, 0, 19.3455, -60, 0, 19.3934, -27, 0, 19.4658, -15, 0, 19.7369, -51, 0, 19.7592, -67, 0, 19.781, -83, 0, 19.8022, -98, 0);
c.addObject(new GameBoostPad(), 19.8607, -101, 0);
c = _curve(s, new Vector(400, -1000, 1500), new Vector(600, -1500, 2000), new Vector(2000, -1000, 3500), 150, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 20.2006, 89, 0, 20.2196, -262, 0, 20.2387, -247, 0, 20.2587, -228, 0, 20.2779, -210, 0, 20.2994, -191, 0, 20.3183, -174, 0, 20.3373, -166, 0, 20.3564, -161, 0, 20.3758, -159, 0, 20.3967, -157, 0, 20.945, 33, 0, 20.9575, 20, 0, 20.9699, 4, 0, 20.9806, -12, 0, 20.9913, -25, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 20.4168, -156, 0, 20.4384, -155, 0, 20.4602, -155, 0);
c.addObject(new GameLetter(4), 20.504, -154, 0);
c.addObject(new GameMagnet(), 3.89, 0, 0);
c = _line(s, new Vector(600, 2500, 6500), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GameCheckPoint(25), 0.041, 0, 200);
c.addObject(new GameCargo(), 4, 0, 0);
c.addObject(new GameBoostPad(), 21.079, -60, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 21.1148, -58, 0, 21.1259, -56, 0, 21.1374, -55, 0, 21.1479, -54, 0, 21.1571, -52, 0, 21.1658, -51, 0, 21.2529, 0, 0, 21.2609, 15, 0, 21.2689, 30, 0, 21.2767, 43, 0, 21.2846, 50, 0, 21.292, 53, 0, 21.2997, 54, 0, 21.3948, -13, 0, 21.4024, -28, 0, 21.4095, -41, 0, 21.4165, -53, 0, 21.4234, -64, 0, 21.4306, -69, 0, 21.4372, -71, 0);
c.addObject(new GameLetter(5), 21.3228, 52, 0);
c.addObject(new RockPile(BB.SMALL), 21.4012, 45, 0);
c.addObject(new GameBoostPad(), 21.4565, -71, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 21.5364, -30, 0, 21.544, -30, 0, 21.5516, -30, 0, 21.5592, -20, 0, 21.5668, -10, 0, 21.6538, 10, 0, 21.6612, 20, 0, 21.6693, 30, 0, 21.7371, 60, 0, 21.746, 60, 0, 21.7542, 60, 0, 21.7617, 60, 0, 21.7703, 60, 0, 21.7796, 60, 0, 21.7894, 60, 0, 21.7989, 60, 0, 21.9802, -19, 0, 21.9967, -18, 0);
c = _line(s, new Vector(0, 2000, 4500), 300, Course.OPEN, drawStyles.generic);
c.addObject(new GameBoostPad(), 0.05, -45, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 22.0175, -20, 0, 29.109427916011, -45, 0, 29.1287790994471, -45, 0, 29.1483365062972, -45, 0, 29.1680785751297, -45, 0, 29.1879850475903, -45, 0, 29.4158008550965, 45, 0, 29.4544938657695, 45, 0, 29.4958008550965, 45, 0, 29.6091349723901, 42, 0, 29.6406090913331, 39, 0, 29.6723888648254, 36, 0, 29.7044336483208, 30, 0, 29.7367053367365, 20, 0);
c = _curve(s, new Vector(0, 0, 500), new Vector(-1000, 0, 1000), new Vector(-1500, 0, 1500), 200, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 23.3531, -44, 0, 23.4013, -47, 0, 23.4487, -49, 0, 23.4966, -43, 0, 23.5418, -32, 0, 23.5862, -20, 0, 23.6304, -6, 0, 23.6738, 8, 0, 23.7132, 20, 0, 23.7516, 31, 0, 23.7884, 42, 0, 23.8258, 53, 0);
c = _curve(s, new Vector(-500, 0, 500), new Vector(-500, 0, 1000), new Vector(0, 0, 2000), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GameBoostPad(), 24.3155, 64, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 24.4069, 72, 0, 24.3776, 73, 0, 24.4359, 71, 0, 24.4646, 69, 0, 24.493, 68, 0, 24.5211, 67, 0, 24.5515, 66, 0, 24.5815, 65, 0, 24.611, 63, 0, 24.6395, 62, 0, 24.6683, 61, 0, 24.6962, 60, 0, 24.7236, 58, 0, 24.9203, -5, 0, 24.9466, -6, 0, 24.9708, -6, 0, 24.9938, -6, 0);
c = _curve(s, new Vector(500, 0, 500), new Vector(1000, 0, 1000), new Vector(1000, -500, 2000), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GameLetter(6), 23.9234, -79, 0);
c = _line(s, new Vector(0, 0, 50000), 300, Course.OPEN, drawStyles.generic);
c.addObject(new GameFinishLine(), 0.01, 0, 200);
var o = ((Tracks[1] = new GameLevel()));
o.addBackground(new Background("BG Bedrock Dusk", 600, 600, 32000));
o.addRecord(BB.WILMA, 86.2);
o.addRecord(BB.BAMBAM, 94.9);
o.addRecord(BB.BETTY, 105);
o.courseColor = new RGB(7973339);
o.fogColor = new RGB(681323);
o.outsideColor = new RGB(16710896);
o.outsideFogColor = new RGB(16707012);
o.fogNear = 300;
o.fogFar = 4500;
o.startTime = 25;
var c;
var s;
o.course = (s = new Course(new Vector(0, 0, 0)));
c = _curve(s, new Vector(0, -500, 1250), new Vector(-500, -500, 2000), new Vector(-1000, 1000, 4000), 150, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [], true, 1.3936, -63, 0, 1.419, -70, 0, 1.4483, -71, 0, 1.4727, -69, 0, 1.4987, -77, 0);
c.addCluster(RockPile, [BB.SMALL], true, 1.44, 80, 0, 1.45, 60, 0, 1.46, 40, 0, 1.47, 20, 0, 1.48, 0, 0);
c.addObject(new SnowPile(BB.TALL), 1.6844, -79, 0);
c.addCluster(GamePoint, [], true, 1.8124, 85, 0, 1.8291, 87, 0, 1.8458, 88, 0, 1.8621, -270, 0, 1.8796, 87, 0);
c.addCluster(SnowPile, [BB.TALL], true, 1.82, -80, 0, 1.83, -60, 0, 1.84, -40, 0, 1.85, -20, 0, 1.86, 0, 0, 1.865, 20, 0);
c.addObject(PalmTree(BB.TALL), 1.9912, 77, 0);
c = _curve(s, new Vector(-1000, 1000, 2000), new Vector(0, 1000, 3000), new Vector(500, 0, 4000), 175, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [], true, 2.1051, 16, 0, 2.1209, -13, 0, 2.137, -27, 0, 2.1535, -32, 0, 2.1934, -30, 0);
c.addCluster(SnowPile, [BB.TALL], true, 1.1535, -80, 0, 1.1535, 0, 0, 1.1535, 20, 0, 1.1535, 40, 0, 1.1535, 60, 0, 1.1535, 80, 0);
c.addCluster(GamePoint, [], true, 2.5283, 45, 0, 2.5542, 45, 0, 2.5806, 45, 0, 2.6096, 45, 0, 2.6391, 45, 0);
c.addCluster(SnowPile, [BB.TALL], true, 1.5806, 90, 0, 1.5806, 0, 0, 1.5806, -20, 0, 1.5806, -40, 0, 1.5806, -60, 0, 1.5806, -80, 0);
c.addCluster(GamePoint, [], true, 2.982, 0, 0, 2.9977, 0, 0, 2.9547, 0, 0);
c.addCluster(RockPile, [BB.TALL], true, 1.9999, 90, 0, 1.9999, -90, 0);
c = _curve(s, new Vector(500, 1000, 1000), new Vector(0, 1500, 3000), new Vector(500, 0, 4000), 125, Course.OPEN, drawStyles.generic);
c.addObject(new GameBoostPad(), 3.2, -48, 0);
c.addCluster(SnowPile, [BB.TALL], true, 3.4, 0, 0, 3.41, 0, 0, 3.42, 0, 0, 3.43, 0, 0, 3.44, 0, 0, 3.45, 0, 0, 3.46, 0, 0);
c.addCluster(GamePoint, [], true, 3.41, -79, 0, 3.42, -84, 0, 3.43, -82, 0, 3.44, -79, 0, 3.45, -71, 0);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 3.41, 79, 0, 3.42, 84, 0, 3.43, 82, 0, 3.44, 79, 0, 3.45, 71, 0);
c.addObject(new RockPile(BB.SMALL), 3.62, -70, 0);
c.addObject(new RockPile(BB.SMALL), 3.62, 70, 0);
c.addCluster(SnowPile, [BB.TALL], true, 3.82, 0, 0, 3.83, 0, 0, 3.84, 0, 0, 3.85, 0, 0, 3.86, 0, 0, 3.87, 0, 0, 3.88, 0, 0);
c.addCluster(GamePoint, [], true, 3.81, 79, 0, 3.83, 84, 0, 3.85, 82, 0, 3.87, 79, 0, 3.89, 71, 0);
c.addObject(new GameLetter(0), 3.94, -85, 0);
c = _curve(s, new Vector(500, 1000, 1000), new Vector(-1400, -500, 1500), new Vector(100, 0, 2500), 400, Course.OPEN, drawStyles.generic);
c.addCluster(SnowPile, [BB.TALL], true, 4.5335, 5, 0, 4.6511, 7, 0, 4.8397, 14, 0);
c.addCluster(GamePoint, [], true, 3.65, 79, 0, 3.67, 84, 0, 3.69, 82, 0, 3.71, 79, 0, 3.73, 71, 0, 3.75, 71, 0, 3.77, 71, 0, 3.79, 71, 0);
c = _curve(s, new Vector(100, 0, 1000), new Vector(100, -500, 3000), new Vector(-1500, 0, 4000), 400, Course.CLOSED, drawStyles.generic);
c.addCluster(SnowPile, [BB.TALL], true, 5.02, 120, 0, 5.02, -120, 0);
c.addCluster(RockPile, [BB.SMALL], true, 5.06, 30, 0, 5.03, 15, 0, 5.01, 0, 0, 5.03, -15, 0, 5.06, -30, 0);
c.addCluster(SnowPile, [BB.TALL], true, 5.1, 45, 0, 5.1, -45, 0);
c.addObject(new GameBoostPad(), 5.3, 0, 0);
c.addCluster(GamePoint, [], true, 3.78, 180, 0, 3.8, 180, 0, 3.82, 180, 0, 3.84, 180, 0, 3.86, 180, 0, 3.88, 180, 0, 3.9, 180, 0, 3.92, 180, 0);
c = _curve(s, new Vector(-1400, 500, 1000), new Vector(-1400, 1500, 3500), new Vector(0, 2500, 4500), 400, Course.CLOSED, drawStyles.generic);
c.addObject(new GameCheckPoint(45), 2.1716, 0, 200);
c.addObject(new GameBoostPad(), 6.5723, 95, 0);
c.addCluster(GamePoint, [], true, 6.1173, -60, 0, 6.1373, -60, 0, 6.1573, -60, 0, 6.1773, -60, 0, 6.1973, -60, 0, 6.3014, 60, 0, 6.3214, 60, 0, 6.3414, 60, 0, 6.3614, 60, 0, 6.3814, 60, 0, 6.8047, 89, 0, 6.8202, 88, 0, 6.8437, 87, 0, 6.8668, 86, 0, 6.8841, 85, 0);
c = _curve(s, new Vector(350, 250, 250), new Vector(350, 250, 1000), new Vector(350, -500, 1500), 200, Course.CLOSED, drawStyles.generic);
c.addCluster(RockPile, [BB.TALL], true, 7.3432, 50, 0, 7.3232, 70, 0, 7.3032, 90, 0, 7.3232, 110, 0, 7.3432, 130, 0);
c.addCluster(RockPile, [BB.TALL], true, 7.3432, -50, 0, 7.3232, -70, 0, 7.3032, -90, 0, 7.3232, -110, 0, 7.3432, -130, 0);
c.addCluster(GamePoint, [], true, 7.5339, 0, 0, 7.5979, 0, 0, 7.6328, 0, 0, 7.699, 0, 0, 7.7314, 0, 0);
c = _curve(s, new Vector(0, -750, 500), new Vector(0, -750, 1000), new Vector(0, 0, 1500), 200, Course.CLOSED, drawStyles.generic);
c.addObject(new GameMagnet(), 8, 0, 0);
c.addCluster(GamePoint, [], true, 8.1792, 63, 0, 8.2144, 72, 0, 8.2771, 89, 0, 8.3451, -253, 0, 8.3831, -243, 0, 8.455, -223, 0, 8.518, -205, 0, 8.5818, -196, 0, 8.6449, -193, 0, 8.1792, -63, 0, 8.2144, -72, 0, 8.2771, -89, 0, 8.3451, 253, 0, 8.3831, 243, 0, 8.455, 223, 0, 8.518, 205, 0, 8.5818, 196, 0, 8.6449, 193, 0);
c.addObject(new GameLetter(1), 8.9041, 180, 0);
c = _line(s, new Vector(0, -1000, 2000), 150, Course.OPEN, drawStyles.generic);
c.addObject(new GameBlades(), 9.99, 80, 0);
c.addObject(new GameBlades(), 9.99, -80, 0);
c.addObject(new GameBoostPad(), 9.7, 0, 0);
c = _line(s, new Vector(0, 1000, 100), 150, Course.OPEN, drawStyles.generic);
c = _curve(s, new Vector(0, 0, 2400), new Vector(-600, -800, 4400), new Vector(1000, -600, 5400), 230, Course.OPEN, drawStyles.generic);
c.addCluster(RockPile, [BB.SHORT], true, 11.62, 86, 0, 11.6, 60, 0, 11.58, 30, 0, 11.56, 0, 0, 11.58, -30, 0, 11.6, -60, 0, 11.62, -86, 0);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 11.6228, -108, -9, 11.6422, -120, -27, 11.6228, 108, -9, 11.6422, 120, -27, 11.9961, -256, 4, 11.9961, 256, 4);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 11.4953, 3, 0, 11.5306, -29, 0, 11.5525, -41, 0, 11.5626, -44, 0, 11.5846, -60, 0, 11.6068, -83, 0, 11.5306, 29, 0, 11.5525, 41, 0, 11.5626, 44, 0, 11.5846, 60, 0, 11.6068, 83, 0, 11.9214, 56, 0, 11.9495, 79, 0, 11.9616, 88, 0, 11.987, -260, 4, 11.9214, -56, 0, 11.9495, -79, 0, 11.9616, -88, 0, 11.987, 260, 4);
c.addCluster(RockPile, [BB.SHORT], true, 11.98, 86, 0, 11.96, 60, 0, 11.94, 30, 0, 11.92, 0, 0, 11.94, -30, 0, 11.96, -60, 0, 11.98, -86, 0);
c = _curve(s, new Vector(400, 200, 1000), new Vector(1800, 2000, 5000), new Vector(1900, 3000, 7000), 230, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [], true, 12.2, -3, 0, 12.215, -3, 0, 12.23, -3, 0, 12.245, -3, 0, 12.26, -3, 0);
c.addCluster(GamePoint, [], true, 12.313, 13, 0, 12.3193, 25, 0, 12.3274, 40, 0, 12.3416, 65, 0, 12.3486, 77, 0, 12.3615, 88, 0, 12.313, -13, 0, 12.3193, -25, 0, 12.3274, -40, 0, 12.3416, -65, 0, 12.3486, -77, 0, 12.3615, -88, 0);
c.addObject(new GameLaser(), 12.7334, 60, 0);
c.addCluster(SnowPile, [BB.TALL], true, 12.38, -50, 0, 12.36, -30, 0, 12.34, 0, 0, 12.36, 30, 0, 12.38, 50, 0);
c.addObject(new GameBoostPad(), 12.4778, 0, 0);
c = _curve(s, new Vector(0, 500, 1000), new Vector(200, 3500, 5000), new Vector(250, 4000, 5500), 200, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [], true, 13.116, -3, 0, 13.151, -44, 0, 13.1845, -88, 0, 13.216, 234, 0, 13.2372, 209, 0, 13.2572, 184, 0, 13.2791, 155, 0, 13.3062, 113, 0, 13.3245, 86, 0, 13.343, 59, 0, 13.3635, 31, 0, 13.3814, 8, 0);
c.addCluster(SnowPile, [BB.TALL], true, 13.116, -183, 0, 13.151, -223, 0, 13.1845, -268, 0, 13.216, 54, 0, 13.2372, 20, 0, 13.2572, 4, 0, 13.2791, -25, 0, 13.3062, -67, 0, 13.3245, -94, 0, 13.343, -121, 0, 13.3635, -149, 0, 13.3814, -172, 0);
c.addObject(new GameHealth(), 13.5, 60, 0);
c.addCluster(GamePoint, [], true, 14.5813, 32, 0, 14.5471, 37, 0, 14.605, 28, 0);
c.addCluster(RockPile, [BB.TALL], true, 14.5389, 90, 0, 14.5222, 0, 0);
c = _curve(s, new Vector(-250, 500, 500), new Vector(-800, 2000, 2000), new Vector(-800, 2000, 6000), 200, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [], true, 14.5813, 32, 0, 14.5471, 37, 0, 14.605, 28, 0, 14.7628, -51, 0, 14.7756, -56, 0, 14.7892, -57, 0, 14.7954, -56, 0, 14.8025, -54, 0);
c.addCluster(GamePoint, [], true, 15.1305, 55, 0, 15.1941, 58, 0, 15.2207, 57, 0, 15.2714, 55, 0);
c.addCluster(RockPile, [BB.TALL], true, 14.1305, 0, 0, 14.1941, -30, 0, 14.2207, -60, 0);
c.addObject(new GameLetter(2), 14.24, -110, 0);
c.addObject(new GameBoostPad(), 14.504, 44, 0);
c.addObject(new GameMagnet(), 1.997, 45, 0);
c = _curve(s, new Vector(0, 0, 500), new Vector(800, -1000, 1500), new Vector(450, 0, 3000), 150, Course.CLOSED, drawStyles.generic);
c.addCluster(GamePoint, [], true, 15.1305, 55, 0, 15.1941, 58, 0, 15.2207, 57, 0, 15.2714, 55, 0);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 15.6609, 180, 0, 15.6791, 180, 0, 15.7104, 180, 0, 15.7405, 180, 0, 15.768, 180, 0, 15.7827, 180, 0, 15.8096, 180, 0, 15.8374, 180, 0);
c.addCluster(RockPile, [BB.TALL], true, 14.1305, 0, 0, 14.1941, -30, 0, 14.2207, -60, 0);
c.addObject(new GameLetter(3), 15.5, -180, 0);
c = _curve(s, new Vector(0, 0, 2400), new Vector(-600, -800, 4400), new Vector(1000, -600, 5400), 230, Course.OPEN, drawStyles.generic);
c.addObject(new GameBoostPad(), 14.03, 0, 0);
c.addObject(new GameCheckPoint(35), 0.5, 0, 200);
c.addCluster(GamePoint, [], true, 1.8757, 26, 0, 1.8925, 28, 0, 1.9087, 30, 0, 1.9255, 32, 0, 1.9417, 34, 0, 1.9589, 36, 0);
c = _curve(s, new Vector(0, -1800, 1500), new Vector(0, -1600, 2500), new Vector(0, 800, 2700), 200, Course.OPEN, drawStyles.generic);
c.addCluster(GamePoint, [], true, 2.111, -60, 0, 2.134, -60, 0, 2.147, -60, 0, 2.16, -60, 0, 2.173, -60, 0);
c.addObject(new GameBoostPad(), 2.4551, -60, 0);
c.addObject(new GameLetter(4), 2.4, 80, 0);
c.addObject(new PalmTree(BB.TALL), 2.4551, 0, 0);
c.addObject(new GameBoostPad(), 2.4551, 60, 0);
c = _curve(s, new Vector(0, 0, 500), new Vector(500, -500, 1500), new Vector(750, -1500, 2000), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GameLasers(), 3.6, 0, 0);
c.addCluster(SnowPile, [BB.TALL], true, 3.7386, -90, 0, 3.888, -90, 0, 3.953, -90, 0, 3.7386, 90, 0, 3.888, 90, 0, 3.953, 90, 0);
c = _curve(s, new Vector(250, -1000, 500), new Vector(500, -1500, 1500), new Vector(500, -1800, 3000), 200, Course.OPEN, drawStyles.generic);
c.addCluster(SnowPile, [BB.TALL], true, 4.3019, 0, 0, 4.3899, 0, 0, 4.4777, 0, 0, 4.5637, 1, 0, 4.6465, 1, 0);
c = _curve(s, new Vector(2000, 0, 2000), new Vector(4000, 0, 3500), new Vector(4000, 1000, 5000), 150, Course.CLOSED, drawStyles.generic);
c.addObject(new GameBoostPad(), 5.1, 41, 0);
c.addObject(new GameLetter(5), 5, 41, 0);
c.addObject(new GameBoostPad(), 0.5, -135, 0);
c.addCluster(GamePoint, [], true, 5.7706, 0, 0, 5.7895, 0, 0, 5.8083, 0, 0, 5.8269, -1, 0, 5.8453, -1, 0, 5.8635, -2, 0);
c.addObject(new GameBoostPad(), 0.9, 0, 0);
c = _curve(s, new Vector(0, 2000, 3000), new Vector(4000, 0, 3500), new Vector(4000, 1000, 5000), 150, Course.OPEN, drawStyles.generic);
c.addObject(new GameBoostPad(), 6.2559, 60, 0);
c.addObject(new GameBoostPad(), 6.9307, -70, 0);
c.addCluster(GamePoint, [], true, 6.1789, 65, 0, 6.1928, 65, 0, 6.204, 65, 0, 6.2181, 64, 0, 6.2294, 63, 0, 6.3505, 59, 0, 6.3652, 59, 0, 6.3801, 59, 0, 6.3901, 59, 0, 6.4052, 58, 0, 6.5446, 40, 0, 6.555, 40, 0, 6.5707, 40, 0, 6.5863, 40, 0, 6.8657, -51, 0, 6.8857, -59, 0, 6.905, -62, 0, 6.9271, -65, 0);
c.addObject(new PalmTree(BB.TALL), 6.5289, 80, 0);
c = _curve(s, new Vector(0, 1000, 1500), new Vector(-4000, 0, 3000), new Vector(-4000, -500, 5000), 150, Course.OPEN, drawStyles.generic);
c.addObject(new PalmTree(BB.TALL), 7.2366, 0, 0);
c.addObject(new GameBoostPad(), 7.5617, -45, 0);
c.addObject(new GameLetter(6), 7.3813, -10, 0);
c.addObject(new RockPile(BB.SMALL), 7.8574, -90, 0);
c.addObject(new RockPile(BB.SMALL), 7.8774, -40, 0);
c.addObject(new RockPile(BB.SMALL), 7.8974, 10, 0);
c.addObject(new GameBoostPad(), 7.9078, 45, 0);
c = _line(s, new Vector(0, 0, 35000), 200, Course.OPEN, drawStyles.generic);
c.addObject(new GameBoostPad(), 8.1, -5, 0);
c.addObject(new GameFinishLine(), 0.15, 0, 200);
var o = ((Tracks[2] = new GameLevel()));
o.addBackground(new Background("BG Bedrock Night", 600, 600, 45000));
o.addRecord(BB.PEBBLES, 90.2);
o.addRecord(BB.SLATE, 108.9);
o.addRecord(BB.BETTY, 111);
o.courseColor = new RGB(163788);
o.courseLineColor = new RGB(16777215);
o.outsideColor = new RGB(215, 215, 235);
o.outsideFogColor = new RGB(160, 150, 200);
o.fogColor = new RGB(18031);
o.fogNear = 300;
o.fogFar = 2500;
o.startTime = 50;
o.openTextColor = 13421823 /* 0xCCCCFF */;
var c;
var s;
o.course = (s = new Course(new Vector(0, 0, 0)));
c = _line(s, new Vector(0, 0, 500), 150, Course.OPEN, drawStyles.generic, null, 1);
c = _curve(s, new Vector(0, 0, 1000), new Vector(0, -100, 1500), new Vector(0, 300, 2500), 150, Course.OPEN, drawStyles.generic, null, 1);
c.addObject(new GameBlades(), 1.6, 60, 0);
c.addObject(new GameLasers(), 1.6, -60, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 1.7011, 70, 0, 1.7346, 70, 0, 1.779, 70, 0, 1.8225, 70, 0, 1.8545, 70, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 1.7011, -70, 0, 1.7346, -70, 0, 1.779, -70, 0, 1.8225, -70, 0, 1.8545, -70, 0);
c = _curve(s, new Vector(0, 400, 1000), new Vector(0, 1200, 1500), new Vector(0, 1600, 2500), 150, Course.OPEN, drawStyles.generic, null, 1);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 2.1623, -59, 0, 2.1949, -35, 0, 2.2284, -10, 0, 2.2617, 12, 0, 2.296, 27, 0, 2.331, 32, 0, 2.3685, 44, 0, 2.4096, 52, 0, 2.436, 56, 0);
c.addObject(new GameLetter(0), 1.8229, -60, 0);
c = _curve(s, new Vector(0, 400, 1000), new Vector(1600, 1200, 1500), new Vector(1800, 1600, 2500), 150, Course.OPEN, drawStyles.generic, null, 1);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 3.0631, 29, 0, 3.096, 56, 0, 3.1325, 80, 0, 3.1576, -263, -1, 3.1953, -243, -4, 3.2209, -240, -14, 3.2472, -241, -15, 3.2782, -249, -5, 3.307, -266, 13, 3.336, 64, 18, 3.3622, 37, 0);
c.addCluster(SnowPile, [BB.TALL], true, 3.2209, -70, 0, 3.2209, 70, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 3.8685, 79, 0, 3.8971, -265, 6, 3.9338, -263, 6, 3.9623, 80, 11, 3.9882, 49, 0);
c = _curve(s, new Vector(200, 400, 1000), new Vector(-400, 0, 2000), new Vector(600, 625, 4500), 300, Course.OPEN, drawStyles.generic, null, 1);
c.addCluster(SnowPile, [BB.SMALL], true, 4.2831, 80, 0, 4.3162, 50, 0, 4.341, 20, 0, 4.3729, -10, 0, 4.3967, -40, 0, 4.4987, -70, 0, 4.5273, -50, 0, 4.5483, -30, 0, 4.5689, -10, 0, 4.5955, 10, 0, 4.6359, 30, 0, 4.6546, 50, 0, 4.679, 70, 0, 4.7836, 80, 0, 4.8004, 60, 0, 4.8172, 40, 0, 4.8333, 20, 0, 4.8506, 0, 0, 4.8673, -20, 0, 4.8778, -40, 0, 4.8929, -60, 0);
c.addObject(new GameLetter(1), 4.8778, 30, 0);
c = _line(s, new Vector(200, 125, 500), 300, Course.OPEN, drawStyles.generic, null, 0.5);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 5.2121, 0, 0, 5.3877, 5, 0, 5.5829, 9, 0, 5.7665, 11, 0);
c = _curve(s, new Vector(200, 0, 500), new Vector(-600, -1100, 2500), new Vector(-900, -1400, 3500), 300, Course.CLOSED, drawStyles.generic, null, 0.5);
c.addObject(new GameLaser(), 6.1, 0, 0);
c.addCluster(SnowPile, [BB.TALL], true, 6.2752, 0, 0, 6.2752, 180, 0, 6.4889, 20, 0, 6.4889, 0, 0, 6.4889, -20, 0, 6.4889, 180, 0, 6.6361, 0, 0, 6.6361, 180, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 6.4886, -94, 2, 6.5089, -97, 7, 6.528, -98, 9, 6.7871, -71, 36, 6.8104, -69, 42, 6.8337, -67, 48, 6.8754, -64, 56, 6.8992, -63, 60, 6.8565, -65, 53);
c.addObject(new GameBoostPad(), 6.7227, -70, 0);
c.addObject(new GameBoostPad(), 6.7227, 70, 0);
c = _curve(s, new Vector(0, -300, 1000), new Vector(0, 2400, 3000), new Vector(0, 2400, 6000), 300, Course.CLOSED, drawStyles.generic, null, 0.5);
c.addObject(new GameBoostPad(), 7.2968, -145, 0);
c.addCluster(SnowPile, [BB.TALL], true, 7.09, -180, 0, 7.06, -150, 0, 7.03, -120, 0, 7, -90, 0, 7.03, -60, 0, 7.06, -30, 0, 7.09, 0, 0, 7.3101, -90, 0, 7.2901, -60, 0, 7.2701, -30, 0, 7.2501, 0, 0, 7.2701, 30, 0, 7.2901, 60, 0, 7.3101, 90, 0, 7.2501, 180, 0, 7.3968, -90, 0, 7.4082, -90, 0, 7.4254, -90, 0, 7.4412, -90, 0, 7.4566, -90, 0, 7.4708, -90, 0, 7.3968, 90, 0, 7.4082, 90, 0, 7.4254, 90, 0, 7.4412, 90, 0, 7.4566, 90, 0, 7.4708, 90, 0, 7.4867, -163, 0, 7.8313, 0, 0, 7.8313, 180, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 7.278, 120, 0, 7.3043, 120, 0, 7.3169, 120, 0, 7.3292, 120, 0, 7.3526, 120, 0, 7.8078, 88, 0, 7.8157, 86, 0, 7.8235, 84, 0, 7.8311, 82, 0, 7.846, 78, 0);
c.addObject(new GameBoostPad(), 7.4412, 135, 0);
c.addObject(new GameLetter(2), 7.9727, -26, 0);
c = _line(s, new Vector(0, 450, 5000), 150, Course.OPEN, drawStyles.generic, null, 0.5);
c.addObject(new GameHealth(), 8.0421, -45, 0);
c.addObject(new GameMagnet(), 0.02, 0, 0);
c.addObject(new GameHealth(), 8.0421, 45, 0);
c.addObject(new GameBoostPad(), 8.12, 0, 0);
c.addObject(new GameBoostPad(), 8.16, -45, 0);
c.addObject(new GameBoostPad(), 8.16, 45, 0);
c.addObject(new GameCheckPoint(30), 8.5, 0, 300);
c.addObject(new GamePoint(GamePoint.HIGH_VALUE), 8.4206, 0, 0);
c = _curve(s, new Vector(0, -300, 1000), new Vector(0, 2400, 4000), new Vector(0, 2400, 6000), 125, Course.CLOSED, drawStyles.generic, null, 1);
c.addCluster(SnowPile, [BB.TALL], true, 9.1365, 0, 0, 9.1365, 120, 0, 9.1365, 240, 0, 9.3737, 40, 0, 9.3737, 160, 0, 9.3737, 280, 0, 9.5307, 80, 0, 9.5307, 200, 0, 9.5307, 320, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 9.6357, 0, 0, 9.6446, -20, 0, 9.6586, -41, 0, 9.6714, -59, 0, 9.6853, -78, 0, 9.6992, -90, 0, 9.6446, 20, 0, 9.6586, 41, 0, 9.6714, 59, 0, 9.6853, 78, 0, 9.6992, 90, 0, 9.6357, 180, 0, 9.6446, 160, 0, 9.6586, 140, 0, 9.6714, 120, 0, 9.6853, 100, 0, 9.6446, 200, 0, 9.6586, 220, 0, 9.6714, 240, 0, 9.6853, 260, 0, 9.7112, 90, 0, 9.8028, 70, 0, 9.8169, 50, 0, 9.8312, 30, 0, 9.8451, 0, 0, 9.8028, 110, 0, 9.8169, 130, 0, 9.8312, 150, 0, 9.8451, 180, 0, 9.7112, -90, 0, 9.8028, -70, 0, 9.8169, -50, 0, 9.8312, -30, 0, 9.8451, 0, 0, 9.8028, -110, 0, 9.8169, -130, 0, 9.8312, -150, 0);
c.addCluster(SnowPile, [BB.TALL], true, 9.6853, 180, 0, 9.6853, 0, 0, 9.8755, 0, 0, 9.8755, 180, 0, 9.9483, 60, 0, 9.9483, 240, 0);
c = _curve(s, new Vector(0, 0, 2000), new Vector(-1000, -1000, 4000), new Vector(-1500, -1000, 5000), 125, Course.CLOSED, drawStyles.generic, null, 2);
c.addObject(new GameMagnet(), 10.0839, 220, 0);
c.addCluster(SnowPile, [BB.TALL], true, 9.0878, 120, 0, 9.0878, -60, 0, 9.2533, 0, 0, 9.2533, 180, 0, 10.3366, 0, 0, 10.3637, 0, 0, 10.3945, 0, 0, 10.4234, 0, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 10.3366, -90, 0, 10.3637, -90, 0, 10.3945, -90, 0, 10.4234, -90, 0, 10.3366, 90, 0, 10.3637, 90, 0, 10.3945, 90, 0, 10.4234, 90, 0, 10.7645, -90, 0, 10.7945, -90, 0, 10.8245, -90, 0, 10.8545, -90, 0);
c.addObject(new GameBoostPad(30), 10.5202, 0, 0);
c = _curve(s, new Vector(-500, 0, 1000), new Vector(-1500, 1000, 3000), new Vector(-1500, 1000, 4000), 125, Course.CLOSED, drawStyles.generic, null, 1);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 11.2063, -230, -18, 11.2303, -212, -41, 11.2472, -199, -60, 11.2707, -180, -75, 11.2952, -156, -50, 11.316, -130, -17, 11.332, -105, -2, 11.3543, -72, -3, 11.3778, -43, -23, 11.3916, -29, -38);
c.addCluster(SnowPile, [BB.TALL], true, 11.4335, -90, 0, 11.4335, -110, 0, 11.4335, -130, 0, 11.4335, -150, 0, 11.4335, -70, 0, 11.4335, -50, 0, 11.4335, -30, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 11.8, 0, 0, 11.85, 0, 0, 11.9, 0, 0);
c.addObject(new GameLetter(3), 12.3652, 0, 0);
c = _line(s, new Vector(0, 0, 5000), 250, Course.OPEN, drawStyles.generic, null, 1);
c.addObject(new GameBoostPad(), 12.0657, 70, 0);
c.addObject(new GameCheckPoint(30), 12.3652, 0, 250);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 12.1, 110, 0, 12.14, 110, 0, 12.18, 110, 0, 12.22, 110, 0, 12.26, 110, 0, 12.3, 110, 0, 12.34, 110, 0, 12.38, 110, 0, 12.42, 110, 0, 12.46, 110, 0, 12.5, 110, 0, 12.54, 110, 0, 12.58, 110, 0, 12.62, 110, 0, 12.66, 110, 0, 12.7, 110, 0, 12.74, 110, 0, 12.78, 110, 0, 12.1, -110, 0, 12.14, -110, 0, 12.18, -110, 0, 12.22, -110, 0, 12.26, -110, 0, 12.3, -110, 0, 12.34, -110, 0, 12.38, -110, 0, 12.42, -110, 0, 12.46, -110, 0, 12.5, -110, 0, 12.54, -110, 0, 12.58, -110, 0, 12.62, -110, 0, 12.66, -110, 0, 12.7, -110, 0, 12.74, -110, 0, 12.78, -110, 0);
c = _curve(s, new Vector(0, 0, 1000), new Vector(1500, 1000, 2000), new Vector(500, 1000, 4000), 250, Course.CLOSED, drawStyles.generic, null, 1);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 13.106, 71, 0, 13.1306, 84, 0, 13.163, -259, 0, 13.1991, -241, 0, 13.2212, -230, 0, 13.2558, -213, 0, 13.2765, -202, 0, 13.3081, -184, 0, 13.3259, -173, 0);
c.addCluster(SnowPile, [BB.TALL], true, 9.27, -60, 0, 9.3, -30, 0, 9.33, 0, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 13.5698, 0, 0, 13.5943, 15, 0, 13.6101, 26, 0, 13.6338, 41, 0, 13.6552, 54, 0, 13.6784, 70, 0, 13.7023, 86, 0);
c.addCluster(SnowPile, [BB.TALL], true, 9.6784, -180, 0, 9.6784, -150, 0, 9.6784, -120, 0, 9.6784, -60, 0, 9.6784, -30, 0, 9.6784, 0, 0);
c.addObject(new GameBoostPad(), 13.9334, -90, 0);
c.addObject(new GameBoostPad(), 13.7023, -90, 0);
c.addCluster(SnowPile, [BB.TALL], true, 9.91, -135, 0, 9.91, -45, 0);
c = _curve(s, new Vector(-1000, 0, 2000), new Vector(1500, 0, 3000), new Vector(450, 900, 4500), 250, Course.CLOSED, drawStyles.generic, null, 1);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 14.1358, -48, 0, 14.1545, -31, 0, 14.1732, -15, 0, 14.1941, 2, 0, 14.2135, 17, 0, 14.2353, 33, 0, 14.2556, 48, 0, 14.2777, 64, 0, 14.3005, 80, 0);
c.addCluster(SnowPile, [BB.TALL], true, 14.5546, 67, 0, 14.572, 53, 0, 14.5897, 39, 0, 14.6166, 18, 0, 14.6348, 5, 0, 14.661, -14, 0, 14.6785, -26, 0, 14.705, -44, 0, 14.7492, -73, 0);
c.addObject(new GameLetter(4), 14.9252, 10, 0);
c = _curve(s, new Vector(150, 300, 500), new Vector(0, 2400, 3000), new Vector(0, 2400, 5000), 125, Course.OPEN, drawStyles.generic, null, 1);
c.addObject(new GameBoostPad(), 15.0925, 63, 0);
c.addCluster(RockPile, [BB.SMALL], true, 15.4032, -80, 0, 15.4232, -50, 0, 15.4232, 50, 0, 15.4032, 80, 0, 15.561, 0, 0, 15.5758, 25, 0, 15.5914, 50, 0, 15.606, 75, 0, 15.5758, -25, 0, 15.5914, -50, 0, 15.606, -75, 0);
c.addObject(new GameBoostPad(), 15.7126, 0, 0);
c.addObject(new GameMagnet(), 15.69, 0, 0);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 15.531, 0, 0, 15.5458, 25, 0, 15.5614, 50, 0, 15.576, 75, 0, 15.5458, -25, 0, 15.5614, -50, 0, 15.576, -75, 0, 15.7841, -84, 0, 15.7975, -103, -3, 15.8282, -114, -12, 15.8134, -115, -13, 15.8465, -98, -1, 15.7841, 84, 0, 15.7975, 103, -3, 15.8282, 114, -12, 15.8134, 115, -13, 15.8465, 98, -1, 15.9385, 97, 0, 15.9542, 97, 0, 15.9739, 97, 0, 15.9385, -97, 0, 15.9542, -97, 0, 15.9739, -97, 0);
c = _line(s, new Vector(0, 0, 2500), 250, Course.OPEN, drawStyles.generic, null, 1);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 16.2069, -95, -1, 16.2433, -112, -5, 16.2801, -118, -7, 16.3293, -113, 4, 16.3666, -98, 19, 16.2069, 95, -1, 16.2433, 112, -5, 16.2801, 118, -7, 16.3293, 113, 4, 16.3666, 98, 19);
c.addCluster(RockPile, [BB.SMALL], true, 16.6478, 75, 0, 16.6106, 75, 0, 16.6886, 75, 0, 16.6478, -75, 0, 16.6106, -75, 0, 16.6886, -75, 0);
c = _curve(s, new Vector(0, 0, 1500), new Vector(1500, 1000, 2000), new Vector(500, 1000, 4000), 250, Course.CLOSED, drawStyles.generic, null, 1);
c.addCluster(RockPile, [BB.SMALL], false, 17.0312, 0, 0, 17.0412, 20, 0, 17.0512, 40, 0, 17.0412, -20, 0, 17.0512, -40, 0, 17.9464, -90, 0, 17.962, -60, 0, 17.9772, -30, 0, 17.9924, 0, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 17.4006, -60, 0, 17.4523, -30, 0, 17.5277, 0, 0, 17.5722, 30, 0, 17.5975, 47, 0, 17.4006, 61, 0, 17.4523, 30, 0, 17.5722, -30, 0, 17.5975, -60, 0);
c.addObject(new GameLetter(5), 17.8744, -47, 0);
c = _line(s, new Vector(0, 0, 2500), 150, Course.OPEN, drawStyles.generic, null, 1);
c.addCluster(RockPile, [BB.TALL], true, 18.9228, -90, 0, 18.9228, 90, 0, 18.2478, 60, 0, 18.2278, 30, 0, 18.2078, 0, 0, 18.1678, -30, 0, 18.1278, -60, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 18.167, -245, -23, 18.2062, -240, -33, 18.2478, -241, -30, 18.2874, -248, -16, 18.6075, -88, 0, 18.651, -107, -7, 18.6876, -115, -16, 18.7312, -115, -17, 18.7679, -108, -8, 18.8143, -86, 0);
c = _curve(s, new Vector(0, 0, 2500), new Vector(2500, -1500, 3000), new Vector(3000, -2500, 4000), 125, Course.OPEN, drawStyles.generic, null, 1);
c.addCluster(RockPile, [BB.TALL], true, 19.1315, 82, 0, 19.1315, -82, 0);
c.addCluster(RockPile, [BB.TALL], false, 19.5, 90, -25, 19.5, -90, -25);
c = _curve(s, new Vector(500, -1000, 2500), new Vector(1000, 0, 3000), new Vector(500, -500, 5500), 125, Course.OPEN, drawStyles.generic, null, 1.5);
c.addObject(new GameCheckPoint(30), 20.01, 0, 250);
c.addObject(new GameBoostPad(), 20.1, -80, 0);
c.addObject(new GameBoostPad(), 20.1, 80, 0);
c.addCluster(SnowPile, [BB.TALL], true, 20.3, -70, 0, 20.3, 70, 0, 20.8599, 90, 0);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 20.3, -100, 0, 20.3, 100, 0);
c.addCluster(GamePoint, [GamePoint.LOW_VALUE], true, 20.5027, 80, -1, 20.5225, 76, -1, 20.5457, 85, 0, 20.5852, 88, 1, 20.8234, -75, -2, 20.8072, -77, -1, 20.7906, -75, -2, 20.7681, -60, -6, 20.8394, -74, -2, 20.8599, -90, 0, 20.875, -89, 1);
c.addObject(new GameLetter(6), 20.4766, 64, 0);
c.addObject(new GameBoostPad(), 20.7507, -64, 0);
c.addObject(new GameLaser(), 20.7307, -64, 0);
c = _curve(s, new Vector(-500, -1000, 2500), new Vector(1000, 0, 3000), new Vector(0, -500, 5500), 125, Course.CLOSED, drawStyles.generic, null, 1.5);
c.addCluster(SnowPile, [BB.TALL], true, 21.0372, -150, 0, 21.0372, -130, 0, 21.0372, -110, 0, 21.0372, -90, 0, 21.0372, -70, 0, 21.0372, -50, 0, 21.0372, -30, 0, 21.3616, -70, 0, 21.3616, -50, 0, 21.3616, -30, 0, 21.3616, 30, 0, 21.3616, 50, 0, 21.3616, 70, 0, 21.6749, -180, 0, 21.6749, -160, 0, 21.6749, -200, 0, 21.8125, 0, 0, 21.8125, 20, 0, 21.8125, -20, 0, 21.9655, 90, 0, 21.9655, 180, 0, 21.9655, 270, 0, 21.9655, 135, 0, 21.9655, 225, 0);
c = _curve(s, new Vector(-1000, -500, 2500), new Vector(-1000, 0, 3000), new Vector(0, -600, 5500), 125, Course.OPEN, drawStyles.generic, null, 1.5);
c.addObject(new GameCargo(), 4, 0, 0);
c.addCluster(SnowPile, [BB.TALL], true, 21.1146, 0, 0, 21.1146, 60, 0, 21.1146, -60, 0, 21.1146, -30, 0, 21.1146, 30, 0, 21.2657, 0, 0, 21.2657, -45, 0, 21.2657, 45, 0, 21.4937, -60, 0, 21.4937, 60, 0, 21.7477, -20, 0, 21.7477, 20, 0, 22.9324, 5, 0, 22.9466, -3, 0, 22.9611, -5, 0);
c.addCluster(GamePoint, [GamePoint.HIGH_VALUE], true, 22.9324, 80, 0, 22.9466, 80, 0, 22.9611, 80, 0);
c.addObject(new GameBoostPad(), 20.9466, 80, 0);
c = _curve(s, new Vector(1000, -600, 1500), new Vector(1000, 0, 4000), new Vector(2000, 1000, 6000), 250, Course.OPEN, drawStyles.generic, null, 1);
c.addObject(new GameBoostPad(), 23.245, 39, 0);
c.addObject(new GameFinishLine(), 0.5, 0, 200);
c = _curve(s, new Vector(0, 500, 1000), new Vector(0, 0, 2000), new Vector(0, 500, 4000), 150, Course.OPEN, drawStyles.generic, null, 1);
c = _curve(s, new Vector(0, 1000, 2000), new Vector(-1500, 1000, 4000), new Vector(-2000, 1000, 6000), 150, Course.OPEN, drawStyles.generic, null, 1);
c = _line(s, new Vector(0, 0, 25000), 150, Course.OPEN, drawStyles.generic, null, 1);
var EndScreenTime = 5000;
_global.formatTime = function (value) {
var _local1 = Math.floor(value % 60);
return((((Math.floor(value / 60) + ":") + ((_local1 < 10) ? ("0" + _local1) : (_local1))) + ".") + Math.floor((value % 1) * 10));
};
var gameSled;
var currentLevel;
var currentCharacter;
var KeysEnabled = true;
var updateGame = null;
var countdownTime = 9;
var countdownStartAt = 5;
var countdownSeconds = 0;
var cameraOffset;
var dinosaur;
var rootSoundControl = new Sound(_root);
var GameInterval;
var gameAudio = new Sound(this);
var gameTrack;
var gameScore;
var gameLives;
Frame 5
function StartDebugGame() {
gotoAndPlay (10);
}
function forceExternalBreak() {
b = 2;
}
function onLoadDone() {
}
function onStart() {
Flash.setTimeout(function (o) {
_root.startNewGame();
}, 0, _root);
gotoAndStop ("game");
}
localEnv = (this == _level0) && (_url.indexOf("file:///") != -1);
if (this == _level0) {
Flash.setTimeout(function (o) {
_root.startNewGame();
}, 0, _root);
gotoAndStop ("game");
} else {
stop();
}
stop();
Frame 10
play();
Frame 11
if (getBytesLoaded() >= getBytesTotal()) {
play();
} else {
prevFrame();
}
Instance of Symbol 362 MovieClip [Bobsled Game Stage] "gameStage" in Frame 14
onClipEvent (unload) {
_root.stopGameRun();
}
Symbol 18 Button
on (release) {
recorderNode.enabled = false;
nextFrame();
_rotation = -180;
}
Symbol 20 MovieClip [RecorderNode] Frame 1
stop();
Symbol 34 MovieClip Frame 1
stop();
Symbol 34 MovieClip Frame 9
stop();
Symbol 34 MovieClip Frame 13
stop();
Symbol 42 MovieClip Frame 1
stop();
Symbol 61 MovieClip Frame 1
stop();
Symbol 65 MovieClip [ScoreBoard Rank Box] Frame 1
stop();
Symbol 697 MovieClip [__Packages.PerformanceTest] Frame 0
class PerformanceTest
{
var remainingLoops, onComplete, flashMajorVersion, flashMinorVersion, intervalID, log, processor;
function PerformanceTest (itterations, onComplete) {
if (itterations) {
loops = itterations;
}
remainingLoops = loops;
if (onComplete) {
this.onComplete = onComplete;
}
var _local2 = System.capabilities.version.substr(4).split(",");
flashMajorVersion = Number(_local2[0]);
flashMinorVersion = Number(_local2[2]);
complete = false;
intervalID = setInterval(function (o) {
o.test();
}, 0, this);
}
function test() {
if (remainingLoops <= 0) {
finalize();
clearInterval(intervalID);
return(undefined);
}
remainingLoops--;
var _local4 = getTimer();
var _local3;
var _local2 = 0;
while (_local2 < 6400) {
_local3 = {};
_local2++;
}
time = time + (getTimer() - _local4);
}
function finalize() {
score = Math.floor((loops / time) * 10000);
if (flashMajorVersion >= 7) {
log = Math.log(score * 0.015);
} else {
log = Math.log(score * 0.023);
}
processor = log * 1000;
complete = true;
onComplete(this);
}
function toString() {
if (score) {
return((((((((("Loops:\t" + loops) + "\nFlash Version: \t") + System.capabilities.version) + "\nTotal Time:\t") + time) + "\nScore: \t") + score) + "\nProcessor: \t") + processor);
}
return("Test In Process.");
}
var score = 0;
var time = 0;
var loops = 20;
var complete = false;
}
Symbol 698 MovieClip [__Packages.Vector] Frame 0
class Vector
{
function Vector (x, y, z) {
if ((x || (y)) || (z)) {
this.x = Number(x);
this.y = Number(y);
this.z = Number(z);
}
}
function loc(x, y, z) {
this.x = x;
this.y = y;
this.z = z;
}
function copy() {
return(new Vector(x, y, z));
}
function get magnitude() {
return(Math.sqrt(((x * x) + (y * y)) + (z * z)));
}
function get length() {
return(Math.sqrt(((x * x) + (y * y)) + (z * z)));
}
function set length(newLength) {
var _local2 = newLength / Math.sqrt(((x * x) + (y * y)) + (z * z));
x = x * _local2;
y = y * _local2;
z = z * _local2;
//return(length);
}
function dot(v) {
return(Math.sqrt(((x * v.x) + (y * v.y)) + (z * v.z)));
}
function cross(v) {
return(new Vector((y * v.z) - (z * v.y), (z * v.x) - (x * v.z), (x * v.y) - (y * v.x)));
}
function normalize() {
var _local2 = Math.sqrt(((x * x) + (y * y)) + (z * z));
x = x / _local2;
y = y / _local2;
z = z / _local2;
}
function normalizeTo() {
var _local2 = Math.sqrt(((x * x) + (y * y)) + (z * z));
x = x / _local2;
y = y / _local2;
z = z / _local2;
}
function getNormalized() {
var _local2 = Math.sqrt(((x * x) + (y * y)) + (z * z));
return(new Vector(x / _local2, y / _local2, z / _local2));
}
function multiply(scalar) {
x = x * scalar;
y = y * scalar;
z = z * scalar;
}
function divide(scalar) {
x = x / scalar;
y = y / scalar;
z = z / scalar;
}
function reverse() {
x = x * -1;
y = y * -1;
z = z * -1;
}
function toString() {
return(((((("Vector(" + x) + ",") + y) + ",") + z) + ")");
}
var x = 0;
var y = 0;
var z = 0;
}
Symbol 699 MovieClip [__Packages.RGB] Frame 0
class RGB
{
function RGB (r, g, b) {
switch (arguments.length) {
case 3 :
this.r = r;
this.g = g;
this.b = b;
break;
case 0 :
break;
case 1 :
hex(r);
}
}
function hex(i) {
r = i >>> 16;
g = (i - (r << 16)) >>> 8;
b = i % 256;
}
function toHex() {
var _local4 = ((r << 16) + (g << 8)) + b;
var _local5 = "";
var _local3 = 20;
while (_local3 > -1) {
var _local2 = _local4 >>> _local3;
_local5 = _local5 + ((_local2 > 9) ? (chr(55 + _local2)) : (_local2));
_local4 = _local4 - (_local2 << _local3);
_local3 = _local3 - 4;
}
return("0x" + _local5);
}
function valueOf() {
return(((r << 16) + (g << 8)) + b);
}
function toString() {
return(((((("RGB(" + r) + ",") + g) + ",") + b) + ")");
}
var r = 0;
var g = 0;
var b = 0;
}
Symbol 700 MovieClip [__Packages.BB] Frame 0
class BB
{
var target, z, uniqueID, depthGroup;
function BB () {
}
static function calculateDepth(z, uniqueID, depthGroup) {
return(((2130706432 - (Math.floor(z) * 4095)) + (Number(depthGroup) * 1024)) + uniqueID);
}
function updateDepth() {
target.swapDepths(calculateDepth(z, uniqueID, depthGroup));
}
static var MAGNETIC_CHARGE = 16;
static var DESTROYABLE = 32;
static var ALL = 16776960;
static var COLLECTABLE = 65536;
static var MAGNETS = 65792;
static var BLADES = 66048;
static var LASERS = 66560;
static var POINTS = 67600;
static var HEALTH = 69648;
static var LETTER = 69904;
static var NODE = 131072;
static var OBSTACLE = 262176;
static var ELEMENT = 524288;
static var SMALL = 256;
static var SHORT = 256;
static var TALL = 512;
static var FRED = 1;
static var BARNEY = 2;
static var DINO = 3;
static var SLATE = 4;
static var WILMA = 5;
static var BETTY = 6;
static var PEBBLES = 7;
static var BAMBAM = 8;
static var ALL_LETTERS = 127;
}
Symbol 701 MovieClip [__Packages.GameLevel] Frame 0
class GameLevel
{
var backgrounds, records;
function GameLevel () {
backgrounds = [];
records = [];
}
function addRecord(name, time) {
records.push({name:name, time:time});
}
function addBackground(bg) {
backgrounds.push(bg);
}
var startTime = 40;
var fogAmount = 1;
var outsideMaxSlope = 0;
var outsideMinSlope = 0;
var openTextColor = 26367;
var containedTextColor = 6388617;
var bonusTime = 100;
var bonusPoints = 100000;
}
Symbol 702 MovieClip [__Packages.Course] Frame 0
class Course extends Array
{
var lastVector, defaultColor, outsideColor, push, flipped;
function Course (startPoint) {
super();
lastVector = startPoint;
defaultColor = new RGB(255, 255, 255);
outsideColor = new RGB(255, 255, 255);
}
function setOutsideColor(rgb) {
outsideColor.r = rgb.r;
outsideColor.g = rgb.g;
outsideColor.b = rgb.b;
}
function setDefaultColor(color) {
defaultColor.r = color.r;
defaultColor.g = color.g;
defaultColor.b = color.b;
}
function replaceDefaultColor(color) {
defaultColor = color;
}
function appendCurve(cp0, cp1, p1, radius, propFlags, color, style) {
var _local2 = new CourseBezier(lastVector, cp0, cp1, p1);
push(_local2);
lastVector = p1;
if (style) {
_local2.style = style;
}
_local2.color = (color ? (color) : (defaultColor));
_local2.radius = radius;
_local2.arcClosed = propFlags & CLOSED;
return(_local2);
}
function appendLine(p1, radius, propFlags, color, style) {
var _local2 = new CourseLine(lastVector, p1);
push(_local2);
lastVector = p1;
if (style) {
_local2.style = style;
}
_local2.color = (color ? (color) : (defaultColor));
_local2.radius = radius;
_local2.arcClosed = propFlags & CLOSED;
return(_local2);
}
function getCourseSegment(world, i) {
var _local2 = this[Math.floor(i)];
var _local3 = this[Math.floor(i) - 1];
var _local6 = getPoint(i);
if (_local3) {
var _local7 = _local3.radius + ((_local2.radius - _local3.radius) * (i % 1));
var _local4 = new CourseSector(world, _local6.x, _local6.y, _local6.z, _local7);
_local4.color = ((_local3.color == _local2.color) ? (_local2.color) : (new RGB(Math.round(_local3.color.r + ((_local2.color.r - _local3.color.r) * (i % 1))), Math.round(_local3.color.g + ((_local2.color.g - _local3.color.g) * (i % 1))), Math.round(_local3.color.b + ((_local2.color.b - _local3.color.b) * (i % 1))))));
_local4.xScale = _local3.xScale + ((_local2.xScale - _local3.xScale) * (i % 1));
_local4.yScale = _local3.yScale + ((_local2.yScale - _local3.yScale) * (i % 1));
} else {
var _local4 = new CourseSector(world, _local6.x, _local6.y, _local6.z, _local2.radius);
_local4.xScale = _local2.xScale;
_local4.yScale = _local2.yScale;
_local4.color = _local2.color;
}
_local4.outsideColor = outsideColor;
_local4.arcClosed = _local2.arcClosed;
_local4.worldIndex = i;
if (_local2.assetName != null) {
_local4.assetName = _local2.assetName;
}
return(_local4);
}
function getRadius(i) {
var _local3 = this[Math.floor(i)];
var _local2 = this[Math.floor(i) - 1];
if (_local2) {
return(_local2.radius + ((_local3.radius - _local2.radius) * (i % 1)));
}
return(_local3.radius);
}
function getYScale(i) {
var _local3 = this[Math.floor(i)];
var _local2 = this[Math.floor(i) - 1];
if (_local2) {
return(_local2.yScale + ((_local3.yScale - _local2.yScale) * (i % 1)));
}
return(_local3.yScale);
}
function getXScale(i) {
var _local3 = this[Math.floor(i)];
var _local2 = this[Math.floor(i) - 1];
if (_local2) {
return(_local2.xScale + ((_local3.xScale - _local2.xScale) * (i % 1)));
}
return(_local3.xScale);
}
function getRGB(i) {
var _local3 = this[Math.floor(i)];
var _local2 = this[Math.floor(i) - 1];
if (_local2.color == _local3.color) {
return(_local3.color);
}
if (_local2) {
return(new RGB(Math.round(_local2.color.r + ((_local3.color.r - _local2.color.r) * (i % 1))), Math.round(_local2.color.g + ((_local3.color.g - _local2.color.g) * (i % 1))), Math.round(_local2.color.b + ((_local3.color.b - _local2.color.b) * (i % 1)))));
}
return(_local3.color);
}
function getPoint(index) {
var _local2 = this[Math.floor(index)].getPoint(index % 1);
if (flipped) {
_local2.x = _local2.x * -1;
}
return(_local2);
}
function getAssetName(i) {
return(this[Math.floor(i)].assetName);
}
function toString() {
return("Course");
}
static var CLOSED = 1;
static var OPEN = 0;
}
Symbol 703 MovieClip [__Packages.Splines3d.Bezier] Frame 0
class Splines3d.Bezier
{
var p0, cp0, cp1, p1, CX, BX, AX, CY, BY, AY, CZ, BZ, AZ;
function Bezier (p0, cp0, cp1, p1) {
this.p0 = p0;
this.cp0 = cp0;
this.cp1 = cp1;
this.p1 = p1;
update();
}
function getPoint(i) {
var _local2 = i * i;
var _local4 = _local2 * i;
return(new Vector((((AX * _local4) + (BX * _local2)) + (CX * i)) + p0.x, (((AY * _local4) + (BY * _local2)) + (CY * i)) + p0.y, (((AZ * _local4) + (BZ * _local2)) + (CZ * i)) + p0.z));
}
function update() {
CX = 3 * (cp0.x - p0.x);
CY = 3 * (cp0.y - p0.y);
CZ = 3 * (cp0.z - p0.z);
BX = (3 * (cp1.x - cp0.x)) - CX;
BY = (3 * (cp1.y - cp0.y)) - CY;
BZ = (3 * (cp1.z - cp0.z)) - CZ;
AX = ((p1.x - p0.x) - CX) - BX;
AY = ((p1.y - p0.y) - CY) - BY;
AZ = ((p1.z - p0.z) - CZ) - BZ;
}
function toString() {
return("Bezier Curve");
}
}
Symbol 704 MovieClip [__Packages.CourseBezier] Frame 0
class CourseBezier extends Splines3d.Bezier
{
var p0, cp0, cp1, p1, objects, update;
function CourseBezier (p0, cp0, cp1, p1) {
super();
this.p0 = p0;
this.cp0 = cp0;
this.cp1 = cp1;
this.p1 = p1;
objects = [];
update();
}
function addObject(obj, index, angle, elevation, bRotate) {
objects.push({object:obj, angle:angle, elevation:elevation, index:index % 1, useRotation:((bRotate != null) ? (bRotate) : true)});
}
function addCluster(cn, args, rotate) {
var _local5 = arguments.splice(3);
var _local3 = 0;
while (_local3 < _local5.length) {
var _local4 = {};
_local4.__proto__ = cn.prototype;
cn.apply(_local4, args);
addObject(_local4, _local5[_local3], _local5[_local3 + 1], _local5[_local3 + 2], rotate);
_local3 = _local3 + 3;
}
}
var xScale = 1;
var yScale = 1;
}
Symbol 705 MovieClip [__Packages.Splines3d.Line] Frame 0
class Splines3d.Line
{
var p0, p1, spanX, spanY, spanZ;
function Line (p0, p1) {
this.p0 = p0;
this.p1 = p1;
update();
}
function getPoint(index) {
return(new Vector(p0.x + (spanX * index), p0.y + (spanY * index), p0.z + (spanZ * index)));
}
function update() {
spanX = p1.x - p0.x;
spanY = p1.y - p0.y;
spanZ = p1.z - p0.z;
}
function toString() {
return("Line");
}
}
Symbol 706 MovieClip [__Packages.CourseLine] Frame 0
class CourseLine extends Splines3d.Line
{
var p0, p1, objects, update;
function CourseLine (p0, p1) {
super();
this.p0 = p0;
this.p1 = p1;
objects = [];
update();
}
function addObject(obj, index, angle, elevation, bRotate) {
objects.push({object:obj, angle:Number(angle), elevation:Number(elevation), index:index % 1, useRotation:((bRotate != null) ? (bRotate) : true)});
}
function addCluster(cn, args, rotate) {
var _local5 = arguments.splice(3);
var _local3 = 0;
while (_local3 < _local5.length) {
var _local4 = {};
_local4.__proto__ = cn.prototype;
cn.apply(_local4, args);
addObject(_local4, _local5[_local3], _local5[_local3 + 1], _local5[_local3 + 2], rotate);
_local3 = _local3 + 3;
}
}
var xScale = 1;
var yScale = 1;
}
Symbol 707 MovieClip [__Packages.CourseSector] Frame 0
class CourseSector extends BB
{
var objects, world, depthRatio, target, screenX, screenY, screenRadius, arcLeft, arcRight, arcTop, arcBottom, outerLeftY, outerRightY, color, outsideColor, previous, next, index, targetTint;
function CourseSector (world, x, y, z, radius) {
super();
objects = [];
this.x = x;
this.y = y;
this.z = z;
this.world = world;
this.radius = radius;
}
function setDisplay(x, y, depthRatio, frontDepthRatio, fogRatio) {
this.depthRatio = depthRatio;
if (!target) {
addToScene();
}
target.sprite._x = (screenX = x * depthRatio);
target.sprite._y = (screenY = y * depthRatio);
target.sprite._xscale = (target.sprite._yscale = ((screenRadius = depthRatio * radius)) * 2);
var _local2 = target.drawClip;
_local2.clear();
arcLeft = screenX - (screenRadius * xScale);
arcRight = screenX + (screenRadius * xScale);
arcTop = screenY - (screenRadius * yScale);
arcBottom = screenY + (screenRadius * yScale);
outerLeftY = screenY - (Math.abs(world.halfWidth + arcLeft) * outsideSlope);
outerRightY = screenY - (Math.abs(world.halfWidth - arcRight) * outsideSlope);
var _local4 = new RGB(color.r + ((world.fogColor.r - color.r) * fogRatio), color.g + ((world.fogColor.g - color.g) * fogRatio), color.b + ((world.fogColor.b - color.b) * fogRatio));
var _local3 = _local4.valueOf();
var _local8 = new RGB(outsideColor.r + ((world.outsideFogColor.r - outsideColor.r) * fogRatio), outsideColor.g + ((world.outsideFogColor.g - outsideColor.g) * fogRatio), outsideColor.b + ((world.outsideFogColor.b - outsideColor.b) * fogRatio));
var _local7 = new RGB(_local4.r * 0.9, _local4.g * 0.9, _local4.b);
if (arcClosedFace) {
var _local6 = world.camera.depthFocus / ((z + 1000) - world.camera.z);
var _local10 = world.camera.depthFocus / ((z + 750) - world.camera.z);
_local2 = target;
_local2.clear();
_local2.beginFill(_local8);
_local2.moveTo(arcLeft, screenY);
_local2.curveTo(arcLeft, arcTop, screenX, arcTop);
_local2.curveTo(arcRight, arcTop, arcRight, screenY);
_local2.lineTo(world.halfWidth, screenY);
_local2.lineTo(world.halfWidth, ((this.y - 800) - world.camera.y) * _local6);
_local2.curveTo((this.x - world.camera.x) * _local10, (((this.y - radius) - 1600) - world.camera.y) * _local10, -world.halfWidth, ((this.y - 800) - world.camera.y) * _local6);
_local2.lineTo(-world.halfWidth, screenY);
_local2.endFill();
}
if (arcClosed && (previous.arcClosed)) {
drawClosedPipe(_local2, _local7, _local3, _local3, _local3, _local3);
} else {
drawOpenPipe(_local2, _local7, _local3, _local3, _local8);
}
}
function drawClosedPipe(drawClip, lineColor, topLeftColor, topRightColor, bottomRightColor, bottomLeftColor) {
var _local5 = world.camera;
var _local19 = !previous.target;
if (!_local19) {
var _local7 = previous.radius;
var _local3 = previous.screenX;
var _local4 = previous.screenY;
var _local11 = previous.arcLeft;
var _local12 = previous.arcTop;
var _local8 = previous.arcRight;
var _local10 = previous.arcBottom;
if (!next.inScene) {
drawClip.beginFill(topLeftColor);
drawClip.moveTo(_local11, _local4);
drawClip.curveTo(_local11, _local12, _local3, _local12);
drawClip.lineTo(screenX, screenY);
drawClip.endFill();
drawClip.beginFill(topRightColor);
drawClip.moveTo(_local8, _local4);
drawClip.curveTo(_local8, _local12, _local3, _local12);
drawClip.lineTo(screenX, screenY);
drawClip.endFill();
drawClip.beginFill(bottomLeftColor);
drawClip.moveTo(_local11, _local4);
drawClip.curveTo(_local11, _local10, _local3, _local10);
drawClip.lineTo(screenX, screenY);
drawClip.endFill();
drawClip.beginFill(bottomRightColor);
drawClip.moveTo(_local8, _local4);
drawClip.curveTo(_local8, _local10, _local3, _local10);
drawClip.lineTo(screenX, screenY);
drawClip.endFill();
} else {
drawClip.beginFill(topLeftColor);
drawClip.moveTo(arcLeft, screenY);
drawClip.curveTo(arcLeft, arcTop, screenX, arcTop);
drawClip.lineTo(_local3, _local12);
drawClip.curveTo(_local11, _local12, _local11, _local4);
drawClip.endFill();
drawClip.beginFill(topRightColor);
drawClip.moveTo(arcRight, screenY);
drawClip.curveTo(arcRight, arcTop, screenX, arcTop);
drawClip.lineTo(_local3, _local12);
drawClip.curveTo(_local8, _local12, _local8, _local4);
drawClip.endFill();
drawClip.beginFill(bottomLeftColor);
drawClip.moveTo(arcLeft, screenY);
drawClip.curveTo(arcLeft, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local3, _local10);
drawClip.curveTo(_local11, _local10, _local11, _local4);
drawClip.endFill();
drawClip.beginFill(bottomRightColor);
drawClip.moveTo(arcRight, screenY);
drawClip.curveTo(arcRight, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local3, _local10);
drawClip.curveTo(_local8, _local10, _local8, _local4);
drawClip.endFill();
}
} else {
var _local6 = ((z - _local5.z) - _local5.hither) / (z - previous.z);
var _local9 = _local5.depthFocus / _local5.hither;
var _local13 = xScale - ((xScale - previous.xScale) * _local6);
var _local14 = yScale - ((yScale - previous.yScale) * _local6);
var _local7 = (radius - ((radius - previous.radius) * _local6)) * _local9;
var _local3 = ((x - ((x - previous.x) * _local6)) - _local5.x) * _local9;
var _local4 = ((y - ((y - previous.y) * _local6)) - _local5.y) * _local9;
var _local11 = _local3 - (_local7 * _local13);
var _local12 = _local4 - (_local7 * _local14);
var _local8 = _local3 + (_local7 * _local13);
var _local10 = _local4 + (_local7 * _local14);
drawClip.beginFill(topLeftColor);
drawClip.moveTo(arcLeft, screenY);
drawClip.curveTo(arcLeft, arcTop, screenX, arcTop);
drawClip.lineTo(_local3, _local12);
drawClip.lineTo(_local3, -world.halfHeight);
drawClip.lineTo(-world.halfWidth, -world.halfHeight);
drawClip.lineTo(-world.halfWidth, _local4);
drawClip.lineTo(_local11, _local4);
drawClip.endFill();
drawClip.beginFill(topRightColor);
drawClip.moveTo(arcRight, screenY);
drawClip.curveTo(arcRight, arcTop, screenX, arcTop);
drawClip.lineTo(_local3, _local12);
drawClip.lineTo(_local3, -world.halfHeight);
drawClip.lineTo(world.halfWidth, -world.halfHeight);
drawClip.lineTo(world.halfWidth, _local4);
drawClip.lineTo(_local8, _local4);
drawClip.endFill();
drawClip.beginFill(bottomLeftColor);
drawClip.moveTo(arcLeft, screenY);
drawClip.curveTo(arcLeft, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local3, _local10);
drawClip.lineTo(_local3, world.halfHeight);
drawClip.lineTo(-world.halfWidth, world.halfHeight);
drawClip.lineTo(-world.halfWidth, _local4);
drawClip.lineTo(_local11, _local4);
drawClip.endFill();
drawClip.beginFill(bottomRightColor);
drawClip.moveTo(arcRight, screenY);
drawClip.curveTo(arcRight, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local3, _local10);
drawClip.lineTo(_local3, world.halfHeight);
drawClip.lineTo(world.halfWidth, world.halfHeight);
drawClip.lineTo(world.halfWidth, _local4);
drawClip.lineTo(_local8, _local4);
drawClip.endFill();
}
drawClip.lineStyle(0, lineColor);
drawClip.moveTo(_local3, _local12);
drawClip.lineTo(screenX, arcTop);
drawClip.moveTo(_local3, _local10);
drawClip.lineTo(screenX, arcBottom);
drawClip.moveTo(_local11, _local4);
drawClip.lineTo(arcLeft, screenY);
drawClip.moveTo(_local8, _local4);
drawClip.lineTo(arcRight, screenY);
}
function drawOpenPipe(drawClip, lineColor, leftSurfaceColor, rightSurfaceColor, outsideColor) {
var _local15 = !previous.target;
if (!_local15) {
var _local9 = previous.radius;
var _local4 = previous.screenX;
var _local3 = previous.screenY;
var _local8 = previous.arcLeft;
var _local19 = previous.arcTop;
var _local7 = previous.arcRight;
var _local11 = previous.arcBottom;
var _local14 = previous.outerLeftY;
var _local13 = previous.outerRightY;
drawClip.beginFill(leftSurfaceColor);
drawClip.moveTo(arcLeft, screenY);
drawClip.curveTo(arcLeft, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local4, _local11);
drawClip.curveTo(_local8, _local11, _local8, _local3);
drawClip.endFill();
drawClip.beginFill(rightSurfaceColor);
drawClip.moveTo(arcRight, screenY);
drawClip.curveTo(arcRight, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local4, _local11);
drawClip.curveTo(_local7, _local11, _local7, _local3);
drawClip.endFill();
} else {
var _local5 = world.camera;
var _local6 = ((z - _local5.z) - _local5.hither) / (z - previous.z);
var _local10 = _local5.depthFocus / _local5.hither;
var _local12 = xScale - ((xScale - previous.xScale) * _local6);
var _local16 = yScale - ((yScale - previous.yScale) * _local6);
var _local9 = (radius - ((radius - previous.radius) * _local6)) * _local10;
var _local4 = ((x - ((x - previous.x) * _local6)) - _local5.x) * _local10;
var _local3 = ((y - ((y - previous.y) * _local6)) - _local5.y) * _local10;
var _local14 = _local3;
var _local13 = _local3;
var _local8 = _local4 - (_local9 * _local12);
var _local7 = _local4 + (_local9 * _local12);
var _local11 = _local3 + (_local9 * _local16);
drawClip.beginFill(leftSurfaceColor);
drawClip.moveTo(arcLeft, screenY);
drawClip.curveTo(arcLeft, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local4, _local11);
drawClip.lineTo(_local4, world.halfHeight);
drawClip.lineTo(-world.halfWidth, world.halfHeight);
drawClip.lineTo(-world.halfWidth, _local3);
drawClip.lineTo(_local8, _local3);
drawClip.endFill();
drawClip.beginFill(rightSurfaceColor);
drawClip.moveTo(arcRight, screenY);
drawClip.curveTo(arcRight, arcBottom, screenX, arcBottom);
drawClip.lineTo(_local4, _local11);
drawClip.lineTo(_local4, world.halfHeight);
drawClip.lineTo(world.halfWidth, world.halfHeight);
drawClip.lineTo(world.halfWidth, _local3);
drawClip.lineTo(_local7, _local3);
drawClip.endFill();
}
drawClip.beginFill(outsideColor);
if ((_local3 + Math.abs((_local7 - arcRight) * outsideSlope)) > screenY) {
drawClip.moveTo(arcRight, screenY);
drawClip.lineTo(_local7, _local3);
drawClip.lineTo(world.halfWidth, _local13);
drawClip.lineTo(world.halfWidth, outerRightY);
}
if ((_local3 + Math.abs((arcLeft - _local8) * outsideSlope)) > screenY) {
drawClip.moveTo(arcLeft, screenY);
drawClip.lineTo(_local8, _local3);
drawClip.lineTo(-world.halfWidth, _local14);
drawClip.lineTo(-world.halfWidth, outerLeftY);
}
drawClip.endFill();
drawClip.lineStyle(0, lineColor);
drawClip.moveTo(_local4, _local11);
drawClip.lineTo(screenX, arcBottom);
drawClip.moveTo(_local8, _local3);
drawClip.lineTo(arcLeft, screenY);
drawClip.moveTo(_local7, _local3);
drawClip.lineTo(arcRight, screenY);
}
function addObject(object) {
if (!object.trackInSectorGrid) {
return(undefined);
}
hasObjects = true;
objects.push(object);
}
function removeObject(object) {
var _local2 = objects.length - 1;
while (_local2 > -1) {
if (objects[_local2] == object) {
objects.splice(_local2, 1);
break;
}
_local2--;
}
hasObjects = objects.length > 0;
}
function addToScene() {
target = world.display.attachMovie(assetName, "X" + index, BB.calculateDepth(z, 0, 0));
inScene = true;
var _local2 = objects.length - 1;
while (_local2 > -1) {
objects[_local2].addToScene();
_local2--;
}
onAddToScene();
}
function onAddToScene() {
if (arcClosedFace) {
targetTint = new Color(target.sprite.bottom);
} else {
targetTint = new Color(target.sprite);
target.sprite.cover.swapDepths(255);
target.sprite.cover.removeMovieClip();
}
target.createEmptyMovieClip("drawClip", 10);
if ((!arcClosed) && (random(2) == 0)) {
var _local2 = target.sprite.attachMovie(outsideClutter, "house", 1000);
var _local3 = Math.random() * 2000;
_local2._x = (random(2) ? -1 : 1) * (_local3 + radius);
_local2._y = (-(_local3 + 125)) * outsideSlope;
_local2._xscale = ((_local2._x > 0) ? -100 : 100);
}
target.sprite.top._visible = arcClosed;
}
function removeFromScene() {
target.swapDepths(255);
target.removeMovieClip();
inScene = false;
var _local2 = objects.length - 1;
while (_local2 > -1) {
objects[_local2].removeFromScene();
_local2--;
}
delete target;
}
function toString() {
return("Course Sector " + index);
}
var hasObjects = false;
var flipped = false;
var x = 0;
var y = 0;
var z = 0;
var radius = 200;
var arcClosed = false;
var arcClosedFace = false;
var outsideSlope = 0.4;
var inScene = false;
var assetName = "Default Ring";
var outsideClutter = "CourseHouse";
var useTint = true;
var style = 0;
var xScale = 1;
var yScale = 1;
var targetTintTrans = {};
}
Symbol 708 MovieClip [__Packages.Background] Frame 0
class Background
{
var linkageID;
function Background (linkageID, width, height, depth) {
this.linkageID = linkageID;
this.width = width;
this.height = height;
this.depth = depth;
}
function toString() {
return("Background " + [linkageID, width, height, depth]);
}
var width = 0;
var height = 0;
var depth = 0;
}
Symbol 709 MovieClip [__Packages.GenericObject] Frame 0
class GenericObject extends BB
{
var linkageID, target, world, updateDepth, onAddToScene, onRemoveFromScene, onChanged, screenX, screenY, onDisplay, objectSoundID;
function GenericObject () {
super();
}
function update() {
}
function addToScene() {
if (inScene || (!renderable)) {
return(undefined);
}
if (linkageID != null) {
target = world.display.attachMovie(linkageID, "O" + uniqueID, 0);
} else {
target = world.display.createEmptyMovieClip("O" + uniqueID, 0);
}
target.owner = this;
updateDepth();
if (useRotation) {
target._rotation = assetRotation;
}
inScene = true;
onAddToScene();
}
function removeFromScene() {
if (!inScene) {
return(undefined);
}
inScene = false;
onRemoveFromScene();
target.swapDepths(1048575);
target.removeMovieClip();
}
function checkSectorLocation() {
if ((z > sector.z) && (sector.next)) {
sector.removeObject(this);
do {
if (!((sector = sector.next))) {
break;
}
} while (z > sector.z);
sector.addObject(this);
} else if (sector.previous && (z <= sector.previous.z)) {
sector.removeObject(this);
do {
if (!((sector = sector.previous))) {
break;
}
} while (z <= sector.previous.z);
sector.addObject(this);
}
}
function moveTo(x, y, z) {
if (((x == this.x) && (y == this.y)) && (z == this.z)) {
return(undefined);
}
this.x = x;
this.y = y;
this.z = z;
checkSectorLocation();
updateDepth();
onChanged();
}
function moveBy(x, y, z) {
if ((x || (y)) || (z)) {
this.x = this.x + x;
this.y = this.y + y;
this.z = this.z + z;
checkSectorLocation();
updateDepth();
onChanged();
}
}
function setAssetRotation(angle) {
target._rotation = (assetRotation = angle);
}
function setDisplay(offsetX, offsetY, offsetZ, depthRatio) {
if (!renderable) {
return(undefined);
}
screenX = (target._x = offsetX * depthRatio);
screenY = (target._y = offsetY * depthRatio);
target._xscale = (target._yscale = (useMinScale ? (Math.max(depthRatio * 100, minScreenScale)) : (depthRatio * 100)));
onDisplay(offsetX, offsetY, offsetZ, depthRatio);
}
function attachSound(soundID, altTarget) {
var _local2 = new Sound((altTarget ? (altTarget) : (target)));
_local2.attachSound(soundID);
return(_local2);
}
function setObjectSound(linkageID, altTarget) {
objectSoundID = linkageID;
if (sounds[linkageID]) {
return(undefined);
}
var _local3 = (sounds[linkageID] = attachSound(linkageID, _root));
_local3.done = true;
_local3.onSoundComplete = function () {
this.done = true;
this.length = this.duration;
};
}
function playObjectSound() {
var _local2 = sounds[objectSoundID];
var _local3 = _local2.position;
if (((_local2.done || (_local2.lastKnownTime != _local3)) || (_local3 == 0)) || ((_local2.lastPlayAt + _local2.duration) < getTimer())) {
_local2.lastKnownTime = _local3;
_local2.lastPlayAt = getTimer();
_local2.start();
_local2.done = false;
}
}
function toString() {
return("Generic Object");
}
var sector = 0;
var trackInSectorGrid = true;
var uniqueID = 0;
var generatorDisplacement = 0;
var sounds = {};
var x = 0;
var y = 0;
var z = 0;
var radius = 50;
var inScene = false;
var useMinScale = false;
var minScreenScale = 10;
var renderable = true;
var assetRotation = 0;
var useRotation = true;
var cullDistance = 3000;
var collisionGroup = 0;
var depthGroup = 1;
static var soundsCreated = 0;
}
Symbol 710 MovieClip [__Packages.Game] Frame 0
class Game extends MovieClip
{
var sectors, objects, backgrounds, effectsObjects, updateObjects, camera, display, createEmptyMovieClip, _width, _height, _xscale, _yscale, outsideFogColor, deadPreview, fogColor, width, height, halfWidth, halfHeight, levelSpline, currentVisibleMarker;
function Game () {
super();
sectors = new Array();
objects = new Array();
backgrounds = new Array();
effectsObjects = new Array();
updateObjects = new Array();
camera = new GameCamera();
addObject(camera);
camera.update();
camera.moveTo(0, 0, 1);
display = createEmptyMovieClip("display", 100);
setSize(_width, _height);
_xscale = 100;
_yscale = 100;
setFog(new RGB(62, 153, 255), 200, 4500, 0);
outsideFogColor = new RGB(215, 215, 235);
deadPreview.swapDepths(255);
deadPreview.removeMovieClip();
}
function addBackground(bg) {
bg.target = display.attachMovie(bg.linkageID, "BG" + backgrounds.length, bg.depth);
backgrounds.push(bg);
backgrounds.sortOn(bg.depth, Array.NUMERIC);
}
function setFog(color, near, far, amount) {
fogColor = color;
fogDistanceNear = near;
fogDistanceFar = far;
fogAmount = Math.min(1, Math.max(Number(amount), 0));
}
function setSize(width, height) {
this.width = width;
this.height = height;
halfWidth = width * 0.5;
halfHeight = height * 0.5;
display._x = width * 0.5;
display._y = height * 0.5;
}
function registerForUpdates(object) {
if (object.___GU) {
return(undefined);
}
object.___GU = true;
updateObjects.push(object);
}
function removeFromUpdates(object) {
var _local2 = updateObjects.length - 1;
while (_local2 > -1) {
if (updateObjects[_local2] == object) {
updateObjects.splice(_local2, 1);
}
_local2--;
}
}
function registerForEffects(object) {
if (object.___EF) {
return(undefined);
}
object.___EF = true;
effectsObjects.push(object);
}
function addObject(object, x, y, z, marker) {
objects.push(object);
object.uniqueID = objectCount++;
object.world = this;
object.moveTo(x, y, z);
if (!object.trackInSectorGrid) {
return(undefined);
}
if (!marker) {
marker = findMarker(z);
}
sectors[marker].addObject(object);
object.sector = sectors[marker];
object.onAddToWorld();
if (object.inScene) {
object.addToScene();
}
}
function removeObject(object) {
var _local2 = objects.length;
while (_local2 > -1) {
if (objects[_local2] == object) {
objects.splice(_local2, 1);
}
_local2--;
}
object.removeFromScene();
object.sector.removeObject(object);
}
function findMarker(z) {
var _local2 = 0;
var _local4 = sectors.length - 1;
var _local3 = Math.round((_local4 - _local2) * 0.5);
var _local6 = 0;
if (z <= sectors[_local2].z) {
return(0);
}
if (z >= sectors[_local4].z) {
return(_local4);
}
while (true) {
if ((z >= sectors[_local2].z) && (z < sectors[_local3].z)) {
_local4 = _local3;
_local3 = _local2 + Math.round((_local4 - _local2) * 0.5);
} else {
_local2 = _local3;
_local3 = _local2 + Math.round((_local4 - _local2) * 0.5);
}
if ((_local2 == _local3) || (_local4 == _local3)) {
return(_local4);
}
}
}
function finalizeLevel() {
}
function setLevelSpline(spline) {
levelSpline = spline;
}
function update(elapsed) {
var _local2 = updateObjects.length - 1;
while (_local2 > -1) {
updateObjects[_local2].onUpdate(elapsed);
_local2--;
}
}
function processLevel(maxSpan, range, flip) {
if (!range) {
range = maxSpan * 0.2;
}
var _local18 = 5;
var _local21 = 0.01;
levelSpline.flipped = flip;
var _local19 = levelSpline.length;
var _local7;
var _local2;
var _local3;
var _local22;
var _local23;
var _local10 = new Vector();
var _local14 = 0;
var _local9 = 0;
while (_local9 < _local19) {
_local3 = levelSpline.getPoint(_local9);
if (_local2) {
var _local12 = 0;
_local10.loc(_local3.x - _local2.x, _local3.y - _local2.y, _local3.z - _local2.z);
var _local6 = _local10.__get__magnitude();
var _local5 = _local21;
while (_local12 < _local18) {
if (Math.abs(_local6 - maxSpan) < range) {
break;
}
if (_local14 != Math.floor(_local9)) {
_local9 = Math.floor(_local9);
_local5 = _local9 - _local9;
_local3 = levelSpline.getPoint(_local9);
break;
}
var _local16 = maxSpan / _local6;
_local9 = _local9 - _local5;
_local5 = (_local5 * maxSpan) / _local6;
_local9 = _local9 + _local5;
if (_local14 != Math.floor(_local9)) {
continue;
}
_local3 = levelSpline.getPoint(_local9);
_local10.loc(_local3.x - _local2.x, _local3.y - _local2.y, _local3.z - _local2.z);
_local6 = _local10.magnitude;
_local12 = _local12 + 1;
}
}
_local22 = levelSpline.getRadius(_local9);
_local7 = _local2;
_local2 = levelSpline.getCourseSegment(this, _local9);
_local2.index = sectors.length;
_local2.color = levelSpline.getRGB(_local9);
var _local15 = levelSpline.getAssetName(_local9);
if (_local15 != null) {
_local2.assetName = _local15;
}
if (((_local2.useTint = levelSpline[Math.floor(_local9)].useTint)) == null) {
delete _local2.useTint;
}
_local2.worldIndex = _local9;
_local2.span = new Vector(_local3.x - _local7.x, _local3.y - _local7.y, _local3.z - _local7.z);
_local2.length = _local2.span.length;
_local2.direction = _local2.span.getNormalized();
_local2.arcClosed = levelSpline[Math.floor(_local9)].arcClosed;
_local2.arcClosedFace = (!_local7.arcClosed) && (_local2.arcClosed);
_local7.next = _local2;
_local2.previous = _local7;
sectors.push(_local2);
_local14 = Math.floor(_local9);
_local9 = _local9 + _local21;
}
_local2 = sectors[0];
_local9 = 0;
while (_local9 < _local19) {
var _local17 = levelSpline[Math.floor(_local9)];
var _local8 = _local17.objects;
if (_local8.length == 0) {
} else {
_local8.sortOnNumeric("index");
var _local13 = _local8.length;
while (_local13-- , _local13 > -1) {
var _local4 = _local8[_local13];
addObjectRelativeToSpline(_local4.object, _local9 + _local4.index, _local4.angle, _local4.elevation, _local4.useRotation, _local2);
_local2 = _local4.object.sector;
}
}
_local9++;
}
currentVisibleMarker = sectors[0];
}
function addObjectRelativeToSpline(object, index, angle, elevation, useRotation, sector) {
var _local3 = levelSpline.getPoint(index);
var _local8 = levelSpline.getRadius(index);
if (!sector) {
sector = sectors[0];
} else {
while (sector && (_local3.z < sector.z)) {
sector = sector.previous;
}
}
while (sector && (_local3.z > sector.z)) {
sector = sector.next;
}
var _local6 = Math.sin((Number(angle + 90) / 180) * Math.PI) * sector.yScale;
var _local5 = Math.cos((Number(angle + 90) / 180) * Math.PI) * sector.xScale;
if (levelSpline.flipped) {
_local5 = _local5 * -1;
angle = ((Math.atan2(_local6, _local5) * 180) / Math.PI) - 90;
}
if (useRotation) {
object.setAssetRotation(angle);
object.up = new Point(-_local5, -_local6);
} else {
object.up = new Point(0, -1);
}
object.up.normalize();
object.right = object.up.cross();
addObject(object, _local3.x + (_local5 * (((_local8 - object.radius) - elevation) - object.generatorDisplacement)), _local3.y + (_local6 * (((_local8 - object.radius) - elevation) - object.generatorDisplacement)), _local3.z, sector.index);
}
function render() {
while (currentVisibleMarker.previous && ((currentVisibleMarker.previous.z - camera.z) > camera.hither)) {
currentVisibleMarker = currentVisibleMarker.previous;
}
if ((currentVisibleMarker.z - camera.z) < camera.hither) {
currentVisibleMarker.removeFromScene();
while ((currentVisibleMarker = currentVisibleMarker.next)) {
if ((currentVisibleMarker.z - camera.z) > camera.hither) {
break;
}
currentVisibleMarker.removeFromScene();
}
}
var _local5;
var _local8;
var _local7;
var _local2;
var _local4 = currentVisibleMarker;
var _local15 = new RGB();
var _local11 = 16777215 /* 0xFFFFFF */;
while (_local4) {
_local2 = _local4.z - camera.z;
if (_local2 > camera.yon) {
_local4.removeFromScene();
_local4 = _local4.next;
if (_local4.target) {
continue;
}
break;
}
var _local13 = Math.min(1, Math.max(0, (_local2 - fogDistanceNear) / fogDistanceFar)) * fogAmount;
_local8 = _local4.x - camera.x;
_local7 = _local4.y - camera.y;
var _local12 = _local5;
_local5 = camera.depthFocus / _local2;
var _local14 = camera.depthFocus / (_local4.midPoint.z - camera.z);
_local4.setDisplay(_local8, _local7, _local5, _local12, _local13);
if (!_local4.arcClosed) {
_local11 = Math.min(_local11, _local2);
}
if (_local4.hasObjects) {
var _local3;
var _local9 = _local4.objects;
var _local10 = _local9.length - 1;
while (_local10 > -1) {
_local3 = _local9[_local10];
_local2 = _local3.z - camera.z;
if (!((_local3.target._visible = (_local2 > camera.hither) && (_local2 < _local3.cullDistance)))) {
} else {
_local8 = _local3.x - camera.x;
_local7 = _local3.y - camera.y;
_local5 = camera.depthFocus / _local2;
_local3.setDisplay(_local8, _local7, _local2, _local5);
}
_local10--;
}
}
_local4 = _local4.next;
}
var _local10 = backgrounds.length - 1;
while (_local10 > -1) {
var _local6 = backgrounds[_local10];
if (!((_local6.target._visible = _local11 < 3000))) {
} else {
_local5 = camera.depthFocus / _local6.depth;
_local6.target._x = Math.floor((-camera.x) * _local5);
_local6.target._y = Math.floor((-camera.y) * _local5);
_local6.target.swapDepths((65535 - (Math.floor(_local6.depth + camera.z) * 100)) + 2);
}
_local10--;
}
_local10 = effectsObjects.length - 1;
while (_local10 > -1) {
effectsObjects[_local10].onEffects();
_local10--;
}
updateAfterEvent();
}
var fogDistanceNear = 200;
var fogDistanceFar = 3000;
var fogAmount = 0;
var nearestSector = 0;
var objectCount = 0;
}
Symbol 711 MovieClip [__Packages.GameCamera] Frame 0
class GameCamera extends GenericObject
{
function GameCamera () {
super();
}
function Camera() {
}
function onChanged() {
}
function toString() {
return("Camera");
}
var hither = 9;
var yon = 500;
var depthFocus = 60;
var trackInSectorGrid = false;
var x = 0;
var y = 0;
var z = 0;
}
Symbol 712 MovieClip [__Packages.Point] Frame 0
class Point
{
function Point (x, y) {
if (x || (y)) {
this.x = x;
this.y = y;
}
}
function dot(_p) {
return(Math.sqrt((x * _p.x) + (y * _p.y)));
}
function cross(_p) {
return(new Point(y, -x));
}
function getNormalized() {
var _local2 = Math.sqrt((x * x) + (y * y));
return(new Point(x / _local2, y / _local2));
}
function get magnitude() {
return(Math.sqrt((x * x) + (y * y)));
}
function get length() {
return(Math.sqrt((x * x) + (y * y)));
}
function normalize() {
var _local2 = Math.sqrt((x * x) + (y * y));
x = x / _local2;
y = y / _local2;
}
function reverse() {
x = x * -1;
y = y * -1;
}
function zero() {
delete x;
delete y;
}
function toString() {
return(((("Point (" + x) + ",") + y) + ")");
}
var x = 0;
var y = 0;
}
Symbol 713 MovieClip [__Packages.GameNode] Frame 0
class GameNode extends GenericObject
{
var linkageID;
function GameNode (onCrossCallBack, linkageID) {
super();
if (onCrossCallBack != null) {
onCross = onCrossCallBack;
}
if (linkageID != null) {
this.linkageID = linkageID;
}
}
function onCross() {
}
function onAddToScene() {
radius = 10000;
}
var radius = 1;
var collisionEnabled = true;
var collisionGroup = BB.NODE;
}
Symbol 714 MovieClip [__Packages.GameCheckPoint] Frame 0
class GameCheckPoint extends GameNode
{
var sound, attachSound, target, radius;
function GameCheckPoint (value) {
super();
this.value = value;
}
function onAddToWorld() {
sound = attachSound("Checkpoint", _root);
}
function onAddToScene() {
target.gotoAndStop("checkpoint");
radius = 10000;
}
function onCross(obj) {
if (obj.keepTrackOfTime) {
obj.timeRemaining = obj.timeRemaining + value;
sound.start();
}
}
var linkageID = "BirdLine";
var value = 0;
}
Symbol 715 MovieClip [__Packages.Collectable] Frame 0
class Collectable extends GenericObject
{
var collectedSound, setObjectSound, playObjectSound, awardValue, renderable, removeFromScene, linkageID;
function Collectable () {
super();
if (collectedSound != null) {
setObjectSound(collectedSound, _root);
}
}
function setCollected(collector) {
playObjectSound();
awardValue(collector);
collisionEnabled = false;
collected = true;
renderable = false;
removeFromScene();
}
function onAddToScene() {
}
function toString() {
return("Collectable " + linkageID);
}
var collisionGroup = BB.COLLECTABLE;
var collisionEnabled = true;
var collected = false;
var useMinScale = true;
var generatorDisplacement = -25;
}
Symbol 716 MovieClip [__Packages.GameLasers] Frame 0
class GameLasers extends Collectable
{
var world, effectTarget, uniqueID, targetObjects;
function GameLasers () {
super();
}
function onAddToWorld() {
if (!_root.PostVR_Lasers) {
world.removeObject(this);
}
}
function awardValue(obj) {
obj.setSpecialItem(this);
obj.vrSound.stop();
obj.vrSound.attachSound("magnet");
applyDisplay(obj);
effectTarget = world.display.createEmptyMovieClip("Effects", BB.calculateDepth(obj.z + 100, uniqueID, 0));
}
function applyDisplay(targetObject, offsetX, offsetY, offsetZ, depthRatio) {
var _local1 = targetObject.target.sled;
_local1.lasersLeft._visible = (_local1.lasersRight._visible = true);
_local1.lasersLeft.gotoAndStop(targetObject.currentTurnFrame);
_local1.lasersRight.gotoAndStop(targetObject.currentTurnFrame);
}
function removeDisplay(targetObject) {
effectTarget.swapDepths(255);
effectTarget.removeMovieClip();
targetObject.removeSpecialItem();
targetObject.vrSound.stop();
}
function update(sled, elapsed) {
power = power - (drain * elapsed);
if (power <= 0) {
removeDisplay(sled);
return(undefined);
}
var _local5;
var _local2;
var _local4 = sled.sector;
targetObjects = [];
while (_local4) {
_local5 = _local4.objects;
var _local6 = _local5.length;
var _local3 = 0;
while (_local3 < _local6) {
_local2 = _local5[_local3];
if ((_local2.collisionGroup & BB.DESTROYABLE) && (!_local2.destroyed)) {
if ((_local2.z - sled.z) > range) {
break;
}
if (((_local2.power = _local2.power - (strength * elapsed))) <= 0) {
_local2.destroy();
}
targetObjects.push(_local2);
}
_local3++;
}
if (_local4.z > (sled.z + range)) {
break;
}
_local4 = _local4.next;
}
if (targetObjects.length) {
sled.vrSound.start(0, 10000);
} else {
sled.vrSound.stop();
}
}
function renderEffects(object) {
effectTarget.clear();
effectTarget.lineStyle(2, 16711680);
var _local2 = targetObjects.length;
while (_local2-- , _local2 > -1) {
effectTarget.moveTo(object.screenX, object.screenY);
effectTarget.lineTo(targetObjects[_local2].screenX, targetObjects[_local2].screenY);
}
effectTarget.swapDepths(object.target.getDepth() - 2);
}
var value = 0;
var collisionGroup = BB.LASERS;
var linkageID = "Lasers";
var collectedSound = "VR";
var power = 1200;
var drain = 100;
var range = 1000;
var strength = 1000;
}
Symbol 717 MovieClip [__Packages.Sled] Frame 0
class Sled extends GenericObject
{
var velocity, surfacePlane, up, shadow, world, target, vrSound, vrOpen, sledSound, onMessage, specialItem, oldX, x, oldY, y, oldZ, z, sector, checkSectorLocation, updateDepth, shadowX, shadowY, shadowLeftX, shadowLeftY, shadowRightX, shadowRightY, currentTurnFrame;
function Sled (linkageID) {
super();
velocity = new Vector(0, 300, 300);
surfacePlane = new Point(1, 0);
up = new Point(0, 1);
if (linkageID != null) {
this.linkageID = linkageID;
}
}
function onAddToScene() {
shadow = world.display.attachMovie(shadowLinkageID, "BS", target.getDepth() - 1);
vrSound = new Sound(target);
vrOpen = new Sound(target);
vrOpen.attachSound("VRDeploy");
sledSound = new Sound(target.createEmptyMovieClip("SledSound", 10));
sledSound.attachSound("SledSound");
sledSound.start(0, 16777215);
sledSound.setVolume(0);
world.registerForEffects(this);
}
function onRemoveFromScene() {
shadow.swapDepths(0);
shadow.removeMovieClip();
stopAllSounds();
vrSound.stop();
vrOpen.stop();
sledSound.stop();
}
function repairDamage(value) {
damage = Math.max(damage - value, 0);
}
function takeDamage(ammount) {
damage = damage + ammount;
if (damage >= maxDamage) {
onMessage("damage");
}
}
function collectLetter(value, letterNumber) {
addPoints(value);
letters = letters | (1 << letterNumber);
}
function addPoints(value) {
score = score + value;
}
function setSpecialItem(newSpecialItem) {
if (specialItem) {
vrSound.stop();
specialItem = null;
}
vrOpen.start();
specialItem = newSpecialItem;
}
function removeSpecialItem() {
specialItem = null;
hideSpecialItems();
}
function hideSpecialItems() {
var _local2 = target.sled;
_local2.magnetLeft._visible = false;
_local2.magnetRight._visible = false;
_local2.lasersLeft._visible = false;
_local2.lasersRight._visible = false;
}
function onCollision(object) {
var _local3 = object.collisionGroup;
if (_local3 & BB.NODE) {
object.onCross(this);
} else if (_local3 & BB.COLLECTABLE) {
object.setCollected(this);
} else {
object.onCollision(this);
}
}
function checkCollisions(from, to) {
var _local4 = [];
var _local2;
while (from && (from != to.next)) {
_local4 = _local4.concat(from.objects);
from = from.next;
}
var _local11 = x - oldX;
var _local10 = y - oldY;
var _local9 = z - oldZ;
var _local8;
var _local3 = _local4.length - 1;
while (_local3 > -1) {
_local2 = _local4[_local3];
if ((_local2 == this) || (!_local2.collisionEnabled)) {
} else if (((collisionGroup & _local2.collisionGroup) && (_local2.z >= oldZ)) && (_local2.z <= z)) {
_local8 = (_local2.z - oldZ) / _local9;
var _local7 = _local2.x - (oldX + (_local11 * _local8));
var _local6 = _local2.y - (oldY + (_local10 * _local8));
if (Math.sqrt((_local7 * _local7) + (_local6 * _local6)) < (_local4[_local3].radius + radius)) {
onCollision(_local4[_local3]);
}
}
_local3--;
}
}
function updateTime(elapsed) {
if (!keepTrackOfTime) {
return(undefined);
}
raceTime = raceTime + elapsed;
timeRemaining = timeRemaining - elapsed;
if (timeRemaining < 0) {
onMessage("timeout");
}
}
function update(elapsed, xShift, yShift, zShift) {
updatePosition(elapsed, xShift, yShift, zShift);
updateTime(elapsed);
if (specialItem) {
specialItem.update(this, elapsed);
}
sledSound.setVolume(Math.min((currentSpeed / 4000) * 100, 35));
}
function finishRace() {
keepTrackOfTime = false;
inMotion = false;
onMessage("finish");
}
function setElevated(elevated) {
this.elevated = elevated;
if (elevated) {
radius = radius * 2;
target.sled.blades._y = target.sled.blades._y + 25;
} else {
target.sled.blades._y = target.sled.blades._y - 25;
delete radius;
}
}
function updatePosition(elapsed, xShift, yShift, zShift) {
var _local23 = elapsed;
var _local18 = sector;
if (inMotion) {
currentSpeed = currentSpeed + ((((((0.5 * zShift) + 1) * 650) + (10 * sector.direction.y)) - currentSpeed) * elapsed);
} else {
currentSpeed = currentSpeed + ((-currentSpeed) * elapsed);
}
currentSpeed = Math.min(maxSpeed, currentSpeed);
velocity.z = velocity.z + (((currentSpeed * sector.direction.z) - velocity.z) * elapsed);
oldZ = z;
oldY = y;
oldX = x;
z = z + (velocity.z * elapsed);
var _local22 = z - oldZ;
if (isOnGround) {
velocity.x = velocity.x + ((((currentSpeed * sector.direction.x) + (((surfacePlane.x * xShift) * velocity.z) * 8)) - velocity.x) * elapsed);
velocity.y = velocity.y + (((((currentSpeed * sector.direction.y) + (((surfacePlane.y * xShift) * velocity.z) * 8)) + (800 * sector.yScale)) - velocity.y) * elapsed);
} else {
velocity.y = velocity.y + (2400 * elapsed);
}
var _local10 = x + (velocity.x * elapsed);
var _local11 = y + (velocity.y * elapsed);
_local18 = sector;
if (sector) {
checkSectorLocation();
}
checkCollisions(_local18, sector);
var _local7 = (z - sector.previous.z) / (sector.z - sector.previous.z);
var _local6 = (sector.previous.radius + ((sector.radius - sector.previous.radius) * _local7)) - radius;
var _local8 = sector.previous.xScale + ((sector.xScale - sector.previous.xScale) * _local7);
var _local12 = sector.previous.yScale + ((sector.yScale - sector.previous.yScale) * _local7);
var _local3 = sector.previous.x + ((sector.x - sector.previous.x) * _local7);
var _local5 = sector.previous.y + ((sector.y - sector.previous.y) * _local7);
var _local16 = new Point((_local10 - _local3) / _local8, (_local11 - _local5) / _local12);
var _local19 = _local16.magnitude;
up = _local16.getNormalized();
surfacePlane = up.cross();
if (((!sector.arcClosed) || (!sector.previous.arcClosed)) && (_local11 < _local5)) {
if (isOnGround) {
}
velocity.x = sector.direction.x * velocity.__get__magnitude();
_local10 = Math.min(Math.max(_local10, _local3 - (_local6 * _local8)), _local3 + (_local6 * _local8));
isOnGround = false;
} else if ((isOnGround = _local19 > _local6)) {
_local10 = _local3 + ((up.x * _local6) * _local8);
_local11 = _local5 + ((up.y * _local6) * _local12);
target._rotation = (Math.atan2(surfacePlane.y / _local8, surfacePlane.x / _local12) * 180) / 3.14;
}
x = _local10;
y = _local11;
updateDepth();
var _local13 = Math.pow(_local6 + radius, 2);
var _local9 = x - _local3;
var _local17 = Math.sqrt(_local13 - (_local9 * _local9));
var _local15 = _local9 - radius;
var _local21 = Math.sqrt(_local13 - (_local15 * _local15));
var _local14 = _local9 + radius;
var _local20 = Math.sqrt(_local13 - (_local14 * _local14));
var _local4 = sector.yScale;
shadowX = _local3 + _local9;
shadowY = (_local5 + (_local17 * _local4)) + ((1 - _local4) * radius);
shadowLeftX = _local3 + _local15;
shadowLeftY = (_local5 + (_local21 * _local4)) + ((1 - _local4) * radius);
shadowRightX = _local3 + _local14;
shadowRightY = (_local5 + (_local20 * _local4)) + ((1 - _local4) * radius);
return(undefined);
}
function onDisplay(offsetX, offsetY, offsetZ, depthRatio) {
shadow.swapDepths(target.getDepth() - 1);
shadow.clear();
shadow.beginFill(world.fogColor.valueOf());
var _local3 = world.camera.depthFocus / (offsetZ + 10);
var _local6 = world.camera.depthFocus / (offsetZ + 5);
var _local5 = world.camera.x;
var _local4 = world.camera.y;
var _local10 = shadowX - _local5;
var _local8 = shadowY - _local4;
var _local9 = shadowLeftX - _local5;
var _local7 = shadowLeftY - _local4;
var _local12 = shadowRightX - _local5;
var _local11 = shadowRightY - _local4;
var _local17 = (shadowX - _local5) * depthRatio;
var _local16 = (shadowY - _local4) * depthRatio;
shadow.moveTo(_local10 * depthRatio, _local8 * depthRatio);
shadow.curveTo(_local9 * depthRatio, _local7 * depthRatio, _local9 * _local6, _local7 * _local6);
shadow.curveTo(_local9 * _local3, _local7 * _local3, _local10 * _local3, _local8 * _local3);
shadow.curveTo(_local12 * _local3, _local11 * _local3, _local12 * _local6, _local11 * _local6);
shadow.curveTo(_local12 * depthRatio, _local11 * depthRatio, _local10 * depthRatio, _local8 * depthRatio);
var _local13 = (velocity.x * surfacePlane.x) + (velocity.y * surfacePlane.y);
var _local15 = Math.max(-maxDisplayTurn, Math.min(maxDisplayTurn, ((Math.atan2(velocity.z, _local13 * 0.4) * 180) / Math.PI) - 90));
if (currentTurnFrame == ((currentTurnFrame = centerFrame - Math.round(_local15 / turnDegreePerFrame)))) {
return(undefined);
}
target.sled.gotoAndStop(currentTurnFrame);
target.sled.blades.gotoAndStop(currentTurnFrame);
hideSpecialItems();
specialItem.applyDisplay(this, offsetX, offsetY, offsetZ, depthRatio);
}
function onEffects() {
specialItem.renderEffects(this);
}
function toString() {
return("Sled");
}
var linkageID = "Sled";
var shadowLinkageID = "SledShadow";
var turnMultiplier = 4;
var depthGroup = 2;
var collisionGroup = BB.ALL;
var radius = 25;
var isOnGround = false;
var maxDamage = 150;
var damage = 0;
var score = 0;
var letters = 0;
var lives = 0;
var raceTime = 0;
var timeRemaining = 0;
var elevated = false;
var inMotion = true;
var maxSpeed = 4000;
var messagesDisabled = false;
var keepTrackOfTime = true;
var currentSpeed = 0;
var targetFrame = 4;
var centerFrame = 4;
var turnDegreePerFrame = 15;
var maxDisplayTurn = 45;
}
Symbol 718 MovieClip [__Packages.GameLetter] Frame 0
class GameLetter extends Collectable
{
var letterNumber, target;
function GameLetter (letterNumber) {
super();
this.letterNumber = letterNumber;
}
function onAddToScene() {
target.gotoAndStop(letterNumber + 1);
}
function awardValue(obj) {
obj.collectLetter(value, letterNumber);
}
function toString() {
return("Letter");
}
var collectedSound = "GameLetterSound";
var linkageID = "GameLetters";
var value = 1000;
var collisionGroup = BB.LETTER;
var useRotation = false;
}
Symbol 719 MovieClip [__Packages.GameBoostPad] Frame 0
class GameBoostPad extends GenericObject
{
var setObjectSound, playObjectSound, sector, right, nearLeft, x, y, z, nearRight, farLeft, farCenter, farRight, arrowTip, world, target;
function GameBoostPad () {
super();
setObjectSound(collisionSound, _root);
}
function onCollision(obj) {
playObjectSound();
obj.currentSpeed = Math.min((obj.currentSpeed = obj.currentSpeed + 600), 6000);
obj.velocity.length = obj.velocity.length + 1600;
}
function onAddToWorld() {
radius = 50;
var _local3 = (right.x * sector.xScale) * radius;
var _local2 = (right.y * sector.yScale) * radius;
nearLeft = new Vector(x - _local3, y - _local2, z);
nearRight = new Vector(x + _local3, y + _local2, z);
farLeft = new Vector((x - _local3) + (sector.direction.x * radius), (y - _local2) + (sector.direction.y * radius), z + (sector.direction.z * radius));
farCenter = new Vector(x + (sector.direction.x * radius), y + (sector.direction.y * radius), z + (sector.direction.z * radius));
farRight = new Vector((x + _local3) + (sector.direction.x * radius), (y + _local2) + (sector.direction.y * radius), z + (sector.direction.z * radius));
arrowTip = new Vector(x + ((sector.direction.x * radius) * 2), y + ((sector.direction.y * radius) * 2), z + ((sector.direction.z * radius) * 2));
radius = 100;
}
function setDisplay(offsetX, offsetY, offsetZ, depthRatio) {
var _local2 = world.camera;
var _local3 = _local2.depthFocus / (farRight.z - _local2.z);
var _local5 = _local2.depthFocus / (arrowTip.z - _local2.z);
target.clear();
target.beginFill(16772608);
target.lineStyle(0, 15654144);
target.moveTo((nearLeft.x - _local2.x) * depthRatio, (nearLeft.y - _local2.y) * depthRatio);
target.lineTo((farCenter.x - _local2.x) * _local3, (farCenter.y - _local2.y) * _local3);
target.lineTo((nearRight.x - _local2.x) * depthRatio, (nearRight.y - _local2.y) * depthRatio);
target.lineTo((farRight.x - _local2.x) * _local3, (farRight.y - _local2.y) * _local3);
target.lineTo((arrowTip.x - _local2.x) * _local5, (arrowTip.y - _local2.y) * _local5);
target.lineTo((farLeft.x - _local2.x) * _local3, (farLeft.y - _local2.y) * _local3);
target.lineTo((nearLeft.x - _local2.x) * depthRatio, (nearLeft.y - _local2.y) * depthRatio);
target.endFill();
}
var collisionGroup = BB.ELEMENT;
var collisionEnabled = true;
var collisionSound = "SpeedBoost";
var useRotation = false;
var radius = 0;
}
Symbol 720 MovieClip [__Packages.GameFinishLine] Frame 0
class GameFinishLine extends GameNode
{
var target, radius;
function GameFinishLine () {
super();
}
function onAddToScene() {
target.gotoAndStop("finish");
radius = 10000;
}
function onCross(object) {
if (object.keepTrackOfTime) {
object.finishRace();
}
}
var linkageID = "BirdLine";
}
Symbol 721 MovieClip [__Packages.GamePoint] Frame 0
class GamePoint extends Collectable
{
var linkageID, value, setObjectSound;
function GamePoint (type) {
super();
switch (type) {
case LOW_VALUE :
default :
linkageID = "PointLowValue";
value = 250;
collectedSound = "Point Small";
break;
case HIGH_VALUE :
linkageID = "PointHighValue";
value = 1000;
collectedSound = "Point Large";
setObjectSound("Point Large", _root);
}
}
function awardValue(obj) {
obj.addPoints(value);
}
static var LOW_VALUE = 0;
static var MEDIUM_VALUE = 1;
static var HIGH_VALUE = 2;
var collisionGroup = BB.POINTS;
var collectedSound = "Point Small";
}
Symbol 722 MovieClip [__Packages.FlyingCargo] Frame 0
class FlyingCargo extends GenericObject
{
var watch, world, sector, x, y, z, target, addToScene, checkSectorLocation, updateDepth;
function FlyingCargo (watch) {
super();
this.watch = watch;
}
function onAddToWorld() {
world.registerForUpdates(this);
}
function onAddToScene() {
}
function onRemoveFromScene() {
world.removeFromUpdates(this);
world.removeObject(this);
}
function followCourse(elapsed, move) {
var _local5 = sector;
var _local3 = new Vector(x - offsetX, y - offsetY, z - offsetZ);
while (move > 0) {
var _local4 = new Vector(_local5.x - x, _local5.y - y, _local5.z - z);
var _local6 = _local4.length;
if (_local6 > move) {
_local3.x = _local3.x + (sector.direction.x * move);
_local3.y = _local3.y + (sector.direction.y * move);
_local3.z = _local3.z + (sector.direction.z * move);
move = 0;
} else {
_local3.x = _local3.x + _local4.x;
_local3.y = _local3.y + _local4.y;
_local3.z = _local3.z + _local4.z;
_local5 = _local5.next;
move = move - _local6;
}
}
x = _local3.x + offsetX;
y = _local3.y + offsetY;
z = _local3.z + offsetZ;
}
function dropCargo() {
target.cargo._visible = false;
var _local2 = sector;
var _local3 = 0;
var _local5 = 0;
while (_local5 < 10) {
var _local4 = new GamePoint(GamePoint.HIGH_VALUE);
world.addObject(_local4, _local2.previous.x + (_local2.direction.x * _local3), ((_local2.previous.y + _local2.radius) - 25) + (_local2.direction.y * _local3), _local2.previous.z + (_local2.direction.z * _local3), _local2.index);
_local4.addToScene();
_local3 = _local3 + 200;
if (_local3 > _local2.length) {
_local3 = _local3 % _local2.length;
_local2 = _local2.next;
}
_local5++;
}
fixedToCourse = false;
offsetX = (random(2) ? 100 : -100);
}
function onUpdate(elapsed) {
time = time + elapsed;
var _local3 = (watch.currentSpeed + 400) * elapsed;
if (fixedToCourse) {
y = y + ((-offsetY) + ((offsetY = offsetY - (40 * elapsed))));
followCourse(elapsed, _local3);
if (z > (watch.z + 1000)) {
dropCargo();
}
} else {
x = x + ((-offsetX) + ((offsetX = offsetX + (offsetX * elapsed))));
y = y + ((-offsetY) + ((offsetY = offsetY - (400 * elapsed))));
z = z + (((1000 - Math.abs(offsetX * 0.1)) - Math.abs(offsetY * 0.1)) * elapsed);
target._rotation = target._rotation + ((((offsetX > 0) ? 45 : -45) - target._rotation) * elapsed);
}
if (z > (world.camera.z + world.camera.hither)) {
addToScene();
}
checkSectorLocation();
updateDepth();
}
var linkageID = "Flying Bird";
var inMotion = true;
var fixedToCourse = true;
var offsetX = 0;
var offsetY = 0;
var offsetZ = 0;
var depthGroup = 2;
var cullDistance = 6000;
var time = 0;
var dist = 0;
}
Symbol 723 MovieClip [__Packages.Flash] Frame 0
class Flash
{
function Flash () {
}
static function setTimeout(fn, timeout) {
TimeoutsCreated++;
return((arguments.id = setInterval(callTimeout, timeout, arguments)));
}
static function clearTimeout(id) {
clearInterval(id);
}
static function callTimeout(data) {
clearInterval(data.id);
var _local2 = data[0];
data = data.splice(2);
_local2.apply(null, data);
}
static var TimeoutsCreated = 0;
}
Symbol 724 MovieClip [__Packages.GameBlades] Frame 0
class GameBlades extends Collectable
{
var world;
function GameBlades () {
super();
}
function onAddToWorld() {
if (!_root.PostVR_Blades) {
world.removeObject(this);
}
}
function awardValue(obj) {
obj.vrSound.stop();
obj.setSpecialItem(this);
obj.setElevated(true);
}
function update(object, elapsed) {
power = power - (drain * elapsed);
if (power <= 0) {
object.setElevated(false);
object.removeSpecialItem();
return(undefined);
}
}
var value = 0;
var collisionGroup = BB.BLADES;
var linkageID = "Blades";
var collectedSound = "VR";
var power = 12;
var drain = 1;
}
Symbol 725 MovieClip [__Packages.Obstacle] Frame 0
class Obstacle extends GenericObject
{
var setObjectSound, linkageID, removeFromScene, playObjectSound, x, target;
function Obstacle () {
super();
}
function onAddToScene() {
setObjectSound(collisionSound + (((collisionGroup & BB.SMALL) != 0) ? " small" : " tall"), _root);
}
function onRemoveFromScene() {
}
function toString() {
return("Obstacle" + linkageID);
}
function destroy() {
destroyed = true;
collisionEnabled = false;
removeFromScene();
}
function onCollision(obj) {
if (obj.elevated && (collisionGroup & BB.SMALL)) {
return(undefined);
}
playObjectSound();
obj.currentSpeed = obj.currentSpeed * 0.9;
var _local3 = (obj.x - x) / (radius + obj.radius);
obj.velocity.x = obj.velocity.x + (obj.velocity.z * _local3);
obj.velocity.z = obj.velocity.z * (0.5 - (1 - _local3));
obj.takeDamage(damageAmmount);
collisionEnabled = disableAfterCollision;
target.gotoAndPlay("Collision");
}
var collisionSound = "obstacle";
var collisionGroup = BB.OBSTACLE;
var collisionEnabled = true;
var disableAfterCollision = false;
var radius = 25;
var power = 500;
var damageAmmount = 30;
var destroyed = false;
}
Symbol 726 MovieClip [__Packages.RockPile] Frame 0
class RockPile extends Obstacle
{
var objectSize, collisionGroup, linkageID;
function RockPile (size) {
super();
objectSize = (size ? (size) : (BB.SHORT));
collisionGroup = collisionGroup | objectSize;
if (objectSize & BB.SHORT) {
linkageID = "RockPileShort";
} else {
linkageID = "RockPileTall";
}
}
}
Symbol 727 MovieClip [__Packages.SnowPile] Frame 0
class SnowPile extends Obstacle
{
var objectSize, collisionGroup, linkageID;
function SnowPile (size) {
super();
objectSize = (size ? (size) : (BB.SHORT));
collisionGroup = collisionGroup | objectSize;
if (objectSize & BB.SHORT) {
linkageID = "IceWallShort";
} else {
linkageID = "IceWallTall";
}
}
}
Symbol 728 MovieClip [__Packages.PalmTree] Frame 0
class PalmTree extends Obstacle
{
var objectSize, collisionGroup, linkageID;
function PalmTree (size) {
super();
objectSize = (size ? (size) : (BB.SHORT));
collisionGroup = collisionGroup | objectSize;
if (objectSize & BB.SHORT) {
linkageID = "PalmTreeSmall";
} else {
linkageID = "PalmTreeTall";
}
}
}
Symbol 729 MovieClip [__Packages.GameMagnet] Frame 0
class GameMagnet extends Collectable
{
var world, targetObjects;
function GameMagnet () {
super();
}
function onAddToWorld() {
if (!_root.PostVR_Magnets) {
world.removeObject(this);
}
}
function awardValue(obj) {
obj.setSpecialItem(this);
obj.vrSound.stop();
obj.vrSound.attachSound("magnet");
obj.vrSound.start(0, 10000);
applyDisplay(obj);
}
function applyDisplay(targetObject, offsetX, offsetY, offsetZ, depthRatio) {
var _local1 = targetObject.target.sled;
_local1.magnetLeft._visible = (_local1.magnetRight._visible = true);
_local1.magnetLeft.gotoAndStop(targetObject.currentTurnFrame);
_local1.magnetRight.gotoAndStop(targetObject.currentTurnFrame);
}
function removeDisplay(targetObject) {
targetObject.vrSound.stop();
targetObject.removeSpecialItem();
}
function update(sled, elapsed) {
power = power - (drain * elapsed);
if (power <= 0) {
removeDisplay(sled);
return(undefined);
}
targetObjects = [];
var _local8;
var _local2;
var _local6 = sled.sector.previous;
var _local3 = new Vector();
var _local9;
var _local7 = strength * elapsed;
while (_local6) {
_local8 = _local6.objects;
var _local5 = _local8.length;
while (_local5-- , _local5 > -1) {
_local2 = _local8[_local5];
if ((!_local2.collected) && (_local2.collisionGroup & BB.MAGNETIC_CHARGE)) {
if ((_local2.z - sled.z) > range) {
break;
}
_local3.loc(sled.x - _local2.x, sled.y - _local2.y, sled.z - _local2.z);
_local9 = _local3.length;
if (_local9 < _local7) {
_local2.setCollected(sled);
} else {
_local3.__set__length(_local7);
_local2.moveBy(_local3.x, _local3.y, _local3.z);
targetObjects.push(_local2);
}
}
}
if (_local6.z > (sled.z + range)) {
break;
}
_local6 = _local6.next;
}
}
function renderEffects(object) {
}
var value = 0;
var collisionGroup = BB.MAGNETS;
var linkageID = "Magnets";
var collectedSound = "VR";
var power = 12;
var drain = 1;
var range = 1000;
var strength = 1400;
}
Symbol 730 MovieClip [__Packages.GameCargo] Frame 0
class GameCargo extends GameNode
{
var world, x, sector, y, z;
function GameCargo () {
super();
}
function onAddToWorld() {
if (!_root.PostVR_Burst) {
world.removeObject(this);
}
x = sector.x;
y = sector.y;
z = sector.z;
}
function onCross(sled) {
world.addObject(new FlyingCargo(sled), sector.previous.x, (sector.previous.y + sector.previous.radius) - 300, sector.previous.z, sector.previous.index);
}
}
Symbol 731 MovieClip [__Packages.GameHealth] Frame 0
class GameHealth extends Collectable
{
function GameHealth () {
super();
}
function awardValue(collectingObject) {
collectingObject.repairDamage(value);
}
var collisionGroup = BB.HEALTH;
var value = 50;
var linkageID = "Health";
var collectedSound = "HealthSound";
}
Symbol 732 MovieClip [__Packages.GameInterface] Frame 0
class GameInterface extends MovieClip
{
var specialDisplay, tfTrackTime, tfScore, tfLives, message, bestTimes, watchObject, avatar, score, lives, timeRemaining, maxDamage, letters, damage, specialItem, raceTime, raceTimeDisplay, damageBar, menu, menuDisplay, onMenuOpen, onMenuClose;
function GameInterface () {
super();
specialDisplay._visible = false;
setMenuEnabled(true);
}
function setOpenTextFieldColor(hexValue) {
tfLives.textColor = (tfScore.textColor = (tfTrackTime.textColor = hexValue));
}
function showScreen(id, time) {
message.play();
_root.messageName = id;
}
function showRecordTime(record) {
bestTimes.gotoAndPlay("intro");
bestTimes.character.gotoAndStop(record.name);
bestTimes.value = _global.formatTime(record.time);
}
function hideRecordTime() {
bestTimes.gotoAndPlay("outro");
}
function showLetters() {
}
function hideLetters() {
}
function watch(obj, characterName) {
watchObject = obj;
avatar.gotoAndStop(characterName);
score = watchObject.score;
lives = "X" + watchObject.lives;
timeRemaining = watchObject.timeRemaining;
setRaceTime(watchObject.raceTime);
maxDamage = watchObject.maxDamage;
setDamage(watchObject.damage);
letters = 0;
}
function update(elapsed) {
if (score != watchObject.score) {
score = watchObject.score;
}
if (damage != watchObject.damage) {
setDamage(watchObject.damage);
}
if (letters != watchObject.letters) {
setLetters(watchObject.letters);
}
if (specialItem != watchObject.specialItem) {
setNewSpecialItem(watchObject.specialItem);
} else if (specialItem) {
setSpecialValue(specialItem.power);
}
setRaceTime(watchObject.raceTime);
setTimeRemaining(watchObject.timeRemaining);
}
function setTimeRemaining(value) {
if (timeRemaining == Math.ceil(value)) {
return(undefined);
}
timeRemaining = Math.ceil(value);
}
function setRaceTime(value) {
if (raceTime == ((raceTime = Math.floor(value * 10) * 0.1))) {
return(undefined);
}
raceTimeDisplay = _global.formatTime(value);
}
function setDamage(damage) {
this.damage = damage;
damageBar.setValue(1 - (damage / maxDamage));
}
function setSpecialValue(value) {
specialDisplay.value.setValue(value);
}
function setNewSpecialItem(newSpecialItem) {
specialItem = newSpecialItem;
if (specialItem) {
specialDisplay._visible = true;
specialDisplay.value.maxValue = specialItem.power;
setSpecialValue(specialItem.power);
switch (specialItem.collisionGroup) {
case BB.MAGNETS :
specialDisplay.gotoAndStop(1);
break;
case BB.BLADES :
specialDisplay.gotoAndStop(2);
break;
case BB.LASERS :
specialDisplay.gotoAndStop(3);
}
} else {
specialDisplay._visible = false;
}
}
function setLetters(letters) {
this.letters = letters;
}
function setMenuEnabled(enabled) {
menu.enabled = enabled;
}
function showMenu() {
menuDisplay.gotoAndPlay("Intro");
onMenuOpen();
setMenuEnabled(false);
}
function hideMenu() {
setMenuEnabled(true);
menuDisplay.gotoAndStop(1);
onMenuClose();
}
}
Symbol 81 MovieClip Frame 7
stop();
Symbol 89 MovieClip Frame 4
stop();
Symbol 97 MovieClip Frame 1
stop();
Symbol 110 MovieClip Frame 1
stop();
Symbol 116 MovieClip Frame 1
stop();
Symbol 171 MovieClip [PointHighValue] Frame 1
if (!winterExpired) {
gotoAndStop (3);
} else {
gotoAndStop(random(2) + 1);
}
Symbol 179 MovieClip [PointLowValue] Frame 1
if (!winterExpired) {
gotoAndStop (3);
} else {
gotoAndStop(random(2) + 1);
}
Symbol 191 MovieClip [Health] Frame 1
gotoAndStop(random(_totalframes) + 1);
Symbol 234 MovieClip [Flying Bird] Frame 1
if (_parent == _root) {
stop();
}
Symbol 234 MovieClip [Flying Bird] Frame 2
stop();
Symbol 257 MovieClip Frame 1
stop();
Symbol 257 MovieClip Frame 15
stop();
Symbol 257 MovieClip Frame 25
stop();
Symbol 257 MovieClip Frame 35
stop();
Symbol 257 MovieClip Frame 45
stop();
Symbol 257 MovieClip Frame 50
stop();
Symbol 258 MovieClip [DinoStart] Frame 4
play();
Symbol 258 MovieClip [DinoStart] Frame 8
stop();
Symbol 258 MovieClip [DinoStart] Frame 18
play();
Symbol 275 MovieClip [BirdLine] Frame 1
stop();
Symbol 320 MovieClip Frame 7
stop();
Symbol 358 MovieClip Frame 7
stop();
Symbol 362 MovieClip [Bobsled Game Stage] Frame 1
#initclip 37
Object.registerClass("Bobsled Game Stage", Game);
#endinitclip
Symbol 369 MovieClip [SimpleProgressBar] Frame 1
#initclip 39
function SimpleProgressBar() {
}
Object.registerClass("SimpleProgressBar", SimpleProgressBar);
var p = ((SimpleProgressBar.prototype = new MovieClip()));
p.value = 0;
p.maxValue = 1;
p.setValue = function (newValue) {
this.value = Math.max(0, Math.min(this.maxValue, newValue));
this.display._xscale = (this.value / this.maxValue) * 100;
};
#endinitclip
Symbol 381 MovieClip Frame 1
stop();
Symbol 389 Button
on (release) {
showMenu();
}
Symbol 397 MovieClip Frame 1
stop();
Symbol 398 MovieClip Frame 1
stop();
Symbol 416 MovieClip Frame 3
stop();
Symbol 416 MovieClip Frame 10
stop();
Symbol 416 MovieClip Frame 17
stop();
Symbol 416 MovieClip Frame 24
stop();
Symbol 416 MovieClip Frame 34
stop();
Instance of Symbol 416 MovieClip "message" in Symbol 417 MovieClip Frame 1
onClipEvent (load) {
gotoAndStop(_root.messageName);
}
Symbol 434 MovieClip Frame 20
stop();
Symbol 435 MovieClip Frame 1
stop();
Symbol 435 MovieClip Frame 2
play();
Symbol 435 MovieClip Frame 7
stop();
Symbol 449 MovieClip Frame 1
stop();
Symbol 455 MovieClip Frame 1
stop();
Symbol 455 MovieClip Frame 5
play();
Symbol 455 MovieClip Frame 14
stop();
Symbol 455 MovieClip Frame 24
play();
Symbol 475 MovieClip Frame 1
stop();
Symbol 475 MovieClip Frame 2
stop();
Symbol 478 MovieClip Frame 1
stop();
Symbol 478 MovieClip Frame 2
stop();
Symbol 481 MovieClip Frame 1
stop();
Symbol 481 MovieClip Frame 2
stop();
Symbol 482 MovieClip Frame 1
stop();
Symbol 482 MovieClip Frame 2
stop();
Symbol 485 MovieClip Frame 1
stop();
Symbol 485 MovieClip Frame 2
stop();
Symbol 486 MovieClip Frame 1
var letters = _parent._parent.letters;
if (letters & 1) {
mc0.nextFrame();
}
if (letters & 2) {
mc1.nextFrame();
}
if (letters & 4) {
mc2.nextFrame();
}
if (letters & 8) {
mc3.nextFrame();
}
if (letters & 16) {
mc4.nextFrame();
}
if (letters & 32) {
mc5.nextFrame();
}
if (letters & 64) {
mc6.nextFrame();
}
Symbol 493 MovieClip Frame 9
stop();
Symbol 495 Button
on (release) {
_root.quitGame();
}
Symbol 505 MovieClip Frame 9
stop();
Symbol 506 Button
on (release) {
gotoAndStop ("Help");
}
Symbol 510 MovieClip Frame 9
stop();
Symbol 511 Button
on (release) {
_parent.hideMenu();
}
Symbol 528 Button
on (release) {
_parent._parent.hideMenu();
}
Symbol 542 MovieClip Frame 9
stop();
Symbol 543 Button
on (release) {
nextFrame();
}
Symbol 544 MovieClip Frame 1
stop();
Symbol 586 MovieClip Frame 1
if (winterExpired) {
nextFrame();
} else {
stop();
}
Symbol 587 MovieClip Frame 9
stop();
Symbol 588 Button
on (release) {
prevFrame();
}
Symbol 603 MovieClip Frame 1
stop();
Symbol 605 MovieClip Frame 1
stop();
Symbol 605 MovieClip Frame 11
stop();
Symbol 606 MovieClip [Game Interface] Frame 1
#initclip 38
Object.registerClass("Game Interface", GameInterface);
#endinitclip
stop();
Symbol 607 MovieClip Frame 7
this.swapDepths(1048575);
this.removeMovieClip();
Symbol 637 MovieClip Frame 5
stop();
Symbol 638 Button
on (release) {
_root.startNextLevel();
}
Symbol 663 MovieClip Frame 9
stop();
Symbol 664 Button
on (release) {
_root.playAgain();
}
Symbol 677 MovieClip Frame 1
stop();
Symbol 682 MovieClip Frame 16
stop();
Symbol 683 Button
on (release) {
_root.playAgain();
}
Symbol 695 MovieClip Frame 1
gotoAndStop(_root.currentCharacter);
Symbol 696 MovieClip Frame 16
stop();