Frame 1
var _mochiads_game_id = "bf1d0fae36c9d807";
mochi.MochiServices.connect("bf1d0fae36c9d807");
Frame 2
function ball2ball(b1, b2) {
var _local1 = {};
_local1.vx = b1.x - b2.x;
_local1.vy = b1.y - b2.y;
_local1.len = Math.sqrt((_local1.vx * _local1.vx) + (_local1.vy * _local1.vy));
_local1.dx = _local1.vx / _local1.len;
_local1.dy = _local1.vy / _local1.len;
return(_local1);
}
function fbounce(v1, v2) {
var _local4 = projectVector(v1, v2.dx, v2.dy);
var _local1 = projectVector(v1, v2.lx, v2.ly);
var _local3 = {};
_local1.len = Math.sqrt((_local1.vx * _local1.vx) + (_local1.vy * _local1.vy)) * bounce;
_local1.vx = v2.lx * _local1.len;
_local1.vy = v2.ly * _local1.len;
_local3.vx = _local4.vx + _local1.vx;
_local3.vy = _local4.vy + _local1.vy;
return(_local3);
}
function projectVector(v1, dx, dy) {
var _local2 = (v1.vx * dx) + (v1.vy * dy);
var _local1 = {};
_local1.vx = _local2 * dx;
_local1.vy = _local2 * dy;
return(_local1);
}
function itemHandler(obj, item) {
getURL ("http://www.z-fox.com", "_blank");
}
root_cm = new ContextMenu();
_root.menu = root_cm;
_root.menu.hideBuiltInItems();
root_cm.customItems.push(new ContextMenuItem("Play more games...", itemHandler));
urlStart = _url.indexOf("://") + 3;
urlEnd = _url.indexOf("/", urlStart);
domain = _url.substring(urlStart, urlEnd);
LastDot = domain.lastIndexOf(".") - 1;
domEnd = domain.lastIndexOf(".", LastDot) + 1;
domain = domain.substring(domEnd, domain.length);
if (domain != "armorgames.com") {
_root._x = 50000;
_root._y = 40000;
}
stop();
dist = function (oa, ob) {
return(Math.sqrt(Math.pow(oa._x - ob._x, 2) + Math.pow(oa._y - ob._y, 2)));
};
radius = function (o) {
return(o._width / 2);
};
next_level = function () {
if (bonus == undefined) {
g.start(0, 1);
if (spec == "") {
this.attachMovie("bonus", "bonus", this.getNextHighestDepth(), {_x:Stage.width / 2, _y:Stage.height / 2});
balls = balls + 3;
score = score + 3.5;
pegs.play();
} else {
delete onEnterFrame;
gotoAndStop ("lvl_win");
}
}
};
collide = function (px, py, gr, to, sc) {
for (i in pegs) {
if (pegs[i]._currentframe > 1) {
gr++;
}
to++;
if (dist(pegs[i], {_x:px, _y:py}) < (radius(pegs[i]) + radius(ball))) {
if (pegs[i]._currentframe == 1) {
pegs[i].play();
sc++;
d.start(0, 1);
} else {
f.start(0, 1);
}
} else if (dist(pegs[i], ball) < ((radius(pegs[i]) + radius(ball)) + (aura / 2))) {
if (pegs[i]._currentframe == 1) {
pegs[i].play();
sc++;
d.start(0, 1);
}
}
}
if (to <= 1) {
to = 2;
}
return({total:to, greens:gr, score:sc});
};
path = function (px, py, vx, vy, igravity, real) {
iangle = 0;
py = py + vy;
px = px + vx;
if ((px + radius(ball)) > (Stage.width - 5)) {
max = 0;
do {
if ((px + radius(ball)) <= (Stage.width - 5)) {
break;
}
px = px - (vx / 10);
py = py - (vy / 10);
max++;
} while (max <= 100);
vx = vx * -1;
} else if ((px - radius(ball)) < 5) {
max = 0;
do {
if ((px - radius(ball)) >= 5) {
break;
}
px = px - (vx / 10);
py = py - (vy / 10);
max++;
} while (max <= 100);
vx = vx * -1;
}
vy = vy + igravity;
if (vy > 25) {
vy = 25;
}
if ((py - radius(ball)) > Stage.height) {
}
for (i in pegs) {
if (dist(pegs[i], {_x:px, _y:py}) < (radius(pegs[i]) + radius(ball))) {
max = 0;
do {
if (dist(pegs[i], {_x:px, _y:py}) >= (radius(pegs[i]) + radius(ball))) {
break;
}
px = px - (vx / 10);
py = py - (vy / 10);
max++;
} while (max <= 100);
iangle = Math.atan((pegs[i]._y - py) / (pegs[i]._x - px));
if (iangle == (Math.PI/2)) {
px = px + 0.5;
}
var _local1 = ball2ball({x:px, y:py}, {x:pegs[i]._x, y:pegs[i]._y});
var _local5 = {dx:_local1.dy, dy:-_local1.dx, lx:_local1.dx, ly:_local1.dy};
var _local2 = fbounce({x:px, y:py, vx:vx, vy:vy}, _local5);
vx = _local2.vx;
vy = _local2.vy;
}
}
return({px:px, py:py, vx:vx, vy:vy, angle:iangle});
};
draw_path = function (amount) {
temp = {angle:0, gravity:0, vx:0, vy:0, px:0, py:0};
temp.gravity = gravity;
temp.px = Stage.width / 2;
temp.py = 10;
temp.angle = Math.atan2(temp.py - _ymouse, temp.px - _xmouse);
temp.vx = Math.cos(temp.angle) * -20;
temp.vy = Math.sin(temp.angle) * -20;
points = [];
dlife = 0;
while ((temp.py < (Stage.height + 50)) && (dlife < 500)) {
dlife++;
res = path(temp.px, temp.py, temp.vx, temp.vy, temp.gravity, false);
temp.vx = res.vx;
temp.vy = res.vy;
temp.px = res.px;
temp.py = res.py;
points.push({x:temp.px, y:temp.py, vx:temp.vx, vy:temp.vy, angle:res.angle});
}
s.clear();
s.lineStyle(3, 6750207);
s.moveTo(Stage.width / 2, 10);
i = 0;
while (i < amount) {
if (points[i].x == undefined) {
break;
}
s.lineTo(points[i].x, points[i].y);
i++;
}
s.filters = [glow2];
};
loadCode = function (code) {
for (j in pegs) {
pegs[j].removeMovieClip();
}
code = code.split(".");
balls = code[0];
if (isNaN(balls)) {
balls = 10;
}
code.splice(0, 1);
j = 0;
while (j < code.length) {
code[j] = code[j].split(",");
if (code[j][0] == 0) {
a = pegs.attachMovie("peg", "peg" + pegs.getNextHighestDepth(), pegs.getNextHighestDepth(), {tipe:0});
} else if (code[j][0] != "") {
a = pegs.attachMovie("blocker", "peg" + pegs.getNextHighestDepth(), pegs.getNextHighestDepth(), {tipe:1});
}
a._x = code[j][1];
a._y = code[j][2];
j++;
}
};
d = new Sound(this);
d.attachSound("beep.mp3");
f = new Sound(this);
f.attachSound("donk.mp3");
g = new Sound(this);
g.attachSound("win.mp3");
Frame 3
stop();
var glow2 = (new flash.filters.GlowFilter(6750207, 1, 5, 5, 5, 3));
if (spec == "") {
balls = 15;
} else {
pegs.gotoAndStop("none");
loadCode(spec);
}
guide = 10;
aura = 0;
bounce = 0.6;
size = 22;
life = 0;
score = 0;
ball.vx = (ball.vy = 0);
ball.vy = 0;
gravity = 1;
done = false;
clik = true;
calculate = false;
this.createEmptyMovieClip("s", this.getNextHighestDepth());
onEnterFrame = function () {
if (clik) {
if (bonus == undefined) {
draw_path(guide);
}
} else {
life++;
greens = 0;
total = 0;
res = collide(points[0].x + points[0].vx, points[0].y + points[0].vy, greens, total, score);
greens = res.greens;
total = res.total;
score = res.score;
ball._x = points[0].x;
ball._y = points[0].y;
s.clear();
s.lineStyle(3, 6750207);
s.moveTo(points[0].x, points[0].y);
q = 0;
while (q < tguide) {
if (points[q].x == undefined) {
break;
}
s.lineTo(points[q].x, points[q].y);
q++;
}
tguide--;
s.filters = [glow2];
points.splice(0, 1);
if ((total == greens) && (done == false)) {
done = true;
}
if (life > 200) {
ball.play();
}
if (((ball._y - radius(ball)) - 20) > Stage.height) {
clik = true;
if (done) {
done = false;
next_level();
} else if (balls == 0) {
if (spec == "") {
gotoAndStop ("lose");
} else {
gotoAndStop ("lvl_lose");
}
delete onEnterFrame;
delete onMouseDown;
}
}
}
};
onMouseDown = function () {
if (bonus == undefined) {
if (clik) {
if (balls > 0) {
tguide = guide;
balls--;
life = 0;
if (aura > 0) {
var _local1 = new flash.filters.GlowFilter(13369344, 1, aura, aura, 5, 3);
ball.filters = [_local1];
}
if (size < 2) {
size = 2;
}
ball._width = size;
ball._height = size;
clik = false;
}
}
}
};
ball_finish = function () {
if (total == greens) {
done = false;
next_level();
} else if (balls <= 0) {
if (spec == "") {
gotoAndStop ("lose");
} else {
gotoAndStop ("lvl_lose");
}
delete onEnterFrame;
delete onMouseDown;
} else {
ball._y = -50;
clik = true;
done = false;
}
};
Frame 4
points_txt.text = score * 100;
g.start(0, 1);
s.removeMovieClip();
if (bonus != undefined) {
bonus.removeMovieClip();
}
Frame 5
stop();
this.createEmptyMovieClip("pegs", this.getNextHighestDepth());
quit = function () {
pegs.removeMovieClip();
gotoAndStop (2);
};
play_level = function () {
imenu.gotoAndStop(5);
spec = levelCode();
pegs.removeMovieClip();
gotoAndPlay (3);
};
levelCode = function () {
tex = balls + ".";
for (i in pegs) {
if (pegs[i].tipe == 0) {
tex = tex + "0,";
} else {
tex = tex + "1,";
}
tex = tex + (((Math.round(pegs[i]._x) + ",") + Math.round(pegs[i]._y)) + ".");
}
return(tex);
};
carrying = false;
onMouseDown = function () {
if (carrying != false) {
for (i in pegs) {
if (pegs[i] != carrying) {
if (dist(pegs[i], carrying) < (radius(pegs[i]) + radius(carrying))) {
carrying.removeMovieClip();
break;
}
}
}
stopDrag();
imenu.gotoAndStop(1);
carrying = false;
} else {
for (i in pegs) {
if (dist(pegs[i], {_x:_xmouse, _y:_ymouse}) < radius(pegs[i])) {
pegs[i].removeMovieClip();
break;
}
}
}
};
if (spec != "") {
loadCode(spec);
} else {
balls = 10;
}
Frame 8
stop();
score = score * 100;
mochi.MochiScores.showLeaderboard({boardID:"bd0f22289c4029d7", score:score});
s.removeMovieClip();
if (bonus != undefined) {
bonus.removeMovieClip();
}
Frame 9
gotoAndStop ("mainmenu");
Symbol 12 Button
on (release) {
if (!chosen) {
chosen = true;
_parent.bounce = _parent.bounce + 0.05;
remove();
}
}
Symbol 15 MovieClip Frame 1
stop();
Symbol 15 MovieClip Frame 11
_parent.ball_finish();
Symbol 16 Button
on (release) {
if (!chosen) {
chosen = true;
_parent.guide = _parent.guide + 2;
remove();
}
}
Symbol 17 Button
on (release) {
if (!chosen) {
chosen = true;
_parent.aura = _parent.aura + 3;
remove();
}
}
Symbol 18 Button
on (release) {
if (!chosen) {
chosen = true;
_parent.size = _parent.size - 2;
remove();
}
}
Symbol 26 Button
on (release) {
_parent.bounce = _parent.bounce + 0.05;
remove();
}
Symbol 27 Button
on (release) {
_parent.guide = _parent.guide + 2;
remove();
}
Symbol 28 Button
on (release) {
_parent.size = _parent.size - 1;
remove();
}
Symbol 30 MovieClip [bonus] Frame 1
stop();
chosen = false;
points_txt.text = "Score: " + (_parent.score * 100);
_alpha = 0;
remove = function () {
onEnterFrame = function () {
this._alpha = this._alpha - 5;
if (this._alpha <= 0) {
delete this.onEnterFrame;
this.removeMovieClip();
}
};
};
onEnterFrame = function () {
this._alpha = this._alpha + 5;
if (this._alpha >= 100) {
delete this.onEnterFrame;
}
};
if (_parent.aura > 30) {
nextFrame();
}
Symbol 30 MovieClip [bonus] Frame 2
points_txt.text = "Score: " + (_parent.score * 100);
Symbol 33 MovieClip [blocker] Frame 2
stop();
Symbol 38 MovieClip [peg] Frame 1
stop();
Symbol 38 MovieClip [peg] Frame 3
stop();
Symbol 42 Button
on (release) {
getURL ("http://www.z-fox.com", "_blank");
}
Symbol 58 MovieClip Frame 1
_root.stop();
Symbol 58 MovieClip Frame 190
_root.play();
Symbol 64 Button
on (release) {
spec = "";
gotoAndStop ("editor");
}
Symbol 67 Button
on (release) {
getURL ("http://www.z-fox.com", "_blank");
}
Symbol 70 Button
on (release) {
spec = "";
play();
}
Symbol 76 MovieClip Frame 1
stop();
Symbol 76 MovieClip Frame 3
stop();
Symbol 76 MovieClip Frame 5
stop();
Symbol 76 MovieClip Frame 7
stop();
Symbol 76 MovieClip Frame 9
stop();
Symbol 76 MovieClip Frame 11
stop();
Symbol 76 MovieClip Frame 13
stop();
Symbol 76 MovieClip Frame 15
stop();
Symbol 76 MovieClip Frame 17
stop();
Symbol 76 MovieClip Frame 19
stop();
Symbol 76 MovieClip Frame 21
stop();
Symbol 76 MovieClip Frame 23
stop();
Symbol 76 MovieClip Frame 25
stop();
Symbol 76 MovieClip Frame 27
stop();
Symbol 76 MovieClip Frame 29
stop();
Symbol 76 MovieClip Frame 31
stop();
Symbol 76 MovieClip Frame 33
stop();
Symbol 76 MovieClip Frame 35
stop();
Symbol 76 MovieClip Frame 37
stop();
Symbol 76 MovieClip Frame 39
stop();
Symbol 76 MovieClip Frame 41
stop();
Symbol 76 MovieClip Frame 43
stop();
Symbol 76 MovieClip Frame 45
stop();
Symbol 76 MovieClip Frame 47
stop();
Symbol 76 MovieClip Frame 49
stop();
Symbol 76 MovieClip Frame 51
stop();
Symbol 76 MovieClip Frame 53
stop();
Symbol 76 MovieClip Frame 55
stop();
Symbol 76 MovieClip Frame 57
stop();
Symbol 76 MovieClip Frame 59
stop();
Symbol 76 MovieClip Frame 61
stop();
Symbol 76 MovieClip Frame 63
stop();
Symbol 76 MovieClip Frame 65
stop();
Symbol 76 MovieClip Frame 67
stop();
Symbol 76 MovieClip Frame 69
stop();
Symbol 76 MovieClip Frame 71
_parent.gotoAndStop("lose");
Symbol 76 MovieClip Frame 74
stop();
Symbol 88 Button
on (release) {
gotoAndStop (2);
}
Symbol 92 Button
on (release) {
if (_parent.carrying == false) {
gotoAndStop (4);
}
}
Symbol 93 Button
on (release) {
if (_parent.carrying == false) {
gotoAndStop (3);
}
}
Symbol 94 Button
on (release) {
if (_parent.carrying == false) {
a = _parent.pegs.attachMovie("peg", "peg" + _parent.pegs.getNextHighestDepth(), _parent.pegs.getNextHighestDepth(), {tipe:0});
startDrag (a, true);
_parent.carrying = a;
gotoAndStop (5);
}
}
Symbol 95 Button
on (release) {
if (_parent.carrying == false) {
a = _parent.pegs.attachMovie("blocker", "peg" + _parent.pegs.getNextHighestDepth(), _parent.pegs.getNextHighestDepth(), {tipe:1});
startDrag (a, true);
_parent.carrying = a;
gotoAndStop (5);
}
}
Symbol 96 Button
on (release) {
if (_parent.carrying == false) {
gotoAndStop (2);
}
}
Symbol 98 Button
on (release) {
if (_parent.carrying == false) {
_parent.play_level();
}
}
Symbol 100 Button
on (release) {
if (_parent.carrying == false) {
_parent.quit();
}
}
Symbol 109 Button
on (release) {
if (_parent.carrying == false) {
_parent.loadCode(rcv_code.text);
}
}
Symbol 114 Button
on (release) {
if (_parent.carrying == false) {
tballs = balls_txt.text;
_parent.balls = int(tballs);
gotoAndStop (1);
}
}
Symbol 115 MovieClip Frame 1
stop();
Symbol 115 MovieClip Frame 2
stop();
lvl_code.text = _parent.levelCode();
Symbol 115 MovieClip Frame 3
stop();
Symbol 115 MovieClip Frame 4
stop();
Symbol 115 MovieClip Frame 5
stop();
Symbol 117 Button
on (release) {
gotoAndStop ("editor");
}