Frame 10
function nextLevel() {
lev++;
newLevel();
}
function quitGame() {
killLevel();
ballKillAll();
_root.targetScope._x = -250;
}
function newGame() {
lev = 1;
oldLev = 0;
life = 3;
score = 0;
newLevel();
}
function loseLife() {
if (!lifeLost) {
lifeLost = true;
life--;
score = score - 250;
deletePlayer();
_root.targetScope._x = -250;
this.onEnterFrame = function () {
};
if (life <= 0) {
gotoAndStop ("gameOver");
} else {
gotoAndStop ("loseLife");
}
}
}
function deletePlayer() {
var _local1 = balls.length - 1;
while (_local1 >= 0) {
if (balls[_local1] == player) {
ballKill(_local1);
}
_local1--;
}
}
function newLevel() {
lifeLost = false;
hurryUp = false;
deathReason = "";
skipIntro = false;
if (!draw_level(lev)) {
gameComplete();
} else {
_root.playTarget = "game";
_root.gotoAndStop("tween");
player.vx = 0;
player.vy = 0;
}
}
function killLevel() {
for (all in _root.levelMC) {
_root.levelMC[all].removeMovieClip();
}
for (all in _root.levelCollision) {
_root.levelCollision[all].removeMovieClip();
}
for (all in _root.levelWallMC) {
_root.levelWallMC[all].removeMovieClip();
}
}
function gameComplete() {
gotoAndStop ("gameComplete");
}
function addBall(x, y, type) {
if (oldLev == lev) {
return(true);
}
x = ((tileSize * x) + (tileSize / 2)) + randRange(-3, 3);
y = ((tileSize * y) + (tileSize / 2)) + randRange(-3, 3);
vx = 0;
vy = 0;
r = type;
m = r;
t = 2;
balls.push(new ball(x, y, vx, vy, r, m, t));
}
function draw_level(number) {
if (oldLev != number) {
ballKillAll();
}
level = new Array();
switch (number) {
case 1 :
subtitle = "Tutorial 1 : In the Beginning";
ball_start_x = 1;
ball_start_y = 3;
gui_x = 0;
gui_y = 0;
level[0] = new Array(150, 1, 3, 1, 150, 150, 150, 4);
level[1] = new Array(150, 1, 13, 5, 1, 1, 1, 1);
level[2] = new Array(150, 150, 151, 150, 150, 150, 150, 150);
level[3] = new Array(3, 2, 1, 1, 1, 1, 1, 200);
level[4] = new Array(150, 150, 150, 150, 150, 150, 150, 151);
level[5] = new Array(1, 1, 1, 1, 1, 4, 4, 4);
addBall(5, 3, 8);
break;
case 2 :
subtitle = "Tutorial 2 : Easy Movement";
ball_start_x = 0;
ball_start_y = 2;
gui_x = 3;
gui_y = 4;
level[0] = new Array(150, 150, 150, 150, 150, 150, 150, 151);
level[1] = new Array(150, 151, 150, 150, 150, 150, 150, 150);
level[2] = new Array(2, 3, 13, 103, 103, 103, 103, 200);
level[3] = new Array(150, 150, 150, 150, 150, 150, 150, 150);
level[4] = new Array(150, 150, 150, 150, 151, 150, 150, 150);
level[5] = new Array(151, 150, 150, 150, 150, 150, 150, 150);
addBall(2, 2, 20);
break;
case 3 :
subtitle = "Tutorial 3 : Pop the RED Ball";
ball_start_x = 0;
ball_start_y = 1;
gui_x = 5;
gui_y = 2;
level[0] = new Array(151, 150, 151, 150, 150, 150, 150, 150);
level[1] = new Array(2, 1, 1, 1, 1, 1, 1, 180);
level[2] = new Array(150, 150, 151, 150, 150, 150, 150, 151);
level[3] = new Array(1, 4, 180, 180, 1, 1, 3, 1);
level[4] = new Array(6, 1, 5, 3, 1, 13, 180, 6);
level[5] = new Array(1, 180, 180, 180, 180, 180, 180, 1);
addBall(3, 1, 20);
break;
case 4 :
subtitle = "Tutorial 4 : Oops - no friction!";
ball_start_x = 0;
ball_start_y = 3;
gui_x = 2;
gui_y = 1;
level[0] = new Array(105, 104, 150, 104, 104, 104, 105, 150);
level[1] = new Array(104, 104, 150, 104, 105, 104, 104, 150);
level[2] = new Array(151, 150, 150, 150, 150, 150, 150, 150);
level[3] = new Array(2, 104, 104, 104, 104, 105, 104, 200);
level[4] = new Array(150, 150, 150, 151, 150, 150, 150, 151);
level[5] = new Array(104, 105, 150, 104, 104, 104, 104, 104);
addBall(2, 3, 25);
break;
case 5 :
subtitle = "Around and Around";
ball_start_x = 0;
ball_start_y = 5;
gui_x = 3;
gui_y = 3;
level[0] = new Array(1, 1, 1, 1, 1, 1, 3, 1);
level[1] = new Array(1, 150, 150, 151, 150, 150, 150, 1);
level[2] = new Array(3, 150, 4, 9, 4, 4, 151, 1);
level[3] = new Array(1, 150, 4, 150, 150, 200, 150, 3);
level[4] = new Array(1, 150, 9, 151, 150, 150, 150, 1);
level[5] = new Array(2, 151, 1, 5, 1, 13, 1, 1);
addBall(4, 2, 10);
break;
case 6 :
subtitle = "2 by 4";
ball_start_x = 3;
ball_start_y = 2;
gui_x = 4;
gui_y = 0;
level[0] = new Array(150, 150, 151, 150, 150, 150, 150, 151);
level[1] = new Array(3, 1, 1, 13, 1, 1, 1, 1);
level[2] = new Array(1, 1, 1, 2, 3, 1, 1, 1);
level[3] = new Array(4, 9, 4, 4, 4, 4, 4, 4);
level[4] = new Array(6, 4, 4, 4, 4, 9, 4, 6);
level[5] = new Array(200, 3, 1, 1, 1, 5, 1, 200);
addBall(1, 1, 10);
addBall(6, 1, 30);
addBall(1, 4, 30);
addBall(6, 4, 10);
break;
case 7 :
subtitle = "Conveyor Confusion";
ball_start_x = 6;
ball_start_y = 0;
gui_x = 0;
gui_y = 5;
level[0] = new Array(200, 103, 103, 100, 102, 150, 2, 1);
level[1] = new Array(200, 100, 102, 102, 101, 150, 1, 13);
level[2] = new Array(180, 102, 102, 103, 101, 151, 6, 6);
level[3] = new Array(200, 101, 103, 101, 103, 150, 100, 100);
level[4] = new Array(151, 150, 101, 100, 102, 102, 102, 100);
level[5] = new Array(180, 150, 101, 102, 101, 101, 102, 102);
addBall(7, 1, 25);
break;
case 8 :
subtitle = "Danger! Spikes!";
ball_start_x = 0;
ball_start_y = 2;
gui_x = 0;
gui_y = 0;
level[0] = new Array(150, 104, 104, 104, 180, 104, 104, 180);
level[1] = new Array(3, 104, 105, 104, 104, 104, 104, 180);
level[2] = new Array(2, 104, 104, 104, 104, 104, 104, 180);
level[3] = new Array(13, 104, 104, 104, 104, 105, 104, 180);
level[4] = new Array(1, 104, 104, 104, 104, 104, 104, 180);
level[5] = new Array(180, 105, 104, 104, 180, 104, 104, 180);
addBall(2, 1, 15);
addBall(2, 2, 15);
addBall(2, 3, 15);
addBall(2, 4, 15);
addBall(3, 1, 15);
addBall(3, 2, 15);
addBall(3, 3, 15);
addBall(3, 4, 15);
addBall(4, 1, 15);
addBall(4, 2, 15);
addBall(4, 3, 15);
addBall(4, 4, 15);
break;
case 9 :
subtitle = "Moving Icely";
ball_start_x = 6;
ball_start_y = 0;
gui_x = 7;
gui_y = 1;
level[0] = new Array(103, 104, 103, 103, 105, 104, 2, 180);
level[1] = new Array(104, 150, 150, 150, 150, 151, 150, 150);
level[2] = new Array(101, 150, 100, 104, 102, 150, 9, 4);
level[3] = new Array(104, 151, 104, 150, 105, 151, 4, 4);
level[4] = new Array(104, 150, 104, 150, 104, 150, 151, 100);
level[5] = new Array(101, 104, 102, 151, 101, 105, 104, 102);
addBall(6, 2, 20);
addBall(6, 2, 15);
addBall(7, 2, 20);
addBall(6, 3, 15);
addBall(6, 3, 20);
break;
case 10 :
subtitle = "In the Middle";
ball_start_x = 3;
ball_start_y = 2;
gui_x = 3;
gui_y = 0;
level[0] = new Array(200, 150, 151, 150, 150, 150, 150, 200);
level[1] = new Array(8, 1, 1, 100, 1, 1, 1, 8);
level[2] = new Array(103, 103, 103, 2, 102, 102, 102, 102);
level[3] = new Array(1, 4, 1, 101, 1, 1, 3, 1);
level[4] = new Array(6, 1, 1, 101, 1, 13, 1, 6);
level[5] = new Array(200, 150, 150, 150, 151, 150, 150, 200);
addBall(1, 1, 10);
addBall(6, 1, 30);
addBall(1, 4, 30);
addBall(6, 4, 10);
break;
case 11 :
subtitle = "Slopes";
ball_start_x = 5;
ball_start_y = 5;
gui_x = 2;
gui_y = 3;
level[0] = new Array(150, 161, 162, 150, 150, 161, 1, 162);
level[1] = new Array(161, 163, 164, 162, 161, 163, 164, 1);
level[2] = new Array(1, 151, 150, 1, 1, 150, 161, 13);
level[3] = new Array(1, 162, 150, 150, 150, 150, 1, 163);
level[4] = new Array(164, 3, 1, 162, 150, 161, 5, 150);
level[5] = new Array(150, 151, 164, 200, 150, 2, 1, 162);
addBall(6, 4, 25);
addBall(6, 0, 15);
break;
case 12 :
subtitle = "3 Balls, 3 Holes";
ball_start_x = 7;
ball_start_y = 1;
gui_x = 4;
gui_y = 4;
level[0] = new Array(150, 150, 150, 151, 150, 150, 150, 1);
level[1] = new Array(200, 103, 5, 1, 3, 1, 102, 2);
level[2] = new Array(150, 151, 150, 150, 150, 150, 151, 1);
level[3] = new Array(200, 103, 103, 1, 1, 3, 102, 1);
level[4] = new Array(150, 150, 150, 150, 150, 151, 150, 1);
level[5] = new Array(200, 103, 103, 103, 1, 3, 102, 1);
addBall(2, 1, 20);
addBall(3, 3, 25);
addBall(4, 5, 30);
break;
case 13 :
subtitle = "Oooh - Circles";
ball_start_x = 2;
ball_start_y = 0;
gui_x = 1;
gui_y = 0;
level[0] = new Array(200, 150, 2, 1, 1, 1, 1, 1);
level[1] = new Array(1, 160, 1, 160, 1, 160, 1, 160);
level[2] = new Array(1, 3, 1, 1, 1, 1, 5, 1);
level[3] = new Array(160, 4, 160, 1, 160, 1, 160, 4);
level[4] = new Array(1, 1, 1, 3, 1, 13, 1, 1);
level[5] = new Array(1, 160, 1, 160, 1, 160, 1, 160);
addBall(7, 3, 25);
addBall(1, 3, 25);
break;
case 14 :
subtitle = "Push it Round";
ball_start_x = 0;
ball_start_y = 0;
gui_x = 3;
gui_y = 2;
level[0] = new Array(2, 150, 13, 1, 5, 1, 1, 1);
level[1] = new Array(1, 151, 1, 1, 1, 3, 1, 10);
level[2] = new Array(1, 150, 1, 150, 151, 150, 150, 11);
level[3] = new Array(1, 150, 5, 150, 4, 9, 4, 4);
level[4] = new Array(1, 3, 1, 150, 4, 150, 150, 150);
level[5] = new Array(164, 4, 163, 150, 9, 4, 4, 200);
addBall(0, 2, 15);
addBall(4, 1, 20);
break;
case 15 :
subtitle = "Ouch Spiky";
ball_start_x = 0;
ball_start_y = 0;
gui_x = 1;
gui_y = 0;
level[0] = new Array(2, 150, 180, 1, 5, 13, 180, 150);
level[1] = new Array(1, 180, 1, 1, 180, 3, 1, 180);
level[2] = new Array(1, 180, 1, 150, 180, 1, 180, 150);
level[3] = new Array(3, 150, 5, 180, 151, 9, 4, 4);
level[4] = new Array(1, 180, 1, 150, 180, 180, 180, 5);
level[5] = new Array(1, 4, 1, 180, 150, 200, 4, 4);
addBall(7, 5, 25);
break;
case 16 :
subtitle = "Ice Circles";
ball_start_x = 4;
ball_start_y = 5;
gui_x = 0;
gui_y = 5;
level[0] = new Array(104, 105, 104, 104, 104, 105, 104, 104);
level[1] = new Array(1, 160, 1, 160, 1, 160, 1, 160);
level[2] = new Array(104, 104, 105, 104, 104, 104, 104, 104);
level[3] = new Array(160, 4, 160, 1, 160, 3, 10, 4);
level[4] = new Array(104, 104, 104, 104, 105, 104, 11, 105);
level[5] = new Array(150, 160, 1, 160, 2, 160, 200, 160);
addBall(0, 0, 25);
addBall(0, 2, 25);
break;
case 17 :
subtitle = "A-Mazing";
ball_start_x = 2;
ball_start_y = 0;
gui_x = 1;
gui_y = 0;
level[0] = new Array(200, 150, 2, 160, 160, 3, 1, 1);
level[1] = new Array(1, 160, 1, 1, 160, 1, 160, 1);
level[2] = new Array(5, 1, 160, 1, 1, 1, 160, 5);
level[3] = new Array(160, 1, 160, 4, 160, 160, 160, 1);
level[4] = new Array(160, 3, 160, 1, 160, 1, 4, 1);
level[5] = new Array(160, 1, 1, 1, 160, 1, 1, 160);
addBall(5, 2, 30);
addBall(6, 4, 30);
break;
case 18 :
subtitle = "Ice Maze";
ball_start_x = 7;
ball_start_y = 0;
gui_x = 2;
gui_y = 1;
level[0] = new Array(180, 105, 104, 104, 104, 1, 151, 2);
level[1] = new Array(150, 104, 150, 180, 180, 104, 150, 104);
level[2] = new Array(1, 1, 150, 150, 105, 104, 150, 104);
level[3] = new Array(3, 180, 150, 1, 104, 151, 1, 1);
level[4] = new Array(1, 150, 150, 1, 180, 180, 1, 180);
level[5] = new Array(200, 151, 180, 104, 104, 104, 104, 150);
addBall(0, 4, 35);
break;
case 19 :
subtitle = "Conveyor Carnage";
ball_start_x = 6;
ball_start_y = 0;
gui_x = 0;
gui_y = 2;
level[0] = new Array(150, 103, 103, 1, 103, 1, 2, 1);
level[1] = new Array(180, 103, 5, 103, 12, 3, 1, 1);
level[2] = new Array(150, 103, 103, 1, 103, 103, 1, 5);
level[3] = new Array(200, 103, 4, 103, 103, 12, 1, 1);
level[4] = new Array(150, 103, 1, 103, 1, 103, 103, 1);
level[5] = new Array(180, 103, 1, 103, 3, 103, 12, 1);
addBall(2, 1, 25);
addBall(4, 5, 25);
addBall(2, 3, 25);
break;
case 20 :
subtitle = "It Takes All Types";
ball_start_x = 3;
ball_start_y = 2;
gui_x = 7;
gui_y = 1;
level[0] = new Array(105, 104, 105, 180, 104, 104, 104, 180);
level[1] = new Array(104, 180, 104, 151, 105, 150, 105, 150);
level[2] = new Array(200, 150, 1, 2, 1, 150, 104, 180);
level[3] = new Array(104, 180, 1, 1, 1, 180, 104, 104);
level[4] = new Array(103, 150, 180, 101, 150, 150, 180, 104);
level[5] = new Array(102, 101, 102, 103, 180, 105, 104, 104);
addBall(0, 1, 20);
addBall(0, 3, 15);
addBall(6, 2, 25);
addBall(5, 5, 30);
break;
default :
return(false);
}
killLevel();
balls.push(new ball(0, 0, 0, 0, 15, 15, 1));
_root.player = balls[balls.length - 1];
ballSetBounds(0, 0, 640, 480);
oldLev = number;
player.movie._x = (tileSize * ball_start_x) + (tileSize / 2);
player.movie._y = (tileSize * ball_start_y) + (tileSize / 2);
var _local2 = balls.length - 1;
while (_local2 >= 0) {
balls[_local2].vx = 0;
balls[_local2].vy = 0;
_local2--;
}
_root.gameGui._x = (tileSize * gui_x) + (tileSize / 2);
_root.gameGui._y = (tileSize * gui_y) + (tileSize / 2);
y = 0;
while (y <= tileYCount) {
x = 0;
while (x <= tileXCount) {
if (level[y][x] > 0) {
depth = (y * 12) + x;
tile = level[y][x];
tx = (x * tileSize) + (tileSize / 2);
ty = (y * tileSize) + (tileSize / 2);
if ((tile >= 150) && (tile <= 180)) {
place_brick = _root.levelWallMC.attachMovie("brick", "brick_" + depth, _root.levelWallMC.getNextHighestDepth(), {_x:tx, _y:ty});
place_brick.gotoAndStop(tile);
if (tile >= 150) {
place_brick = _root.levelCollision.attachMovie("brickCollision", "brick_" + depth, _root.levelCollision.getNextHighestDepth(), {_x:tx, _y:ty});
place_brick.gotoAndStop(tile);
}
tile = 99;
}
place_brick = _root.levelMC.attachMovie("brick", "brick_" + depth, _root.levelMC.getNextHighestDepth(), {_x:tx, _y:ty});
place_brick.gotoAndStop(tile);
}
x++;
}
y++;
}
return(true);
}
function timeStart(time) {
if (time != 0) {
timeDirection = -1;
} else {
timeDirection = 1;
}
currentTime = time;
startTime = getTimer();
timePauseLength = 0;
timePauseStart = 0;
}
function timePause() {
timePauseStart = getTimer();
}
function timeUnpause() {
timePauseLength = timePauseLength + (getTimer() - timePauseStart);
}
function timeStop() {
totalTime = timeGetMillisecs();
}
function timeGetSecs() {
return(Math.floor(timeGetMillisecs() / 1000));
}
function timeGet() {
return((timeGetSecs() * timeDirection) + currentTime);
}
function timeGetMillisecs() {
return((getTimer() - startTime) - timePauseLength);
}
function ballShoot() {
var _local1 = targetScope.power._totalframes / 2;
var _local3 = Math.abs(targetScope.power._currentframe - _local1);
var _local2 = ((_local1 - _local3) + 5) * 0.55;
player.vx = player.vx + (Math.cos(radians(targetScope._rotation - 90)) * _local2);
player.vy = player.vy + (Math.sin(radians(targetScope._rotation - 90)) * _local2);
}
function ballAmount() {
return(balls.length);
}
function ballScale(ball, percent) {
scale = (ball.radius * percent) / 5;
ball.movie._xscale = (ball.movie._yscale = scale);
}
function ballKill(b) {
balls[b].movie.removeMovieClip();
delete balls[b];
balls.splice(b, 1);
}
function ballKillAll() {
var _local1 = balls.length - 1;
while (_local1 >= 0) {
ballKill(_local1);
_local1--;
}
ballCount = 0;
}
function ballInBox(ball, x, y, width, height, debug) {
if (debug == true) {
}
var _local3 = -0.6;
var _local2 = ball.radius * (ball._z / 100);
if (ball.movie._x < (x + _local2)) {
ball.movie._x = x + _local2;
ball.vx = ball.vx * _local3;
playWallBounce = true;
}
if (ball.movie._x > ((x + width) - _local2)) {
ball.movie._x = (x + width) - _local2;
ball.vx = ball.vx * _local3;
playWallBounce = true;
}
if (ball.movie._y < (y + _local2)) {
ball.movie._y = y + _local2;
ball.vy = ball.vy * _local3;
playWallBounce = true;
}
if (ball.movie._y > ((y + height) - _local2)) {
ball.movie._y = (y + height) - _local2;
ball.vy = ball.vy * _local3;
playWallBounce = true;
}
}
function isBallInBox(ball, x, y, width, height, debug) {
if (debug == true) {
}
if (ball.movie._x > x) {
if (ball.movie._x < (x + width)) {
if (ball.movie._y > y) {
if (ball.movie._y < (y + height)) {
return(true);
}
}
}
}
return(false);
}
function ballReaction(b1, b2, dist, xdiff, ydiff) {
var _local12 = Math.atan2(ydiff, xdiff);
var _local4 = Math.cos(_local12);
var _local3 = Math.sin(_local12);
var _local5 = (_local4 * b1.vx) + (_local3 * b1.vy);
var _local9 = (_local4 * b1.vy) - (_local3 * b1.vx);
var _local6 = (_local4 * b2.vx) + (_local3 * b2.vy);
var _local8 = (_local4 * b2.vy) - (_local3 * b2.vx);
var _local14 = (_local5 * b1.mass) + (_local6 * b2.mass);
var _local13 = _local5 - _local6;
_local5 = (_local14 - (b2.mass * _local13)) / (b1.mass + b2.mass);
_local6 = _local13 + _local5;
b1.vx = (_local4 * _local5) - (_local3 * _local9);
b1.vy = (_local4 * _local9) + (_local3 * _local5);
b2.vx = (_local4 * _local6) - (_local3 * _local8);
b2.vy = (_local4 * _local8) + (_local3 * _local6);
b1.xmov = b1.xmov * 0.99;
b1.ymov = b1.ymov * 0.99;
b2.xmov = b2.xmov * 0.99;
b2.ymov = b2.ymov * 0.99;
var _local10 = (((b1.radius + b2.radius) + 2) - dist) / 2;
var _local11 = _local4 * _local10;
var _local7 = _local3 * _local10;
b1.movie._x = b1.movie._x - _local11;
b1.movie._y = b1.movie._y - _local7;
b2.movie._x = b2.movie._x + _local11;
b2.movie._y = b2.movie._y + _local7;
}
function isCollision(tx, ty) {
tile = currentTile(tx, ty);
if ((tile >= 150) && (tile <= 180)) {
if (tile >= 160) {
if (_root.levelCollision.hitTest(tx, ty, true)) {
if (tile == 180) {
playPop = true;
return(2);
}
playWallBounce = true;
return(1);
}
return(0);
}
playWallBounce = true;
return(1);
}
return(0);
}
function print_r(obj, indent) {
if (indent == null) {
indent = " ";
}
var _local2 = "";
for (item in obj) {
if (typeof(obj[item]) == "object") {
_local2 = _local2 + (((indent + "[") + item) + "] => Object\n");
} else {
_local2 = _local2 + (((((indent + "[") + item) + "] => ") + obj[item]) + newline);
}
_local2 = _local2 + print_r(obj[item], indent + " ");
}
return(_local2);
}
function soundAddSound(soundName) {
snd = sounds.push(new soundCreate(soundName, false));
return(snd - 1);
}
function soundAddMusic(soundName) {
music = sounds.push(new soundCreate(soundName, true));
return(music - 1);
}
function soundPlay(sound, loop) {
if ((sounds[sound].delay <= 0) || (loop > 1)) {
if (sounds[sound].isPlaying == false) {
sounds[sound].sound.start(0, loop);
sounds[sound].setVolume(100);
if (loop > 1) {
sounds[sound].isPlaying = true;
} else {
sounds[sound].isPlaying = false;
}
} else {
sounds[s].setVolume(100);
sounds[s].length = 0;
sounds[s].duration = 0;
}
sounds[sound].delay = 6;
}
}
function soundStop(sound) {
sounds[sound].sound.stop();
sounds[sound].isPlaying = false;
}
function soundCreate(soundName, isMusic) {
this.name = "sound_" + soundName;
this.soundName = soundName;
this.isPlaying = false;
this.delay = 0;
this.length = 0;
this.duration = 0;
if (isMusic == true) {
_root.createEmptyMovieClip(this.name, _root.getNextHighestDepth());
this.sound = new Sound(this.name);
} else {
this.sound = new Sound(_root);
}
this.sound.attachSound(soundName);
}
function soundFadeCreate(s, duration) {
if (sounds[s].isPlaying == true) {
sounds[s].length = duration;
sounds[s].duration = duration;
}
}
function soundUpdate() {
var _local1;
for (var _local2 in sounds) {
sounds[_local2].delay--;
if (sounds[_local2].length > 0) {
sounds[_local2].length--;
_local1 = sounds[_local2].length / sounds[_local2].duration;
_local1 = _local1 * 100;
sounds[_local2].sound.setVolume(_local1);
if (sounds[_local2].length <= 0) {
sounds[_local2].sound.stop();
sounds[_local2].isPlaying = false;
sounds[_local2].sound.setVolume(100);
}
}
}
}
function soundFadeAll() {
for (var _local1 in sounds) {
soundF.push(new soundFade(_local1, 30));
}
}
function start() {
intro.play();
}
function reset() {
_root.targetScope._x = -250;
_root.gotoAndStop("menu");
}
function quit() {
GameManager.getInstance().gameDone();
}
function enableConsole() {
gameActive = false;
GameManager.getInstance().enableConsole();
}
function disableConsole() {
gameActive = true;
GameManager.getInstance().disableConsole();
}
function preload() {
this.onEnterFrame = function () {
percentLoaded = (_root.getBytesLoaded() / _root.getBytesTotal()) * 100;
_root.preloader.gotoAndStop(Math.floor(percentLoaded));
if (percentLoaded >= 95) {
gotoAndStop ("loaded");
delete this.onEnterFrame;
}
};
}
function badSite() {
siteOk = 0;
var _local2 = new Array("http://binarysun.co.uk", "http://www.binaryjoy.co.uk", "http://www.binarymoon.co.uk", "http://www.newgrounds.com", "http://newgrounds.com", "http://uploads.ungrounded.net/", "file://", "http://www.binarysun.co.uk");
for (var _local3 in _local2) {
if (_root._url.indexOf(_local2[_local3]) == 0) {
siteOk++;
}
}
if (siteOk > 0) {
return(false);
}
return(true);
}
function __com_mochibot__(swfid, mc, lv, trk) {
var x;
var g;
var s;
var fv;
var sb;
var u;
var res;
var mb;
var mbc;
mb = "__mochibot__";
mbc = "mochibot.com";
g = (_global ? (_global) : (_level0._root));
if (g[mb + swfid]) {
return(g[mb + swfid]);
}
s = System.security;
x = mc._root.getSWFVersion;
fv = (x ? (mc.getSWFVersion()) : ((_global ? 6 : 5)));
if (!s) {
s = {};
}
sb = s.sandboxType;
if (sb == "localWithFile") {
return(null);
}
x = s.allowDomain;
if (x) {
s.allowDomain(mbc);
}
x = s.allowInsecureDomain;
if (x) {
s.allowInsecureDomain(mbc);
}
u = (((((((((((("http://" + mbc) + "/my/core.swf?mv=7&fv=") + fv) + "&v=") + escape(getVersion())) + "&swfid=") + escape(swfid)) + "&l=") + lv) + "&f=") + mc) + (sb ? ("&sb=" + sb) : "")) + (trk ? "&t=1" : "");
lv = ((fv > 6) ? (mc.getNextHighestDepth()) : ((g[mb + "level"] ? (g[mb + "level"] + 1) : (lv))));
g[mb + "level"] = lv;
if (fv == 5) {
res = "_level" + lv;
if (!eval (res)) {
loadMovieNum (u, lv);
}
} else {
res = mc.createEmptyMovieClip(mb + swfid, lv);
res.loadMovie(u);
}
return(res);
}
_global.yspeed = 0;
_global.xspeed = 0;
_global.lev = 1;
_global.oldLev = 0;
_global.life = 0;
_global.lifeLost = false;
_global.score = 0;
_global.subtitleq = "";
_global.gameActive = false;
_global.hurryUp = false;
_global.deathReason = "";
_global.skipIntro = false;
_global.newTarget = "";
_global.tileSize = 80;
_global.tileXCount = 7;
_global.tileYCount = 5;
_global.playPop = false;
_global.playBallBounce = false;
_global.playWallBounce = false;
updateMenu = function () {
menuScope._x = player.movie._x;
menuScope._y = player.movie._y;
menuScope._rotation = -90 + degrees(Math.atan2(menuScope._y - _root._ymouse, menuScope._x - _xmouse));
};
updateGame = function () {
friction = 0.99;
power = 0.4;
playPop = false;
playBallBounce = false;
playWallBounce = false;
ballUpdate();
targetScope._x = player.movie._x;
targetScope._y = player.movie._y;
targetScope._rotation = -90 + degrees(Math.atan2(targetScope._y - _root._ymouse, targetScope._x - _xmouse));
gameTime = timeGet();
if (timeGet() <= 0) {
deathReason = "Out of Time";
loseLife();
}
if ((timeGet() <= 10) && (hurryUp == false)) {
hurryUp = true;
mcHurryUp.gotoAndPlay("play");
}
if (playPop == true) {
soundPlay(sndPop, 1);
}
if (playBallBounce == true) {
soundPlay(sndBallBounce, 1);
}
if (playWallBounce == true) {
soundPlay(sndWallBounce, 1);
}
if (ballAmount() <= 1) {
if (balls[0] == player) {
gotoAndStop ("levelComplete");
} else {
loseLife();
}
}
};
_global.startTime = 0;
_global.totalTime = 0;
_global.timeDirection = 1;
_global.timePauseLength = 0;
_global.timePauseStart = 0;
_global.currenttime = 0;
_global.ballXMax;
_global.ballYMax;
_global.ballXMin;
_global.ballYMin;
_global.ballFriction = 0.97;
_global.balls = Array();
_global.ballCount = 0;
ballDemo = function () {
ballSetBounds(0, 0, 550, 400);
var _local3 = 5;
var _local2 = _local3;
while (_local2 >= 1) {
var _local1 = 1;
while (_local1 <= _local2) {
x = ((5 - _local2) * 27) + 150;
y = ((_local1 * 31) - ((_local2 * 31) / 2)) + 200;
vx = 0;
vy = 0;
radius = 20;
mass = radius * 5;
balls.push(new ball(x, y, vx, vy, radius, mass));
_local1++;
}
_local2--;
}
balls.push(new ball(500, 115, -40, 1, 10, 25));
};
ball = function (x, y, vx, vy, r, m, t) {
ballCount++;
this._mcname = "ball" + ballCount;
this.movie = _root.ballClip.attachMovie("ball", this._mcname, ballClip.getNextHighestDepth());
this.movie._x = x;
this.movie._y = y;
this._z = 100;
this.movie._status = "alive";
this.vx = vx;
this.vy = vy;
this.vz = 0;
this.radius = r;
this.texture = t;
if ((m == 0) || (m == undefined)) {
this.mass = this.radius * 3;
} else {
this.mass = m;
}
this.movie.texture.gotoAndStop(t);
this.movie.t = t;
return(this);
};
ballSetBounds = function (xMin, yMin, xMax, yMax) {
ballXMax = xMax;
ballYMax = yMax;
ballXMin = xMin;
ballYMin = yMin;
};
ballReset = function (b) {
b = balls[b];
b.movie._x = 0;
b.movie._y = 0;
b.vx = 0;
b.vy = 0;
};
ballUpdate = function () {
var _local5;
var _local4;
var _local6;
var _local3;
var _local1 = balls.length - 1;
while (_local1 >= 0) {
if (balls[_local1].movie._status == "alive") {
shapeCollision(balls[_local1]);
if (Math.abs(balls[_local1].vx) < 0.1) {
balls[_local1].vx = 0;
}
if (Math.abs(balls[_local1].vy) < 0.1) {
balls[_local1].vy = 0;
}
var _local2 = balls.length - 1;
while (_local2 >= 0) {
if (_local2 != _local1) {
if (Math.abs(balls[_local1]._z - balls[_local2]._z) < 5) {
_local5 = balls[_local2].movie._x - balls[_local1].movie._x;
_local4 = balls[_local2].movie._y - balls[_local1].movie._y;
_local6 = (balls[_local1].radius + balls[_local2].radius) * (balls[_local1].radius + balls[_local2].radius);
_local3 = (_local5 * _local5) + (_local4 * _local4);
if (_local3 <= _local6) {
playBallBounce = true;
_local6 = balls[_local1].radius + balls[_local2].radius;
_local3 = Math.sqrt(_local3);
ballReaction(balls[_local1], balls[_local2], _local3, _local5, _local4);
}
}
}
_local2--;
}
}
switch (currentTile(balls[_local1].movie._x, balls[_local1].movie._y)) {
case 100 :
balls[_local1].vx = balls[_local1].vx * ballFriction;
balls[_local1].vy = balls[_local1].vy * ballFriction;
balls[_local1].vy = balls[_local1].vy + 0.2;
break;
case 101 :
balls[_local1].vx = balls[_local1].vx * ballFriction;
balls[_local1].vy = balls[_local1].vy * ballFriction;
balls[_local1].vy = balls[_local1].vy - 0.2;
break;
case 102 :
balls[_local1].vx = balls[_local1].vx * ballFriction;
balls[_local1].vy = balls[_local1].vy * ballFriction;
balls[_local1].vx = balls[_local1].vx - 0.2;
break;
case 103 :
balls[_local1].vx = balls[_local1].vx * ballFriction;
balls[_local1].vy = balls[_local1].vy * ballFriction;
balls[_local1].vx = balls[_local1].vx + 0.2;
break;
case 104 :
case 105 :
break;
case 200 :
boxSize = tileSize - balls[_local1].radius;
boxX = Math.floor(balls[_local1].movie._x / tileSize) * tileSize;
boxY = Math.floor(balls[_local1].movie._y / tileSize) * tileSize;
boxX = boxX + (balls[_local1].radius / 2);
boxY = boxY + (balls[_local1].radius / 2);
if (isBallInBox(balls[_local1], boxX, boxY, boxSize, boxSize)) {
balls[_local1].vz = -2;
}
break;
default :
balls[_local1].vx = balls[_local1].vx * ballFriction;
balls[_local1].vy = balls[_local1].vy * ballFriction;
}
ballInBox(balls[_local1], 0, 0, ballXMax, ballYMax);
balls[_local1].movie.texture._y = balls[_local1].movie.texture._y + (balls[_local1].vy / 2);
balls[_local1].movie.texture._x = balls[_local1].movie.texture._x + (balls[_local1].vx / 2);
if (balls[_local1].movie.texture._x > 53) {
balls[_local1].movie.texture._x = balls[_local1].movie.texture._x - 63;
}
if (balls[_local1].movie.texture._x < -53) {
balls[_local1].movie.texture._x = balls[_local1].movie.texture._x + 63;
}
if (balls[_local1].movie.texture._y > 53) {
balls[_local1].movie.texture._y = balls[_local1].movie.texture._y - 63;
}
if (balls[_local1].movie.texture._y < -53) {
balls[_local1].movie.texture._y = balls[_local1].movie.texture._y + 63;
}
ballScale(balls[_local1], balls[_local1]._z);
if (balls[_local1].vz != 0) {
boxSize = (tileSize * (balls[_local1]._z / 100)) + ((balls[_local1].radius * (balls[_local1]._z / 100)) * 2);
boxOffset = (tileSize - boxSize) / 2;
boxX = Math.floor(balls[_local1].movie._x / tileSize) * tileSize;
boxY = Math.floor(balls[_local1].movie._y / tileSize) * tileSize;
boxX = boxX + boxOffset;
boxY = boxY + boxOffset;
ballInBox(balls[_local1], boxX, boxY, boxSize, boxSize);
}
if (balls[_local1]._z < 0) {
balls[_local1].movie._status = "dead";
}
switch (balls[_local1].movie._status) {
case "splat" :
balls[_local1].movie.gotoAndPlay("splat");
balls[_local1].movie._status = "splatting";
balls[_local1].movie.texture.gotoAndStop(balls[_local1].texture);
balls[_local1].movie.texture.stop();
break;
case "dead" :
if (balls[_local1] == player) {
loseLife();
}
ballKill(_local1);
}
_local1--;
}
};
currentTile = function (x, y) {
brick_x = Math.floor(x / tileSize);
brick_y = Math.floor(y / tileSize);
return(level[brick_y][brick_x]);
};
_global.maxSpeed = 20;
shapeCollision = function (b) {
var _local13 = 0;
var _local7 = 24;
var _local11 = 2;
while (_local13 < _local11) {
((b.vx <= maxSpeed) ? (((b.vx >= (-maxSpeed)) ? 0 : ((b.vx = -maxSpeed)))) : ((b.vx = maxSpeed)));
((b.vy <= maxSpeed) ? (((b.vy >= (-maxSpeed)) ? 0 : ((b.vy = -maxSpeed)))) : ((b.vy = maxSpeed)));
b.movie._x = b.movie._x + (b.vx / _local11);
b.movie._y = b.movie._y + (b.vy / _local11);
b._z = b._z + (b.vz / _local11);
var _local4 = 0;
var _local9 = 0;
var _local8 = 0;
var _local3 = 1;
while (_local3 < _local7) {
var _local6 = b.movie._x + (b.radius * Math.sin(radians((_local3 * 360) / _local7)));
var _local5 = b.movie._y - (b.radius * Math.cos(radians((_local3 * 360) / _local7)));
colStat = isCollision(_local6, _local5);
switch (colStat) {
case 1 :
_local4++;
_local9 = _local9 + _local6;
_local8 = _local8 + _local5;
break;
case 2 :
b.movie._status = "splat";
}
_local3++;
}
if (_local4 > 0) {
_root.pointer._rotation = (degrees(Math.atan2(b.movie._x - (_local9 / _local4), b.movie._y - (_local8 / _local4))) * -1) + 90;
_root.pointer._x = b.movie._x - (b.radius * Math.sin(radians(_root.pointer._rotation + 90)));
_root.pointer._y = b.movie._y + (b.radius * Math.cos(radians(_root.pointer._rotation + 90)));
px = _root.pointer._x;
py = _root.pointer._y;
}
if ((_local4 > 0) && (_local4 < _local7)) {
ix = ((px - b.movie._x) / b.radius) * -1;
iy = ((py - b.movie._y) / b.radius) * -1;
speed = Math.sqrt((b.vx * b.vx) + (b.vy * b.vy)) * ballFriction;
var _local12 = (degrees(Math.atan2(b.vx, b.vy)) * -1) + 90;
var _local10 = ((2 * (_root.pointer._rotation - _local12)) + _local12) - 180;
_root.pointer._rotation = _local10 - 180;
b.vx = Math.sin(radians(_local10 + 90)) * speed;
b.vy = Math.cos(radians(_local10 + 90)) * (-speed);
while (isCollision(px, py)) {
b.movie._x = b.movie._x + ix;
b.movie._y = b.movie._y + iy;
px = b.movie._x - (ix * b.radius);
py = b.movie._y - (iy * b.radius);
}
}
_local13++;
}
};
_global.cDeg = 57.2957795130823;
_global.cRad = (Math.PI/180);
degrees = function (r) {
return(r * cDeg);
};
radians = function (d) {
return(d * cRad);
};
randRange = function (min, max, integer) {
if (integer == true) {
return(Math.floor(Math.random() * ((max - min) + 1)) + min);
}
return((Math.random() * ((max - min) + 1)) + min);
};
distance = function (x1, y1, x2, y2) {
xD = x1 - x2;
yD = y1 - y2;
return(Math.sqrt((xD * xD) + (yD * yD)));
};
sgn = function (number) {
if (number < 0) {
return(-1);
}
if (number > 0) {
return(1);
}
return(0);
};
_global.soundF = new Array();
_global.sounds = new Array();
if (_root._url.indexOf("file://") != 0) {
MochiAd.showPreGameAd({id:"723da8d8bff21bae", res:"640x480", no_bg:true, color:14540117, outline:12368968});
stop();
}
Frame 15
__com_mochibot__("9df824a1", this, 10301, true);
_root.kongregateServices.connect();
start();
Frame 20
_global.sndMenu = soundAddMusic("menu");
_global.sndGame = soundAddMusic("game");
_global.sndBeep = soundAddSound("beep");
_global.sndPop = soundAddSound("pop");
_global.sndBallBounce = soundAddSound("ballBounce");
_global.sndWallBounce = soundAddSound("wallBounce");
mochi.MochiServices.connect("723da8d8bff21bae", _root.mc_highScoreClip);
mochi.MochiScores.setBoardID("15566176ec6c2a0a");
bSunUrl = "http://www.binarysun.co.uk/downloads/refer.php?a=game-roll&t=";
Instance of Symbol 36 MovieClip "targetScope" in Frame 20
onClipEvent (mouseDown) {
if (_root.gameActive == true) {
_alpha = 100;
power.gotoAndPlay(1);
}
}
onClipEvent (mouseUp) {
_alpha = 20;
if (_root.gameActive == true) {
_root.ballShoot();
}
power.gotoAndStop(1);
}
Frame 25
stop();
enableConsole();
gameActive = false;
soundPlay(sndMenu, 999);
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
newGame();
};
_root.b_submitscore.onRelease = function () {
soundPlay(sndSleep, 1);
_root.gotoAndStop("submitscore");
};
_root.b_viewscores.onRelease = function () {
soundPlay(sndBeep, 1);
_root.gotoAndStop("viewscore");
};
onEnterFrame = function () {
soundUpdate();
updateMenu();
};
Instance of Symbol 36 MovieClip "menuScope" in Frame 25
onClipEvent (load) {
_alpha = 15;
_x = _root.menuPlayer._x;
_y = _root.menuPlayer._y;
power.gotoAndStop(1);
}
Instance of Symbol 10 MovieClip [ball] in Frame 25
onClipEvent (load) {
texture.gotoAndStop(2);
}
Instance of Symbol 10 MovieClip [ball] in Frame 25
onClipEvent (load) {
texture.gotoAndStop(2);
}
Instance of Symbol 10 MovieClip [ball] in Frame 25
onClipEvent (load) {
texture.gotoAndStop(2);
}
Instance of Symbol 10 MovieClip [ball] in Frame 25
onClipEvent (load) {
texture.gotoAndStop(2);
}
Frame 30
disableConsole();
gameActive = true;
messageLevel.level_title.text = "Level " + lev;
messageLevel.level_description.text = subtitle;
soundFadeCreate(sndMenu, 10);
soundPlay(sndGame, 999);
if (skipIntro != true) {
timeStart(99);
}
onEnterFrame = function () {
updateGame();
soundUpdate();
if (Key.isDown(32) || (Key.isDown(80))) {
timePause();
gotoAndStop ("pause");
}
};
stop();
Frame 35
stop();
enableConsole();
gameActive = false;
soundFadeCreate(sndGame, 8);
soundPlay(sndMenu, 999);
tTime = timeGet();
tOldScore = score;
tLevelScore = tTime * life;
tScore = tLevelScore + score;
tLives = life;
if (tTime >= 60) {
life++;
}
score = tScore;
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
nextLevel();
};
_root.b_website.onRelease = function () {
soundPlay(sndBeep, 1);
getURL (bSunUrl, "_blank");
};
onEnterFrame = function () {
soundUpdate();
};
Frame 40
stop();
enableConsole();
soundFadeCreate(sndGame, 8);
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
timeUnpause();
skipIntro = true;
gotoAndStop ("game");
};
_root.b_website.onRelease = function () {
soundPlay(sndBeep, 1);
getURL (bSunUrl, "_blank");
};
_root.b_menu.onRelease = function () {
soundPlay(sndBeep, 1);
quitGame();
gotoAndStop ("menu");
};
onEnterFrame = function () {
soundUpdate();
};
Frame 45
stop();
enableConsole();
gameActive = false;
level_reason.text = deathReason;
soundFadeCreate(sndGame, 16);
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
newLevel();
};
onEnterFrame = function () {
soundUpdate();
};
_root.b_website.onRelease = function () {
soundPlay(sndBeep, 1);
getURL (bSunUrl, "_blank");
};
Frame 50
stop();
enableConsole();
gameActive = false;
soundPlay(sndMenu, 999);
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
quitGame();
_root.playTarget = "menu";
_root.gotoAndStop("submitscore");
};
_root.b_submitscore.onRelease = function () {
soundPlay(sndSleep, 1);
_root.playTarget = "menu";
_root.gotoAndStop("submitscore");
};
onEnterFrame = function () {
soundUpdate();
};
_root.b_website.onRelease = function () {
soundPlay(sndBeep, 1);
getURL (bSunUrl, "_blank");
};
Frame 55
stop();
enableConsole();
gameActive = false;
soundPlay(sndMenu, 999);
tScore = score;
_root.kongregateStats.submit("GameComplete", 1);
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
quitGame();
_root.playTarget = "menu";
_root.gotoAndStop("submitscore");
};
onEnterFrame = function () {
soundUpdate();
};
_root.b_submitscore.onRelease = function () {
soundPlay(sndSleep, 1);
_root.playTarget = "menu";
_root.gotoAndStop("submitscore");
};
_root.b_website.onRelease = function () {
soundPlay(sndBeep, 1);
getURL (bSunUrl, "_blank");
};
Frame 60
stop();
enableConsole();
gameActive = false;
var myOptions = {onClose:function () {
_root.playTarget = "menu";
_root.gotoAndStop("tween");
}};
mochi.MochiScores.showLeaderboard(myOptions);
Frame 65
stop();
enableConsole();
gameActive = false;
_root.kongregateScores.submit(_root.score);
var myOptions = {score:_root.score, onClose:function () {
_root.gotoAndStop("tween");
}};
mochi.MochiScores.showLeaderboard(myOptions);
Frame 70
stop();
_root.b_website.onRelease = function () {
soundPlay(sndBeep, 1);
getURL (bSunUrl, "_blank");
};
Frame 75
stop();
if (badSite() == true) {
switch (lev) {
case 5 :
case 10 :
case 15 :
break;
default :
gotoAndStop(playTarget);
}
} else {
gotoAndStop(playTarget);
}
_root.b_play.onRelease = function () {
soundPlay(sndBeep, 1);
gotoAndStop(playTarget);
};
Symbol 3 MovieClip [texture] Frame 1
stop();
Symbol 9 MovieClip Frame 16
stop();
Symbol 10 MovieClip [ball] Frame 1
stop();
Symbol 10 MovieClip [ball] Frame 11
texture.gotoAndStop(t);
Symbol 10 MovieClip [ball] Frame 26
_status = "dead";
stop();
Symbol 17 Button
on (release) {
getURL ("http://www.binarysun.co.uk/", "_blank");
}
Symbol 18 MovieClip Frame 1
stop();
Symbol 18 MovieClip Frame 70
_root.gotoAndPlay("start");
Symbol 214 MovieClip [__Packages.MochiAd] Frame 0
class MochiAd
{
function MochiAd () {
}
static function getVersion() {
return("2.1");
}
static function showPreGameAd(options) {
var _local27 = {clip:_root, ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:16747008, background:16777161, outline:13994812, ad_started:function () {
this.clip.stop();
}, ad_finished:function () {
this.clip.play();
}};
options = _parseOptions(options, _local27);
var clip = options.clip;
var _local23 = 11000;
var _local26 = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!load(options)) {
options.ad_finished();
return(undefined);
}
options.ad_started();
var mc = clip._mochiad;
mc.onUnload = function () {
options.ad_finished();
};
var _local14 = _getRes(options);
var _local4 = _local14[0];
var _local13 = _local14[1];
mc._x = _local4 * 0.5;
mc._y = _local13 * 0.5;
var chk = mc.createEmptyMovieClip("_mochiad_wait", 3);
chk._x = _local4 * -0.5;
chk._y = _local13 * -0.5;
var _local7 = chk.createEmptyMovieClip("_mochiad_bar", 4);
_local7._x = 10;
_local7._y = _local13 - 20;
var _local22 = options.color;
delete options.color;
var _local19 = options.background;
delete options.background;
var _local24 = options.outline;
delete options.outline;
var _local5 = _local7.createEmptyMovieClip("_outline", 1);
_local5.beginFill(_local19);
_local5.moveTo(0, 0);
_local5.lineTo(_local4 - 20, 0);
_local5.lineTo(_local4 - 20, 10);
_local5.lineTo(0, 10);
_local5.lineTo(0, 0);
_local5.endFill();
var _local3 = _local7.createEmptyMovieClip("_inside", 2);
_local3.beginFill(_local22);
_local3.moveTo(0, 0);
_local3.lineTo(_local4 - 20, 0);
_local3.lineTo(_local4 - 20, 10);
_local3.lineTo(0, 10);
_local3.lineTo(0, 0);
_local3.endFill();
_local3._xscale = 0;
var _local6 = _local7.createEmptyMovieClip("_outline", 3);
_local6.lineStyle(0, _local24, 100);
_local6.moveTo(0, 0);
_local6.lineTo(_local4 - 20, 0);
_local6.lineTo(_local4 - 20, 10);
_local6.lineTo(0, 10);
_local6.lineTo(0, 0);
chk.ad_msec = _local23;
chk.ad_timeout = _local26;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function () {
var _local2 = 100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time));
if (_local2 > 0) {
this._parent._alpha = _local2;
} else {
var _local3 = this._parent._parent;
MochiAd.unload(_local3);
delete this.onEnterFrame;
}
};
mc.lc.adLoaded = function (width, height) {
};
mc.lc.adjustProgress = function (msec) {
var _local2 = this.mc._mochiad_wait;
_local2.server_control = true;
_local2.started = getTimer();
_local2.ad_msec = msec;
};
chk.onEnterFrame = function () {
var _local6 = this._parent._parent;
var _local12 = this._parent._mochiad_ctr;
var _local5 = getTimer() - this.started;
var _local3 = false;
var _local4 = _local6.getBytesTotal();
var _local8 = _local6.getBytesLoaded();
var _local10 = (100 * _local8) / _local4;
var _local11 = (100 * _local5) / chk.ad_msec;
var _local9 = this._mochiad_bar._inside;
var _local2 = Math.min(100, Math.min(_local10 || 0, _local11));
_local2 = Math.max(this.last_pcnt, _local2);
this.last_pcnt = _local2;
_local9._xscale = _local2;
if (!chk.showing) {
var _local7 = _local12.getBytesTotal();
if ((_local7 > 0) || (typeof(_local7) == "undefined")) {
chk.showing = true;
chk.started = getTimer();
} else if (_local5 > chk.ad_timeout) {
_local3 = true;
}
}
if (_local5 > chk.ad_msec) {
_local3 = true;
}
if (((_local4 > 0) && (_local8 >= _local4)) && (_local3)) {
if (this.server_control) {
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
}
}
};
}
static function showInterLevelAd(options) {
var _local13 = {clip:_root, ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function () {
this.clip.stop();
}, ad_finished:function () {
this.clip.play();
}};
options = _parseOptions(options, _local13);
var clip = options.clip;
var _local10 = 11000;
var _local12 = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!load(options)) {
options.ad_finished();
return(undefined);
}
options.ad_started();
var mc = clip._mochiad;
mc.onUnload = function () {
options.ad_finished();
};
var _local5 = _getRes(options);
var _local14 = _local5[0];
var _local11 = _local5[1];
mc._x = _local14 * 0.5;
mc._y = _local11 * 0.5;
var chk = mc.createEmptyMovieClip("_mochiad_wait", 3);
chk.ad_msec = _local10;
chk.ad_timeout = _local12;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function () {
var _local2 = 100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time));
if (_local2 > 0) {
this._parent._alpha = _local2;
} else {
var _local3 = this._parent._parent;
MochiAd.unload(_local3);
delete this.onEnterFrame;
}
};
mc.lc.adLoaded = function (width, height) {
};
mc.lc.adjustProgress = function (msec) {
var _local2 = this.mc._mochiad_wait;
_local2.server_control = true;
_local2.started = getTimer();
_local2.ad_msec = msec - 250;
};
chk.onEnterFrame = function () {
var _local5 = this._parent._mochiad_ctr;
var _local4 = getTimer() - this.started;
var _local2 = false;
if (!chk.showing) {
var _local3 = _local5.getBytesTotal();
if ((_local3 > 0) || (typeof(_local3) == "undefined")) {
chk.showing = true;
chk.started = getTimer();
} else if (_local4 > chk.ad_timeout) {
_local2 = true;
}
}
if (_local4 > chk.ad_msec) {
_local2 = true;
}
if (_local2) {
if (this.server_control) {
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
}
}
};
}
static function showTimedAd(options) {
showInterLevelAd(options);
}
static function showPreloaderAd(options) {
showPreGameAd(options);
}
static function _allowDomains(server) {
var _local1 = server.split("/")[2].split(":")[0];
if (System.security) {
if (System.security.allowDomain) {
System.security.allowDomain("*");
System.security.allowDomain(_local1);
}
if (System.security.allowInsecureDomain) {
System.security.allowInsecureDomain("*");
System.security.allowInsecureDomain(_local1);
}
}
return(_local1);
}
static function _loadCommunicator(options) {
var _local26 = {clip:_root, com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"};
options = _parseOptions(options, _local26);
options.swfv = options.clip.getSWFVersion() || 6;
options.mav = getVersion();
var _local18 = options.clip;
var _local20 = "_mochiad_com_" + options.id;
if (!_isNetworkAvailable()) {
return(null);
}
if (_local18[_local20]) {
return(_local18[_local20].lc);
}
var _local21 = options.com_server + options.id;
_allowDomains(_local21);
delete options.id;
delete options.com_server;
var _local25 = options.depth;
delete options.depth;
var _local17 = _local18.createEmptyMovieClip(_local20, _local25);
var _local11 = _local17.createEmptyMovieClip("_mochiad_com", 1);
for (var _local15 in options) {
_local11[_local15] = options[_local15];
}
var _local6 = new LocalConnection();
var _local16 = ["", Math.floor(new Date().getTime()), random(999999)].join("_");
_local6.mc = _local17;
_local6.name = _local16;
_local6.allowDomain = function (d) {
return(true);
};
_local6.allowInsecureDomain = _local6.allowDomain;
_local6.connect(_local16);
_local17.lc = _local6;
_local11.lc = _local16;
_local6._id = 0;
_local6._queue = [];
_local6.rpcResult = function (cb_arg) {
var _local8 = parseInt(cb_arg);
var _local4 = this._callbacks[_local8];
if (!_local4) {
return(undefined);
}
delete this._callbacks[_local8];
var _local5 = [];
var _local3 = 2;
while (_local3 < _local4.length) {
_local5.push(_local4[_local3]);
_local3++;
}
_local3 = 1;
while (_local3 < arguments.length) {
_local5.push(arguments[_local3]);
_local3++;
}
var _local6 = _local4[1];
var _local7 = _local4[0];
if (_local7 && (typeof(_local6) == "string")) {
_local6 = _local7[_local6];
}
if (_local6) {
_local6.apply(_local7, _local5);
}
};
_local6._didConnect = function (endpoint) {
this._endpoint = endpoint;
var _local4 = this._queue;
delete this._queue;
var _local5 = this.doSend;
var _local2 = 0;
while (_local2 < _local4.length) {
var _local3 = _local4[_local2];
_local5.apply(this, _local3);
_local2++;
}
};
_local6.doSend = function (args, cbobj, cbfn) {
if (this._endpoint == null) {
var _local4 = [];
var _local3 = 0;
while (_local3 < arguments.length) {
_local4.push(arguments[_local3]);
_local3++;
}
this._queue.push(_local4);
return(undefined);
}
this._id = this._id + 1;
var _local5 = this._id;
if ((cbfn === undefined) || (cbfn === null)) {
cbfn = cbobj;
}
this._callbacks[_local5] = [cbobj, cbfn];
var _local7 = new LocalConnection();
var _local9 = _local7.send(this._endpoint, "rpc", _local5, args);
};
_local6._callbacks = {};
_local6._callbacks[0] = [_local6, "_didConnect"];
_local11.st = getTimer();
_local11.loadMovie(_local21 + ".swf", "POST");
return(_local6);
}
static function fetchHighScores(options, callbackObj, callbackMethod) {
var _local1 = _loadCommunicator({id:options.id});
if (!_local1) {
return(false);
}
var _local4 = ["fetchHighScores", options];
_local1.doSend(["fetchHighScores", options], callbackObj, callbackMethod);
return(true);
}
static function sendHighScore(options, callbackObj, callbackMethod) {
var _local1 = _loadCommunicator({id:options.id});
if (!_local1) {
return(false);
}
var _local4 = ["sendHighScore", options];
_local1.doSend(["sendHighScore", options], callbackObj, callbackMethod);
return(true);
}
static function load(options) {
var _local13 = {clip:_root, server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = _parseOptions(options, _local13);
options.swfv = options.clip.getSWFVersion() || 6;
options.mav = getVersion();
var _local9 = options.clip;
if (!_isNetworkAvailable()) {
return(null);
}
if (_local9._mochiad_loaded) {
return(null);
}
var _local12 = options.depth;
delete options.depth;
var _local6 = _local9.createEmptyMovieClip("_mochiad", _local12);
var _local11 = _getRes(options);
options.res = (_local11[0] + "x") + _local11[1];
options.server = options.server + options.id;
delete options.id;
_local9._mochiad_loaded = true;
var _local4 = _local6.createEmptyMovieClip("_mochiad_ctr", 1);
for (var _local7 in options) {
_local4[_local7] = options[_local7];
}
var _local10 = _local4.server;
delete _local4.server;
var _local14 = _allowDomains(_local10);
_local6.onEnterFrame = function () {
if (this._mochiad_ctr._url != this._url) {
this.onEnterFrame = function () {
if (!this._mochiad_ctr) {
delete this.onEnterFrame;
MochiAd.unload(this._parent);
}
};
}
};
var _local5 = new LocalConnection();
var _local8 = ["", Math.floor(new Date().getTime()), random(999999)].join("_");
_local5.mc = _local6;
_local5.name = _local8;
_local5.hostname = _local14;
_local5.allowDomain = function (d) {
return(true);
};
_local5.allowInsecureDomain = _local5.allowDomain;
_local5.connect(_local8);
_local6.lc = _local5;
_local4.lc = _local8;
_local4.st = getTimer();
_local4.loadMovie(_local10 + ".swf", "POST");
return(_local6);
}
static function unload(clip) {
if (typeof(clip) == "undefined") {
clip = _root;
}
if (clip.clip && (clip.clip._mochiad)) {
clip = clip.clip;
}
if (!clip._mochiad) {
return(false);
}
clip._mochiad.removeMovieClip();
delete clip._mochiad_loaded;
delete clip._mochiad;
return(true);
}
static function _isNetworkAvailable() {
if (System.security) {
var _local1 = System.security;
if (_local1.sandboxType == "localWithFile") {
return(false);
}
}
return(true);
}
static function _getRes(options) {
var _local3 = options.clip.getBounds();
var _local2 = 0;
var _local1 = 0;
if (typeof(options.res) != "undefined") {
var _local4 = options.res.split("x");
_local2 = parseFloat(_local4[0]);
_local1 = parseFloat(_local4[1]);
} else {
_local2 = _local3.xMax - _local3.xMin;
_local1 = _local3.yMax - _local3.yMin;
}
if ((_local2 == 0) || (_local1 == 0)) {
_local2 = Stage.width;
_local1 = Stage.height;
}
return([_local2, _local1]);
}
static function _parseOptions(options, defaults) {
var _local4 = {};
for (var _local8 in defaults) {
_local4[_local8] = defaults[_local8];
}
if (options) {
for (var _local8 in options) {
_local4[_local8] = options[_local8];
}
}
if (_root.mochiad_options) {
var _local5 = _root.mochiad_options.split("&");
var _local2 = 0;
while (_local2 < _local5.length) {
var _local3 = _local5[_local2].split("=");
_local4[unescape(_local3[0])] = unescape(_local3[1]);
_local2++;
}
}
return(_local4);
}
}
Symbol 215 MovieClip [__Packages.mochi.MochiScores] Frame 0
class mochi.MochiScores
{
static var boardID, onClose, onError;
function MochiScores () {
}
static function setBoardID(boardID) {
mochi.MochiScores.boardID = boardID;
mochi.MochiServices.send("scores_setBoardID", {boardID:boardID});
}
static function showLeaderboard(options) {
if (options.clip != null) {
if (options.clip.__mochiservicesMC != mochi.MochiServices.__get__clip()) {
mochi.MochiServices.disconnect();
mochi.MochiServices.connect(mochi.MochiServices.__get__id(), options.clip);
}
delete options.clip;
}
if (options.onDisplay != null) {
options.onDisplay();
} else {
mochi.MochiServices.__get__clip().stop();
}
if (options.onClose != null) {
onClose = options.onClose;
} else {
onClose = function () {
if (mochi.MochiServices.__get__clip() == _root.__mochiservicesMC) {
mochi.MochiServices.__get__clip()._parent.play();
} else {
mochi.MochiServices.__get__clip().play();
}
};
}
if (options.onError != null) {
onError = options.onError;
} else {
onError = onClose;
}
if (options.boardID == null) {
if (boardID != null) {
options.boardID = boardID;
}
}
mochi.MochiServices.send("scores_showLeaderboard", {options:options}, null, doClose);
}
static function getPlayerInfo(callbackObj, callbackMethod) {
mochi.MochiServices.send("scores_getPlayerInfo", null, callbackObj, callbackMethod);
}
static function submit(score, name, callbackObj, callbackMethod) {
mochi.MochiServices.send("scores_submit", {score:score, name:name}, callbackObj, callbackMethod);
}
static function requestList(callbackObj, callbackMethod) {
mochi.MochiServices.send("scores_requestList", null, callbackObj, callbackMethod);
}
static function doClose(args) {
if (args.error == true) {
onError.apply(null, [args.errorCode, args.httpStatus]);
} else {
onClose.apply();
}
}
}
Symbol 216 MovieClip [__Packages.mochi.MochiServices] Frame 0
class mochi.MochiServices
{
static var _id, _container, _sendChannelName, _rcvChannelName, __get__comChannelName, onError, _sendChannel, _loader, _loaderListener, _rcvChannel, _listenChannel;
function MochiServices () {
}
static function get id() {
return(_id);
}
static function get clip() {
return(_container);
}
static function getVersion() {
return("1.1");
}
static function allowDomains(server) {
var _local1 = server.split("/")[2].split(":")[0];
if (System.security) {
if (System.security.allowDomain) {
System.security.allowDomain("*");
System.security.allowDomain(_local1);
}
if (System.security.allowInsecureDomain) {
System.security.allowInsecureDomain("*");
System.security.allowInsecureDomain(_local1);
}
}
return(_local1);
}
static function get isNetworkAvailable() {
if (System.security) {
var _local1 = System.security;
if (_local1.sandboxType == "localWithFile") {
return(false);
}
}
return(true);
}
static function set comChannelName(val) {
if (val != undefined) {
if (val.length > 3) {
_sendChannelName = val + "_fromgame";
_rcvChannelName = val;
initComChannels();
}
}
//return(__get__comChannelName());
}
static function get connected() {
return(_connected);
}
static function connect(id, clip, onError) {
if ((!_connected) && (_container == undefined)) {
_connecting = true;
init(id, clip);
}
if (onError != undefined) {
mochi.MochiServices.onError = onError;
} else if (mochi.MochiServices.onError == undefined) {
mochi.MochiServices.onError = function (errorCode) {
};
}
}
static function disconnect() {
if (_connected || (_connecting)) {
_connecting = (_connected = false);
if (_sendChannel._queue != undefined) {
}
if (_container != undefined) {
_container.removeMovieClip();
delete _container;
}
}
}
static function init(id, clip) {
_id = id;
if (clip != undefined) {
_container = clip.createEmptyMovieClip("__mochiservicesMC", clip.getNextHighestDepth());
} else {
_container = _root.createEmptyMovieClip("__mochiservicesMC", _root.getNextHighestDepth());
}
loadCommunicator(id, _container);
}
static function loadCommunicator(id, clip) {
if (!isNetworkAvailable) {
return(undefined);
}
allowDomains(_gatewayURL);
_loader = new MovieClipLoader();
_loaderListener = {};
_loaderListener.onLoadError = function (target_mc, errorCode, httpStatus) {
mochi.MochiServices.disconnect();
mochi.MochiServices.onError.apply(null, [errorCode]);
};
_loader.addListener(_loaderListener);
_loader.loadClip(_gatewayURL, clip);
_sendChannel = new LocalConnection();
_sendChannel._queue = [];
_rcvChannel = new LocalConnection();
_rcvChannel.allowDomain = function (d) {
return(true);
};
_rcvChannel.allowInsecureDomain = _rcvChannel.allowDomain;
_rcvChannel._nextcallbackID = 0;
_rcvChannel._callbacks = {};
listen();
}
static function onStatus(infoObject) {
if (!(infoObject.level === "error")) {
} else {
_connected = false;
_listenChannel.connect(_listenChannelName);
}
}
static function listen() {
_listenChannel = new LocalConnection();
_listenChannel.handshake = function (args) {
mochi.MochiServices.__set__comChannelName(args.newChannel);
};
_listenChannel.allowDomain = function (d) {
return(true);
};
_listenChannel.allowInsecureDomain = _listenChannel.allowDomain;
_listenChannel.connect(_listenChannelName);
}
static function initComChannels() {
if (!_connected) {
_sendChannel.onStatus = function (infoObject) {
mochi.MochiServices.onStatus(infoObject);
};
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_container, version:getVersion()});
_rcvChannel.onStatus = function (infoObject) {
mochi.MochiServices.onStatus(infoObject);
};
_rcvChannel.onReceive = function (pkg) {
var _local5 = pkg.callbackID;
var _local4 = this._callbacks[_local5];
if (!_local4) {
return(undefined);
}
var _local2 = _local4.callbackMethod;
var _local3 = _local4.callbackObject;
if (_local3 && (typeof(_local2) == "string")) {
_local2 = _local3[_local2];
}
if (_local2 != undefined) {
_local2.apply(_local3, pkg.args);
}
delete this._callbacks[_local5];
};
_rcvChannel.onError = function () {
mochi.MochiServices.onError.apply(null, ["IOError"]);
};
_rcvChannel.connect(_rcvChannelName);
_connecting = false;
_connected = true;
_listenChannel.close();
while (_sendChannel._queue.length > 0) {
_sendChannel.send(_sendChannelName, "onReceive", _sendChannel._queue.shift());
}
}
}
static function send(methodName, args, callbackObject, callbackMethod) {
if (_connected) {
_sendChannel.send(_sendChannelName, "onReceive", {methodName:methodName, args:args, callbackID:_rcvChannel._nextcallbackID});
} else if (_container == undefined) {
onError.apply(null, ["NotConnected"]);
} else {
_sendChannel._queue.push({methodName:methodName, args:args, callbackID:_rcvChannel._nextcallbackID});
}
_rcvChannel._callbacks[_rcvChannel._nextcallbackID] = {callbackObject:callbackObject, callbackMethod:callbackMethod};
_rcvChannel._nextcallbackID++;
}
static var _gatewayURL = "http://www.mochiads.com/static/lib/services/services.swf";
static var _listenChannelName = "__mochiservices";
static var _connecting = false;
static var _connected = false;
}
Symbol 27 MovieClip Frame 1
stop();
Symbol 109 MovieClip [brick] Frame 1
stop();
Symbol 116 MovieClip [brickCollision] Frame 1
stop();
Symbol 146 Button
on (release) {
soundPlay(sndBeep, 1);
getURL ("http://www.binarysun.co.uk/downloads/refer.php?a=game-roll&t=", "_blank");
}
Symbol 157 MovieClip Frame 1
if (_root.skipIntro == true) {
gotoAndStop (51);
}
Symbol 157 MovieClip Frame 51
stop();
Symbol 159 MovieClip Frame 1
stop();
Symbol 159 MovieClip Frame 51
stop();
Symbol 160 MovieClip Frame 10
stop();