Frame 1
stop();
Stage.showMenu = false;
startLevel = 1;
this.onEnterFrame = function () {
sofar = this.getBytesLoaded();
total = this.getBytesTotal();
if (sofar == total) {
delete this.onEnterFrame;
nextFrame();
}
};
Frame 2
String.prototype.addCommas = function () {
var len = this.length;
var str = "";
var i = 0;
while (i <= len) {
str = this.charAt(len - i) + str;
if ((((i % 3) == 0) && (i > 0)) && (i < len)) {
str = "," + str;
}
i++;
}
return(str);
};
score = 0;
level = startLevel;
play_btn.onRelease = function () {
Key.removeListener(keyListener);
play();
};
highScores_btn.onRelease = function () {
gotoAndStop (1);
};
neave_btn.onRelease = function () {
getURL ("http://www.neave.com/games/", "_blank");
};
Frame 3
stop();
checkButtons = function () {
if (startLevel < 2) {
down_btn._alpha = 50;
down_btn.enabled = false;
} else if (startLevel > 9) {
up_btn._alpha = 50;
up_btn.enabled = false;
} else {
up_btn._alpha = (down_btn._alpha = 100);
up_btn.enabled = (down_btn.enabled = true);
}
};
checkButtons();
down_btn.onPress = function () {
startLevel--;
checkButtons();
};
up_btn.onPress = function () {
startLevel++;
checkButtons();
};
ok_btn.onPress = function () {
play();
};
Frame 4
startFall = function () {
timeout = setInterval(down, speed);
};
stopFall = function () {
clearInterval(timeout);
};
drawBlock = function (num, blockPos) {
b_mc[blockPos].gotoAndStop(num + 1);
};
drawNextBlock = function (num, blockPos) {
next_mc[blockPos].gotoAndStop(num + 1);
};
drawThisShape = function () {
if (moved) {
var i = 0;
while (i < 4) {
drawBlock(0, block_array[i]);
i++;
}
} else {
moved = true;
}
var i = 0;
while (i < 4) {
blockPos = shape_array[((thisShape * 16) + (rotation * 4)) + i];
block_array[i] = ((((blockPos >> 2) * 6) + blockPos) + xPos) + yPos;
drawBlock(thisShape + 1, block_array[i]);
i++;
}
};
drawNextShape = function () {
nextShape = int(Math.random() * 7);
var i = 0;
while (i < 11) {
drawNextBlock(0, i);
i++;
}
var i = 0;
while (i < 4) {
drawNextBlock(nextShape + 1, shape_array[(nextShape * 16) + i]);
i++;
}
};
collision = function (x, y, rot) {
var i = 0;
while (i < 4) {
blockPos = shape_array[((thisShape * 16) + (rot * 4)) + i];
if (flag_array[((((blockPos >> 2) * 6) + blockPos) + x) + y] != 0) {
return(true);
}
i++;
}
return(false);
};
left = function () {
var i = 0;
while (i < 4) {
var x = (block_array[i] - yPos);
while (x >= 0) {
if (x == 0) {
return(undefined);
}
x = x - 10;
}
i++;
}
if (!collision(xPos - 1, yPos, rotation)) {
xPos--;
drawThisShape();
}
};
right = function () {
var i = 0;
while (i < 4) {
var x = (block_array[i] - yPos);
while (x >= 0) {
if (x == 9) {
return(undefined);
}
x = x - 10;
}
i++;
}
if (!collision(xPos + 1, yPos, rotation)) {
xPos++;
drawThisShape();
}
};
rotate = function (clockwise) {
testRot = rotation;
if (clockwise) {
testRot++;
} else {
testRot--;
}
if (testRot == 4) {
testRot = 0;
} else if (testRot == -1) {
testRot = 3;
}
var i = 0;
while (i < 4) {
blockPos = shape_array[((thisShape * 16) + (testRot * 4)) + i];
var x = ((((blockPos >> 2) * 6) + blockPos) + xPos);
while (x >= -1) {
if (((x == -1) && (xPos < 0)) || ((x == 0) && (xPos > 6))) {
return(undefined);
}
x = x - 10;
}
i++;
}
if ((((((blockPos >> 2) * 6) + blockPos) + xPos) + yPos) > 179) {
return(undefined);
}
if (!collision(xPos, yPos, testRot)) {
rotation = testRot;
drawThisShape();
sound_mc.gotoAndPlay("popHi");
}
};
down = function () {
if (gameOver || (simult)) {
return(undefined);
}
score++;
if (((block_array[3] - xPos) < 170) && (!collision(xPos, yPos + 10, rotation))) {
yPos = yPos + 10;
drawThisShape();
} else {
var i = 0;
while (i < 4) {
flag_array[block_array[i]] = thisShape + 1;
i++;
}
simult = 0;
var y = 0;
while (y < 180) {
var x = 0;
while (x < 10) {
if (flag_array[x + y] == 0) {
break;
}
if (x == 9) {
stopFall();
var i = 0;
while (i < 10) {
b_mc[i + y].bang_mc.y = y;
b_mc[i + y].bang_mc.play();
i++;
}
simult++;
lines++;
}
x++;
}
y = y + 10;
}
if (simult) {
sound_mc.gotoAndPlay("win");
switch (simult) {
case 1 :
score = score + (level * 40);
break;
case 2 :
score = score + (level * 100);
break;
case 3 :
score = score + (level * 300);
break;
case 4 :
score = score + (level * 1200);
}
}
scoreTxt = String(score).addCommas();
if (collision(xPos, yPos, rotation) && (yPos == -10)) {
gameOver = true;
stopFall();
sound_mc.gotoAndPlay("end");
quitGame_mc.gotoAndStop(2);
quitGame_mc._visible = true;
} else {
level = int(lines / 10) + startLevel;
speed = ((level < 10) ? (600 - (level * 50)) : 100);
xPos = 3;
yPos = -10;
rotation = 0;
moved = false;
thisShape = nextShape;
if (!simult) {
drawNextShape();
drawThisShape();
sound_mc.gotoAndPlay("popLo");
}
}
}
updateAfterEvent();
};
keyListener = new Object();
keyListener.onKeyDown = function () {
if (gameOver || (simult)) {
return(undefined);
}
var keyCode = Key.getCode();
switch (keyCode) {
case 80 :
pause_btn.onPress();
break;
case 81 :
quit_btn.onPress();
}
if (!paused) {
switch (keyCode) {
case Key.LEFT :
left();
break;
case Key.RIGHT :
right();
break;
case Key.DOWN :
_root.onEnterFrame = down;
break;
case Key.UP :
case 88 :
rotate(true);
break;
case 90 :
rotate(false);
}
}
updateAfterEvent();
};
keyListener.onKeyUp = function () {
delete _root.onEnterFrame;
};
Key.addListener(keyListener);
gameOver = true;
paused = (moved = false);
score = (scoreTxt = (lines = (thisShape = (nextShape = (rotation = 0)))));
level = startLevel;
speed = ((level < 10) ? (600 - (level * 50)) : 100);
xPos = 3;
yPos = -10;
shape_array = new Array(5, 6, 9, 10, 5, 6, 9, 10, 5, 6, 9, 10, 5, 6, 9, 10, 4, 5, 6, 9, 1, 4, 5, 9, 1, 4, 5, 6, 1, 5, 6, 9, 4, 5, 9, 10, 2, 5, 6, 9, 4, 5, 9, 10, 2, 5, 6, 9, 5, 6, 8, 9, 1, 5, 6, 10, 5, 6, 8, 9, 1, 5, 6, 10, 4, 5, 6, 8, 0, 1, 5, 9, 2, 4, 5, 6, 1, 5, 9, 10, 4, 5, 6, 10, 1, 5, 8, 9, 0, 4, 5, 6, 1, 2, 5, 9, 4, 5, 6, 7, 1, 5, 9, 13, 4, 5, 6, 7, 1, 5, 9, 13);
block_array = new Array(0, 0, 0, 0);
flag_array = new Array();
var i = 18;
while (i >= 0) {
var j = 0;
while (j < 10) {
var k = ((i * 10) + j);
b_mc.attachMovie("block", k, k, {_x:j * 20, _y:i * 20});
flag_array[k] = 0;
j++;
}
i--;
}
var i = 0;
while (i < 3) {
var j = 0;
while (j < 4) {
var k = ((i * 4) + j);
next_mc.attachMovie("block", k, k, {_x:j * 20, _y:i * 20});
j++;
}
i++;
}
Frame 24
stop();
pause_btn.onPress = function () {
if (gameOver || (quitGame_mc._visible)) {
return(undefined);
}
sound_mc.gotoAndPlay("popMed");
b_mc._visible = !((paused_mc._visible = (paused = !paused)));
if (paused) {
stopFall();
} else {
startFall();
}
};
quit_btn.onPress = function () {
if (gameOver) {
return(undefined);
}
sound_mc.gotoAndPlay("popMed");
stopFall();
b_mc._visible = (paused_mc._visible = false);
quitGame_mc._visible = (paused = true);
};
drawNextShape();
thisShape = nextShape;
drawThisShape();
drawNextShape();
gameOver = false;
startFall();
Symbol 2 MovieClip Frame 1
stop();
Symbol 2 MovieClip Frame 7
x = Number(_parent._name) - y;
with (_root) {
var j = y;
while (j > 0) {
drawBlock((flag_array[x + j] = flag_array[(x + j) - 10]), x + j);
j = j - 10;
}
if (!x) {
simult--;
}
if (!simult) {
drawNextShape();
drawThisShape();
startFall();
}
}
Symbol 10 MovieClip [block] Frame 1
stop();
Symbol 26 MovieClip Frame 12
stop();
Symbol 37 MovieClip Frame 1
stop();
Symbol 37 MovieClip Frame 3
stop();
Symbol 37 MovieClip Frame 5
stop();
Symbol 37 MovieClip Frame 7
stop();
Symbol 37 MovieClip Frame 9
stop();
Symbol 61 MovieClip Frame 1
stop();
_visible = false;
yes_btn.onPress = function () {
_root.stopFall();
_root.gotoAndStop(2);
};
no_btn.onPress = function () {
_visible = false;
_root.pause_btn.onPress();
};
Symbol 61 MovieClip Frame 2
_root.pause_btn._visible = (_root.quit_btn._visible = false);
over_mc.onPress = function () {
_root.stopFall();
_root.gotoAndStop(2);
};
Symbol 63 MovieClip Frame 1
_visible = false;
hit_mc.onPress = _root.pause;