Frame 1
fscommand ("showmenu", "false");
_focusrect = false;
_global.paused = false;
_global.use_playtomic = false;
if (_global.use_playtomic) {
trace("PLAYTOMIC: Init");
Playtomic.Log.View(940152, "212a482ced2a49c1", _root._url);
}
_global.openSite = function (link_name, link_group) {
var _local1 = "http://www.gametop.com/stats/marble-crush.html";
trace((((("openSite (" + link_name) + ", ") + link_group) + "): url = ") + _local1);
getURL (_local1, "_blank");
};
_global.openSitePlaytomic = function (url_string, link_name, link_group) {
var _local1 = Playtomic.Link.Open(url_string, link_name, link_group);
if (!_local1) {
trace("can't open url " + url_string);
}
};
_global.gameName = "starbubbles";
_global.saveLevelsOpened = function () {
var _local2 = SharedObject.getLocal(_global.gameName, "/");
if ((_local2.data.numberOpened < _global.numberLevelsOpened) || (_local2.data.numberOpened == undefined)) {
_local2.data.numberOpened = _global.numberLevelsOpened;
_local2.flush();
}
};
_global.loadLevelsOpened = function () {
var _local2 = SharedObject.getLocal(_global.gameName, "/");
if ((_local2.data.numberOpened == undefined) || (_local2.data.numberOpened < 1)) {
_local2.data.numberOpened = 1;
_local2.flush();
}
return(_local2.data.numberOpened);
};
_root.loaderAnimDelta = 5;
_root.loaderAnimPause = 2500;
_root.parsingAnimDelta = 10;
Instance of Symbol 7 MovieClip in Frame 2
onClipEvent (load) {
_alpha = 0;
}
onClipEvent (enterFrame) {
t = _root.getBytesTotal();
l = _root.getBytesLoaded();
gotoAndStop(Math.floor((l / t) * 100));
tf.text = Math.floor((l / t) * 100) + "%";
if (t > 0) {
if ((l < t) && (_alpha < 100)) {
_alpha = (_alpha + 5);
}
if ((l == t) && (_alpha > 0)) {
_alpha = (_alpha - 5);
}
}
}
Frame 3
stop();
Instance of Symbol 11 MovieClip in Frame 3
onClipEvent (load) {
_alpha = 0;
state = 0;
_root.stop();
}
onClipEvent (enterFrame) {
l = _root.getBytesLoaded();
t = _root.getBytesTotal();
if (state == 0) {
_alpha = (_alpha + _root.loaderAnimDelta);
if (_alpha >= 100) {
_alpha = 100;
state = 1;
startPause = getTimer();
}
} else if ((((state == 1) && (t == l)) && (l > 10)) && ((getTimer() - startPause) > _root.loaderAnimPause)) {
this._alpha = this._alpha - _root.loaderAnimDelta;
if (_alpha < 0) {
_root.gotoAndStop("init");
}
}
}
Frame 6
function pause(paused) {
if (paused) {
mc_msg.gotoAndStop("stPause");
_global.paused = true;
} else {
mc_msg.gotoAndStop("stEmpty");
_global.paused = false;
}
}
function soundOff() {
mc_sloop.gotoAndStop("stop");
stopSoundFlag = true;
}
function soundOn() {
mc_sloop.gotoAndStop("start");
stopSoundFlag = false;
}
function new_game_pressed() {
this.gotoAndStop("menu");
}
function how_to_play_pressed() {
this.gotoAndStop("rules");
}
function more_pressed() {
openSite();
}
function back_pressed() {
this.gotoAndStop("main");
}
function arcade_mode_pressed() {
arcadeGame = true;
this.gotoAndStop("level_select");
}
function classic_mode_pressed() {
arcadeGame = false;
this.gotoAndStop("level_select");
}
function inMenuFirst() {
mc_sloop.gotoAndStop("start");
}
function gameStart() {
level = 0;
scores = 0;
nextLevel();
}
function gameStartFrom(lvl) {
level = lvl;
scores = 0;
nextLevel();
}
function nextLevel() {
level++;
this.gotoAndStop("reset");
this.gotoAndStop("game");
}
function newGame() {
this.gotoAndStop("main");
}
function playSnd(lib_snd) {
s = new Sound(this);
s.attachSound(lib_snd);
s.start();
}
function initLevel() {
txtLevel = level;
txtScores = scores;
lastTimer = getTimer();
if (arcadeGame) {
mc_grid.init(levARowCount[level - 1], levColorCount[level - 1], levBonusCount[level - 1], mc_fall, mc_pusher, mc_trace);
mc_ind.init(levAScores[level - 1]);
levelSpeed = 1.6 + (0.05 * (level - 1));
} else {
mc_grid.init(levCRowCount[level - 1], levColorCount[level - 1], levBonusCount[level - 1], mc_fall, mc_pusher, mc_trace);
mc_ind.init(1);
increaseK = levIncreaseK[level - 1];
}
prevBonusNum = -1;
shotBonusCount = _root.myRandom(maxShotBonusNum) + 1;
generateNextBall();
generateNextBall();
mc_move_ball.mc_grid = mc_grid;
var _local3;
var _local2;
_local3 = 0;
while (_local3 < sightBallCount) {
_local2 = mc_trace.attachMovie("lib_trace", "" + _local3, _local3);
_local2._xscale = (_local2._yscale = 85);
_local2._alpha = 75;
_local2._visible = false;
_local3++;
}
_local2 = mc_trace.attachMovie("lib_trace2", "" + sightBallCount, sightBallCount);
_local2._xscale = (_local2._yscale = 115);
_local2._alpha = 75;
_local2._visible = false;
drawSight();
redrawSight = true;
winFlag = false;
overFlag = false;
if (timeCounter == null) {
timeCounter = new CTimeCounter();
back1 = new CBackground();
back2 = new CBackground();
back3 = new CBackground();
}
back1.init(mc_water.mc1, 10);
back2.init(mc_water.mc2, 40);
back3.init(mc_water.mc3, 20);
mc_msg.gotoAndStop("stEmpty");
resetSounds();
gameState = 0;
}
function processGame() {
var _local14;
var _local6;
var _local2;
var _local5;
_local14 = getTimer();
_local6 = _local14 - lastTimer;
txtFps = 1 / (_local6 / 1000);
lastTimer = _local14;
back1.process(_local6);
back2.process(_local6);
back3.process(_local6);
if (_global.paused) {
return(undefined);
}
mc_pinguin.process(_local6);
mc_yeti.process(_local6);
mc_gun.processKeys(_local6);
if (gameState == 1) {
if (mc_msg.a1._visible == false) {
_local5 = levColorCount[level];
_local2 = 1;
while (_local2 <= _local5) {
mc_msg["a" + _local2].setColor(_local2);
mc_msg["a" + _local2]._visible = true;
_local2++;
}
_local5 = levBonusCount[level];
_local2 = 1;
while (_local2 <= _local5) {
mc_msg["b" + _local2].setColor(_local2);
mc_msg["b" + _local2].setBonus(_local2, 2);
mc_msg["b" + _local2]._visible = true;
_local2++;
}
}
}
if (gameState != 0) {
return(undefined);
}
processFallBalls(_local6);
if (mc_grid.fillBallsCount > 0) {
var _local12 = scrBall * mc_grid.fillBallsCount;
if (mc_grid.doubleScores > 0) {
sndScoreX2orX4 = true;
_local12 = _local12 * (2 * mc_grid.doubleScores);
}
scores = scores + _local12;
txtScores = scores;
if (mc_grid.bonusJumpUp > 0) {
_local2 = 0;
while (_local2 < mc_grid.bonusJumpUp) {
if (arcadeGame) {
mc_grid.jumpUpWithoutPusher();
} else {
mc_grid.jumpUp();
}
_local2++;
}
}
if (arcadeGame) {
mc_ind.addValue(mc_grid.fillBallsCount);
if (mc_ind.isFull()) {
mc_grid.fallAllBalls();
win();
}
}
correctAllColors();
}
if ((mc_grid.fallBallsCount + mc_grid.fillBallsCount) > 4) {
mc_yeti.toCool();
}
mc_grid.fillBallsCount = 0;
mc_grid.fallBallsCount = 0;
mc_grid.doubleScores = 0;
mc_grid.bonusJumpUp = 0;
if (overFlag) {
if (!timeCounter.process(_local6)) {
mc_msg.btn._visible = false;
var _local7 = false;
var _local11;
for (_local11 in mc_fall) {
_local7 = true;
break;
}
if (!_local7) {
gameState = 2;
if (_global.use_playtomic) {
trace(("Failed level " + level) + "; Playtomic stat was updated!");
Playtomic.Log.LevelCounterMetric("Fail", level);
Playtomic.Log.ForceSend();
}
}
}
}
if (winFlag) {
if (!timeCounter.process(_local6)) {
var _local7 = false;
for (var _local11 in mc_fall) {
_local7 = true;
break;
}
if (!_local7) {
mc_gun.disable();
mc_pusher._visible = false;
if (level < 10) {
playSnd("endlevel");
mc_msg.gotoAndStop("stWin");
mc_msg.txtLevel = level + 1;
_local2 = 1;
while (_local2 <= 8) {
mc_msg["a" + _local2]._visible = false;
_local2++;
}
_local2 = 1;
while (_local2 <= 8) {
mc_msg["b" + _local2]._visible = false;
_local2++;
}
gameState = 1;
} else {
mc_msg.gotoAndStop("stCompleted");
gameState = 3;
}
}
}
return(undefined);
}
if (mc_move_ball._visible == false) {
mc_gun.processTime(_local6);
}
if (mc_gun.autoShot()) {
myMouseDown();
}
mc_grid.process(_local6);
var _local13 = (shotSpeed * _local6) / 1000;
_local5 = Math.ceil(_local13 / (CGrid.BALL_RAD / 2));
var _local9 = _local13 / _local5;
var _local15;
var _local10;
var _local8 = ((levelSpeed * _local6) / 1000) / _local5;
_local2 = 0;
while (_local2 < _local5) {
if (arcadeGame) {
if (!mc_grid.bonusFreeze) {
mc_grid.moveDown(_local8);
}
}
if (mc_move_ball._visible) {
mc_move_ball.doStep(_local9);
_local10 = mc_grid.checkForEnd(mc_move_ball);
if (_local10 != null) {
if (mc_grid.fillBallsCount > 0) {
sndBubbleCollisionR = true;
} else {
sndBubbleCollision = true;
}
mc_move_ball.hide();
if (!arcadeGame) {
if (!mc_grid.bonusFreeze) {
mc_ind.addValue(increaseK);
if (mc_ind.isFull()) {
mc_grid.jumpDown();
mc_ind.reset();
}
}
var _local4 = true;
var _local3;
_local3 = 0;
while (_local3 < mc_grid.maxColorNum) {
if (mc_grid.colorCountArr[_local3] > 0) {
_local4 = false;
break;
}
_local3++;
}
if (_local4) {
win();
}
}
}
}
_local2++;
}
if (overFlag) {
return(undefined);
}
if (arcadeGame && (!winFlag)) {
mc_grid.checkAddRow();
}
if (redrawSight) {
drawSight();
}
redrawSight = true;
if (mc_grid.getDownY() >= 450) {
overFlag = true;
mc_gun.disable();
mc_trace._visible = false;
mc_msg.gotoAndStop("stOver");
mc_msg.btn._visible = false;
mc_gun.resetNumber();
mc_grid.fallAllBalls();
}
playSounds();
}
function myMouseMove() {
mc_gun.myMouseMove();
mc_gun.process(this._xmouse, this._ymouse);
drawSight();
redrawSight = false;
}
function myMouseDown() {
if (((winFlag || (overFlag)) || (gameState != 0)) || (_global.paused)) {
return(undefined);
}
if (((mc_move_ball._visible == false) && (this._xmouse > 25)) && (this._xmouse < 550)) {
startBall();
sndGunFire = true;
}
}
function myKeyDown() {
if (Key.isDown(32)) {
if (gameState == 1) {
nextLevel();
} else if (gameState == 2) {
newGame();
} else {
myMouseDown();
}
}
}
function win() {
winFlag = true;
timeCounter.setTime(relaxTime);
mc_gun.resetNumber();
mc_trace._visible = false;
if (_global.use_playtomic) {
trace(("Win level " + level) + "; Playtomic stat was updated!");
Playtomic.Log.LevelCounterMetric("Completed", level);
Playtomic.Log.ForceSend();
}
_global.numberLevelsOpened = level + 1;
_global.saveLevelsOpened();
}
function processFallBalls(dTime) {
var _local1;
var _local2;
for (_local2 in mc_fall) {
_local1 = mc_fall[_local2];
_local1.process(dTime);
if (_local1._y > 400) {
_local1.removeMovieClip();
}
}
}
function generateNextBall() {
var _local4;
var _local2 = 0;
var _local3 = 0;
mc_gun.setColor(mc_next.colorNum);
mc_gun.setBonus(mc_next.bonusNum, mc_next.bonusColorNum);
_local4 = _root.myRandom(mc_grid.maxColorNum) + 1;
_local4 = correctColor(_local4);
if (mc_grid.maxBonusNum > 0) {
shotBonusCount--;
if (shotBonusCount <= 0) {
_local2 = _root.myRandom(mc_grid.maxBonusNum) + 1;
if ((_local2 == prevBonusNum) && (_local2 != CBall.BONUS_COLOR)) {
if (Math.random() > 0.5) {
_local2++;
if (_local2 > mc_grid.maxBonusNum) {
_local2 = 1;
}
} else {
_local2--;
if (_local2 < 1) {
_local2 = mc_grid.maxBonusNum;
}
}
}
if (_local2 == CBall.BONUS_COLOR) {
_local3 = _root.myRandom(mc_grid.maxColorNum) + 1;
if (_local4 == _local3) {
if (Math.random() > 0.5) {
_local3++;
if (_local3 > mc_grid.maxColorNum) {
_local3 = 1;
}
} else {
_local3--;
if (_local3 < 1) {
_local3 = mc_grid.maxColorNum;
}
}
}
}
prevBonusNum = _local2;
shotBonusCount = _root.myRandom(maxShotBonusNum) + 1;
}
}
mc_next.setColor(_local4);
mc_next.setBonus(_local2, _local3);
}
function correctAllColors() {
var _local1;
mc_gun.setColor(correctColor(mc_gun.colorNum));
mc_next.setColor(correctColor(mc_next.colorNum));
}
function correctColor(c) {
if (arcadeGame == false) {
var _local3;
var _local4 = _root.myRandom(2);
_local3 = 0;
while (_local3 < mc_grid.maxColorNum) {
if (mc_grid.colorCountArr[c - 1] > 0) {
break;
}
if (_local4 == 1) {
c++;
if (c > mc_grid.maxColorNum) {
c = 1;
}
} else {
c--;
if (c < 1) {
c = mc_grid.maxColorNum;
}
}
_local3++;
}
}
return(c);
}
function startBall() {
if (_global.paused) {
return(undefined);
}
var _local2 = (mc_gun._rotation / 180) * Math.PI;
mc_move_ball.startMove(mc_gun._x, mc_gun._y, Math.sin(_local2), -Math.cos(_local2));
mc_move_ball.setColor(mc_gun.colorNum);
mc_move_ball.setBonus(mc_gun.bonusNum, mc_gun.bonusColorNum);
generateNextBall();
mc_gun.doShot();
}
function drawSight() {
var _local15 = (mc_gun._rotation / 180) * Math.PI;
mc_grid.getFirstBall(mc_gun._x, mc_gun._y, Math.sin(_local15), -Math.cos(_local15));
mc_trace._x = mc_grid._x;
mc_trace._y = mc_grid._y;
var _local1;
var _local14 = mc_grid.points.length - 1;
var _local7;
var _local6;
var _local9;
var _local12;
var _local11;
var _local5 = 28;
var _local2;
var _local10;
var _local13 = 0;
var _local3 = _local5;
var _local4;
var _local8 = 0;
_local1 = 1;
while (_local1 < _local14) {
_local12 = mc_grid.points[_local1 - 1].x;
_local7 = mc_grid.points[_local1].x - _local12;
_local11 = mc_grid.points[_local1 - 1].y;
_local6 = mc_grid.points[_local1].y - _local11;
_local9 = Math.sqrt((_local7 * _local7) + (_local6 * _local6));
_local7 = _local7 / _local9;
_local6 = _local6 / _local9;
_local10 = Math.floor((_local9 - _local3) / _local5);
_local2 = 0;
while (_local2 <= _local10) {
_local4 = mc_trace["" + _local8];
_local4._visible = true;
_local8++;
_local13++;
_local4._x = _local12 + (_local7 * (_local3 + (_local5 * _local2)));
_local4._y = _local11 + (_local6 * (_local3 + (_local5 * _local2)));
_local2++;
}
_local3 = (_local9 - (_local10 * _local5)) - _local3;
_local3 = _local5 - _local3;
_local1++;
}
_local1 = _local8;
while (_local1 < sightBallCount) {
mc_trace["" + _local1]._visible = false;
_local1++;
}
_local4 = mc_trace["" + sightBallCount];
_local4._visible = true;
_local4._x = mc_grid.points[_local14].x;
_local4._y = mc_grid.points[_local14].y;
}
function playSounds() {
if (sndBubbleLevelUp) {
playSnd("snd_BubbleLevelUp");
resetSounds();
} else if (snd8bonus) {
playSnd("snd_8bonus");
resetSounds();
} else if (sndExplosionTNT) {
playSnd("snd_ExplosionTNT");
resetSounds();
} else if (sndFreeze) {
playSnd("snd_Freeze");
resetSounds();
} else if (sndScoreX2orX4) {
playSnd("snd_ScoreX2orX4");
resetSounds();
} else if (sndAutoFire) {
playSnd("snd_AutoFire");
resetSounds();
} else if (sndBubbleCollision) {
playSnd("snd_BubbleCollision");
resetSounds();
} else if (sndBubbleCollisionR) {
playSnd("snd_BubbleCollisionR");
resetSounds();
} else if (sndPingvin) {
playSnd("snd_Pingvin");
resetSounds();
} else if (sndGunFire) {
playSnd("snd_GunFire");
resetSounds();
}
}
function resetSounds() {
snd8bonus = (sndAutoFire = (sndBubbleCollision = (sndBubbleCollisionR = (sndBubbleLevelUp = (sndExplosionTNT = (sndFreeze = (sndGunFire = (sndPingvin = (sndScoreX2orX4 = false)))))))));
}
var author = "Galimov Ruslan rigal@mail.ru";
var copyright = "www.sunnygames.com";
fscommand ("showmenu", "false");
fscommand ("trapallkeys", "true");
var lastTimer;
var level;
var stopSoundFlag = false;
_root.myRandom = function (n) {
return(Math.floor((n - 1E-6) * Math.random()));
};
var scores;
var scrBall = 3;
var gameState;
var shotSpeed = 600;
var levCRowCount = [7, 7, 7, 7, 8, 8, 8, 9, 9, 9];
var levARowCount = [6, 6, 7, 6, 7, 7, 6, 7, 7, 7];
var levAScores = [70, 80, 90, 100, 110, 120, 130, 140, 150, 160];
var levIncreaseK = [0.1001, 0.12001, 0.125001, 0.143001, 0.143001, 0.143001, 0.143001, 0.143001, 0.143001, 0.143001];
var levColorCount = [4, 4, 4, 5, 5, 5, 6, 7, 7, 8];
var levBonusCount = [0, 1, 2, 3, 4, 5, 6, 7, 8, 8];
var arcadeGame = false;
var increaseK;
var levelSpeed;
var prevBonusNum;
var shotBonusCount;
var maxShotBonusNum = 10;
var redrawSight = true;
var sightBallCount = 70;
var timeCounter = null;
var winFlag;
var overFlag;
var relaxTime = 1500;
var back1;
var back2;
var back3;
var snd8bonus;
var sndAutoFire;
var sndBubbleCollision;
var sndBubbleCollisionR;
var sndBubbleLevelUp;
var sndExplosionTNT;
var sndFreeze;
var sndGunFire;
var sndPingvin;
var sndScoreX2orX4;
nextFrame();
inMenuFirst();
Frame 7
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;
var pv;
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);
}
pv = ((fv == 5) ? (getVersion()) : (System.capabilities.version));
u = (((((((((((("http://" + mbc) + "/my/core.swf?mv=8&fv=") + fv) + "&v=") + escape(pv)) + "&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);
}
__com_mochibot__("065d8832", this, 10301, true);
trace("Mochibot");
stop();
Instance of Symbol 107 MovieClip "mc_sloop" in Frame 7
onClipEvent (load) {
var soundControl = new Sound(this);
}
Instance of Symbol 113 MovieClip "btn_sound" in Frame 7
onClipEvent (load) {
if (this._parent.stopSoundFlag) {
this.gotoAndStop(2);
}
}
Frame 11
this.stop();
Instance of Symbol 140 MovieClip "mc_control" in Frame 11
onClipEvent (load) {
this._parent.initLevel();
}
onClipEvent (enterFrame) {
this._parent.processGame();
}
onClipEvent (mouseMove) {
this._parent.myMouseMove();
updateAfterEvent();
}
onClipEvent (mouseDown) {
with (this._parent) {
if ((_xmouse < (btn_sound._x + (btn_sound._width / 2))) && (_ymouse > (btn_sound._y - (btn_sound._height / 2)))) {
return(undefined);
}
}
this._parent.myMouseDown();
updateAfterEvent();
}
onClipEvent (keyDown) {
this._parent.myKeyDown();
updateAfterEvent();
}
Instance of Symbol 280 MovieClip in Frame 13
onClipEvent (load) {
trace("init select level screen");
_global.numberLevelsOpened = _global.loadLevelsOpened();
var opened = _global.numberLevelsOpened;
trace(opened + " levels opened");
var i = 1;
while (i <= 10) {
var clip = this["lvl" + i];
clip._visible = false;
if (i <= opened) {
clip._visible = true;
}
i++;
}
}
Symbol 44 MovieClip Frame 1
this.stop();
Symbol 48 MovieClip Frame 1
this.stop();
Symbol 60 MovieClip [lib_ball] Frame 1
#initclip 13
Object.registerClass("lib_ball", CBall);
#endinitclip
Symbol 60 MovieClip [lib_ball] Frame 13
this.removeMovieClip();
Symbol 60 MovieClip [lib_ball] Frame 32
this.removeMovieClip();
Symbol 66 MovieClip [lib_fall] Frame 1
#initclip 12
Object.registerClass("lib_fall", CFallMovie);
#endinitclip
Symbol 79 MovieClip Frame 1
this.stop();
Symbol 281 MovieClip [__Packages.Playtomic.LogRequest] Frame 0
class Playtomic.LogRequest
{
var Pieces;
function LogRequest () {
}
function Queue(data) {
Pieces++;
Data = Data + (((Data == "") ? "" : "~") + data);
if ((Pieces == 8) || (Data.length > 300)) {
Pieces = 0;
Ready = true;
}
}
function Send() {
var _local3 = function (success) {
if ((this.Data.indexOf("v/") == 0) || (this.Data.indexOf("~v/") > -1)) {
Playtomic.Log.IncreaseViews();
}
if ((this.Data.indexOf("p/") == 0) || (this.Data.indexOf("~p/") > -1)) {
Playtomic.Log.IncreasePlays();
}
};
var _local2 = new LoadVars();
_local2.sendAndLoad(((((((((("http://g" + Playtomic.Log.GUID) + ".api.playtomic.com/Tracker/q.aspx?swfid=") + Playtomic.Log.SWFID) + "&q=") + Data) + "&url=") + Playtomic.Log.SourceUrl) + "&") + Math.random()) + "z", _local3, "POST");
}
var Data = "";
var Ready = false;
}
Symbol 282 MovieClip [__Packages.Playtomic.Log] Frame 0
class Playtomic.Log
{
static var SourceUrl, Cookie;
function Log () {
}
static function View(swfid, guid, defaulturl) {
if (swfid == undefined) {
swfid = 0;
}
if (guid == undefined) {
guid = "";
}
if (defaulturl == undefined) {
defaulturl = "";
}
if (SWFID > 0) {
return(undefined);
}
SWFID = swfid;
GUID = guid;
Enabled = true;
if ((SWFID == 0) || (GUID == "")) {
Enabled = false;
return(undefined);
}
if (((defaulturl.indexOf("http://") != 0) && (System.security.sandboxType != "localWithNetwork")) && (System.security.sandboxType != "localTrusted")) {
Enabled = false;
return(undefined);
}
SourceUrl = GetUrl(defaulturl);
if (((SourceUrl == null) || (SourceUrl == "")) || (SourceUrl.indexOf("https://") == 0)) {
Enabled = false;
return(undefined);
}
Cookie = SharedObject.getLocal("playtomic");
var _local5 = GetCookie("views");
Send("v/" + (_local5 + 1), true);
_global.setTimeout(PingServer, 60000);
}
static function ForceSend() {
Request.Send();
Request = new Playtomic.LogRequest();
}
static function IncreaseViews() {
var _local1 = GetCookie("views");
_local1++;
SaveCookie("views", _local1);
}
static function IncreasePlays() {
Plays++;
}
static function Play() {
if (!Enabled) {
return(undefined);
}
LevelCounters = new Array();
LevelAverages = new Array();
LevelRangeds = new Array();
Send("p/" + (Plays + 1), true);
}
static function CustomMetric(name, group, unique) {
if (!Enabled) {
return(undefined);
}
if ((group == null) || (group == undefined)) {
group = "";
}
if ((unique == null) || (unique == undefined)) {
unique = false;
}
if (unique) {
if (Customs.indexOf(name) > -1) {
return(undefined);
}
Customs.push(name);
}
Send((("c/" + Clean(name)) + "/") + Clean(group));
}
static function Link(url, name, group, unique, total, fail) {
if (!Enabled) {
return(undefined);
}
Send((((((((((("l/" + Clean(name)) + "/") + Clean(group)) + "/") + Clean(url)) + "/") + unique) + "/") + total) + "/") + fail);
}
static function LevelCounterMetric(name, level, unique) {
if (!Enabled) {
return(undefined);
}
if (unique) {
if (LevelCounters.indexOf(name) > -1) {
return(undefined);
}
LevelCounters.push(name);
}
Send((("lc/" + Clean(name)) + "/") + Clean(level));
}
static function LevelRangedMetric(name, level, value, unique) {
if (!Enabled) {
return(undefined);
}
if (unique) {
if (LevelRangeds.indexOf(name) > -1) {
return(undefined);
}
LevelRangeds.push(name);
SaveCookie("lr_" + name, 1);
}
Send((((("lr/" + Clean(name)) + "/") + Clean(level)) + "/") + value);
}
static function LevelAverageMetric(name, level, value, unique) {
if (!Enabled) {
return(undefined);
}
if (unique) {
if (LevelAverages.indexOf(name) > -1) {
return(undefined);
}
LevelAverages.push(name);
}
Send((((("la/" + Clean(name)) + "/") + Clean(level)) + "/") + value);
}
static function PingServer() {
if (!Enabled) {
return(undefined);
}
Pings++;
Send((("t/" + (FirstPing ? "y" : "n")) + "/") + Pings, true);
if (FirstPing) {
FirstPing = false;
setInterval(PingServer, 60000);
}
}
static function Send(s, view) {
if (view == undefined) {
view = false;
}
Request.Queue(s);
if ((Request.Ready || (view)) || (!Queue)) {
Request.Send();
Request = new Playtomic.LogRequest();
}
}
static function GetCookie(n) {
if (Cookie.data[n] == undefined) {
return(0);
}
return(parseInt(Cookie.data[n]));
}
static function SaveCookie(n, v) {
var _local1 = SharedObject.getLocal("swfstats");
_local1.data[n] = v.toString();
_local1.flush();
}
static function Clean(s) {
while (s.indexOf("/") > -1) {
s = s.replace("/", "\\");
}
while (s.indexOf("~") > -1) {
s = s.replace("~", "-");
}
return(escape(s));
}
static function Replace(str, find, replace) {
return(str.split(find).join(replace));
}
static function GetUrl(defaulturl) {
return(defaulturl);
}
static var Enabled = false;
static var Queue = true;
static var SWFID = 0;
static var GUID = "";
static var Request = new Playtomic.LogRequest();
static var FirstPing = true;
static var Pings = 0;
static var Plays = 0;
static var HighestGoal = 0;
static var Customs = new Array();
static var LevelCounters = new Array();
static var LevelAverages = new Array();
static var LevelRangeds = new Array();
}
Symbol 283 MovieClip [__Packages.Playtomic.Link] Frame 0
class Playtomic.Link
{
function Link () {
}
static function Open(url, name, group) {
var _local9 = 0;
var _local5 = 0;
var _local3 = 0;
var _local4 = 0;
var _local8 = 0;
var _local11 = 0;
var _local6 = (url + ".") + name;
var _local7;
var _local1 = url;
_local1 = Replace(_local1, "http://", "");
if (_local1.indexOf("/") > -1) {
_local1 = _local1.substring(0, _local1.indexOf("/"));
}
if (_local1.indexOf("?") > -1) {
_local1 = _local1.substring(0, _local1.indexOf("?"));
}
_local1 = ("http://" + _local1) + "/";
var _local2 = _local1;
if (_local2.indexOf("//") > -1) {
_local2 = _local2.substring(_local2.indexOf("//") + 2);
}
_local2 = Replace(_local2, "www.", "");
if (_local2.indexOf("/") > -1) {
_local2 = _local2.substring(0, _local2.indexOf("/"));
}
try {
getURL (url, "_blank");
if (Clicks.indexOf(_local6) > -1) {
_local3 = 1;
} else {
_local3 = 1;
_local9 = 1;
Clicks.push(_local6);
}
if (Clicks.indexOf(_local2) > -1) {
_local4 = 1;
} else {
_local4 = 1;
_local5 = 1;
Clicks.push(_local2);
}
_local7 = true;
} catch(err) {
_local8 = 1;
_local11 = 1;
_local7 = false;
}
Playtomic.Log.Link(_local1, _local2.toLowerCase(), "DomainTotals", _local5, _local4, _local11);
Playtomic.Log.Link(url, name, group, _local9, _local3, _local8);
Playtomic.Log.ForceSend();
return(_local7);
}
static function Replace(str, find, replace) {
return(str.split(find).join(replace));
}
static var Clicks = new Array();
}
Symbol 284 MovieClip [__Packages.CFallMovie] Frame 0
class CFallMovie extends MovieClip
{
var time, state, _y;
function CFallMovie () {
super();
time = 0;
state = 0;
}
function process(dTime) {
if (state == 0) {
time = time + dTime;
var _local2 = -180 + ((acc * time) / 1000);
if (_local2 < maxSpeed) {
_y = _y + ((_local2 * dTime) / 1000);
} else {
_y = _y + ((maxSpeed * dTime) / 1000);
state = 1;
}
} else {
_y = _y + ((maxSpeed * dTime) / 1000);
}
}
var maxSpeed = 700;
var acc = 600;
}
Symbol 285 MovieClip [__Packages.CBall] Frame 0
class CBall extends MovieClip
{
var marked, bonusNum, stop, mc, colorNum, bonusColorNum;
function CBall () {
super();
marked = false;
bonusNum = 0;
stop();
mc.mc_freeze._visible = false;
}
function setColor(num) {
colorNum = num;
mc.gotoAndStop(colorNum);
}
function setBonus(bonusNum_, bonusColorNum_) {
bonusNum = bonusNum_;
bonusColorNum = bonusColorNum_;
mc.mc_bonus.gotoAndStop(1 + bonusNum);
if (bonusNum == BONUS_COLOR) {
mc.mc_bonus.mc.gotoAndStop(bonusColorNum);
}
}
function isMyColor(c) {
return((c == colorNum) || ((bonusNum == BONUS_COLOR) && (c == bonusColorNum)));
}
function freeze() {
mc.mc_freeze._visible = true;
}
function unFreeze() {
mc.mc_freeze._visible = false;
}
static var BONUS_COLOR = 1;
}
Symbol 286 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 287 MovieClip [__Packages.CBackground] Frame 0
class CBackground
{
var mc, speed, sX;
function CBackground () {
}
function init(mc_, speed_) {
mc = mc_;
speed = speed_;
sX = mc._x;
}
function process(dTime) {
var _local2 = (speed * dTime) / 1000;
mc._x = mc._x - _local2;
if (mc._x <= (sX - period)) {
mc._x = mc._x + period;
}
}
var period = 129;
}
Symbol 288 MovieClip [__Packages.CGrid] Frame 0
class CGrid extends MovieClip
{
var ball_array, mc_fall, fallDepth, mc_pusher, pusherDY, _y, mc_trace, traceTime, bonusFreeze, beginY, floatY, colorCountArr, attachMovie, fieldWidth, freezeTime, _x, fillBallsCount, fallBallsCount, doubleScores, bonusJumpUp;
function CGrid () {
super();
ball_array = new Array();
}
function init(rowCount, maxColorNum_, maxBonusNum_, mc_fall_, mc_pusher_, mc_trace_) {
maxColorNum = maxColorNum_;
maxBonusNum = maxBonusNum_;
mc_fall = mc_fall_;
fallDepth = 0;
mc_pusher = mc_pusher_;
pusherDY = _y - mc_pusher._y;
mc_trace = mc_trace_;
mc_trace._visible = false;
traceTime = 0;
bonusFreeze = false;
beginY = (floatY = _y);
colorCountArr = new Array(maxColorNum);
var _local4;
var _local5;
var _local6;
var _local3;
_local4 = 0;
while (_local4 < maxColorNum) {
colorCountArr[_local4] = 0;
_local4++;
}
ballDepth = 0;
_local4 = 0;
while (_local4 < rowCount) {
_local6 = new Array();
_local5 = 0;
while (_local5 < COLS) {
_local3 = attachMovie("lib_ball", "" + ballDepth, ballDepth);
ballDepth++;
_local3._x = ((_local4 % 2) * BALL_RAD) + (_local5 * BALL_DIAM);
_local3._y = _local4 * BALL_DY;
_local3.setColor(_root.myRandom(maxColorNum) + 1);
_local6.push(_local3);
colorCountArr[_local3.colorNum - 1]++;
_local5++;
}
ball_array.push(_local6);
_local4++;
}
addRowCount = 0;
fieldWidth = ((COLS - 1) * BALL_DIAM) + BALL_RAD;
calcNeighboursXY();
}
function process(dTime) {
if (mc_trace._visible) {
traceTime = traceTime - dTime;
if (traceTime <= 0) {
disableTrace();
}
}
if (bonusFreeze) {
freezeTime = freezeTime - dTime;
if (freezeTime <= 0) {
disableFreeze();
}
}
}
function enableTrace() {
if (mc_trace._visible) {
traceTime = traceTime + TRACE_TIME;
} else {
mc_trace._visible = true;
traceTime = TRACE_TIME;
}
}
function disableTrace() {
mc_trace._visible = false;
}
function enableFreeze() {
_root.sndFreeze = true;
if (bonusFreeze) {
freezeTime = freezeTime + FREEZE_TIME;
} else {
bonusFreeze = true;
freezeTime = FREEZE_TIME;
var _local3;
var _local5;
var _local6 = ball_array.length;
var _local4;
_local5 = 0;
while (_local5 < _local6) {
_local3 = 0;
while (_local3 < COLS) {
_local4 = ball_array[_local5][_local3];
if (_local4 != null) {
_local4.freeze();
}
_local3++;
}
_local5++;
}
}
}
function disableFreeze() {
bonusFreeze = false;
var _local2;
var _local4;
var _local5 = ball_array.length;
var _local3;
_local4 = 0;
while (_local4 < _local5) {
_local2 = 0;
while (_local2 < COLS) {
_local3 = ball_array[_local4][_local2];
if (_local3 != null) {
_local3.unFreeze();
}
_local2++;
}
_local4++;
}
}
function moveDown(step) {
if (_global.paused) {
return(undefined);
}
if (ball_array.length < 6) {
step = step * (7 - ball_array.length);
}
floatY = floatY + step;
_y = floatY;
}
function jumpDown() {
floatY = floatY + BALL_DY;
_y = floatY;
mc_pusher._y = floatY - pusherDY;
}
function jumpUp() {
if (Math.abs(_y - beginY) > 2) {
floatY = floatY - BALL_DY;
if (floatY < beginY) {
floatY = beginY;
}
_y = floatY;
mc_pusher._y = floatY - pusherDY;
}
_root.sndBubbleLevelUp = true;
}
function jumpUpWithoutPusher() {
floatY = floatY - BALL_DY;
_y = floatY;
_root.sndBubbleLevelUp = true;
}
function jumpToStartPos() {
_y = (floatY = beginY);
mc_pusher._y = floatY - pusherDY;
}
function checkAddRow() {
var _local2 = Math.floor((floatY - beginY) / BALL_DY) + 1;
if (_local2 > addRowCount) {
addRow();
}
}
function addRow() {
var _local5 = new Array();
var _local4;
var _local3;
addRowCount++;
_local4 = 0;
while (_local4 < COLS) {
_local3 = attachMovie("lib_ball", "" + ballDepth, ballDepth);
ballDepth++;
_local3._x = (Math.abs(addRowCount % 2) * BALL_RAD) + (_local4 * BALL_DIAM);
_local3._y = (-addRowCount) * BALL_DY;
_local3.setColor(_root.myRandom(maxColorNum) + 1);
_local5.push(_local3);
colorCountArr[_local3.colorNum - 1]++;
_local4++;
}
ball_array.splice(0, 0, _local5);
}
function getDownY() {
return((_y + ((((-addRowCount) + ball_array.length) - 1) * BALL_DY)) + BALL_RAD);
}
function calcNeighboursXY() {
var _local1;
var _local7;
var _local6;
var _local9;
var _local8;
var _local5;
var _local2;
var _local4;
var _local3;
_local7 = 2;
_local6 = 2;
_local9 = ((_local6 % 2) * BALL_RAD) + (_local7 * BALL_DIAM);
_local8 = _local6 * BALL_DY;
_local1 = 0;
while (_local1 < 6) {
_local5 = _local7 + neighbours[_local1][0];
_local2 = _local6 + neighbours[_local1][1];
_local4 = ((_local2 % 2) * BALL_RAD) + (_local5 * BALL_DIAM);
_local3 = _local2 * BALL_DY;
neighboursXY[_local1][0] = _local4 - _local9;
neighboursXY[_local1][1] = _local3 - _local8;
_local1++;
}
_local7 = 1;
_local6 = 1;
_local9 = ((_local6 % 2) * BALL_RAD) + (_local7 * BALL_DIAM);
_local8 = _local6 * BALL_DY;
_local1 = 0;
while (_local1 < 6) {
_local5 = _local7 + neighbours2[_local1][0];
_local2 = _local6 + neighbours2[_local1][1];
_local4 = ((_local2 % 2) * BALL_RAD) + (_local5 * BALL_DIAM);
_local3 = _local2 * BALL_DY;
neighboursXY2[_local1][0] = _local4 - _local9;
neighboursXY2[_local1][1] = _local3 - _local8;
_local1++;
}
}
function getFirstBall(x0, y0, dx, dy) {
var _local17 = ball_array.length;
var _local18 = (-addRowCount) * BALL_DY;
x0 = x0 - _x;
y0 = y0 - _y;
var _local11;
var _local10;
_local11 = x0 + (1000 * dx);
_local10 = y0 + (1000 * dy);
var _local4;
var _local3;
var _local6;
var _local9;
_local4 = y0 - _local10;
_local3 = _local11 - x0;
_local6 = (x0 * (_local10 - y0)) - (y0 * (_local11 - x0));
_local9 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
_local4 = _local4 / _local9;
_local3 = _local3 / _local9;
_local6 = _local6 / _local9;
while (points.pop() != undefined) {
}
points.push({x:x0, y:y0});
var _local8;
var _local13;
var _local7;
while (true) {
_local8 = getBoundsIntersection(dx, dy, _local4, _local3, _local6);
_local13 = getBallIntersection(_local8.x, _local8.y, x0, y0, _local4, _local3, _local6);
if (_local13 != null) {
_local7 = getFirstEmptyNeighbour(_local13.col, _local13.row, x0, y0, _local11, _local10, _local4, _local3, _local6);
if (_local4 > Math.abs(_local3)) {
points.push({x:(-((_local3 * _local7.y) + _local6)) / _local4, y:_local7.y});
} else {
points.push({x:_local7.x, y:(-((_local4 * _local7.x) + _local6)) / _local3});
}
points.push({x:_local7.x, y:_local7.y});
return(undefined);
}
x0 = _local8.x;
y0 = _local8.y;
dx = -dx;
_local11 = x0 + (1000 * dx);
_local10 = y0 + (1000 * dy);
_local4 = y0 - _local10;
_local3 = _local11 - x0;
_local6 = (x0 * (_local10 - y0)) - (y0 * (_local11 - x0));
_local9 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
_local4 = _local4 / _local9;
_local3 = _local3 / _local9;
_local6 = _local6 / _local9;
points.push({x:x0, y:y0});
if (y0 < (((-addRowCount) * BALL_DY) + 2)) {
points.push({x:x0, y:y0});
return(undefined);
}
}
}
function checkForEnd(mc_move_ball) {
fillBallsCount = 0;
fallBallsCount = 0;
doubleScores = 0;
bonusJumpUp = 0;
var _local9;
var _local8;
_local9 = (mc_move_ball.sX + (mc_move_ball.curR * mc_move_ball.vx)) - _x;
_local8 = (mc_move_ball.sY + (mc_move_ball.curR * mc_move_ball.vy)) - _y;
var _local18;
var _local17;
_local18 = Math.round((_local8 + (addRowCount * BALL_DY)) / BALL_DY);
_local17 = Math.round((_local9 - ((Math.abs(_local18 + addRowCount) % 2) * BALL_RAD)) / BALL_DIAM);
if (_local17 < 0) {
_local17 = 0;
} else if (_local17 >= COLS) {
_local17 = COLS - 1;
}
var _local3;
var _local4;
var _local20;
var _local19;
var _local16;
var _local15;
var _local12;
var _local13;
var _local14 = 500000 /* 0x07A120 */;
var _local6;
var _local5;
var _local7;
var _local2;
if (_local18 <= ball_array.length) {
_local20 = _local18 - 1;
_local19 = _local18 + 1;
_local16 = _local17 - 1;
_local15 = _local17 + 1;
if (_local20 < 0) {
_local20 = 0;
}
if (_local19 > (ball_array.length - 1)) {
_local19 = ball_array.length - 1;
}
_local3 = _local19;
while (_local3 >= _local20) {
_local4 = _local16;
while (_local4 <= _local15) {
_local2 = ball_array[_local3][_local4];
if (_local2 != null) {
_local6 = _local2._x - _local9;
_local5 = _local2._y - _local8;
_local7 = Math.sqrt((_local6 * _local6) + (_local5 * _local5));
if (_local7 <= BALL_DIAM_I) {
_local14 = _local7;
_local12 = _local4;
_local13 = _local3;
}
}
_local4++;
}
_local3--;
}
if (_local14 < 500000) {
var _local10;
var _local25 = _local9 - ((mc_move_ball.curR * mc_move_ball.vx) * 100);
var _local23 = _local8 - ((mc_move_ball.curR * mc_move_ball.vy) * 100);
var _local24;
var _local22;
var _local27;
var _local26;
_local24 = _local23 - _local8;
_local22 = _local9 - _local25;
_local27 = (_local25 * (_local8 - _local23)) - (_local23 * (_local9 - _local25));
_local26 = Math.sqrt((_local24 * _local24) + (_local22 * _local22));
_local24 = _local24 / _local26;
_local22 = _local22 / _local26;
_local27 = _local27 / _local26;
_local10 = getFirstEmptyNeighbour(_local12, _local13, _local25, _local23, _local9, _local8, _local24, _local22, _local27);
if (_local10.col == -1) {
_local10 = getFirstEmptyNeighbourForPoint(_local12, _local13, _local9, _local8);
}
if (_local10.row == ball_array.length) {
var _local21 = new Array(COLS);
_local3 = 0;
while (_local3 < COLS) {
_local21[_local3] = null;
_local3++;
}
ball_array.push(_local21);
}
_local2 = attachMovie("lib_ball", "" + ballDepth, ballDepth);
ballDepth++;
_local2._x = ((Math.abs(_local10.row + addRowCount) % 2) * BALL_RAD) + (_local10.col * BALL_DIAM);
_local2._y = (_local10.row * BALL_DY) - (addRowCount * BALL_DY);
_local2.setColor(mc_move_ball.colorNum);
_local2.setBonus(mc_move_ball.bonusNum, mc_move_ball.bonusColorNum);
if (bonusFreeze) {
_local2.freeze();
}
ball_array[_local10.row][_local10.col] = _local2;
colorCountArr[_local2.colorNum - 1]++;
checkBonus(_local10.col, _local10.row, _local2);
if (ball_array[_local10.row][_local10.col] != null) {
checkMovingOff(_local2, _local10.col, _local10.row);
}
return(_local2);
}
}
var _local28 = ((-addRowCount) * BALL_DY) + (BALL_DY / 2);
if (_local8 <= _local28) {
_local2 = attachMovie("lib_ball", "" + ballDepth, ballDepth);
ballDepth++;
_local2._x = ((Math.abs(_local18 + addRowCount) % 2) * BALL_RAD) + (_local17 * BALL_DIAM);
_local2._y = (_local18 * BALL_DY) - (addRowCount * BALL_DY);
_local2.setColor(mc_move_ball.colorNum);
_local2.setBonus(mc_move_ball.bonusNum, mc_move_ball.bonusColorNum);
if (bonusFreeze) {
_local2.freeze();
}
ball_array[_local18][_local17] = _local2;
colorCountArr[_local2.colorNum - 1]++;
checkBonus(_local17, _local18, _local2);
if (ball_array[_local18][_local17] != null) {
checkMovingOff(_local2, _local17, _local18);
}
return(_local2);
}
return(null);
}
function checkBonus(col, row, mc) {
if (mc.bonusNum > 0) {
switch (mc.bonusNum) {
case 7 :
bang(col, row, mc);
_root.sndExplosionTNT = true;
break;
case 8 :
colorize(col, row, mc);
_root.snd8bonus = true;
}
}
}
function bang(col, row, mc) {
var _local13 = new Array();
var _local15;
var _local12;
var _local9;
var _local8;
var _local4;
var _local5;
var _local14 = ball_array.length;
var _local7;
var _local6;
if ((Math.abs(row + addRowCount) % 2) == 0) {
_local15 = neighbours;
} else {
_local15 = neighbours2;
}
mc.marked = true;
_local13.push({col:col, row:row});
_local7 = 0;
while (_local7 < 6) {
_local9 = col + _local15[_local7][0];
_local8 = row + _local15[_local7][1];
if ((((_local9 >= 0) && (_local9 < COLS)) && (_local8 >= 0)) && (_local8 < _local14)) {
mc = ball_array[_local8][_local9];
if ((mc != null) && (mc.marked == false)) {
mc.marked = true;
_local13.push({col:_local9, row:_local8});
}
if ((Math.abs(_local8 + addRowCount) % 2) == 0) {
_local12 = neighbours;
} else {
_local12 = neighbours2;
}
_local6 = 0;
while (_local6 < 6) {
_local4 = _local9 + _local12[_local6][0];
_local5 = _local8 + _local12[_local6][1];
if ((((((_local4 >= 0) && (_local4 < COLS)) && (_local5 >= 0)) && (_local5 < _local14)) && ((mc = ball_array[_local5][_local4]) != null)) && (mc.marked == false)) {
mc.marked = true;
_local13.push({col:_local4, row:_local5});
}
_local6++;
}
}
_local7++;
}
var _local16 = 0;
var _local17 = _local13.length;
_local7 = 0;
while (_local7 < _local17) {
col = _local13[_local7].col;
row = _local13[_local7].row;
mc = ball_array[row][col];
if (mc != null) {
colorCountArr[mc.colorNum - 1]--;
checkLongBonus(mc);
mc.gotoAndPlay("bang" + (_root.myRandom(4) + 1));
_local16++;
ball_array[row][col] = null;
}
_local7++;
}
fillBallsCount = _local16;
checkPendingBalls();
checkOddRows();
}
function colorize(col, row, mc) {
var _local12 = new Array();
var _local14;
var _local9;
var _local8;
var _local7;
var _local3;
var _local4;
var _local13 = ball_array.length;
var _local6;
var _local5;
var _local15 = mc.colorNum;
if ((Math.abs(row + addRowCount) % 2) == 0) {
_local14 = neighbours;
} else {
_local14 = neighbours2;
}
mc.setBonus(0, 0);
mc.marked = true;
_local12.push({col:col, row:row});
_local6 = 5;
while (_local6 >= 0) {
_local8 = col + _local14[_local6][0];
_local7 = row + _local14[_local6][1];
if ((((((_local8 >= 0) && (_local8 < COLS)) && (_local7 >= 0)) && (_local7 < _local13)) && ((mc = ball_array[_local7][_local8]) != null)) && (mc.marked == false)) {
mc.marked = true;
_local12.push({col:_local8, row:_local7});
if ((Math.abs(_local7 + addRowCount) % 2) == 0) {
_local9 = neighbours;
} else {
_local9 = neighbours2;
}
_local5 = 5;
while (_local5 >= 0) {
_local3 = _local8 + _local9[_local5][0];
_local4 = _local7 + _local9[_local5][1];
if ((((((_local3 >= 0) && (_local3 < COLS)) && (_local4 >= 0)) && (_local4 < _local13)) && ((mc = ball_array[_local4][_local3]) != null)) && (mc.marked == false)) {
mc.marked = true;
_local12.push({col:_local3, row:_local4});
break;
}
_local5--;
}
break;
}
_local6--;
}
var _local17 = 0;
var _local16 = _local12.length;
_local6 = 0;
while (_local6 < _local16) {
col = _local12[_local6].col;
row = _local12[_local6].row;
mc = ball_array[row][col];
if (mc != null) {
mc.marked = false;
colorCountArr[mc.colorNum - 1]--;
mc.setColor(_local15);
colorCountArr[_local15 - 1]++;
}
_local6++;
}
}
function checkLongBonus(mc) {
if (mc.bonusNum > 0) {
switch (mc.bonusNum) {
case 2 :
enableTrace();
_root.sndBubbleLevelUp = true;
break;
case 3 :
doubleScores = doubleScores + 1;
break;
case 4 :
bonusJumpUp = bonusJumpUp + 1;
break;
case 5 :
enableFreeze();
break;
case 6 :
doubleScores = doubleScores + 2;
}
}
}
function getBoundsIntersection(dx, dy, A, B, C) {
var _local3 = 0;
var _local4 = -30000;
var _local5 = 0;
var _local2 = -30000;
if (Math.abs(dx) > 0.15) {
if (dx > 0) {
_local3 = fieldWidth;
} else {
_local3 = 0;
}
_local4 = (-((A * _local3) + C)) / B;
}
_local2 = (-addRowCount) * BALL_DY;
_local5 = (-((B * _local2) + C)) / A;
if (_local2 > _local4) {
return({x:_local5, y:_local2});
}
return({x:_local3, y:_local4});
}
function getBallIntersection(x1, y1, x0, y0, A, B, C) {
var _local23 = (-addRowCount) * BALL_DY;
var _local24 = y1 - BALL_DIAM;
var _local22 = Math.round((_local24 - _local23) / BALL_DY) - 1;
var _local21 = Math.round((y0 - _local23) / BALL_DY) + 1;
if (_local22 < 0) {
_local22 = 0;
}
if (_local21 > (ball_array.length - 1)) {
_local21 = ball_array.length - 1;
}
var _local8 = 500000 /* 0x07A120 */;
var _local10 = -1;
var _local11 = -1;
var _local7;
var _local5;
var _local2;
var _local4;
var _local3;
var _local6;
var _local12;
var _local13;
var _local9;
_local4 = x1 - x0;
_local3 = y1 - y0;
_local12 = (_local4 * _local4) + (_local3 * _local3);
_local7 = _local21;
while (_local7 >= _local22) {
_local5 = 0;
while (_local5 < COLS) {
_local2 = ball_array[_local7][_local5];
if ((_local2 != null) && ((_local13 = Math.abs(((A * _local2._x) + (B * _local2._y)) + C)) <= BALL_DIAM_I)) {
_local4 = _local2._x - x0;
_local3 = _local2._y - y0;
_local6 = (_local4 * _local4) + (_local3 * _local3);
_local9 = Math.sqrt(_local6) + _local13;
if (_local9 < _local8) {
if (_local6 > _local12) {
_local4 = _local2._x - x1;
_local3 = _local2._y - y1;
_local6 = (_local4 * _local4) + (_local3 * _local3);
if (_local6 <= (BALL_DIAM_I * BALL_DIAM_I)) {
_local8 = Math.sqrt(_local6) + Math.sqrt(_local12);
_local10 = _local5;
_local11 = _local7;
}
} else {
_local8 = _local9;
_local10 = _local5;
_local11 = _local7;
}
}
}
_local5++;
}
_local7--;
}
if (_local10 != -1) {
return({col:_local10, row:_local11});
}
return(null);
}
function getFirstEmptyNeighbour(col, row, x0, y0, x1, y1, A, B, C) {
var _local2;
var _local10 = 500000 /* 0x07A120 */;
var _local11 = -1;
var _local14;
var _local13;
var _local12;
var _local26;
var _local25;
var _local9;
var _local8;
var _local3;
var _local7;
var _local5;
var _local4;
var _local28;
var _local27;
var _local29;
var _local6 = {x:0, y:0, R:0};
if ((Math.abs(row + addRowCount) % 2) == 0) {
_local9 = neighbours;
_local8 = neighboursXY;
} else {
_local9 = neighbours2;
_local8 = neighboursXY2;
}
_local26 = ((Math.abs(addRowCount + row) % 2) * BALL_RAD) + (col * BALL_DIAM);
_local25 = (row * BALL_DY) - (addRowCount * BALL_DY);
_local2 = 0;
while (_local2 < 6) {
_local3 = col + _local9[_local2][0];
_local7 = row + _local9[_local2][1];
if (((_local3 >= 0) && (_local7 >= 0)) && (_local3 < COLS)) {
_local5 = _local26 + _local8[_local2][0];
_local4 = _local25 + _local8[_local2][1];
if (Math.abs(((A * _local5) + (B * _local4)) + C) <= BALL_RAD_B) {
getCircleIntersection(x0, y0, x1, y1, _local5, _local4, BALL_RAD_B, BALL_RAD_B * BALL_RAD_B, _local6);
if (_local6.R < _local10) {
_local10 = _local6.R;
_local11 = _local3;
_local14 = _local7;
_local13 = _local5;
_local12 = _local4;
}
}
}
_local2++;
}
return({x:_local13, y:_local12, col:_local11, row:_local14});
}
function getFirstEmptyNeighbourForPoint(col, row, x0, y0) {
var _local2;
var _local12 = 500000 /* 0x07A120 */;
var _local13;
var _local16;
var _local15;
var _local14;
var _local22;
var _local21;
var _local11;
var _local10;
var _local3;
var _local9;
var _local7;
var _local6;
var _local5;
var _local4;
var _local8;
if ((Math.abs(row + addRowCount) % 2) == 0) {
_local11 = neighbours;
_local10 = neighboursXY;
} else {
_local11 = neighbours2;
_local10 = neighboursXY2;
}
_local22 = ((Math.abs(addRowCount + row) % 2) * BALL_RAD) + (col * BALL_DIAM);
_local21 = (row * BALL_DY) - (addRowCount * BALL_DY);
_local2 = 0;
while (_local2 < 6) {
_local3 = col + _local11[_local2][0];
_local9 = row + _local11[_local2][1];
if (((_local3 >= 0) && (_local9 >= 0)) && (_local3 < COLS)) {
_local7 = _local22 + _local10[_local2][0];
_local6 = _local21 + _local10[_local2][1];
_local5 = _local7 - x0;
_local4 = _local6 - y0;
_local8 = (_local5 * _local5) + (_local4 * _local4);
if (_local8 < _local12) {
_local12 = _local8;
_local13 = _local3;
_local16 = _local9;
_local15 = _local7;
_local14 = _local6;
}
}
_local2++;
}
return({x:_local15, y:_local14, col:_local13, row:_local16});
}
function getCircleIntersection(x1, y1, x2, y2, x0, y0, R, R2, iP) {
var _local4;
var _local1;
var _local12;
var _local13;
var _local8;
var _local19;
var _local17;
var _local18;
var _local25;
var _local24;
var _local9;
var _local10;
var _local6;
var _local7;
var _local16;
var _local15;
var _local14 = 500000 /* 0x07A120 */;
var _local11 = 500000 /* 0x07A120 */;
if (Math.abs(x2 - x1) < 1) {
_local4 = x1 - x2;
_local1 = y2 - y1;
_local12 = (x1 * (y1 - y2)) - (y1 * (x1 - x2));
_local13 = 1 + ((_local4 * _local4) / (_local1 * _local1));
_local25 = (_local12 / _local1) + x0;
_local8 = (-2 * y0) + (((2 * _local4) / _local1) * _local25);
_local19 = ((y0 * y0) + (_local25 * _local25)) - R2;
_local17 = (_local8 * _local8) - ((4 * _local13) * _local19);
if (_local17 >= 0) {
_local18 = Math.sqrt(_local17);
_local10 = ((-_local8) + _local18) / (2 * _local13);
_local16 = (_local10 - y1) / _local1;
if ((_local16 >= -0.05) && (_local16 <= 1.05)) {
_local9 = (-((_local4 * _local10) + _local12)) / _local1;
_local14 = ((_local9 - x1) * (_local9 - x1)) + ((_local10 - y1) * (_local10 - y1));
}
_local7 = ((-_local8) - _local18) / (2 * _local13);
_local15 = (_local7 - y1) / _local1;
if ((_local15 >= -0.05) && (_local15 <= 1.05)) {
_local6 = (-((_local4 * _local7) + _local12)) / _local1;
_local11 = ((_local6 - x1) * (_local6 - x1)) + ((_local7 - y1) * (_local7 - y1));
}
if (_local14 < _local11) {
(iP.x = _local9);
(iP.y = _local10);
(iP.R = Math.sqrt(_local14));
} else {
if (_local11 == 500000) {
return(false);
}
(iP.x = _local6);
(iP.y = _local7);
(iP.R = Math.sqrt(_local11));
}
return(true);
}
} else {
_local4 = y1 - y2;
_local1 = x2 - x1;
_local12 = (y1 * (x1 - x2)) - (x1 * (y1 - y2));
_local13 = 1 + ((_local4 * _local4) / (_local1 * _local1));
_local24 = (_local12 / _local1) + y0;
_local8 = (-2 * x0) + (((2 * _local4) / _local1) * _local24);
_local19 = ((x0 * x0) + (_local24 * _local24)) - R2;
_local17 = (_local8 * _local8) - ((4 * _local13) * _local19);
if (_local17 >= 0) {
_local18 = Math.sqrt(_local17);
_local9 = ((-_local8) + _local18) / (2 * _local13);
_local16 = (_local9 - x1) / _local1;
if ((_local16 >= -0.05) && (_local16 <= 1.05)) {
_local10 = (-((_local4 * _local9) + _local12)) / _local1;
_local14 = ((_local9 - x1) * (_local9 - x1)) + ((_local10 - y1) * (_local10 - y1));
}
_local6 = ((-_local8) - _local18) / (2 * _local13);
_local15 = (_local6 - x1) / _local1;
if ((_local15 >= -0.05) && (_local15 <= 1.05)) {
_local7 = (-((_local4 * _local6) + _local12)) / _local1;
_local11 = ((_local6 - x1) * (_local6 - x1)) + ((_local7 - y1) * (_local7 - y1));
}
if (_local14 < _local11) {
(iP.x = _local9);
(iP.y = _local10);
(iP.R = Math.sqrt(_local14));
} else {
if (_local11 == 500000) {
return(false);
}
(iP.x = _local6);
(iP.y = _local7);
(iP.R = Math.sqrt(_local11));
}
return(true);
}
}
return(false);
}
function checkMovingOff(mc_ball, col, row) {
var _local5 = null;
var _local11 = null;
mc_ball.marked = true;
_local5 = tryRemoveColor(col, row, mc_ball.colorNum);
if (mc_ball.bonusNum == CBall.BONUS_COLOR) {
_local11 = tryRemoveColor(col, row, mc_ball.bonusColorNum);
if (_local5 == null) {
_local5 = _local11;
} else if (_local11 != null) {
_local5 = _local5.concat(_local11);
}
}
mc_ball.marked = false;
if (_local5 != null) {
if (mc_ball.bonusColorNum > 0) {
_root.sndBubbleLevelUp = true;
}
_local5.push({col:col, row:row, mc:mc_ball});
var _local8 = 0;
var _local9 = _local5.length;
var _local4;
var _local3;
_local4 = 0;
while (_local4 < _local9) {
col = _local5[_local4].col;
row = _local5[_local4].row;
_local3 = ball_array[row][col];
if (_local3 != null) {
colorCountArr[_local3.colorNum - 1]--;
checkLongBonus(_local3);
_local3.gotoAndPlay(2);
_local8++;
ball_array[row][col] = null;
}
_local4++;
}
checkPendingBalls();
checkOddRows();
fillBallsCount = _local8;
return(_local8);
}
return(0);
}
function fallAllBalls() {
var _local4;
var _local5;
var _local2;
var _local3;
var _local8 = ball_array.length;
var _local6 = 0;
var _local7;
_local7 = mc_fall.attachMovie("lib_fall", "" + fallDepth, fallDepth);
fallDepth++;
_local5 = 0;
while (_local5 < _local8) {
_local4 = 0;
while (_local4 < COLS) {
_local2 = ball_array[_local5][_local4];
if (_local2 != null) {
ball_array[_local5][_local4] = null;
_local3 = _local2;
_local2 = _local7.attachMovie("lib_ball", "" + _local6, _local6);
_local6++;
_local2.setColor(_local3.colorNum);
_local2.setBonus(_local3.bonusNum, _local3.bonusColorNum);
_local2._x = ((_x + _local3._x) + random(8)) - 4;
_local2._y = ((_y + _local3._y) + random(8)) - 4;
colorCountArr[_local3.colorNum - 1]--;
_local3.removeMovieClip();
}
_local4++;
}
_local5++;
}
if (_local6 == 0) {
_local7.removeMovieClip();
}
}
function checkPendingBalls() {
var _local14 = new Array();
var _local4 = 0;
var _local10;
var _local3;
var _local9;
var _local5;
var _local8;
var _local6;
var _local7;
var _local2;
var _local12 = ball_array.length;
var _local13;
while (true) {
_local13 = false;
_local9 = 0;
while (_local9 < COLS) {
_local2 = ball_array[0][_local9];
if ((_local2 != null) && (_local2.marked == false)) {
stack_arr[_local4] = {col:_local9, row:0};
_local4++;
_local2.marked = true;
_local13 = true;
break;
}
_local9++;
}
if (_local13 == false) {
break;
}
while (_local4 > 0) {
_local4--;
_local5 = stack_arr[_local4].col;
_local8 = stack_arr[_local4].row;
if ((Math.abs(_local8 + addRowCount) % 2) == 0) {
_local10 = neighbours;
} else {
_local10 = neighbours2;
}
_local3 = 0;
while (_local3 < 6) {
_local6 = _local5 + _local10[_local3][0];
_local7 = _local8 + _local10[_local3][1];
if ((((((_local6 >= 0) && (_local6 < COLS)) && (_local7 >= 0)) && (_local7 < _local12)) && ((_local2 = ball_array[_local7][_local6]) != null)) && (_local2.marked == false)) {
_local2.marked = true;
stack_arr[_local4] = {col:_local6, row:_local7};
_local4++;
}
_local3++;
}
}
}
_local8 = 0;
while (_local8 < _local12) {
_local5 = 0;
while (_local5 < COLS) {
_local2 = ball_array[_local8][_local5];
if (_local2 != null) {
if (_local2.marked) {
_local2.marked = false;
} else {
_local14.push(_local2);
ball_array[_local8][_local5] = null;
}
}
_local5++;
}
_local8++;
}
if (_local14.length > 0) {
var _local16;
var _local15 = _local14.length;
var _local11;
fallBallsCount = _local15;
_local16 = mc_fall.attachMovie("lib_fall", "" + fallDepth, fallDepth);
fallDepth++;
_local3 = 0;
while (_local3 < _local15) {
_local2 = _local16.attachMovie("lib_ball", "" + _local3, _local3);
_local11 = _local14[_local3];
_local2.setColor(_local11.colorNum);
_local2.setBonus(_local11.bonusNum, _local11.bonusColorNum);
_local2._x = ((_x + _local11._x) + random(8)) - 4;
_local2._y = ((_y + _local11._y) + random(8)) - 4;
colorCountArr[_local11.colorNum - 1]--;
_local11.removeMovieClip();
_local3++;
}
}
}
function checkOddRows() {
var _local2;
var _local3;
while (true) {
if (ball_array.length == 1) {
return(undefined);
}
_local3 = ball_array.length - 1;
_local2 = 0;
while (_local2 < COLS) {
if (ball_array[_local3][_local2] != null) {
return(undefined);
}
_local2++;
}
ball_array.pop();
}
}
function tryRemoveColor(col, row, colorNum) {
var _local10 = new Array();
var _local5 = 0;
var _local6;
var _local2;
var _local3;
var _local4;
var _local7;
var _local11 = ball_array.length;
stack_arr[_local5] = {col:col, row:row};
_local5++;
while (_local5 > 0) {
_local5--;
col = stack_arr[_local5].col;
row = stack_arr[_local5].row;
if ((Math.abs(row + addRowCount) % 2) == 0) {
_local6 = neighbours;
} else {
_local6 = neighbours2;
}
_local2 = 0;
while (_local2 < 6) {
_local3 = col + _local6[_local2][0];
_local4 = row + _local6[_local2][1];
if (((((((_local3 >= 0) && (_local3 < COLS)) && (_local4 >= 0)) && (_local4 < _local11)) && ((_local7 = ball_array[_local4][_local3]) != null)) && (_local7.marked == false)) && (_local7.isMyColor(colorNum))) {
_local7.marked = true;
_local10.push({col:_local3, row:_local4, mc:_local7});
stack_arr[_local5] = {col:_local3, row:_local4};
_local5++;
}
_local2++;
}
}
var _local13 = _local10.length;
_local2 = 0;
while (_local2 < _local13) {
_local10[_local2].mc.marked = false;
_local2++;
}
if (_local13 < 2) {
return(null);
}
return(_local10);
}
static var COLS = 15;
static var BALL_RAD = 16;
static var BALL_RAD_I = BALL_RAD - 1;
static var BALL_RAD_B = BALL_RAD + 1.5;
static var BALL_DIAM = 32;
static var BALL_DIAM_I = BALL_DIAM - 8.5;
static var BALL_DY = 28;
var addRowCount = 0;
var ballDepth = 0;
var maxColorNum = 8;
var maxBonusNum = 8;
var points = new Array();
var stack_arr = new Array(200);
static var neighbours = [[-1, 1], [0, 1], [-1, 0], [1, 0], [-1, -1], [0, -1]];
static var neighbours2 = [[0, 1], [1, 1], [-1, 0], [1, 0], [1, -1], [0, -1]];
static var neighboursXY = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]];
static var neighboursXY2 = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0]];
var TRACE_TIME = 30000;
var FREEZE_TIME = 10000;
}
Symbol 289 MovieClip [__Packages.CIndicator] Frame 0
class CIndicator extends MovieClip
{
var maxValue, curValue, startY, mc_mask;
function CIndicator () {
super();
}
function init(maxValue_) {
maxValue = maxValue_;
curValue = 0;
startY = mc_mask._y;
updateView();
}
function addValue(val) {
curValue = curValue + val;
if (curValue > maxValue) {
curValue = maxValue;
}
updateView();
}
function reset() {
curValue = 0;
updateView();
}
function isFull() {
return(curValue >= maxValue);
}
function updateView() {
mc_mask._y = (startY + mc_mask._height) - ((curValue / maxValue) * mc_mask._height);
}
}
Symbol 290 MovieClip [__Packages.CGun] Frame 0
class CGun extends MovieClip
{
var bonusNum, hideMouse, curWaitTime, txtNumber, disableFlag, mouseControl, prevLeft, prevRight, keySpeed, colorNum, gotoAndStop, bonusColorNum, mc_bonus, _rotation, _x, _y, mc_point, localToGlobal, _parent;
function CGun () {
super();
bonusNum = 0;
hideMouse = false;
curWaitTime = WAIT_TIME * 2;
txtNumber = "";
disableFlag = false;
mouseControl = false;
prevLeft = (prevRight = false);
keySpeed = keyAcc;
}
function setColor(num) {
colorNum = num;
gotoAndStop(colorNum);
}
function setBonus(bonusNum_, bonusColorNum_) {
bonusNum = bonusNum_;
bonusColorNum = bonusColorNum_;
mc_bonus.gotoAndStop(1 + bonusNum);
if (bonusNum == CBall.BONUS_COLOR) {
mc_bonus.mc.gotoAndStop(bonusColorNum);
}
}
function processTime(dTime) {
if (_global.paused) {
return(undefined);
}
var _local5;
var _local4;
_local5 = Math.ceil(curWaitTime / 1000);
curWaitTime = curWaitTime - dTime;
if (curWaitTime <= 0) {
curWaitTime = 0;
}
_local4 = Math.ceil((curWaitTime / 1000) + 0.01);
if ((_local4 != _local5) && (_local4 <= 3)) {
txtNumber = "" + _local4;
_root.sndAutoFire = true;
}
}
function processKeys(dTime) {
var _local3 = Key.isDown(37);
var _local4 = Key.isDown(39);
if (_local3 || (_local4)) {
if (mouseControl) {
mouseControl = false;
if (hideMouse) {
hideMouse = false;
Mouse.show();
}
}
var _local2 = dTime / 1000;
keySpeed = keySpeed + keyAcc;
if (keySpeed > maxKeySpeed) {
keySpeed = maxKeySpeed;
}
if (_local3) {
if (!prevLeft) {
keySpeed = keyAcc;
prevLeft = true;
prevRight = false;
}
_rotation = _rotation - (_local2 * keySpeed);
if (_rotation < (-MAX_UGOL)) {
_rotation = -MAX_UGOL;
}
} else {
if (!prevRight) {
keySpeed = keyAcc / 2;
prevLeft = false;
prevRight = true;
}
_rotation = _rotation + (_local2 * keySpeed);
if (_rotation > MAX_UGOL) {
_rotation = MAX_UGOL;
}
}
} else {
prevLeft = (prevRight = false);
}
}
function doShot() {
curWaitTime = WAIT_TIME;
resetNumber();
}
function resetNumber() {
txtNumber = "";
}
function autoShot() {
return(curWaitTime == 0);
}
function process(xMouse, yMouse) {
if (mouseControl) {
var _local2 = 0;
var _local4 = xMouse - _x;
var _local3 = yMouse - _y;
var _local5 = Math.sqrt((_local4 * _local4) + (_local3 * _local3));
if (_local5 != 0) {
_local4 = _local4 / _local5;
_local3 = _local3 / _local5;
_local2 = (Math.acos(-_local3) * 180) / Math.PI;
if (_local4 < 0) {
_local2 = -_local2;
}
}
if (_local2 > 80) {
_local2 = 80;
} else if (_local2 < -80) {
_local2 = -80;
}
_rotation = _local2;
}
}
function myMouseMove() {
mouseControl = true;
}
function disable() {
disableFlag = true;
Mouse.show();
}
function getShotPoint() {
var _local2 = {x:mc_point._x, y:mc_point._y};
localToGlobal(_local2);
_parent.globalToLocal(_local2);
return(_local2);
}
static var MAX_UGOL = 80;
var WAIT_TIME = 6400;
var maxKeySpeed = 85;
var keyAcc = 12;
}
Symbol 291 MovieClip [__Packages.CMoveBall] Frame 0
class CMoveBall extends CBall
{
var _x, sX, _y, sY, vx, vy, curR, commonR, eX, eY, mc_grid, _visible, state;
function CMoveBall () {
super();
hide();
}
function startMove(x, y, vx_, vy_) {
_x = (sX = x);
_y = (sY = y);
vx = vx_;
vy = vy_;
curR = 0;
calcEndPoint();
show();
}
function doStep(step) {
curR = curR + step;
if (curR >= commonR) {
sX = eX;
sY = eY;
curR = 0;
vx = -vx;
calcEndPoint();
}
_x = sX + (curR * vx);
_y = sY + (curR * vy);
}
function calcEndPoint() {
var _local3;
var _local2;
var _local5;
var _local4;
sX = sX - mc_grid._x;
sY = sY - mc_grid._y;
eX = sX + (1000 * vx);
eY = sY + (1000 * vy);
_local3 = sY - eY;
_local2 = eX - sX;
_local5 = (sX * (eY - sY)) - (sY * (eX - sX));
_local4 = Math.sqrt((_local3 * _local3) + (_local2 * _local2));
_local3 = _local3 / _local4;
_local2 = _local2 / _local4;
_local5 = _local5 / _local4;
var _local6 = mc_grid.getBoundsIntersection(vx, vy, _local3, _local2, _local5);
eX = _local6.x;
eY = _local6.y;
commonR = Math.sqrt(((eX - sX) * (eX - sX)) + ((eY - sY) * (eY - sY)));
sX = sX + mc_grid._x;
sY = sY + mc_grid._y;
eX = eX + mc_grid._x;
eY = eY + mc_grid._y;
}
function show() {
_visible = true;
state = 1;
}
function hide() {
_visible = false;
state = 0;
}
}
Symbol 90 Button
on (release) {
_global.openSite("Menu", "Site");
}
Symbol 95 Button
on (release) {
how_to_play_pressed();
}
Symbol 100 Button
on (release) {
arcade_mode_pressed();
}
Symbol 105 Button
on (release) {
classic_mode_pressed();
}
Symbol 107 MovieClip Frame 1
stop();
Symbol 107 MovieClip Frame 6
gotoAndStop (1);
Symbol 107 MovieClip Frame 11
gotoAndStop (1);
Symbol 110 Button
on (press) {
this._parent.soundOff();
this.gotoAndStop(2);
}
Symbol 112 Button
on (press) {
this._parent.soundOn();
this.gotoAndStop(1);
}
Symbol 113 MovieClip Frame 1
this.stop();
Symbol 123 Button
on (release) {
back_pressed();
}
Symbol 126 Button
on (release) {
_global.openSite("Help", "Site");
}
Symbol 133 MovieClip Frame 32
gotoAndPlay (1);
Symbol 141 MovieClip Frame 1
this.stop();
Symbol 142 MovieClip [lib_ball_move] Frame 1
#initclip 17
Object.registerClass("lib_ball_move", CMoveBall);
#endinitclip
Symbol 143 MovieClip [mc_grid] Frame 1
#initclip 14
Object.registerClass("mc_grid", CGrid);
#endinitclip
Symbol 153 MovieClip [lib_ind] Frame 1
#initclip 15
Object.registerClass("lib_ind", CIndicator);
#endinitclip
Symbol 163 MovieClip Frame 1
this.stop();
Symbol 173 MovieClip [mc_gun_] Frame 1
#initclip 16
Object.registerClass("mc_gun_", CGun);
#endinitclip
this.stop();
Symbol 178 Button
on (release) {
this.pause(true);
}
Symbol 186 Button
on (release) {
_global.openSite("Game", "Site");
}
Symbol 197 Button
on (release) {
this._parent.nextLevel();
}
Symbol 198 Button
on (release) {
_global.openSite("LevelDone", "Site");
}
Symbol 206 Button
on (release) {
this._parent.newGame();
}
Symbol 207 Button
on (release) {
_global.openSite("LevelFailed", "Site");
}
Symbol 211 Button
on (release) {
_global.openSite("GameDone", "Site");
}
Symbol 214 Button
on (release) {
this._parent.pause(false);
}
Symbol 215 Button
on (release) {
_global.openSite("Pause", "Site");
}
Symbol 220 Button
on (release) {
_global.paused = false;
this._parent.newGame();
}
Symbol 238 Button
on (release) {
_global.openSite("LevelSelect", "Site");
}
Symbol 239 Button
on (release) {
this._parent.newGame();
}
Symbol 243 Button
on (release) {
this._parent.gameStartFrom(0);
}
Symbol 247 Button
on (release) {
this._parent.gameStartFrom(1);
}
Symbol 251 Button
on (release) {
this._parent.gameStartFrom(2);
}
Symbol 255 Button
on (release) {
this._parent.gameStartFrom(3);
}
Symbol 259 Button
on (release) {
this._parent.gameStartFrom(4);
}
Symbol 263 Button
on (release) {
this._parent.gameStartFrom(5);
}
Symbol 267 Button
on (release) {
this._parent.gameStartFrom(6);
}
Symbol 271 Button
on (release) {
this._parent.gameStartFrom(7);
}
Symbol 275 Button
on (release) {
this._parent.gameStartFrom(8);
}
Symbol 279 Button
on (release) {
this._parent.gameStartFrom(9);
}