Instance of Symbol 63 MovieClip in Frame 2
on (press) {
this._parent.more_pressed();
}
Instance of Symbol 69 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 95 MovieClip "mc_sloop" in Frame 5
onClipEvent (load) {
var soundControl = new Sound(this);
}
Instance of Symbol 100 MovieClip "btn_sound" in Frame 5
onClipEvent (load) {
if (this._parent.stopSoundFlag) {
this.gotoAndStop(2);
}
}
Instance of Symbol 76 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 13 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 14 MovieClip [mc_ind] Frame 1
#initclip 9
Object.registerClass("mc_ind", CIndicator);
#endinitclip
Symbol 18 MovieClip [lib_bonus] Frame 30
this.removeMovieClip();
Symbol 52 MovieClip Frame 8
this.stop();
Symbol 53 MovieClip [lib_idol] Frame 1
#initclip 6
Object.registerClass("lib_idol", CIdol);
#endinitclip
Symbol 58 MovieClip [lib_cell] Frame 1
#initclip 7
Object.registerClass("lib_cell", CCell);
#endinitclip
Symbol 59 MovieClip Frame 1
#initclip 8
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 _local3 = this;
_local3.gotoAndStop("map");
var _local2;
_local2 = level;
while (_local2 <= 15) {
_local3["mc" + _local2]._visible = false;
_local2 = _local2 + 1;
}
mc_cross._x = _local3["mc" + level]._x;
mc_cross._y = _local3["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) {
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();
}
}
if (gameState == 5) {
mc_ind.process(_local1);
if (mc_ind.isOut()) {
looseLevel();
}
}
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();
}
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 _local3;
var _local2;
if (gameState == -1) {
playSnd("snd_menu_enter");
endShowLevelNum();
} else if (gameState == 3) {
playSnd("snd_menu_enter");
fromNoMore();
}
if ((gameState == 4) || (gameState == 5)) {
_local3 = Math.floor((this._xmouse - idols_mc._x) / table.cellW);
_local2 = Math.floor((this._ymouse - idols_mc._y) / table.cellH);
if (_local3 >= table.cols) {
_local3 = -1;
}
if (_local2 >= table.rows) {
_local2 = -1;
}
if ((_local3 >= 0) && (_local2 >= 0)) {
table.resetHint();
if (gameState == 4) {
curCol = _local3;
curRow = _local2;
showCursor();
gameState = 5;
playSnd("snd_gem_click");
} else if (gameState == 5) {
if ((_local3 == curCol) && (_local2 == curRow)) {
hideCursor();
gameState = 4;
playSnd("snd_gem_click");
} else if (((_local3 == curCol) && (Math.abs(_local2 - curRow) == 1)) || ((_local2 == curRow) && (Math.abs(_local3 - curCol) == 1))) {
btn_hint.enabled = false;
if (table.canExchange(_local3, _local2, curCol, curRow)) {
table.startIdolsExchange(_local3, _local2, curCol, curRow);
hideCursor();
gameState = 7;
playSnd("snd_gem_click");
} else {
table.startIdolsExchangeAndBack(_local3, _local2, curCol, curRow);
hideCursor();
gameState = 6;
playSnd("snd_gem_no_change");
}
} else {
curCol = _local3;
curRow = _local2;
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 168 MovieClip [__Packages.CIdol] Frame 0
class CIdol extends MovieClip
{
var type, bonus, gotoAndStop, mc, movingType;
function CIdol () {
super();
}
function reset() {
var _local2 = this;
_local2.cellCount = 0;
_local2.removeFlag = false;
_local2.moving = false;
_local2.gotoAndStop("st_empty");
}
function setType(type_) {
type = type_;
bonus = false;
}
function updateView() {
var _local2 = this;
_local2.mc.mc.gotoAndStop(_local2.type);
if (_local2.bonus) {
_local2.mc.mc.mc.gotoAndStop(2);
} else {
_local2.mc.mc.mc.gotoAndStop(1);
}
}
function toStop() {
gotoAndStop("st_stop");
updateView();
}
function toHint(cw) {
var _local2 = this;
_local2.gotoAndStop("st_hint");
if (cw) {
_local2.mc.gotoAndPlay(17);
}
_local2.updateView();
}
function toRemove() {
gotoAndStop("st_remove");
updateView();
}
function setBonus() {
bonus = true;
mc.mc.mc.gotoAndStop(2);
}
function startMoveTo(x_, y_) {
var _local2 = this;
_local2.moving = true;
_local2.x = x_;
_local2.y = y_;
_local2.movingType = 0;
}
function process(dr) {
var _local2 = this;
if (_local2.movingType != 0) {
_local2.process2(dr);
} else if (_local2.moving) {
_local2._y = _local2._y + dr;
if (_local2._y >= _local2.y) {
_local2._y = _local2.y;
_local2.moving = false;
_local2.y = 0;
}
}
}
function startMoveTo2(x_, y_) {
startToAndBack(x_, y_);
movingType = 2;
}
function startToAndBack(x_, y_) {
var _local2 = this;
_local2.x = x_;
_local2.y = y_;
_local2.x2 = _local2._x;
_local2.y2 = _local2._y;
_local2.dir = 1;
if (_local2.x > _local2.x2) {
_local2.dx = 1;
_local2.dy = 0;
} else if (_local2.x < _local2.x2) {
_local2.dx = -1;
_local2.dy = 0;
} else if (_local2.y > _local2.y2) {
_local2.dx = 0;
_local2.dy = 1;
} else {
_local2.dx = 0;
_local2.dy = -1;
}
_local2.moving = true;
_local2.movingType = 1;
}
function process2(dr) {
var _local2 = this;
var _local3 = dr;
if (_local2.moving) {
if (Math.abs(((_local2.x - _local2._x) + _local2.y) - _local2._y) < _local3) {
_local2._x = _local2.x;
_local2._y = _local2.y;
if (_local2.dir == 1) {
if (_local2.movingType == 1) {
_local2.dir = -1;
_local2.x = _local2.x2;
_local2.y = _local2.y2;
} else {
_local2.moving = false;
}
} else {
_local2.moving = false;
}
} else {
_local2._x = _local2._x + ((_local2.dx * _local2.dir) * _local3);
_local2._y = _local2._y + ((_local2.dy * _local2.dir) * _local3);
}
}
}
}
Symbol 169 MovieClip [__Packages.CCell] Frame 0
class CCell extends MovieClip
{
var life;
function CCell () {
super();
}
function setLife(life_) {
var _local2 = this;
_local2.life = life_;
_local2.gotoAndStop(_local2.life + 1);
}
function getLife() {
return(life);
}
function decLife() {
var _local2 = this;
_local2.life = _local2.life - 1;
if (_local2.life < 0) {
_local2.life = 0;
return(false);
}
_local2.gotoAndStop(_local2.life + 1);
return(true);
}
}
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 _local3 = this;
var _local2;
var _local4;
_local3.cells = new Array(_local3.cols);
_local2 = 0;
while (_local2 < _local3.cols) {
_local3.cells[_local2] = new Array(_local3.rows);
_local4 = 0;
while (_local4 < _local3.rows) {
_local3.cells[_local2][_local4] = {cell:null, idol:null};
_local4 = _local4 + 1;
}
_local2 = _local2 + 1;
}
_local3.freeIdols = new Array();
_local3.moveIdols = new Array();
_local3.deleteIdols = new Array(_local3.cols);
_local3.scores_array = new Array();
_local3.bonusIdols = new Array();
_local3.bonuses = new Array();
var _local7 = _local3.cols * _local3.rows;
_local3.hints = new Array(_local7);
_local2 = 0;
while (_local2 < _local7) {
_local3.hints[_local2] = new Array();
_local2 = _local2 + 1;
}
_local3.myHints = new Array();
}
function init(cells_mc_, idols_mc_) {
var _local2 = this;
_local2.cells_mc = cells_mc_;
_local2.idols_mc = idols_mc_;
_local2.moving = false;
delete _local2.bonuses;
_local2.bonuses = new Array();
}
function attachAllMovies() {
var _local2 = this;
var _local5;
var _local3;
var _local4;
var _local6;
_local5 = 0;
while (_local5 < _local2.cols) {
_local3 = 0;
while (_local3 < _local2.rows) {
_local4 = (_local3 * _local2.cols) + _local5;
_local6 = (_local2.cells[_local5][_local3].cell = _local2.cells_mc.attachMovie(cellName, "" + _local4, _local4));
_local6._x = _local2.cellW * _local5;
_local6._y = _local2.cellH * _local3;
_local2.freeIdols.push(_local2.idols_mc.attachMovie(idolName, "" + _local4, _local4));
_local3 = _local3 + 1;
}
_local5++;
}
}
function initCellsByLevel(level) {
var _local3 = this;
var _local2;
var _local4;
var _local5;
_local3.cellsLifeCount = 0;
_local4 = 0;
while (_local4 < _local3.rows) {
_local2 = 0;
while (_local2 < _local3.cols) {
_local5 = level[_local4].substring(_local2, _local2 + 1);
switch (_local5) {
case " " :
_local3.cells[_local2][_local4].cell.setLife(0);
break;
case "o" :
_local3.cells[_local2][_local4].cell.setLife(1);
_local3.cellsLifeCount = _local3.cellsLifeCount + 1;
break;
case "x" :
_local3.cells[_local2][_local4].cell.setLife(2);
_local3.cellsLifeCount = _local3.cellsLifeCount + 2;
break;
default :
trace("gluk!!! in createCells");
}
_local2 = _local2 + 1;
}
_local4 = _local4 + 1;
}
}
function resetIdols() {
var _local2 = this;
var _local3;
var _local4;
delete _local2.freeIdols;
delete _local2.moveIdols;
_local2.freeIdols = new Array();
_local2.moveIdols = new Array();
for (_local3 in _local2.idols_mc) {
_local4 = _local2.idols_mc[_local3];
_local2.freeIdols.push(_local4);
_local4.reset();
}
_local2.hintFlag = false;
}
function mapIdols() {
var _local3;
var _local4;
var _local5;
var _local2;
_local4 = 0;
while (_local4 < rows) {
_local3 = 0;
while (_local3 < cols) {
_local2 = Math.floor((maxI - 1E-6) * Math.random()) + 1;
while ((getLCount(_local2, _local3, _local4) > 1) || (getUCount(_local2, _local3, _local4) > 1)) {
_local2 = _local2 + 1;
if (_local2 > maxI) {
_local2 = 1;
}
}
_local5 = (cells[_local3][_local4].idol = freeIdols.pop());
_local5.setType(_local2);
_local5.col = _local3;
_local5.row = _local4;
_local3 = _local3 + 1;
}
_local4 = _local4 + 1;
}
}
function hasNextWave() {
return(startFallWave > 0);
}
function prepareFirstWave() {
var _local2 = this;
_local2.startFallWave = _local2.rows;
_local2.prepareNextWave();
}
function prepareNextWave() {
var _local2 = this;
var _local4;
var _local3;
_local2.startFallWave = _local2.startFallWave - 1;
_local4 = 0;
while (_local4 < _local2.cols) {
_local3 = _local2.cells[_local4][_local2.startFallWave].idol;
_local3.toStop();
_local3._x = _local4 * _local2.cellW;
_local3._y = -_local2.cellH;
_local3.startMoveTo(_local3._x, _local2.startFallWave * _local2.cellH);
_local2.moveIdols.push(_local3);
_local4 = _local4 + 1;
}
_local2.moving = true;
}
function process(dTime, speed) {
var _local4 = this;
var _local6 = (speed * dTime) / 1000;
var _local2;
var _local5 = _local4.moveIdols.length;
if (_local4.moving) {
_local4.moving = false;
_local2 = 0;
while (_local2 < _local5) {
_local4.moveIdols[_local2].process(_local6);
if (_local4.moveIdols[_local2].moving) {
_local4.moving = true;
}
_local2 = _local2 + 1;
}
}
if (!_local4.moving) {
var _local3;
_local2 = 0;
while (_local2 < _local5) {
_local3 = _local4.moveIdols[_local2];
_local3.col = Math.round(_local3._x / _local4.cellW);
_local3.row = Math.round(_local3._y / _local4.cellH);
_local4.cells[_local3.col][_local3.row].idol = _local3;
_local3.cellCount = 0;
_local2 = _local2 + 1;
}
_local4.clearMoveArray();
}
}
function createHints() {
var _local2 = this;
_local2.hintCount = 0;
_local2.clearHints();
var _local4;
var _local3;
var _local7;
var _local6;
var _local8;
var _local5;
_local4 = 0;
while (_local4 < _local2.cols) {
_local3 = 0;
while (_local3 < _local2.rows) {
_local8 = _local2.cells[_local4][_local3].idol.type;
_local6 = _local3 - 1;
if ((_local6 > 0) && ((_local5 = _local2.cells[_local4][_local6].idol.type) != _local8)) {
if ((_local2.getLCount(_local5, _local4, _local3) + _local2.getRCount(_local5, _local4, _local3)) > 1) {
_local2.addHint(_local4, _local3, _local4, _local6);
}
}
_local6 = _local3 + 1;
if ((_local6 < _local2.rows) && ((_local5 = _local2.cells[_local4][_local6].idol.type) != _local8)) {
if ((_local2.getLCount(_local5, _local4, _local3) + _local2.getRCount(_local5, _local4, _local3)) > 1) {
_local2.addHint(_local4, _local3, _local4, _local6);
}
}
_local7 = _local4 - 1;
if ((_local7 > 0) && ((_local5 = _local2.cells[_local7][_local3].idol.type) != _local8)) {
if ((_local2.getUCount(_local5, _local4, _local3) + _local2.getDCount(_local5, _local4, _local3)) > 1) {
_local2.addHint(_local4, _local3, _local7, _local3);
}
}
_local7 = _local4 + 1;
if ((_local7 < _local2.cols) && ((_local5 = _local2.cells[_local7][_local3].idol.type) != _local8)) {
if ((_local2.getUCount(_local5, _local4, _local3) + _local2.getDCount(_local5, _local4, _local3)) > 1) {
_local2.addHint(_local4, _local3, _local7, _local3);
}
}
_local3 = _local3 + 1;
}
_local4 = _local4 + 1;
}
var _local14;
var _local13;
var _local9;
var _local11;
delete _local2.myHints;
_local2.myHints = new Array();
_local14 = _local2.hints.length;
_local4 = 0;
while (_local4 < _local14) {
_local13 = _local2.hints[_local4].length;
if (_local13 > 0) {
_local3 = 0;
while (_local3 < _local13) {
_local2.myHints.push({col1:_local4 % _local2.cols, row1:Math.floor(_local4 / _local2.cols), col2:_local2.hints[_local4][_local3] % _local2.cols, row2:Math.floor(_local2.hints[_local4][_local3] / _local2.cols)});
_local3 = _local3 + 1;
}
}
_local4 = _local4 + 1;
}
_local2.myHints.sort(function (a, b) {
return(random(3) - 1);
});
_local2.curHint = 0;
}
function selHint() {
var _local2 = this;
var _local3;
_local2.resetHint();
_local2.nextHint();
_local3 = _local2.myHints[_local2.curHint];
_local2.hintFlag = true;
_local2.cells[_local3.col1][_local3.row1].idol.toHint(false);
_local2.cells[_local3.col2][_local3.row2].idol.toHint(true);
}
function resetHint() {
var _local2 = this;
if (_local2.hintFlag) {
var _local3 = _local2.myHints[_local2.curHint];
_local2.hintFlag = false;
_local2.cells[_local3.col1][_local3.row1].idol.toStop();
_local2.cells[_local3.col2][_local3.row2].idol.toStop();
}
}
function nextHint() {
var _local2 = this;
_local2.curHint = _local2.curHint + 1;
if (_local2.curHint == _local2.myHints.length) {
_local2.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 _local2 = this;
var _local3;
var _local4;
var _local10;
var _local9;
_local2.resetHint();
_local3 = _local2.cells[col1][row1].idol;
_local4 = _local2.cells[col2][row2].idol;
_local3.toStop();
_local3.startMoveTo2(col2 * _local2.cellW, row2 * _local2.cellH);
_local2.moveIdols.push(_local3);
_local4.toStop();
_local4.startMoveTo2(col1 * _local2.cellW, row1 * _local2.cellH);
_local2.moveIdols.push(_local4);
_local2.sCol1 = _local3.col;
_local2.sRow1 = _local3.row;
_local2.sCol2 = _local4.col;
_local2.sRow2 = _local4.row;
_local2.moving = true;
}
function startIdolsExchangeAndBack(col1, row1, col2, row2) {
var _local2 = this;
var _local3;
var _local4;
_local2.resetHint();
_local3 = _local2.cells[col1][row1].idol;
_local4 = _local2.cells[col2][row2].idol;
_local3.toStop();
_local3.startToAndBack(col2 * _local2.cellW, row2 * _local2.cellH);
_local2.moveIdols.push(_local3);
_local4.toStop();
_local4.startToAndBack(col1 * _local2.cellW, row1 * _local2.cellH);
_local2.moveIdols.push(_local4);
_local2.moving = true;
}
function endExchange() {
var _local3 = this;
var _local2;
_local2 = 0;
while (_local2 < _local3.cols) {
_local3.deleteIdols[_local2] = 0;
_local2 = _local2 + 1;
}
delete _local3.scores_array;
_local3.scores_array = new Array();
delete _local3.bonusIdols;
_local3.bonusIdols = new Array();
_local3.tryDestroy(_local3.sCol1, _local3.sRow1);
_local3.tryDestroy(_local3.sCol2, _local3.sRow2);
_local3.addScoresForDeleted();
}
function endRemove() {
var _local3 = this;
var _local5;
var _local4;
var _local2;
var _local6;
_local5 = 0;
while (_local5 < _local3.cols) {
if (_local3.deleteIdols[_local5] > 0) {
_local4 = 0;
while (_local4 < _local3.rows) {
_local2 = _local3.cells[_local5][_local4].idol;
if (!_local2.removeFlag) {
_local6 = _local2._y + (_local2.cellCount * _local3.cellH);
_local2.startMoveTo(_local2._x, _local6);
if (_local3.isBonusPlace(_local2._x, _local6)) {
_local2.setBonus();
_local3.snd_bomb_creation = true;
}
_local3.moveIdols.push(_local2);
}
_local4 = _local4 + 1;
}
}
_local5++;
}
_local3.moving = true;
}
function hasFreeIdols() {
return(freeIdols.length > 0);
}
function addNewIdols() {
var _local3 = this;
var _local4;
var _local2;
var _local7;
var _local6;
var _local5;
_local4 = 0;
while (_local4 < _local3.cols) {
_local7 = _local3.deleteIdols[_local4];
if (_local7 > 0) {
_local2 = 0;
while (_local2 < _local7) {
_local3.cells[_local4][_local2].idol = null;
_local2 = _local2 + 1;
}
}
_local4 = _local4 + 1;
}
_local4 = _local3.cols - 1;
while (_local4 >= 0) {
_local7 = _local3.deleteIdols[_local4];
if (_local7 > 0) {
_local2 = _local7 - 1;
while (_local2 >= 0) {
_local5 = Math.floor((maxI - 1E-6) * Math.random()) + 1;
while (((_local3.getRCount(_local5, _local4, _local2) + _local3.getLCount(_local5, _local4, _local2)) > 1) || (_local3.getDCount(_local5, _local4, _local2) > 1)) {
_local5++;
if (_local5 > maxI) {
_local5 = 1;
}
}
_local6 = (_local3.cells[_local4][_local2].idol = _local3.freeIdols.pop());
_local6.reset();
_local6.setType(_local5);
_local6._x = _local4 * _local3.cellW;
_local6._y = (-(_local7 - _local2)) * _local3.cellH;
_local6.toStop();
_local6.startMoveTo(_local6._x, _local2 * _local3.cellH);
if (_local3.isBonusPlace(_local6._x, _local2 * _local3.cellH)) {
_local6.setBonus();
_local3.snd_bomb_creation = true;
}
_local3.moveIdols.push(_local6);
_local2 = _local2 - 1;
}
}
_local4 = _local4 - 1;
}
_local3.moving = true;
}
function hasCoin() {
var _local4 = this;
var _local2;
var _local3;
var _local5;
var _local7 = false;
var _local6;
_local2 = 0;
while (_local2 < _local4.cols) {
_local4.deleteIdols[_local2] = 0;
_local2 = _local2 + 1;
}
delete _local4.scores_array;
_local4.scores_array = new Array();
delete _local4.bonusIdols;
_local4.bonusIdols = new Array();
_local3 = 0;
while (_local3 < _local4.rows) {
_local2 = 0;
while (_local2 < (_local4.cols - 2)) {
_local6 = _local4.getRCount(_local4.cells[_local2][_local3].idol.type, _local2, _local3);
if (_local6 > 1) {
_local4.scores_array.push({n:_local6 + 1, col:_local2, row:_local3});
_local5 = _local2 + _local6;
while (_local5 >= _local2) {
_local4.removeIdol(_local5, _local3);
_local7 = true;
_local5--;
}
_local2 = _local2 + (_local6 + 1);
} else {
_local2 = _local2 + 1;
}
}
_local3 = _local3 + 1;
}
_local2 = 0;
while (_local2 < _local4.cols) {
_local3 = 0;
while (_local3 < (_local4.rows - 2)) {
_local6 = _local4.getDCount(_local4.cells[_local2][_local3].idol.type, _local2, _local3);
if (_local6 > 1) {
_local4.scores_array.push({n:_local6 + 1, col:_local2, row:_local3});
_local5 = _local3 + _local6;
while (_local5 >= _local3) {
_local4.removeIdol(_local2, _local5);
_local7 = true;
_local5--;
}
_local3 = _local3 + (_local6 + 1);
} else {
_local3 = _local3 + 1;
}
}
_local2 = _local2 + 1;
}
if (_local7) {
_local4.addScoresForDeleted();
}
return(_local7);
}
function isBonusPlace(x, y) {
var _local3 = this;
var _local2;
var _local4 = _local3.bonusIdols.length;
var _local6 = Math.round(x / _local3.cellW);
var _local5 = Math.round(y / _local3.cellH);
_local2 = 0;
while (_local2 < _local4) {
if (((!_local3.bonusIdols[_local2].use) && (_local6 == _local3.bonusIdols[_local2].col)) && (_local5 == _local3.bonusIdols[_local2].row)) {
_local3.bonusIdols[_local2].use = true;
return(true);
}
_local2 = _local2 + 1;
}
return(false);
}
function addScoresForDeleted() {
var _local3 = this;
var _local7 = _local3.scores_array.length;
var _local2;
_local2 = 0;
while (_local2 < _local7) {
_local3.scores = _local3.scores + (_local3.scores_array[_local2].n * ((_local3.scores_array[_local2].n * 2) - 3));
if (_local3.scores_array[_local2].n > 3) {
_local3.bonusIdols.push({col:_local3.scores_array[_local2].col, row:_local3.scores_array[_local2].row, use:false});
}
_local2 = _local2 + 1;
}
}
function tryDestroy(col, row) {
var _local4 = this;
var _local3 = row;
var _local8 = _local4.cells[col][_local3].idol.type;
var _local7;
var _local6;
var _local2;
var _local9 = false;
_local7 = _local4.getLCount(_local8, col, _local3);
_local6 = _local4.getRCount(_local8, col, _local3);
if ((_local7 + _local6) > 1) {
_local9 = true;
_local4.scores_array.push({n:(_local7 + _local6) + 1, col:col, row:_local3});
_local2 = col - _local7;
while (_local2 < col) {
_local4.removeIdol(_local2, _local3);
_local2 = _local2 + 1;
}
_local2 = col + _local6;
while (_local2 > col) {
_local4.removeIdol(_local2, _local3);
_local2 = _local2 - 1;
}
}
_local7 = _local4.getUCount(_local8, col, _local3);
_local6 = _local4.getDCount(_local8, col, _local3);
if ((_local7 + _local6) > 1) {
_local9 = true;
_local4.scores_array.push({n:(_local7 + _local6) + 1, col:col, row:_local3});
_local2 = _local3 - _local7;
while (_local2 < _local3) {
_local4.removeIdol(col, _local2);
_local2 = _local2 + 1;
}
_local2 = _local3 + _local6;
while (_local2 > _local3) {
_local4.removeIdol(col, _local2);
_local2 = _local2 - 1;
}
}
if (_local9) {
_local4.removeIdol(col, _local3);
}
}
function removeIdol(col, row) {
var _local3 = this;
var _local4 = col;
var _local2;
if (_local3.cells[_local4][row].idol.removeFlag == true) {
trace("ola-la! :(");
} else {
_local2 = row - 1;
while (_local2 >= 0) {
if (!_local3.cells[_local4][_local2].idol.removeFlag) {
_local3.cells[_local4][_local2].idol.cellCount = _local3.cells[_local4][_local2].idol.cellCount + 1;
}
_local2 = _local2 - 1;
}
if (_local3.cells[_local4][row].idol.bonus) {
_local3.scores = _local3.scores + 100;
_local3.bonuses.push({x:(_local4 * _local3.cellW) + (_local3.cellW / 2), y:(row * _local3.cellH) + (_local3.cellH / 2)});
}
_local3.cells[_local4][row].idol.toRemove();
_local3.freeIdols.push(_local3.cells[_local4][row].idol);
_local3.deleteIdols[_local4] = _local3.deleteIdols[_local4] + 1;
_local3.cells[_local4][row].idol.removeFlag = true;
if (_local3.cells[_local4][row].cell.decLife()) {
_local3.cellsLifeCount = _local3.cellsLifeCount - 1;
}
}
}
function canPut1to2(col1, row1, col2, row2) {
var _local2 = col2;
var _local3 = row2;
var _local4 = cells[col1][row1].idol.type;
if (col1 > _local2) {
if ((getLCount(_local4, _local2, _local3) > 1) || ((getUCount(_local4, _local2, _local3) + getDCount(_local4, _local2, _local3)) > 1)) {
return(true);
}
} else if (col1 < _local2) {
if ((getRCount(_local4, _local2, _local3) > 1) || ((getUCount(_local4, _local2, _local3) + getDCount(_local4, _local2, _local3)) > 1)) {
return(true);
}
} else if (row1 > _local3) {
if ((getUCount(_local4, _local2, _local3) > 1) || ((getLCount(_local4, _local2, _local3) + getRCount(_local4, _local2, _local3)) > 1)) {
return(true);
}
} else if (row1 < _local3) {
if ((getDCount(_local4, _local2, _local3) > 1) || ((getLCount(_local4, _local2, _local3) + getRCount(_local4, _local2, _local3)) > 1)) {
return(true);
}
}
return(false);
}
function addHint(col1, row1, col2, row2) {
var _local7 = (row1 * cols) + col1;
var _local6 = (row2 * cols) + col2;
var _local8 = Math.min(_local7, _local6);
var _local4 = Math.max(_local7, _local6);
var _local2;
var _local3 = hints[_local8];
var _local5 = _local3.length;
_local2 = 0;
while (true) {
if (_local2 >= _local5) {
_local3.push(_local4);
hintCount = hintCount + 1;
break;
}
if (_local3[_local2] == _local4) {
break;
}
_local2 = _local2 + 1;
}
}
function clearHints() {
var _local3 = this;
var _local4 = _local3.rows * _local3.cols;
var _local2;
_local2 = 0;
while (_local2 < _local4) {
delete _local3.hints[_local2];
_local3.hints[_local2] = new Array();
_local2 = _local2 + 1;
}
}
function clearMoveArray() {
delete moveIdols;
moveIdols = new Array();
}
function getLCount(type, col, row) {
var _local2 = col;
var _local4 = row;
var _local3 = 0;
_local2 = _local2 - 1;
while ((_local2 >= 0) && (cells[_local2][_local4].idol.type == type)) {
_local3 = _local3 + 1;
_local2 = _local2 - 1;
}
return(_local3);
}
function getRCount(type, col, row) {
var _local2 = col;
var _local3 = this;
var _local4 = row;
var _local5 = 0;
_local2 = _local2 + 1;
while (((_local2 < _local3.cols) && (_local3.cells[_local2][_local4].idol != null)) && (_local3.cells[_local2][_local4].idol.type == type)) {
_local5++;
_local2 = _local2 + 1;
}
return(_local5);
}
function getUCount(type, col, row) {
var _local2 = row;
var _local4 = this;
var _local3 = 0;
_local2 = _local2 - 1;
while ((_local2 >= 0) && (_local4.cells[col][_local2].idol.type == type)) {
_local3 = _local3 + 1;
_local2 = _local2 - 1;
}
return(_local3);
}
function getDCount(type, col, row) {
var _local2 = row;
var _local4 = this;
var _local3 = 0;
_local2 = _local2 + 1;
while ((_local2 < _local4.rows) && (_local4.cells[col][_local2].idol.type == type)) {
_local3 = _local3 + 1;
_local2 = _local2 + 1;
}
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.CIndicator] Frame 0
class CIndicator extends MovieClip
{
var curTime;
function CIndicator () {
super();
}
function init(maxTime_) {
var _local2 = this;
_local2.curTime = (_local2.maxTime = maxTime_);
_local2.r = _local2.mc_right._x - _local2.mc_left._x;
_local2.setBar();
_local2.kvaFlag = false;
}
function process(dTime) {
var _local2 = this;
var _local3 = Math.ceil(_local2.curTime / 1000);
var _local4;
_local2.curTime = _local2.curTime - dTime;
if ((_local3 <= 30) && ((_local3 % 2) == 0)) {
_local4 = Math.ceil(_local2.curTime / 1000);
if (_local4 != _local3) {
_local2.kvaFlag = true;
}
}
_local2.setBar();
}
function addtime(time) {
var _local2 = this;
_local2.curTime = _local2.curTime + time;
if (_local2.curTime > _local2.maxTime) {
_local2.curTime = _local2.maxTime;
}
_local2.setBar();
}
function isOut() {
return(curTime <= 0);
}
function setBar() {
var _local2 = this;
var _local3 = _local2.curTime / _local2.maxTime;
if (_local3 <= 0) {
_local3 = 0;
}
_local2.mc_bar._x = _local2.mc_left._x + (_local2.r * _local3);
}
}
Symbol 83 Button
on (release) {
gameStart();
}
Symbol 88 Button
on (release) {
how_to_play_pressed();
}
Symbol 93 Button
on (release) {
more_pressed();
}
Symbol 95 MovieClip Frame 1
stop();
Symbol 97 Button
on (press) {
this._parent.soundOff();
this.gotoAndStop(2);
}
Symbol 99 Button
on (press) {
this._parent.soundOn();
this.gotoAndStop(1);
}
Symbol 100 MovieClip Frame 1
this.stop();
Symbol 119 Button
on (release) {
ok_pressed();
}
Symbol 125 MovieClip Frame 30
this.stop();
Symbol 132 Button
on (release) {
menuPressed();
}
Symbol 137 MovieClip Frame 21
this.gotoAndPlay(1);
Symbol 144 Button
on (release) {
this.hintPressed();
}
Symbol 145 Button
on (release) {
this.menuPressed();
}
Symbol 152 Button
on (release) {
this.pausePressed();
}
Symbol 159 Button
on (press) {
this._parent.more_pressed();
}
Symbol 164 MovieClip Frame 1
this.stop();