Instance of Symbol 5 MovieClip in Frame 2
on (press) {
this._parent.more_pressed();
}
Instance of Symbol 12 MovieClip in Frame 2
on (press) {
this._parent.more_pressed();
}
Frame 3
stot = this.getBytesTotal();
sloa = this.getBytesLoaded();
if (stot != 0) {
per = Math.floor((sloa / stot) * 100);
} else {
per = 0;
}
mc_bar.mc._x = mc_bar.mc._width * (-1 + (sloa / stot));
txtPer = String(per) + "%";
if (((sloa >= 1) && (stot >= 1)) && (sloa == stot)) {
gotoAndStop ("main");
inMenuFirst();
} else {
gotoAndPlay (2);
}
Instance of Symbol 91 MovieClip "mc_sloop" in Frame 5
onClipEvent (load) {
var soundControl = new Sound(this);
}
Instance of Symbol 96 MovieClip "btn_sound" in Frame 5
onClipEvent (load) {
if (this._parent.stopSoundFlag) {
this.gotoAndStop(2);
}
}
Instance of Symbol 72 MovieClip in Frame 6
on (release) {
this._parent.back_pressed();
}
on (press) {
this._parent.playSnd("snd_menu_enter");
}
Frame 8
this.stop();
Instance of Symbol 131 MovieClip "mc_control" in Frame 8
onClipEvent (load) {
this._parent.initLevel();
}
onClipEvent (enterFrame) {
this._parent.processGame();
}
onClipEvent (mouseDown) {
this._parent.myMouseDown();
updateAfterEvent();
}
onClipEvent (mouseUp) {
this._parent.myMouseUp();
updateAfterEvent();
}
Symbol 1 MovieClip Frame 1
#initclip 6
function soundOff() {
mc_sloop.gotoAndStop(3);
stopSoundFlag = true;
}
function soundOn() {
mc_sloop.gotoAndStop(2);
stopSoundFlag = false;
}
function new_game_pressed() {
gameStart();
}
function how_to_play_pressed() {
this.gotoAndStop("rules");
}
function more_pressed() {
getURL ("http://www.justfreegames.com?r1=F&r2=AQ&WT.mc_id=FlashAmazonQuest", "_blank");
}
function back_pressed() {
this.gotoAndStop("main");
}
function ok_pressed() {
this.gotoAndStop("game");
}
function inMenuFirst() {
mc_sloop.gotoAndStop(2);
}
function gotoMap() {
var _local2 = this;
_local2.gotoAndStop("map");
var _local1;
_local1 = level;
while (_local1 <= 15) {
_local2["mc" + _local1]._visible = false;
_local1++;
}
mc_cross._x = _local2["mc" + level]._x;
mc_cross._y = _local2["mc" + level]._y;
if (level < 6) {
build1._visible = false;
}
if (level < 12) {
build2._visible = false;
}
}
function gameStart() {
level = 0;
table.scores = 0;
lifeCount = 3;
nextLevel();
}
function nextLevel() {
level++;
gotoMap();
}
function newGame() {
this.gotoAndStop("main");
}
function playSnd(lib_snd) {
s = new Sound(this);
s.attachSound(lib_snd);
s.start();
}
function menuPressed() {
this.gotoAndStop("main");
}
function hintPressed() {
if (gameState == 5) {
hideCursor();
gameState = 4;
}
if (gameState == 4) {
table.selHint();
playSnd("snd_gem_no_change");
}
}
function pausePressed() {
if (pauseFlag) {
pauseFlag = false;
timeCounter.endTime();
mc_caption.gotoAndStop("st_empty");
cells_mc._visible = (idols_mc._visible = true);
} else {
pauseFlag = true;
mc_caption.gotoAndStop("st_pause");
cells_mc._visible = (idols_mc._visible = false);
}
}
function initLevel() {
initTime();
pauseFlag = false;
table.init(cells_mc, idols_mc);
table.attachAllMovies();
table.initCellsByLevel(levels[level - 1]);
table.resetIdols();
mc_cursor._visible = false;
timeCounter.setTime(3000);
mc_caption.gotoAndStop("st_level");
mc_caption.txtLevel = level;
cells_mc._visible = false;
gameState = -1;
playSnd("snd_go");
hideCursor();
btn_hint.enabled = false;
txtLevel = level;
txtScores = table.scores;
txtLifes = lifeCount;
bonusCounter = 0;
table.snd_bomb_creation = false;
lastTimer = getTimer();
}
function processGame() {
var _local2;
var _local1;
_local2 = getTimer();
_local1 = _local2 - lastTimer;
txtFps = 1 / (_local1 / 1000);
lastTimer = _local2;
txtScores = table.scores;
if (pauseFlag) {
} else {
while (table.bonuses.length > 0) {
addBonus(table.bonuses.pop());
}
if (table.snd_bomb_creation) {
table.snd_bomb_creation = false;
playSnd("snd_bomb_creation");
}
if (gameState == -1) {
if (!timeCounter.process(_local1)) {
endShowLevelNum();
}
} else if (gameState == 0) {
table.resetIdols();
gameState = 1;
} else if (gameState == 1) {
table.mapIdols();
table.prepareFirstWave();
gameState = 2;
} else if (gameState == 2) {
if (table.moving) {
table.process(_local1, CTable.idolFallSpeed);
} else if (table.hasNextWave()) {
table.prepareNextWave();
} else {
afterIdolsFall();
}
} else if (gameState == 3) {
if (!timeCounter.process(_local1)) {
fromNoMore();
}
} else if (gameState == 4) {
mc_ind.process(_local1);
if (mc_ind.isOut()) {
looseLevel();
return;
}
} else if (gameState == 5) {
mc_ind.process(_local1);
if (mc_ind.isOut()) {
looseLevel();
return;
}
} else if (gameState == 6) {
if (table.moving) {
table.process(_local1, CTable.idolSpeed);
} else {
gameState = 4;
btn_hint.enabled = true;
}
} else if (gameState == 7) {
if (table.moving) {
table.process(_local1, CTable.idolSpeed);
} else {
table.endExchange();
toDeleteIdols();
}
} else if (gameState == 8) {
if (!timeCounter.process(_local1)) {
table.endRemove();
gameState = 9;
}
} else if (gameState == 9) {
if (table.moving) {
table.process(_local1, CTable.idolFallSpeed);
} else if (table.hasFreeIdols()) {
table.addNewIdols();
} else {
if (table.cellsLifeCount == 0) {
winLevel();
return;
}
if (table.hasCoin()) {
toDeleteIdols();
} else {
afterIdolsFall();
}
}
} else if (gameState == 10) {
if (!timeCounter.process(_local1)) {
fromWinLevel();
}
} else if (gameState == 11) {
if (!timeCounter.process(_local1)) {
fromLooseLevel();
}
} else if (gameState == 12) {
}
if (mc_ind.kvaFlag) {
mc_ind.kvaFlag = false;
playSnd("snd_kva2");
}
}
}
function keyPressed() {
}
function myMouseUp() {
if (gameState == 12) {
menuPressed();
}
}
function myMouseDown() {
var _local2;
var _local1;
if (gameState == -1) {
playSnd("snd_menu_enter");
endShowLevelNum();
} else if (gameState == 3) {
playSnd("snd_menu_enter");
fromNoMore();
}
if ((gameState == 4) || (gameState == 5)) {
_local2 = Math.floor((this._xmouse - idols_mc._x) / table.cellW);
_local1 = Math.floor((this._ymouse - idols_mc._y) / table.cellH);
if (_local2 >= table.cols) {
_local2 = -1;
}
if (_local1 >= table.rows) {
_local1 = -1;
}
if ((_local2 >= 0) && (_local1 >= 0)) {
table.resetHint();
if (gameState == 4) {
curCol = _local2;
curRow = _local1;
showCursor();
gameState = 5;
playSnd("snd_gem_click");
} else if (gameState == 5) {
if ((_local2 == curCol) && (_local1 == curRow)) {
hideCursor();
gameState = 4;
playSnd("snd_gem_click");
} else if (((_local2 == curCol) && (Math.abs(_local1 - curRow) == 1)) || ((_local1 == curRow) && (Math.abs(_local2 - curCol) == 1))) {
btn_hint.enabled = false;
if (table.canExchange(_local2, _local1, curCol, curRow)) {
table.startIdolsExchange(_local2, _local1, curCol, curRow);
hideCursor();
gameState = 7;
playSnd("snd_gem_click");
} else {
table.startIdolsExchangeAndBack(_local2, _local1, curCol, curRow);
hideCursor();
gameState = 6;
playSnd("snd_gem_no_change");
}
} else {
curCol = _local2;
curRow = _local1;
showCursor();
}
}
}
} else if (gameState == 10) {
fromWinLevel();
} else if (gameState == 11) {
playSnd("snd_menu_enter");
fromLooseLevel();
} else if (gameState == 12) {
playSnd("snd_menu_enter");
}
}
function afterIdolsFall() {
table.createHints();
if (table.hintCount > 0) {
gameState = 4;
btn_hint.enabled = true;
} else {
table.resetIdols();
mc_caption.gotoAndStop("st_nomore");
timeCounter.setTime(3000);
gameState = 3;
playSnd("snd_go");
cells_mc._visible = (idols_mc._visible = false);
}
}
function showCursor() {
mc_cursor._x = idols_mc._x + (curCol * table.cellW);
mc_cursor._y = idols_mc._y + (curRow * table.cellH);
mc_cursor._visible = true;
}
function hideCursor() {
mc_cursor._visible = false;
curCol = (curRow = -1);
}
function endShowLevelNum() {
mc_caption.gotoAndStop("st_empty");
cells_mc._visible = true;
gameState = 1;
}
function toDeleteIdols() {
timeCounter.setTime(500);
gameState = 8;
playSnd("snd_swap1");
}
function winLevel() {
cells_mc._visible = (idols_mc._visible = false);
if (level == maxLevels) {
mc_caption.gotoAndStop("st_win");
gameState = 12;
playSnd("snd_level_complete");
} else {
mc_caption.gotoAndStop("st_complete");
timeCounter.setTime(3000);
gameState = 10;
playSnd("snd_level_complete");
}
}
function fromWinLevel() {
nextLevel();
}
function looseLevel() {
lifeCount--;
txtLifes = lifeCount;
table.resetIdols();
cells_mc._visible = (idols_mc._visible = false);
if (lifeCount == 0) {
mc_caption.gotoAndStop("st_gameover");
} else {
mc_caption.gotoAndStop("st_loselife");
}
timeCounter.setTime(3000);
gameState = 11;
playSnd("snd_go");
}
function fromLooseLevel() {
if (lifeCount == 0) {
menuPressed();
} else {
initTime();
mc_caption.gotoAndStop("st_empty");
cells_mc._visible = (idols_mc._visible = true);
gameState = 1;
}
}
function fromNoMore() {
mc_caption.gotoAndStop("st_empty");
cells_mc._visible = (idols_mc._visible = true);
gameState = 1;
}
function initTime() {
mc_ind.init(300000);
}
function addBonus(coord) {
var _local1;
_local1 = mc_bonus.attachMovie("lib_bonus", "" + bonusCounter, bonusCounter);
_local1._x = coord.x;
_local1._y = coord.y;
bonusCounter++;
if (bonusCounter > 1000) {
bonusCounter = 0;
}
mc_ind.addTime(25000);
playSnd("snd_add_time");
}
var author = "Galimov Ruslan rigal@mail.ru";
var copyright = "www.sunnygames.com";
var lastTimer;
var level;
var stopSoundFlag = false;
var maxLevels = 15;
var table = new CTable();
var pauseFlag;
var gameState;
var lifeCount;
var timeCounter = new CTimeCounter();
var curCol;
var curRow;
var bonusCounter;
var levels = [[" ", " oo ", " oooo ", " oooooo ", " oooooo ", " oooo ", " oo ", " "], [" oo ", " oooo ", " oooooo ", "oooooooo", "oooooooo", " oooooo ", " oooo ", " oo "], [" ", " oo ", " xoox ", " ooxxoo ", " ooxxoo ", " xoox ", " oo ", " "], ["oooooooo", "o oo o", "oooooooo", "oooooooo", " oo oo ", " oo oo ", " o o ", " "], ["oo oo", "ooo ooo", " ox xo ", " xx ", " xx ", " ox xo ", "ooo ooo", " o o "], ["oooooooo", "oooooooo", "oooxxooo", "ooxxxxoo", " xx ", " ", " ", " "], [" oooo", " ooooo", " oooo", " o ooo", "ooo o ", "oooo ", "ooooo ", "oooo "], [" xoox ", " xoox ", "xoox x", "oox xo", "ox xoo", "x xooo", " xooo ", " xooo "], [" xx ", " xoox ", " xoxxox ", "ooxxxxoo", "ooxxxxoo", " xoxxox ", " xoox ", " oo "], [" oooo ", " ox oo ", "ox oo", "o xx o", "o xx o", "oo xo", " oo xo ", " oooo "], ["o o o o ", " o o o o", "o o o o ", " o o o o", "o o o o ", " o o o o", "o o o o ", " o o o o"], ["oooooooo", "o o", "o oo o", "o ooo o", "o ooo o", "o oo o", "o o", "oooooooo"], ["xxxxxxxx", "xooxxoox", "xxxxxxxx", "xxooooxx", " xo ox ", " xx xx ", " x x ", " "], ["o o oooo", " o o ooo", "o o o oo", " o o o o", "o o o o ", "oo o o o", "ooo o o ", "oooo o o"], ["oooooooo", "oo oo oo", "o o o o", "oo oo oo", "oo oo oo", "o o o o", "oo oo oo", "oooooooo"]];
#endinitclip
Symbol 170 MovieClip [__Packages.CTimeCounter] Frame 0
class CTimeCounter
{
var curTime;
function CTimeCounter () {
}
function setTime(time) {
curTime = time;
}
function process(dTime) {
curTime = curTime - dTime;
return(curTime > 0);
}
function endTime() {
curTime = 0;
}
}
Symbol 171 MovieClip [__Packages.CTable] Frame 0
class CTable
{
var freeIdols, cells, startFallWave, hints, hintCount, moveIdols;
function CTable () {
var _local1 = this;
var _local2;
var _local3;
_local1.cells = new Array(_local1.cols);
_local2 = 0;
while (_local2 < _local1.cols) {
_local1.cells[_local2] = new Array(_local1.rows);
_local3 = 0;
while (_local3 < _local1.rows) {
_local1.cells[_local2][_local3] = {cell:null, idol:null};
_local3++;
}
_local2++;
}
_local1.freeIdols = new Array();
_local1.moveIdols = new Array();
_local1.deleteIdols = new Array(_local1.cols);
_local1.scores_array = new Array();
_local1.bonusIdols = new Array();
_local1.bonuses = new Array();
var n = (_local1.cols * _local1.rows);
_local1.hints = new Array(n);
_local2 = 0;
while (_local2 < n) {
_local1.hints[_local2] = new Array();
_local2++;
}
_local1.myHints = new Array();
}
function init(cells_mc_, idols_mc_) {
var _local1 = this;
_local1.cells_mc = cells_mc_;
_local1.idols_mc = idols_mc_;
_local1.moving = false;
delete _local1.bonuses;
_local1.bonuses = new Array();
}
function attachAllMovies() {
var _local1 = this;
var i;
var _local2;
var _local3;
var mc;
i = 0;
while (i < _local1.cols) {
_local2 = 0;
while (_local2 < _local1.rows) {
_local3 = (_local2 * _local1.cols) + i;
mc = (_local1.cells[i][_local2].cell = _local1.cells_mc.attachMovie(cellName, "" + _local3, _local3));
mc._x = _local1.cellW * i;
mc._y = _local1.cellH * _local2;
_local1.freeIdols.push(_local1.idols_mc.attachMovie(idolName, "" + _local3, _local3));
_local2++;
}
i++;
}
}
function initCellsByLevel(level) {
var _local2 = this;
var _local1;
var _local3;
var s;
_local2.cellsLifeCount = 0;
_local3 = 0;
while (_local3 < _local2.rows) {
_local1 = 0;
while (_local1 < _local2.cols) {
s = level[_local3].substring(_local1, _local1 + 1);
switch (s) {
case " " :
_local2.cells[_local1][_local3].cell.setLife(0);
break;
case "o" :
_local2.cells[_local1][_local3].cell.setLife(1);
_local2.cellsLifeCount = _local2.cellsLifeCount + 1;
break;
case "x" :
_local2.cells[_local1][_local3].cell.setLife(2);
_local2.cellsLifeCount = _local2.cellsLifeCount + 2;
break;
default :
trace("gluk!!! in createCells");
}
_local1++;
}
_local3++;
}
}
function resetIdols() {
var _local1 = this;
var _local3;
var _local2;
delete _local1.freeIdols;
delete _local1.moveIdols;
_local1.freeIdols = new Array();
_local1.moveIdols = new Array();
for (_local3 in _local1.idols_mc) {
_local2 = _local1.idols_mc[_local3];
_local1.freeIdols.push(_local2);
_local2.reset();
}
_local1.hintFlag = false;
}
function mapIdols() {
var _local2;
var _local3;
var idol;
var _local1;
_local3 = 0;
while (_local3 < rows) {
_local2 = 0;
while (_local2 < cols) {
_local1 = Math.floor((maxI - 1E-6) * Math.random()) + 1;
while ((getLCount(_local1, _local2, _local3) > 1) || (getUCount(_local1, _local2, _local3) > 1)) {
_local1++;
if (_local1 > maxI) {
_local1 = 1;
}
}
idol = (cells[_local2][_local3].idol = freeIdols.pop());
idol.setType(_local1);
idol.col = _local2;
idol.row = _local3;
_local2++;
}
_local3++;
}
}
function hasNextWave() {
return(startFallWave > 0);
}
function prepareFirstWave() {
var _local1 = this;
_local1.startFallWave = _local1.rows;
_local1.prepareNextWave();
}
function prepareNextWave() {
var _local1 = this;
var _local3;
var _local2;
_local1.startFallWave--;
_local3 = 0;
while (_local3 < _local1.cols) {
_local2 = _local1.cells[_local3][_local1.startFallWave].idol;
_local2.toStop();
_local2._x = _local3 * _local1.cellW;
_local2._y = -_local1.cellH;
_local2.startMoveTo(_local2._x, _local1.startFallWave * _local1.cellH);
_local1.moveIdols.push(_local2);
_local3++;
}
_local1.moving = true;
}
function process(dTime, speed) {
var _local3 = this;
var dr = ((speed * dTime) / 1000);
var _local2;
var n = _local3.moveIdols.length;
if (_local3.moving) {
_local3.moving = false;
_local2 = 0;
while (_local2 < n) {
_local3.moveIdols[_local2].process(dr);
if (_local3.moveIdols[_local2].moving) {
_local3.moving = true;
}
_local2++;
}
}
if (!_local3.moving) {
var _local1;
_local2 = 0;
while (_local2 < n) {
_local1 = _local3.moveIdols[_local2];
_local1.col = Math.round(_local1._x / _local3.cellW);
_local1.row = Math.round(_local1._y / _local3.cellH);
_local3.cells[_local1.col][_local1.row].idol = _local1;
_local1.cellCount = 0;
_local2++;
}
_local3.clearMoveArray();
}
}
function createHints() {
var _local1 = this;
_local1.hintCount = 0;
_local1.clearHints();
var _local3;
var _local2;
var col;
var row;
var type;
var newType;
_local3 = 0;
while (_local3 < _local1.cols) {
_local2 = 0;
while (_local2 < _local1.rows) {
type = _local1.cells[_local3][_local2].idol.type;
row = _local2 - 1;
if ((row > 0) && (((newType = _local1.cells[_local3][row].idol.type)) != type)) {
if ((_local1.getLCount(newType, _local3, _local2) + _local1.getRCount(newType, _local3, _local2)) > 1) {
_local1.addHint(_local3, _local2, _local3, row);
}
}
row = _local2 + 1;
if ((row < _local1.rows) && (((newType = _local1.cells[_local3][row].idol.type)) != type)) {
if ((_local1.getLCount(newType, _local3, _local2) + _local1.getRCount(newType, _local3, _local2)) > 1) {
_local1.addHint(_local3, _local2, _local3, row);
}
}
col = _local3 - 1;
if ((col > 0) && (((newType = _local1.cells[col][_local2].idol.type)) != type)) {
if ((_local1.getUCount(newType, _local3, _local2) + _local1.getDCount(newType, _local3, _local2)) > 1) {
_local1.addHint(_local3, _local2, col, _local2);
}
}
col = _local3 + 1;
if ((col < _local1.cols) && (((newType = _local1.cells[col][_local2].idol.type)) != type)) {
if ((_local1.getUCount(newType, _local3, _local2) + _local1.getDCount(newType, _local3, _local2)) > 1) {
_local1.addHint(_local3, _local2, col, _local2);
}
}
_local2++;
}
_local3++;
}
var n;
var m;
var col2;
var row2;
delete _local1.myHints;
_local1.myHints = new Array();
n = _local1.hints.length;
_local3 = 0;
while (_local3 < n) {
if (((m = _local1.hints[_local3].length)) > 0) {
_local2 = 0;
while (_local2 < m) {
_local1.myHints.push({col1:_local3 % _local1.cols, row1:Math.floor(_local3 / _local1.cols), col2:_local1.hints[_local3][_local2] % _local1.cols, row2:Math.floor(_local1.hints[_local3][_local2] / _local1.cols)});
_local2++;
}
}
_local3++;
}
_local1.myHints.sort(function (a, b) {
return(random(3) - 1);
});
_local1.curHint = 0;
}
function selHint() {
var _local1 = this;
var _local2;
_local1.resetHint();
_local1.nextHint();
_local2 = _local1.myHints[_local1.curHint];
_local1.hintFlag = true;
_local1.cells[_local2.col1][_local2.row1].idol.toHint(false);
_local1.cells[_local2.col2][_local2.row2].idol.toHint(true);
}
function resetHint() {
var _local1 = this;
if (_local1.hintFlag) {
var _local2 = _local1.myHints[_local1.curHint];
_local1.hintFlag = false;
_local1.cells[_local2.col1][_local2.row1].idol.toStop();
_local1.cells[_local2.col2][_local2.row2].idol.toStop();
}
}
function nextHint() {
var _local1 = this;
_local1.curHint++;
if (_local1.curHint == _local1.myHints.length) {
_local1.curHint = 0;
}
}
function canExchange(col1, row1, col2, row2) {
return(canPut1to2(col1, row1, col2, row2) || (canPut1to2(col2, row2, col1, row1)));
}
function startIdolsExchange(col1, row1, col2, row2) {
var _local1 = this;
var _local3;
var _local2;
var tmp1;
var tmp2;
_local1.resetHint();
_local3 = _local1.cells[col1][row1].idol;
_local2 = _local1.cells[col2][row2].idol;
_local3.toStop();
_local3.startMoveTo2(col2 * _local1.cellW, row2 * _local1.cellH);
_local1.moveIdols.push(_local3);
_local2.toStop();
_local2.startMoveTo2(col1 * _local1.cellW, row1 * _local1.cellH);
_local1.moveIdols.push(_local2);
_local1.sCol1 = _local3.col;
_local1.sRow1 = _local3.row;
_local1.sCol2 = _local2.col;
_local1.sRow2 = _local2.row;
_local1.moving = true;
}
function startIdolsExchangeAndBack(col1, row1, col2, row2) {
var _local1 = this;
var _local3;
var _local2;
_local1.resetHint();
_local3 = _local1.cells[col1][row1].idol;
_local2 = _local1.cells[col2][row2].idol;
_local3.toStop();
_local3.startToAndBack(col2 * _local1.cellW, row2 * _local1.cellH);
_local1.moveIdols.push(_local3);
_local2.toStop();
_local2.startToAndBack(col1 * _local1.cellW, row1 * _local1.cellH);
_local1.moveIdols.push(_local2);
_local1.moving = true;
}
function endExchange() {
var _local2 = this;
var _local1;
_local1 = 0;
while (_local1 < _local2.cols) {
_local2.deleteIdols[_local1] = 0;
_local1++;
}
delete _local2.scores_array;
_local2.scores_array = new Array();
delete _local2.bonusIdols;
_local2.bonusIdols = new Array();
_local2.tryDestroy(_local2.sCol1, _local2.sRow1);
_local2.tryDestroy(_local2.sCol2, _local2.sRow2);
_local2.addScoresForDeleted();
}
function endRemove() {
var _local2 = this;
var i;
var _local3;
var _local1;
var tmpY;
i = 0;
while (i < _local2.cols) {
if (_local2.deleteIdols[i] > 0) {
_local3 = 0;
while (_local3 < _local2.rows) {
_local1 = _local2.cells[i][_local3].idol;
if (!_local1.removeFlag) {
_local1.startMoveTo(_local1._x, (tmpY = _local1._y + (_local1.cellCount * _local2.cellH)));
if (_local2.isBonusPlace(_local1._x, tmpY)) {
_local1.setBonus();
_local2.snd_bomb_creation = true;
}
_local2.moveIdols.push(_local1);
}
_local3++;
}
}
i++;
}
_local2.moving = true;
}
function hasFreeIdols() {
return(freeIdols.length > 0);
}
function addNewIdols() {
var _local1 = this;
var _local3;
var _local2;
var n;
var idol;
var t;
_local3 = 0;
while (_local3 < _local1.cols) {
n = _local1.deleteIdols[_local3];
if (n > 0) {
_local2 = 0;
while (_local2 < n) {
_local1.cells[_local3][_local2].idol = null;
_local2++;
}
}
_local3++;
}
_local3 = _local1.cols - 1;
while (_local3 >= 0) {
n = _local1.deleteIdols[_local3];
if (n > 0) {
_local2 = n - 1;
while (_local2 >= 0) {
t = Math.floor((maxI - 1E-6) * Math.random()) + 1;
while (((_local1.getRCount(t, _local3, _local2) + _local1.getLCount(t, _local3, _local2)) > 1) || (_local1.getDCount(t, _local3, _local2) > 1)) {
t++;
if (t > maxI) {
t = 1;
}
}
idol = (_local1.cells[_local3][_local2].idol = _local1.freeIdols.pop());
idol.reset();
idol.setType(t);
idol._x = _local3 * _local1.cellW;
idol._y = (-(n - _local2)) * _local1.cellH;
idol.toStop();
idol.startMoveTo(idol._x, _local2 * _local1.cellH);
if (_local1.isBonusPlace(idol._x, _local2 * _local1.cellH)) {
idol.setBonus();
_local1.snd_bomb_creation = true;
}
_local1.moveIdols.push(idol);
_local2--;
}
}
_local3--;
}
_local1.moving = true;
}
function hasCoin() {
var _local3 = this;
var _local1;
var _local2;
var k;
var has = false;
var n;
_local1 = 0;
while (_local1 < _local3.cols) {
_local3.deleteIdols[_local1] = 0;
_local1++;
}
delete _local3.scores_array;
_local3.scores_array = new Array();
delete _local3.bonusIdols;
_local3.bonusIdols = new Array();
_local2 = 0;
while (_local2 < _local3.rows) {
_local1 = 0;
while (_local1 < (_local3.cols - 2)) {
n = _local3.getRCount(_local3.cells[_local1][_local2].idol.type, _local1, _local2);
if (n > 1) {
_local3.scores_array.push({n:n + 1, col:_local1, row:_local2});
k = _local1 + n;
while (k >= _local1) {
_local3.removeIdol(k, _local2);
has = true;
k--;
}
_local1 = _local1 + (n + 1);
} else {
_local1++;
}
}
_local2++;
}
_local1 = 0;
while (_local1 < _local3.cols) {
_local2 = 0;
while (_local2 < (_local3.rows - 2)) {
n = _local3.getDCount(_local3.cells[_local1][_local2].idol.type, _local1, _local2);
if (n > 1) {
_local3.scores_array.push({n:n + 1, col:_local1, row:_local2});
k = _local2 + n;
while (k >= _local2) {
_local3.removeIdol(_local1, k);
has = true;
k--;
}
_local2 = _local2 + (n + 1);
} else {
_local2++;
}
}
_local1++;
}
if (has) {
_local3.addScoresForDeleted();
}
return(has);
}
function isBonusPlace(x, y) {
var _local2 = this;
var _local1;
var n = _local2.bonusIdols.length;
var col = Math.round(x / _local2.cellW);
var _local3 = Math.round(y / _local2.cellH);
_local1 = 0;
while (_local1 < n) {
if (((!_local2.bonusIdols[_local1].use) && (col == _local2.bonusIdols[_local1].col)) && (_local3 == _local2.bonusIdols[_local1].row)) {
_local2.bonusIdols[_local1].use = true;
return(true);
}
_local1++;
}
return(false);
}
function addScoresForDeleted() {
var _local2 = this;
var n = _local2.scores_array.length;
var _local1;
_local1 = 0;
while (_local1 < n) {
_local2.scores = _local2.scores + (_local2.scores_array[_local1].n * ((_local2.scores_array[_local1].n * 2) - 3));
if (_local2.scores_array[_local1].n > 3) {
_local2.bonusIdols.push({col:_local2.scores_array[_local1].col, row:_local2.scores_array[_local1].row, use:false});
}
_local1++;
}
}
function tryDestroy(col, row) {
var _local2 = this;
var _local3 = row;
var type = _local2.cells[col][_local3].idol.type;
var n1;
var n2;
var _local1;
var removeFlag = false;
n1 = _local2.getLCount(type, col, _local3);
n2 = _local2.getRCount(type, col, _local3);
if ((n1 + n2) > 1) {
removeFlag = true;
_local2.scores_array.push({n:(n1 + n2) + 1, col:col, row:_local3});
_local1 = col - n1;
while (_local1 < col) {
_local2.removeIdol(_local1, _local3);
_local1++;
}
_local1 = col + n2;
while (_local1 > col) {
_local2.removeIdol(_local1, _local3);
_local1--;
}
}
n1 = _local2.getUCount(type, col, _local3);
n2 = _local2.getDCount(type, col, _local3);
if ((n1 + n2) > 1) {
removeFlag = true;
_local2.scores_array.push({n:(n1 + n2) + 1, col:col, row:_local3});
_local1 = _local3 - n1;
while (_local1 < _local3) {
_local2.removeIdol(col, _local1);
_local1++;
}
_local1 = _local3 + n2;
while (_local1 > _local3) {
_local2.removeIdol(col, _local1);
_local1--;
}
}
if (removeFlag) {
_local2.removeIdol(col, _local3);
}
}
function removeIdol(col, row) {
var _local2 = this;
var _local3 = col;
var _local1;
if (_local2.cells[_local3][row].idol.removeFlag == true) {
trace("ola-la! :(");
} else {
_local1 = row - 1;
while (_local1 >= 0) {
if (!_local2.cells[_local3][_local1].idol.removeFlag) {
_local2.cells[_local3][_local1].idol.cellCount++;
}
_local1--;
}
if (_local2.cells[_local3][row].idol.bonus) {
_local2.scores = _local2.scores + 100;
_local2.bonuses.push({x:(_local3 * _local2.cellW) + (_local2.cellW / 2), y:(row * _local2.cellH) + (_local2.cellH / 2)});
}
_local2.cells[_local3][row].idol.toRemove();
_local2.freeIdols.push(_local2.cells[_local3][row].idol);
_local2.deleteIdols[_local3]++;
_local2.cells[_local3][row].idol.removeFlag = true;
if (_local2.cells[_local3][row].cell.decLife()) {
_local2.cellsLifeCount--;
}
}
}
function canPut1to2(col1, row1, col2, row2) {
var _local1 = col2;
var _local2 = row2;
var _local3 = cells[col1][row1].idol.type;
if (col1 > _local1) {
if ((getLCount(_local3, _local1, _local2) > 1) || ((getUCount(_local3, _local1, _local2) + getDCount(_local3, _local1, _local2)) > 1)) {
return(true);
}
} else if (col1 < _local1) {
if ((getRCount(_local3, _local1, _local2) > 1) || ((getUCount(_local3, _local1, _local2) + getDCount(_local3, _local1, _local2)) > 1)) {
return(true);
}
} else if (row1 > _local2) {
if ((getUCount(_local3, _local1, _local2) > 1) || ((getLCount(_local3, _local1, _local2) + getRCount(_local3, _local1, _local2)) > 1)) {
return(true);
}
} else if (row1 < _local2) {
if ((getDCount(_local3, _local1, _local2) > 1) || ((getLCount(_local3, _local1, _local2) + getRCount(_local3, _local1, _local2)) > 1)) {
return(true);
}
}
return(false);
}
function addHint(col1, row1, col2, row2) {
var n1 = ((row1 * cols) + col1);
var n2 = ((row2 * cols) + col2);
var m1 = Math.min(n1, n2);
var _local3 = Math.max(n1, n2);
var _local1;
var _local2 = hints[m1];
var n = _local2.length;
_local1 = 0;
while (_local1 < n) {
if (_local2[_local1] == _local3) {
return;
}
_local1++;
}
_local2.push(_local3);
hintCount++;
}
function clearHints() {
var _local2 = this;
var _local3 = _local2.rows * _local2.cols;
var _local1;
_local1 = 0;
while (_local1 < _local3) {
delete _local2.hints[_local1];
_local2.hints[_local1] = new Array();
_local1++;
}
}
function clearMoveArray() {
delete moveIdols;
moveIdols = new Array();
}
function getLCount(type, col, row) {
var _local1 = col;
var _local3 = row;
var _local2 = 0;
_local1--;
while ((_local1 >= 0) && (cells[_local1][_local3].idol.type == type)) {
_local2++;
_local1--;
}
return(_local2);
}
function getRCount(type, col, row) {
var _local1 = col;
var _local2 = this;
var _local3 = row;
var n = 0;
_local1++;
while (((_local1 < _local2.cols) && (_local2.cells[_local1][_local3].idol != null)) && (_local2.cells[_local1][_local3].idol.type == type)) {
n++;
_local1++;
}
return(n);
}
function getUCount(type, col, row) {
var _local1 = row;
var _local3 = this;
var _local2 = 0;
_local1--;
while ((_local1 >= 0) && (_local3.cells[col][_local1].idol.type == type)) {
_local2++;
_local1--;
}
return(_local2);
}
function getDCount(type, col, row) {
var _local1 = row;
var _local2 = this;
var _local3 = 0;
_local1++;
while ((_local1 < _local2.rows) && (_local2.cells[col][_local1].idol.type == type)) {
_local3++;
_local1++;
}
return(_local3);
}
var cols = 8;
var rows = 8;
var cellW = 36;
var cellH = 36;
static var cellName = "lib_cell";
static var idolName = "lib_idol";
static var idolFallSpeed = 700;
static var idolSpeed = 150;
static var maxI = 6;
}
Symbol 172 MovieClip [__Packages.CIdol] Frame 0
class CIdol extends MovieClip
{
var type, bonus, gotoAndStop, mc, movingType;
function CIdol () {
super();
}
function reset() {
var _local1 = this;
_local1.cellCount = 0;
_local1.removeFlag = false;
_local1.moving = false;
_local1.gotoAndStop("st_empty");
}
function setType(type_) {
type = type_;
bonus = false;
}
function updateView() {
var _local1 = this;
_local1.mc.mc.gotoAndStop(_local1.type);
if (_local1.bonus) {
_local1.mc.mc.mc.gotoAndStop(2);
} else {
_local1.mc.mc.mc.gotoAndStop(1);
}
}
function toStop() {
gotoAndStop("st_stop");
updateView();
}
function toHint(cw) {
var _local1 = this;
_local1.gotoAndStop("st_hint");
if (cw) {
_local1.mc.gotoAndPlay(17);
}
_local1.updateView();
}
function toRemove() {
gotoAndStop("st_remove");
updateView();
}
function setBonus() {
bonus = true;
mc.mc.mc.gotoAndStop(2);
}
function startMoveTo(x_, y_) {
var _local1 = this;
_local1.moving = true;
_local1.x = x_;
_local1.y = y_;
_local1.movingType = 0;
}
function process(dr) {
var _local1 = this;
if (_local1.movingType != 0) {
_local1.process2(dr);
} else if (_local1.moving) {
_local1._y = _local1._y + dr;
if (_local1._y >= _local1.y) {
_local1._y = _local1.y;
_local1.moving = false;
_local1.y = 0;
}
}
}
function startMoveTo2(x_, y_) {
startToAndBack(x_, y_);
movingType = 2;
}
function startToAndBack(x_, y_) {
var _local1 = this;
_local1.x = x_;
_local1.y = y_;
_local1.x2 = _local1._x;
_local1.y2 = _local1._y;
_local1.dir = 1;
if (_local1.x > _local1.x2) {
_local1.dx = 1;
_local1.dy = 0;
} else if (_local1.x < _local1.x2) {
_local1.dx = -1;
_local1.dy = 0;
} else if (_local1.y > _local1.y2) {
_local1.dx = 0;
_local1.dy = 1;
} else {
_local1.dx = 0;
_local1.dy = -1;
}
_local1.moving = true;
_local1.movingType = 1;
}
function process2(dr) {
var _local1 = this;
var _local2 = dr;
if (_local1.moving) {
if (Math.abs(((_local1.x - _local1._x) + _local1.y) - _local1._y) < _local2) {
_local1._x = _local1.x;
_local1._y = _local1.y;
if (_local1.dir == 1) {
if (_local1.movingType == 1) {
_local1.dir = -1;
_local1.x = _local1.x2;
_local1.y = _local1.y2;
} else {
_local1.moving = false;
}
} else {
_local1.moving = false;
}
} else {
_local1._x = _local1._x + ((_local1.dx * _local1.dir) * _local2);
_local1._y = _local1._y + ((_local1.dy * _local1.dir) * _local2);
}
}
}
}
Symbol 173 MovieClip [__Packages.CCell] Frame 0
class CCell extends MovieClip
{
var life;
function CCell () {
super();
}
function setLife(life_) {
var _local1 = this;
_local1.life = life_;
_local1.gotoAndStop(_local1.life + 1);
}
function getLife() {
return(life);
}
function decLife() {
var _local1 = this;
_local1.life--;
if (_local1.life < 0) {
_local1.life = 0;
return(false);
}
_local1.gotoAndStop(_local1.life + 1);
return(true);
}
}
Symbol 174 MovieClip [__Packages.CIndicator] Frame 0
class CIndicator extends MovieClip
{
var curTime;
function CIndicator () {
super();
}
function init(maxTime_) {
var _local1 = this;
_local1.curTime = (_local1.maxTime = maxTime_);
_local1.r = _local1.mc_right._x - _local1.mc_left._x;
_local1.setBar();
_local1.kvaFlag = false;
}
function process(dTime) {
var _local2 = this;
var _local1 = Math.ceil(_local2.curTime / 1000);
var _local3;
_local2.curTime = _local2.curTime - dTime;
if ((_local1 <= 30) && ((_local1 % 2) == 0)) {
_local3 = Math.ceil(_local2.curTime / 1000);
if (_local3 != _local1) {
_local2.kvaFlag = true;
}
}
_local2.setBar();
}
function addtime(time) {
var _local1 = this;
_local1.curTime = _local1.curTime + time;
if (_local1.curTime > _local1.maxTime) {
_local1.curTime = _local1.maxTime;
}
_local1.setBar();
}
function isOut() {
return(curTime <= 0);
}
function setBar() {
var _local1 = this;
var _local2 = _local1.curTime / _local1.maxTime;
if (_local2 <= 0) {
_local2 = 0;
}
_local1.mc_bar._x = _local1.mc_left._x + (_local1.r * _local2);
}
}
Symbol 20 MovieClip [lib_cell] Frame 1
#initclip 8
Object.registerClass("lib_cell", CCell);
#endinitclip
Symbol 54 MovieClip Frame 8
this.stop();
Symbol 55 MovieClip [lib_idol] Frame 1
#initclip 7
Object.registerClass("lib_idol", CIdol);
#endinitclip
Symbol 59 MovieClip [lib_bonus] Frame 30
this.removeMovieClip();
Symbol 79 Button
on (release) {
gameStart();
}
Symbol 84 Button
on (release) {
how_to_play_pressed();
}
Symbol 89 Button
on (release) {
more_pressed();
}
Symbol 91 MovieClip Frame 1
stop();
Symbol 93 Button
on (press) {
this._parent.soundOff();
this.gotoAndStop(2);
}
Symbol 95 Button
on (press) {
this._parent.soundOn();
this.gotoAndStop(1);
}
Symbol 96 MovieClip Frame 1
this.stop();
Symbol 115 Button
on (release) {
ok_pressed();
}
Symbol 121 MovieClip Frame 30
this.stop();
Symbol 128 Button
on (release) {
menuPressed();
}
Symbol 134 MovieClip Frame 21
this.gotoAndPlay(1);
Symbol 138 MovieClip [mc_ind] Frame 1
#initclip 9
Object.registerClass("mc_ind", CIndicator);
#endinitclip
Symbol 145 Button
on (release) {
this.hintPressed();
}
Symbol 146 Button
on (release) {
this.menuPressed();
}
Symbol 153 Button
on (release) {
this.pausePressed();
}
Symbol 160 Button
on (press) {
this._parent.more_pressed();
}
Symbol 165 MovieClip Frame 1
this.stop();