Frame 1
version = "040320";
Stage.showMenu = false;
startLevel = 1;
Frame 2
stop();
String.prototype.addCommas = function () {
var _local3 = this.length;
var _local2 = "";
var _local1 = 0;
while (_local1 <= _local3) {
_local2 = this.charAt(_local3 - _local1) + _local2;
if ((((_local1 % 3) == 0) && (_local1 > 0)) && (_local1 < _local3)) {
_local2 = "," + _local2;
}
_local1++;
}
return(_local2);
};
game_so = SharedObject.getLocal("neaveTetris");
score = 0;
level = startLevel;
play_btn.onRelease = function () {
play();
};
neave_btn.onRelease = function () {
getURL ("http://www.neave.com/games/", "_blank");
};
Key.removeListener(this);
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 _local1 = 0;
while (_local1 < 4) {
drawBlock(0, block_array[_local1]);
_local1++;
}
} else {
moved = true;
}
var _local1 = 0;
while (_local1 < 4) {
blockPos = shape_array[((thisShape * 16) + (rotation * 4)) + _local1];
block_array[_local1] = ((((blockPos >> 2) * 6) + blockPos) + xPos) + yPos;
drawBlock(thisShape + 1, block_array[_local1]);
_local1++;
}
};
drawNextShape = function () {
nextShape = int(Math.random() * 7);
var _local1 = 0;
while (_local1 < 11) {
drawNextBlock(0, _local1);
_local1++;
}
_local1 = 0;
while (_local1 < 4) {
drawNextBlock(nextShape + 1, shape_array[(nextShape * 16) + _local1]);
_local1++;
}
};
collision = function (x, y, rot) {
var _local2 = rot;
var _local3 = y;
var _local1 = 0;
while (_local1 < 4) {
blockPos = shape_array[((thisShape * 16) + (_local2 * 4)) + _local1];
if (flag_array[((((blockPos >> 2) * 6) + blockPos) + x) + _local3] != 0) {
return(true);
}
_local1++;
}
return(false);
};
left = function () {
var _local2 = 0;
while (_local2 < 4) {
var _local1 = block_array[_local2] - yPos;
while (_local1 >= 0) {
if (_local1 == 0) {
return;
}
_local1 = _local1 - 10;
}
_local2++;
}
if (!collision(xPos - 1, yPos, rotation)) {
xPos--;
drawThisShape();
}
};
right = function () {
var _local2 = 0;
while (_local2 < 4) {
var _local1 = block_array[_local2] - yPos;
while (_local1 >= 0) {
if (_local1 == 9) {
return;
}
_local1 = _local1 - 10;
}
_local2++;
}
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 _local2 = 0;
while (_local2 < 4) {
blockPos = shape_array[((thisShape * 16) + (testRot * 4)) + _local2];
var _local1 = (((blockPos >> 2) * 6) + blockPos) + xPos;
while (_local1 >= -1) {
if (((_local1 == -1) && (xPos < 0)) || ((_local1 == 0) && (xPos > 6))) {
return;
}
_local1 = _local1 - 10;
}
_local2++;
}
if ((((((blockPos >> 2) * 6) + blockPos) + xPos) + yPos) > 179) {
} else if (!collision(xPos, yPos, testRot)) {
rotation = testRot;
drawThisShape();
sound_mc.gotoAndPlay("popHi");
}
};
down = function () {
if (gameOver || (simult)) {
} else {
score++;
if (((block_array[3] - xPos) < 170) && (!collision(xPos, yPos + 10, rotation))) {
yPos = yPos + 10;
drawThisShape();
} else {
var _local1 = 0;
while (_local1 < 4) {
flag_array[block_array[_local1]] = thisShape + 1;
_local1++;
}
simult = 0;
var _local2 = 0;
while (_local2 < 180) {
var _local3 = 0;
while (_local3 < 10) {
if (flag_array[_local3 + _local2] == 0) {
break;
}
if (_local3 == 9) {
stopFall();
_local1 = 0;
while (_local1 < 10) {
b_mc[_local1 + _local2].bang_mc.y = _local2;
b_mc[_local1 + _local2].bang_mc.play();
_local1++;
}
simult++;
lines++;
}
_local3++;
}
_local2 = _local2 + 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();
}
};
this.onKeyDown = function () {
if (gameOver || (simult)) {
} else {
var _local1 = Key.getCode();
switch (_local1) {
case 80 :
pause_btn.onPress();
break;
case 81 :
quit_btn.onPress();
}
if (!paused) {
switch (_local1) {
case 37 :
left();
break;
case 39 :
right();
break;
case 40 :
this.onEnterFrame = down;
break;
case 38 :
case 88 :
rotate(true);
break;
case 90 :
rotate(false);
}
}
updateAfterEvent();
}
};
this.onKeyUp = function () {
delete this.onEnterFrame;
};
Key.removeListener(this);
Key.addListener(this);
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);
}
stopFall();
sound_mc.gotoAndPlay("popMed");
b_mc._visible = !((paused_mc._visible = (paused = !paused)));
if (!paused) {
startFall();
}
};
quit_btn.onPress = function () {
if (gameOver) {
return(undefined);
}
stopFall();
sound_mc.gotoAndPlay("popMed");
b_mc._visible = (paused_mc._visible = false);
quitGame_mc._visible = (paused = true);
};
drawNextShape();
thisShape = nextShape;
drawThisShape();
drawNextShape();
gameOver = false;
stopFall();
startFall();
Symbol 3 MovieClip Frame 1
stop();
Symbol 3 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 12 MovieClip [block] Frame 1
stop();
Symbol 16 Button
on (release) {
getURL ("http://www.neodelight.com?ref=superfishing&ref_loc=intro", "_BLANK");
}
Symbol 22 MovieClip Frame 1
trace((_parent._currentframe + "/") + _parent._totalframes);
Symbol 22 MovieClip Frame 2
trace((_parent._currentframe + "/") + _parent._totalframes);
Symbol 28 MovieClip Frame 1
startFrame = _parent._currentframe;
Symbol 28 MovieClip Frame 2
vol = (1 - ((_parent._currentFrame - startFrame) / (_parent._totalFrames - startFrame))) * 100;
if (vol < 0) {
vol = 0;
}
_parent.snd.setVolume(vol);
Symbol 28 MovieClip Frame 3
gotoAndPlay ("loop");
Symbol 29 MovieClip Frame 1
snd = new Sound(this);
snd.setVolume(100);
_parent.stop();
Symbol 29 MovieClip Frame 123
stop();
_parent.play();
Symbol 36 Button
on (release) {
getURL ("http://www.neodelight.com/index.php?topic=scores&game=quatrix", "_BLANK");
}
Symbol 41 Button
on (release) {
getURL ("http://www.neodelight.com?ref=quatrix&ref_loc=moregames&rev_ver=" + _root.version, "_BLANK");
}
Symbol 43 MovieClip Frame 10
stop();
Symbol 44 Button
on (release) {
getURL ("http://www.neodelight.com?ref=quatrix&ref_loc=logo&rev_ver=" + _root.version, "_BLANK");
}
Symbol 56 MovieClip Frame 1
stop();
Symbol 56 MovieClip Frame 3
stop();
Symbol 56 MovieClip Frame 5
stop();
Symbol 56 MovieClip Frame 7
stop();
Symbol 56 MovieClip Frame 9
stop();
Symbol 61 MovieClip Frame 1
#initclip 1
_global.api = new Object();
_global.api.highscore = new Object();
_global.api.highscore.initSession = function () {
var _local1 = this;
_local1.session = "";
while (_local1.session.length < 20) {
_local1.session = _local1.session + _local1.charTable.charAt(Math.round(Math.random() * (_local1.charTable.length - 4)));
}
_local1.charTableIndex = new Array();
var _local2 = 0;
while (_local2 < _local1.charTable.length) {
_local1.charTableIndex[_local1.charTable.charCodeAt(_local2)] = _local2;
_local2++;
}
};
_global.api.highscore.submit = function (pGame, pDisciple, pScore0, pScore1) {
var _local2 = this;
var _local1 = ("g=" + pGame) + "&";
_local1 = _local1 + (("d=" + pDisciple) + "&");
_local1 = _local1 + (("s0=" + pScore0) + "&");
_local1 = _local1 + (("s1=" + pScore1) + "&");
_local1 = _local1 + ("se=" + escape(session));
_local1 = _local1 + "&c=42";
var _local3 = (_local2.urlSubmit + "?s=") + escape(_local2.encrypt(_local2.encrypt(_local1, _local2.keystring), _local2.keystring2)).split("%").join("_");
trace(_local3);
getURL (_local3, "_blank");
};
_global.api.highscore.encrypt = function (text, pKey) {
var _local2 = this;
var crypt = "";
var checkSum = 0;
var shift;
var _local3;
var _local1 = 0;
while (_local1 < text.length) {
char = _local2.charTableIndex[text.charCodeAt(_local1)];
shift = _local2.charTableIndex[pKey.charCodeAt(_local1 % pKey.length)];
_local3 = (char + shift) + checkSum;
_local3 = _local3 % _local2.charTable.length;
crypt = crypt + _local2.charTable.charAt(_local3);
checkSum = checkSum + _local3;
_local1++;
}
checkSum = checkSum % _local2.charTable.length;
return((crypt + "") + _local2.charTable.charAt(checkSum));
};
_global.api.highscore.charTable = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz&=.";
_global.api.highscore.keystring = "whytheheckdoyouwasteyourtimehackingthishighscorelist";
_global.api.highscore.keystring2 = "AnotherKey4You2FindOut4815jiagIOm30JK";
_global.api.highscore.urlSubmit = "http://www.neodelight.com/v4/high_enter.php";
_global.api.highscore.initSession();
#endinitclip
_visible = false;
Symbol 81 MovieClip Frame 1
stop();
_visible = false;
yes_btn.onPress = function () {
_root.stopFall();
_root.gotoAndStop("menu");
};
no_btn.onPress = function () {
_visible = false;
_root.pause_btn.onPress();
};
yes_btn.onKeyDown = function () {
if (Key.getCode() == 89) {
this.onPress();
}
if (Key.getCode() == 78) {
no_btn.onPress();
}
};
Key.addListener(yes_btn);
Symbol 81 MovieClip Frame 2
_root.pause_btn._visible = (_root.quit_btn._visible = false);
yes_btn.onPress = function () {
var _local1 = _root;
_global.api.highscore.submit("quatrix", "", _local1.score, 0);
_local1.stopFall();
_local1.gotoAndStop("menu");
};
no_btn.onPress = function () {
_root.stopFall();
_root.gotoAndStop("menu");
};
yes_btn.onKeyDown = function () {
if (Key.getCode() == 89) {
this.onPress();
}
if (Key.getCode() == 78) {
no_btn.onPress();
}
};
Key.removeListener(yes_btn);
Key.addListener(yes_btn);
Symbol 84 MovieClip Frame 1
_visible = false;
hit_mc.onPress = _root.pause;