Frame 1
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__("acb91ab0", this, 10301, true);
mochi.MochiServices.connect("4753f1a0633c2f57");
Frame 5
stop();
Frame 15
MochiAd.showPreGameAd({id:"4753f1a0633c2f57", res:"600x400"});
Frame 23
stop();
com.novelgames.flashgames.commonAS2.MainDevelopment.initialize(this);
Symbol 14 MovieClip [Highlight] Frame 1
#initclip 49
Object.registerClass("Highlight", com.novelgames.flashgames.pileofballsAS2.Highlight);
#endinitclip
Symbol 24 MovieClip [Ball] Frame 1
#initclip 35
Object.registerClass("Ball", com.novelgames.flashgames.pileofballsAS2.Ball);
#endinitclip
Symbol 29 MovieClip [MessageLevel] Frame 1
#initclip 36
Object.registerClass("MessageLevel", com.novelgames.flashgames.pileofballsAS2.MessageLevel);
#endinitclip
Symbol 31 MovieClip [scorePopupText] Frame 1
#initclip 37
Object.registerClass("scorePopupText", com.novelgames.flashgames.commonAS2.NewMovieClip);
#endinitclip
Symbol 36 MovieClip [ScorePopup] Frame 1
#initclip 38
Object.registerClass("ScorePopup", com.novelgames.flashgames.pileofballsAS2.ScorePopup);
#endinitclip
Symbol 44 MovieClip [MessagePlayAgain] Frame 1
#initclip 39
Object.registerClass("MessagePlayAgain", com.novelgames.flashgames.pileofballsAS2.MessagePlayAgain);
#endinitclip
Symbol 55 MovieClip [Instructions] Frame 1
#initclip 40
Object.registerClass("Instructions", com.novelgames.flashgames.commonAS2.Instructions);
#endinitclip
Symbol 57 MovieClip [InstructionsButton] Frame 1
#initclip 41
Object.registerClass("InstructionsButton", com.novelgames.flashgames.commonAS2.InstructionsButton);
#endinitclip
Symbol 61 MovieClip [MuteButton] Frame 1
#initclip 42
Object.registerClass("MuteButton", com.novelgames.flashgames.commonAS2.MuteButton);
#endinitclip
Symbol 68 MovieClip [empty] Frame 1
#initclip 43
Object.registerClass("empty", com.novelgames.flashgames.commonAS2.NewMovieClip);
#endinitclip
Symbol 73 MovieClip [Message] Frame 1
#initclip 44
Object.registerClass("Message", com.novelgames.flashgames.pileofballsAS2.Message);
#endinitclip
Symbol 83 MovieClip [Game] Frame 1
#initclip 45
Object.registerClass("Game", com.novelgames.flashgames.pileofballsAS2.Game);
#endinitclip
Symbol 84 MovieClip [FallingBalls] Frame 1
#initclip 46
Object.registerClass("FallingBalls", com.novelgames.flashgames.pileofballsAS2.FallingBalls);
#endinitclip
Symbol 86 MovieClip [Explosion] Frame 1
#initclip 47
Object.registerClass("Explosion", com.novelgames.flashgames.pileofballsAS2.Explosion);
#endinitclip
Symbol 93 Button
on (release) {
mochi.MochiScores.showLeaderboard({boardID:"c7bc20779e892cfe", onClose:function () {
}});
}
Symbol 96 Button
on (release) {
getURL ("http://www.yougame.com", "_top");
}
Symbol 99 Button
on (release) {
getURL ("http://www.yougame.com", "_top");
}
Symbol 100 MovieClip [Title] Frame 1
#initclip 48
Object.registerClass("Title", com.novelgames.flashgames.commonAS2.Title);
#endinitclip
Symbol 126 MovieClip [__Packages.mochi.MochiScores] Frame 0
class mochi.MochiScores
{
static var boardID, onClose, onError;
function MochiScores () {
}
static function setBoardID(boardID) {
mochi.MochiScores.boardID = boardID;
mochi.MochiServices.send("scores_setBoardID", {boardID:boardID});
}
static function showLeaderboard(options) {
if (options.clip != null) {
if ((options.clip != mochi.MochiServices.__get__clip()) || (mochi.MochiServices.__get__childClip()._target == undefined)) {
mochi.MochiServices.disconnect();
mochi.MochiServices.connect(mochi.MochiServices.__get__id(), options.clip);
}
delete options.clip;
}
if (options.name != null) {
if (typeof(options.name) == "object") {
if (options.name.text != undefined) {
options.name = options.name.text;
}
}
}
if (options.score != null) {
if (typeof(options.score) == "object") {
if (options.score.text != undefined) {
options.score = options.score.text;
}
}
}
if (options.onDisplay != null) {
options.onDisplay();
} else {
mochi.MochiServices.__get__clip().stop();
}
if (options.onClose != null) {
onClose = options.onClose;
} else {
onClose = function () {
mochi.MochiServices.__get__clip().play();
};
}
if (options.onError != null) {
onError = options.onError;
} else {
onError = onClose;
}
if (options.boardID == null) {
if (boardID != null) {
options.boardID = boardID;
}
}
mochi.MochiServices.send("scores_showLeaderboard", {options:options}, null, doClose);
}
static function closeLeaderboard() {
mochi.MochiServices.send("scores_closeLeaderboard");
}
static function getPlayerInfo(callbackObj, callbackMethod) {
mochi.MochiServices.send("scores_getPlayerInfo", null, callbackObj, callbackMethod);
}
static function submit(score, name, callbackObj, callbackMethod) {
mochi.MochiServices.send("scores_submit", {score:score, name:name}, callbackObj, callbackMethod);
}
static function requestList(callbackObj, callbackMethod) {
mochi.MochiServices.send("scores_requestList", null, callbackObj, callbackMethod);
}
static function scoresArrayToObjects(scores) {
var _local5 = {};
var _local1;
var _local4;
var _local2;
var _local6;
for (var _local8 in scores) {
if (typeof(scores[_local8]) == "object") {
if ((scores[_local8].cols != null) && (scores[_local8].rows != null)) {
_local5[_local8] = [];
_local2 = scores[_local8];
_local4 = 0;
while (_local4 < _local2.rows.length) {
_local6 = {};
_local1 = 0;
while (_local1 < _local2.cols.length) {
_local6[_local2.cols[_local1]] = _local2.rows[_local4][_local1];
_local1++;
}
_local5[_local8].push(_local6);
_local4++;
}
} else {
_local5[_local8] = {};
for (var _local7 in scores[_local8]) {
_local5[_local8][_local7] = scores[_local8][_local7];
}
}
} else {
_local5[_local8] = scores[_local8];
}
}
return(_local5);
}
static function doClose(args) {
if (args.error == true) {
if (args.errorCode == undefined) {
args.errorCode = "IOError";
}
onError.apply(null, [args.errorCode]);
} else {
onClose.apply();
}
}
}
Symbol 127 MovieClip [__Packages.mochi.MochiServices] Frame 0
class mochi.MochiServices
{
static var _id, _container, _clip, _sendChannelName, _rcvChannelName, __get__comChannelName, onError, _listenChannel, _rcvChannel, _loader, _loaderListener, _sendChannel;
function MochiServices () {
}
static function get id() {
return(_id);
}
static function get clip() {
return(_container);
}
static function get childClip() {
return(_clip);
}
static function getVersion() {
return("1.31");
}
static function allowDomains(server) {
var _local1 = server.split("/")[2].split(":")[0];
if (System.security) {
if (System.security.allowDomain) {
System.security.allowDomain("*");
System.security.allowDomain(_local1);
}
if (System.security.allowInsecureDomain) {
System.security.allowInsecureDomain("*");
System.security.allowInsecureDomain(_local1);
}
}
return(_local1);
}
static function get isNetworkAvailable() {
if (System.security) {
var _local1 = System.security;
if (_local1.sandboxType == "localWithFile") {
return(false);
}
}
return(true);
}
static function set comChannelName(val) {
if (val != undefined) {
if (val.length > 3) {
_sendChannelName = val + "_fromgame";
_rcvChannelName = val;
initComChannels();
}
}
//return(__get__comChannelName());
}
static function get connected() {
return(_connected);
}
static function connect(id, clip, onError) {
if ((!_connected) && (_clip == undefined)) {
trace("MochiServices Connecting...");
_connecting = true;
init(id, clip);
}
if (onError != undefined) {
mochi.MochiServices.onError = onError;
} else if (mochi.MochiServices.onError == undefined) {
mochi.MochiServices.onError = function (errorCode) {
trace(errorCode);
};
}
}
static function disconnect() {
if (_connected || (_connecting)) {
_connecting = (_connected = false);
flush(true);
if (_clip != undefined) {
_clip.removeMovieClip();
delete _clip;
}
_listenChannel.close();
_rcvChannel.close();
}
}
static function init(id, clip) {
_id = id;
if (clip != undefined) {
_container = clip;
} else {
_container = _root;
}
loadCommunicator(id, _container);
}
static function loadCommunicator(id, clip) {
var _local2 = "_mochiservices_com_" + id;
if (_clip != null) {
return(_clip);
}
if (!isNetworkAvailable) {
return(null);
}
allowDomains(_gatewayURL);
_clip = clip.createEmptyMovieClip(_local2, 10336, false);
_loader = new MovieClipLoader();
if (_loaderListener.waitInterval != null) {
clearInterval(_loaderListener.waitInterval);
}
_loaderListener = {};
_loaderListener.onLoadError = function (target_mc, errorCode, httpStatus) {
trace("MochiServices could not load.");
mochi.MochiServices.disconnect();
mochi.MochiServices.onError.apply(null, [errorCode]);
};
_loaderListener.onLoadStart = function (target_mc) {
this.isLoading = true;
};
_loaderListener.startTime = getTimer();
_loaderListener.wait = function () {
if ((getTimer() - this.startTime) > 10000) {
if (!this.isLoading) {
mochi.MochiServices.disconnect();
mochi.MochiServices.onError.apply(null, ["IOError"]);
}
clearInterval(this.waitInterval);
}
};
_loaderListener.waitInterval = setInterval(_loaderListener, "wait", 1000);
_loader.addListener(_loaderListener);
_loader.loadClip(_gatewayURL, _clip);
_sendChannel = new LocalConnection();
_sendChannel._queue = [];
_rcvChannel = new LocalConnection();
_rcvChannel.allowDomain = function (d) {
return(true);
};
_rcvChannel.allowInsecureDomain = _rcvChannel.allowDomain;
_rcvChannel._nextcallbackID = 0;
_rcvChannel._callbacks = {};
listen();
return(_clip);
}
static function onStatus(infoObject) {
if (!(infoObject.level === "error")) {
} else {
_connected = false;
_listenChannel.connect(_listenChannelName);
}
}
static function listen() {
_listenChannel = new LocalConnection();
_listenChannel.handshake = function (args) {
mochi.MochiServices.__set__comChannelName(args.newChannel);
};
_listenChannel.allowDomain = function (d) {
return(true);
};
_listenChannel.allowInsecureDomain = _listenChannel.allowDomain;
_listenChannel.connect(_listenChannelName);
trace("Waiting for MochiAds services to connect...");
}
static function initComChannels() {
if (!_connected) {
_sendChannel.onStatus = function (infoObject) {
mochi.MochiServices.onStatus(infoObject);
};
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
_sendChannel.send(_sendChannelName, "onReceive", {methodName:"registerGame", id:_id, clip:_clip, version:getVersion()});
_rcvChannel.onStatus = function (infoObject) {
mochi.MochiServices.onStatus(infoObject);
};
_rcvChannel.onReceive = function (pkg) {
var _local5 = pkg.callbackID;
var _local4 = this._callbacks[_local5];
if (!_local4) {
return(undefined);
}
var _local2 = _local4.callbackMethod;
var _local3 = _local4.callbackObject;
if (_local3 && (typeof(_local2) == "string")) {
_local2 = _local3[_local2];
}
if (_local2 != undefined) {
_local2.apply(_local3, pkg.args);
}
delete this._callbacks[_local5];
};
_rcvChannel.onError = function () {
mochi.MochiServices.onError.apply(null, ["IOError"]);
};
_rcvChannel.connect(_rcvChannelName);
trace("connected!");
_connecting = false;
_connected = true;
_listenChannel.close();
while (_sendChannel._queue.length > 0) {
_sendChannel.send(_sendChannelName, "onReceive", _sendChannel._queue.shift());
}
}
}
static function flush(error) {
var _local1;
var _local2;
while (_sendChannel._queue.length > 0) {
_local1 = _sendChannel._queue.shift();
if (_local1.callbackID != null) {
_local2 = _rcvChannel._callbacks[_local1.callbackID];
}
delete _rcvChannel._callbacks[_local1.callbackID];
if (error) {
handleError(_local1.args, _local2.callbackObject, _local2.callbackMethod);
}
}
}
static function handleError(args, callbackObject, callbackMethod) {
if (args != null) {
if (args.onError != null) {
args.onError.apply(null, ["NotConnected"]);
}
}
if (callbackMethod != null) {
args = {};
args.error = true;
args.errorCode = "NotConnected";
if ((callbackObject != null) && (typeof(callbackMethod) == "string")) {
callbackObject[callbackMethod](args);
} else if (callbackMethod != null) {
callbackMethod.apply(args);
}
}
}
static function send(methodName, args, callbackObject, callbackMethod) {
if (_connected) {
_sendChannel.send(_sendChannelName, "onReceive", {methodName:methodName, args:args, callbackID:_rcvChannel._nextcallbackID});
} else {
if ((_clip == undefined) || (!_connecting)) {
onError.apply(null, ["NotConnected"]);
handleError(args, callbackObject, callbackMethod);
flush(true);
return(undefined);
}
_sendChannel._queue.push({methodName:methodName, args:args, callbackID:_rcvChannel._nextcallbackID});
}
_rcvChannel._callbacks[_rcvChannel._nextcallbackID] = {callbackObject:callbackObject, callbackMethod:callbackMethod};
_rcvChannel._nextcallbackID++;
}
static var _gatewayURL = "http://www.mochiads.com/static/lib/services/services.swf";
static var _listenChannelName = "__mochiservices";
static var _connecting = false;
static var _connected = false;
}
Symbol 128 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.NewMovieClip] Frame 0
class com.novelgames.flashgames.commonAS2.NewMovieClip extends MovieClip
{
var _parent, _x, _y, _rotation, _visible, _alpha, _width, _height, _xscale, _yscale, _xmouse, _ymouse, _totalframes, _currentframe, _name, __mask, useHandCursor, __mouseEnabled, __mouseChildren, __numChildren, getInstanceAtDepth, getNextHighestDepth, onRelease, onRollOver, onRollOut, onPress, onReleaseOutside, onMouseMove, onEnterFrame, getURL, createMovieCount, attachMovie, createEmptyMovieClip;
function NewMovieClip () {
super();
}
function get parent() {
return(_parent);
}
function set x(x) {
_x = x;
//return(this.x);
}
function get x() {
return(_x);
}
function set y(y) {
_y = y;
//return(this.y);
}
function get y() {
return(_y);
}
function set rotation(rotation) {
_rotation = rotation;
//return(this.rotation);
}
function get rotation() {
return(_rotation);
}
function set visible(visible) {
_visible = visible;
//return(this.visible);
}
function get visible() {
return(_visible);
}
function set alpha(alpha) {
_alpha = alpha * 100;
//return(this.alpha);
}
function get alpha() {
return(_alpha / 100);
}
function get width() {
return(_width);
}
function set width(width) {
_width = width;
//return(this.width);
}
function get height() {
return(_height);
}
function set height(height) {
_height = height;
//return(this.height);
}
function set scaleX(scaleX) {
_xscale = scaleX * 100;
//return(this.scaleX);
}
function get scaleX() {
return(_xscale / 100);
}
function set scaleY(scaleY) {
_yscale = scaleY * 100;
//return(this.scaleY);
}
function get scaleY() {
return(_yscale / 100);
}
function set mouseX(mouseX) {
_xmouse = mouseX;
//return(this.mouseX);
}
function get mouseX() {
return(_xmouse);
}
function set mouseY(mouseY) {
_ymouse = mouseY;
//return(this.mouseY);
}
function get mouseY() {
return(_ymouse);
}
function get totalFrames() {
return(_totalframes);
}
function get currentFrame() {
return(_currentframe);
}
function get name() {
return(_name);
}
function set mask(mask) {
__mask = mask;
super.setMask(mask);
//return(this.mask);
}
function get mask() {
return(__mask);
}
function set buttonMode(buttonMode) {
useHandCursor = buttonMode;
//return(this.buttonMode);
}
function get buttonMode() {
return(useHandCursor);
}
function set mouseEnabled(mouseEnabled) {
__mouseEnabled = mouseEnabled;
//return(this.mouseEnabled);
}
function get mouseEnabled() {
return(__mouseEnabled);
}
function set mouseChildren(mouseChildren) {
__mouseChildren = mouseChildren;
//return(this.mouseChildren);
}
function get mouseChildren() {
return(__mouseChildren);
}
function get stage() {
return(com.novelgames.flashgames.commonAS2.NewStage.getNewStage());
}
function set numChildren(numChildren) {
__numChildren = numChildren;
//return(this.numChildren);
}
function get numChildren() {
if (__numChildren == undefined) {
__numChildren = 0;
}
return(__numChildren);
}
function get graphics() {
return(this);
}
function startDrag(lockCenter, bounds) {
if (lockCenter == undefined) {
super.startDrag();
} else if (bounds == undefined) {
super.startDrag(lockCenter);
} else {
super.startDrag(lockCenter, bounds.__get__left(), bounds.__get__top(), bounds.__get__right(), bounds.__get__bottom());
}
}
function lineStyle(thickness, colour, alpha) {
if (alpha == undefined) {
alpha = 1;
}
super.lineStyle(thickness, colour, alpha * 100);
}
function beginFill(colour, alpha) {
if (alpha == undefined) {
alpha = 1;
}
super.beginFill(colour, alpha * 100);
}
function getBounds(target) {
var _local2 = super.getBounds(target);
return(new com.novelgames.flashgames.commonAS2.Rectangle(_local2.xMin, _local2.yMin, _local2.xMax - _local2.xMin, _local2.yMax - _local2.yMin));
}
function localToGlobal(point) {
var _local2 = {x:point.x, y:point.y};
super.localToGlobal(_local2);
return(_local2);
}
function globalToLocal(point) {
var _local2 = {x:point.x, y:point.y};
super.globalToLocal(_local2);
return(_local2);
}
function hitTestPoint(x, y, shapeFlag) {
if (shapeFlag == undefined) {
return(super.hitTest(x, y));
}
return(super.hitTest(x, y, shapeFlag));
}
function hitTestObject(obj) {
return(super.hitTest(obj));
}
function addChild(movieClip) {
if (movieClip.addedToParent) {
return(undefined);
}
if (movieClip._parent != this) {
trace("wrong addChild: " + [this, movieClip]);
}
if (movieClip == null) {
return(undefined);
}
addChildAt(movieClip, numChildren);
}
function addChildAt(movieClip, index) {
if (movieClip.addedToParent) {
return(undefined);
}
if (movieClip._parent != this) {
trace("wrong addChildAt: " + [this, movieClip]);
}
if (movieClip == null) {
return(undefined);
}
movieClip.addedToParent = true;
numChildren = ((numChildren+1));
setChildIndex(movieClip, index);
}
function removeChild(movieClip) {
if (!movieClip.addedToParent) {
return(undefined);
}
removeChildAt(movieClip.getDepth());
}
function removeChildAt(index) {
var _local5 = getInstanceAtDepth(index);
var _local3;
var _local2;
if (!_local5.addedToParent) {
return(undefined);
}
_local5.removeMovieClip();
_local3 = getNextHighestDepth();
_local2 = index + 1;
while (_local2 < _local3) {
getInstanceAtDepth(_local2).swapDepths(_local2 - 1);
_local2++;
}
numChildren = ((numChildren-1));
}
function setChildIndex(child, index) {
var _local3 = child.getDepth();
var _local2;
var _local1;
if (_local3 == index) {
return(undefined);
}
_local2 = ((_local3 < index) ? 1 : -1);
_local1 = _local3;
while (_local1 != index) {
child.swapDepths(_local1 + _local2);
_local1 = _local1 + _local2;
}
}
function getChildIndex(child) {
return(child.getDepth());
}
function getChildAt(index) {
return(com.novelgames.flashgames.commonAS2.NewMovieClip(getInstanceAtDepth(index)));
}
function addEventListener(type, listenerObject, listenerFunctionName) {
switch (type) {
case com.novelgames.flashgames.commonAS2.MouseEvent.CLICK :
onRelease = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OVER :
onRollOver = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OUT :
onRollOut = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_DOWN :
onPress = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_UP :
onRelease = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
onReleaseOutside = onRelease;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_MOVE :
onMouseMove = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.Event.ENTER_FRAME :
onEnterFrame = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
}
}
function removeEventListener(type) {
switch (type) {
case com.novelgames.flashgames.commonAS2.MouseEvent.CLICK :
onRelease = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OVER :
onRollOver = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OUT :
onRollOut = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_DOWN :
onPress = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_UP :
onRelease = null;
onReleaseOutside = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_MOVE :
onMouseMove = null;
break;
case com.novelgames.flashgames.commonAS2.Event.ENTER_FRAME :
onEnterFrame = null;
}
}
function navigateToURL(urlRequest, window) {
getURL(urlRequest.url, window);
}
function createMovie(name) {
var _local4 = getNextHighestDepth();
var _local2;
if (createMovieCount == undefined) {
createMovieCount = 0;
}
if (name) {
_local2 = attachMovie(name, (name + "_") + createMovieCount, _local4);
} else {
_local2 = createEmptyMovieClip((name + "_") + createMovieCount, _local4);
_local2.__proto__ = com.novelgames.flashgames.commonAS2.NewMovieClip.prototype;
}
_local2.addedToParent = false;
createMovieCount++;
return(_local2);
}
function createSound(name) {
return(new com.novelgames.flashgames.commonAS2.NewSound(this, name));
}
}
Symbol 129 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.NewStage] Frame 0
class com.novelgames.flashgames.commonAS2.NewStage
{
var addedListener, onKeyDown, onKeyUp;
function NewStage () {
addedListener = false;
onKeyDown = null;
onKeyUp = null;
}
static function getNewStage() {
if (newStage == null) {
newStage = new com.novelgames.flashgames.commonAS2.NewStage();
}
return(newStage);
}
function get stageWidth() {
return(Stage.width);
}
function get stageHeight() {
return(Stage.height);
}
function set focus(object) {
Selection.setFocus(object);
//return(focus);
}
function get focus() {
return(Selection.getFocus());
}
function addEventListener(type, listenerObject, listenerFunctionName) {
if (!addedListener) {
Key.addListener(this);
addedListener = true;
}
switch (type) {
case com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_DOWN :
onKeyDown = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.KeyboardEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_UP :
onKeyUp = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.KeyboardEvent(this));
};
}
}
function removeEventListener(type) {
switch (type) {
case com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_DOWN :
onKeyDown = null;
break;
case com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_UP :
onKeyUp = null;
}
}
static var newStage = null;
}
Symbol 130 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.KeyboardEvent] Frame 0
class com.novelgames.flashgames.commonAS2.KeyboardEvent
{
function KeyboardEvent () {
}
function get charCode() {
return(Key.getAscii());
}
function get keyCode() {
return(Key.getCode());
}
function updateAfterEvent() {
_global.updateAfterEvent();
}
static var KEY_DOWN = "keyDown";
static var KEY_UP = "keyUp";
}
Symbol 131 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.Rectangle] Frame 0
class com.novelgames.flashgames.commonAS2.Rectangle
{
var x, y, width, height;
function Rectangle (x, y, width, height) {
this.x = x;
this.y = y;
this.width = width;
this.height = height;
}
function get left() {
return(x);
}
function set left(left) {
x = left;
//return(this.left);
}
function get top() {
return(y);
}
function set top(top) {
y = top;
//return(this.top);
}
function get right() {
return(x + width);
}
function set right(right) {
width = right - x;
//return(this.right);
}
function get bottom() {
return(y + height);
}
function set bottom(bottom) {
height = bottom - y;
//return(this.bottom);
}
function get size() {
return({x:width, y:height});
}
function set size(size) {
width = size.x;
height = size.y;
//return(this.size);
}
function get topLeft() {
return({x:x, y:y});
}
function set topLeft(topLeft) {
x = topLeft.x;
y = topLeft.y;
//return(this.topLeft);
}
function get bottomRight() {
return({x:x + width, y:y + height});
}
function set bottomRight(bottomRight) {
width = x - bottomRight.x;
height = y - bottomRight.y;
//return(this.bottomRight);
}
}
Symbol 132 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.MouseEvent] Frame 0
class com.novelgames.flashgames.commonAS2.MouseEvent
{
var target, currentTarget;
function MouseEvent (target) {
this.target = target;
currentTarget = target;
}
function updateAfterEvent() {
_global.updateAfterEvent();
}
static var CLICK = "click";
static var DOUBLE_CLICK = "doubleClick";
static var MOUSE_DOWN = "mouseDown";
static var MOUSE_MOVE = "mouseMove";
static var MOUSE_OUT = "mouseOut";
static var MOUSE_OVER = "mouseOver";
static var MOUSE_UP = "mouseUp";
static var MOUSE_WHEEL = "mouseWheel";
static var ROLL_OUT = "rollOut";
static var ROLL_OVER = "rollOver";
}
Symbol 133 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.Event] Frame 0
class com.novelgames.flashgames.commonAS2.Event
{
function Event () {
}
static var ENTER_FRAME = "enterFrame";
}
Symbol 134 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.URLRequest] Frame 0
class com.novelgames.flashgames.commonAS2.URLRequest
{
var url;
function URLRequest (url) {
this.url = url;
}
}
Symbol 135 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.NewSound] Frame 0
class com.novelgames.flashgames.commonAS2.NewSound extends Sound
{
var attachSound, start;
function NewSound (target, symbolName) {
super(target);
attachSound(symbolName);
}
function play() {
start();
}
}
Symbol 136 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.Ball] Frame 0
class com.novelgames.flashgames.pileofballsAS2.Ball extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var type, isMoving, gotoAndStop, cacheAsBitmap, moveToX, moveToY, moveAroundX, moveAroundY, movingAround, startMoveX, x, startMoveY, y, endMoveX, endMoveY, __get__parent, centreX, centreY, startAngle, endAngle, moveAngle, __set__x, __set__y;
function Ball () {
super();
}
function initialize(type) {
this.type = type;
isMoving = false;
(gotoAndStop(type + 1));// not popped
cacheAsBitmap = true;
}
function startMove(moveToX, moveToY, moveAroundX, moveAroundY, movingAround) {
if (moveAroundX == undefined) {
moveAroundX = -1;
}
if (moveAroundY == undefined) {
moveAroundY = -1;
}
if (movingAround == undefined) {
movingAround = false;
}
var _local2;
isMoving = true;
this.moveToX = moveToX;
this.moveToY = moveToY;
this.moveAroundX = moveAroundX;
this.moveAroundY = moveAroundY;
this.movingAround = movingAround;
startMoveX = x;
startMoveY = y;
endMoveX = (moveToX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2;
endMoveY = moveToY * Object(__get__parent().parent).rowSpacing;
if (movingAround) {
centreX = (moveAroundX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2;
centreY = moveAroundY * Object(__get__parent().parent).rowSpacing;
startAngle = Math.atan2(startMoveY - centreY, startMoveX - centreX);
endAngle = Math.atan2(endMoveY - centreY, endMoveX - centreX);
_local2 = endAngle - startAngle;
if (_local2 < -3.14159265358979) {
_local2 = _local2 + (Math.PI*2);
}
if (_local2 > Math.PI) {
_local2 = _local2 - (Math.PI*2);
}
moveAngle = _local2;
}
}
function move(ratio) {
if (movingAround) {
__set__x(centreX + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE * Math.cos(startAngle + (moveAngle * ratio))));
__set__y(centreY + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE * Math.sin(startAngle + (moveAngle * ratio))));
} else {
__set__x((startMoveX * (1 - ratio)) + (endMoveX * ratio));
__set__y((startMoveY * (1 - ratio)) + (endMoveY * ratio));
}
}
}
Symbol 137 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.Config] Frame 0
class com.novelgames.flashgames.pileofballsAS2.Config
{
function Config () {
}
static var BALL_SIZE = 30;
static var BALL_COLOURS = 8;
static var BALL_ROTATETIME = 100;
static var BALL_MOVETIME = 50;
static var BALL_DROPSPEED = 1000;
static var BALL_COLLAPSETIME = 200;
static var DIMENSION_X = 10;
static var FIELD_LEFT = 243.6;
static var FIELD_TOP = 13.3;
static var FIELD_RIGHT = 543.6;
static var FIELD_BOTTOM = 389.3;
static var GROUPSIZE = 4;
static var SCORE_GROUP = 100;
static var SCORE_EXTRABALL = 50;
static var SCORE_EXTRAGROUP = 100;
static var SCORE_COMBO = 50;
static var SCORE_LEVEL = 2000;
static var HIGHLIGHT_SHOWTIME = 300;
static var EXPLOSION_SHOWTIME = 200;
static var EXPLOSION_ROTATE = 180;
static var SCOREPOPUP_PREFIX = "+";
static var SCOREPOPUP_MOVETIME = 200;
static var SCOREPOPUP_MOVEHEIGHT = 50;
static var SCOREPOPUP_STAYTIME = 500;
static var GAMEOVER_DROPINTERVAL = 100;
static var GAMEOVER_DROPACCELERATION = 500;
static var LEVEL_INITIALCOLOURS = 4;
static var LEVEL_COLOURSINCREASE = 0.5;
static var LEVEL_INITIALBALLS = 40;
static var LEVEL_BALLSINCREASE = 10;
static var LEVEL_INITIALROWS = 0;
static var LEVEL_ROWSINCREASE = 1;
static var LEVEL_MAXROWS = 5;
static var LEVEL_INITIALSPEED = 30;
static var LEVEL_SPEEDINCREASE = 5;
static var MESSAGE_LEVELTIME = 1500;
static var MESSAGE_LEVELCLEARTIME = 1500;
static var MESSAGE_GAMEOVERTIME = 1000;
}
Symbol 138 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.MessageLevel] Frame 0
class com.novelgames.flashgames.pileofballsAS2.MessageLevel extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var levelText;
function MessageLevel () {
super();
levelText.__proto__ = com.novelgames.flashgames.commonAS2.NewTextField.prototype;
}
}
Symbol 139 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.NewTextField] Frame 0
class com.novelgames.flashgames.commonAS2.NewTextField extends TextField
{
var _x, _y, _rotation, _visible, _alpha, _width, _height, scroll, maxscroll;
function NewTextField () {
super();
}
function set x(x) {
_x = x;
//return(this.x);
}
function get x() {
return(_x);
}
function set y(y) {
_y = y;
//return(this.y);
}
function get y() {
return(_y);
}
function set rotation(rotation) {
_rotation = rotation;
//return(this.rotation);
}
function get rotation() {
return(_rotation);
}
function set visible(visible) {
_visible = visible;
//return(this.visible);
}
function get visible() {
return(_visible);
}
function set alpha(alpha) {
_alpha = alpha * 100;
//return(this.alpha);
}
function get alpha() {
return(_alpha / 100);
}
function get width() {
return(_width);
}
function set width(width) {
_width = width;
//return(this.width);
}
function get height() {
return(_height);
}
function set height(height) {
_height = height;
//return(this.height);
}
function set scrollV(scrollV) {
scroll = scrollV;
//return(this.scrollV);
}
function get scrollV() {
return(scroll);
}
function set maxScrollV(maxScrollV) {
maxscroll = maxScrollV;
//return(this.maxScrollV);
}
function get maxScrollV() {
return(maxscroll);
}
function setTextFormat(textFormat, beginIndex, endIndex) {
if ((beginIndex == undefined) || (endIndex == undefined)) {
super.setTextFormat(textFormat);
} else {
super.setTextFormat(beginIndex, endIndex, textFormat);
}
}
}
Symbol 140 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.ScorePopup] Frame 0
class com.novelgames.flashgames.pileofballsAS2.ScorePopup extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var comboText, scoreText, __set__x, __set__y, gotoAndStop, originalY, startTime, timer, __get__parent;
function ScorePopup () {
super();
comboText.__proto__ = com.novelgames.flashgames.commonAS2.NewTextField.prototype;
scoreText.__proto__ = com.novelgames.flashgames.commonAS2.NewMovieClip.prototype;
}
function initialize(x, y, score, combo) {
__set__x(x);
__set__y(y);
scoreText.scoreText.text = com.novelgames.flashgames.pileofballsAS2.Config.SCOREPOPUP_PREFIX + score;
if (combo == 1) {
(gotoAndStop("normal"));// not popped
comboText.__set__visible(false);
} else if (combo == 2) {
(gotoAndStop("single"));// not popped
comboText.__set__visible(false);
} else {
(gotoAndStop("multiple"));// not popped
comboText.text = (combo - 1).toString();
comboText.__set__visible(true);
}
originalY = y;
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onMoveTime");
timer.start();
}
function onMoveTime(timerEvent) {
var _local3 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local2 = (_local3 - startTime) / com.novelgames.flashgames.pileofballsAS2.Config.SCOREPOPUP_MOVETIME;
if (_local2 > 1) {
_local2 = 1;
}
timerEvent.updateAfterEvent();
__set__y(originalY - (Math.sin(_local2 * Math.PI) * com.novelgames.flashgames.pileofballsAS2.Config.SCOREPOPUP_MOVEHEIGHT));
if (_local2 >= 1) {
timer.stop();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(com.novelgames.flashgames.pileofballsAS2.Config.SCOREPOPUP_STAYTIME, 1);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "stayFinished");
timer.start();
}
}
function stayFinished(timerEvent) {
__get__parent().removeChild(this);
}
}
Symbol 141 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.Timer] Frame 0
interface com.novelgames.flashgames.commonAS2.Timer
{
}
Symbol 142 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.NewTimer] Frame 0
class com.novelgames.flashgames.commonAS2.NewTimer implements com.novelgames.flashgames.commonAS2.Timer
{
static var pauseTime;
var delay, repeatCount, currentCount, listenerObject, listenerFunctionName, adjustedStartTime, usingDelay, intervalID;
function NewTimer (delay, repeatCount) {
if (repeatCount == undefined) {
repeatCount = 0;
}
this.delay = delay;
this.repeatCount = repeatCount;
currentCount = 0;
}
static function getTimer() {
if (paused) {
return(pauseTime - totalPausedTime);
}
return(getTimer() - totalPausedTime);
}
static function pause() {
if (paused) {
return(undefined);
}
paused = true;
pauseTime = getTimer();
}
static function unpause() {
if (!paused) {
return(undefined);
}
paused = false;
totalPausedTime = totalPausedTime + (getTimer() - pauseTime);
}
function addEventListener(type, listenerObject, listenerFunctionName) {
if (type != com.novelgames.flashgames.commonAS2.TimerEvent.TIMER) {
return(undefined);
}
this.listenerObject = listenerObject;
this.listenerFunctionName = listenerFunctionName;
}
function removeEventListener(type) {
if (type != com.novelgames.flashgames.commonAS2.TimerEvent.TIMER) {
return(undefined);
}
listenerObject = null;
listenerFunctionName = null;
}
function start() {
adjustedStartTime = getTimer();
usingDelay = delay;
clearInterval(intervalID);
intervalID = setInterval(this, "timerEventListener", delay);
}
function stop() {
clearInterval(intervalID);
}
function timerEventListener() {
currentCount++;
if (paused) {
clearInterval(intervalID);
usingDelay = Math.max(delay - (getTimer() - adjustedStartTime), 1);
currentCount--;
intervalID = setInterval(this, "timerEventListener", usingDelay);
return(undefined);
}
if ((getTimer() - adjustedStartTime) >= delay) {
adjustedStartTime = getTimer();
if (usingDelay != delay) {
clearInterval(intervalID);
usingDelay = delay;
intervalID = setInterval(this, "timerEventListener", usingDelay);
}
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.TimerEvent());
if ((repeatCount != 0) && (currentCount >= repeatCount)) {
clearInterval(intervalID);
}
} else {
clearInterval(intervalID);
usingDelay = Math.max(delay - (getTimer() - adjustedStartTime), 1);
currentCount--;
intervalID = setInterval(this, "timerEventListener", usingDelay);
}
}
static var paused = false;
static var totalPausedTime = 0;
}
Symbol 143 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.TimerEvent] Frame 0
class com.novelgames.flashgames.commonAS2.TimerEvent
{
function TimerEvent () {
}
function updateAfterEvent() {
_global.updateAfterEvent();
}
static var TIMER = "timer";
}
Symbol 144 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.MessagePlayAgain] Frame 0
class com.novelgames.flashgames.pileofballsAS2.MessagePlayAgain extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var playAgainButton, homeButton;
function MessagePlayAgain () {
super();
playAgainButton.__proto__ = com.novelgames.flashgames.commonAS2.NewButton.prototype;
homeButton.__proto__ = com.novelgames.flashgames.commonAS2.NewButton.prototype;
}
}
Symbol 145 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.NewButton] Frame 0
class com.novelgames.flashgames.commonAS2.NewButton extends Button
{
var _x, _y, _xmouse, _ymouse, _visible, _alpha, _name, onRelease, onRollOver, onRollOut, onPress, onReleaseOutside;
function NewButton () {
super();
}
function set x(x) {
_x = x;
//return(this.x);
}
function get x() {
return(_x);
}
function set y(y) {
_y = y;
//return(this.y);
}
function get y() {
return(_y);
}
function set mouseX(mouseX) {
_xmouse = mouseX;
//return(this.mouseX);
}
function get mouseX() {
return(_xmouse);
}
function set mouseY(mouseY) {
_ymouse = mouseY;
//return(this.mouseY);
}
function get mouseY() {
return(_ymouse);
}
function set visible(visible) {
_visible = visible;
//return(this.visible);
}
function get visible() {
return(_visible);
}
function set alpha(alpha) {
_alpha = alpha * 100;
//return(this.alpha);
}
function get alpha() {
return(_alpha / 100);
}
function get name() {
return(_name);
}
function addEventListener(type, listenerObject, listenerFunctionName) {
switch (type) {
case com.novelgames.flashgames.commonAS2.MouseEvent.CLICK :
onRelease = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OVER :
onRollOver = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OUT :
onRollOut = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_DOWN :
onPress = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_UP :
onRelease = function () {
listenerObject[listenerFunctionName](new com.novelgames.flashgames.commonAS2.MouseEvent(this));
};
onReleaseOutside = onRelease;
}
}
function removeEventListener(type) {
switch (type) {
case com.novelgames.flashgames.commonAS2.MouseEvent.CLICK :
onRelease = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OVER :
onRollOver = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.ROLL_OUT :
onRollOut = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_DOWN :
onPress = null;
break;
case com.novelgames.flashgames.commonAS2.MouseEvent.MOUSE_UP :
onRelease = null;
onReleaseOutside = null;
}
}
}
Symbol 146 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.Instructions] Frame 0
class com.novelgames.flashgames.commonAS2.Instructions extends MovieClip
{
var startButton, shownFromGame, _parent;
function Instructions () {
super();
startButton.onRelease = function () {
this._parent.startButtonClicked();
};
}
function initialize(shownFromGame) {
if (shownFromGame == undefined) {
shownFromGame = false;
}
this.shownFromGame = shownFromGame;
}
function startButtonClicked() {
if (!shownFromGame) {
_parent.gotoGamePage();
} else {
_parent.hideInstructionsFromGame();
}
}
}
Symbol 147 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.InstructionsButton] Frame 0
class com.novelgames.flashgames.commonAS2.InstructionsButton extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var onRelease;
function InstructionsButton () {
super();
onRelease = function () {
this._parent._parent.showInstructionsFromGame();
};
}
}
Symbol 148 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.MuteButton] Frame 0
class com.novelgames.flashgames.commonAS2.MuteButton extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var gotoAndStop;
function MuteButton () {
super();
if (new Sound().getVolume() == 0) {
showOff();
} else {
showOn();
}
}
function onPress() {
if (new Sound().getVolume() == 0) {
new Sound().setVolume(100);
showOn();
} else {
new Sound().setVolume(0);
showOff();
}
}
function showOff() {
(gotoAndStop("off"));// not popped
}
function showOn() {
(gotoAndStop("on"));// not popped
}
}
Symbol 149 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.Message] Frame 0
class com.novelgames.flashgames.pileofballsAS2.Message extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var stop, createMovie, messageLevel, addChild, gotoAndStop, removeChild, __get__parent;
function Message () {
super();
(stop());// not popped
}
function showLevel(level) {
var _local2;
hide();
_local2 = createMovie("MessageLevel");
messageLevel = _local2;
messageLevel.levelText.text = level.toString();
addChild(messageLevel);
}
function showLevelUp() {
hide();
(gotoAndStop("levelUp"));// not popped
}
function showGameOver() {
hide();
(gotoAndStop("gameOver"));// not popped
}
function showPlayAgain() {
var _local2;
var _local3;
_local3 = createMovie("MessagePlayAgain");
_local2 = _local3;
_local2.playAgainButton.addEventListener(com.novelgames.flashgames.commonAS2.MouseEvent.CLICK, this, "playAgainButtonClicked");
_local2.homeButton.addEventListener(com.novelgames.flashgames.commonAS2.MouseEvent.CLICK, this, "homeButtonClicked");
addChild(_local2);
}
function hide() {
if (messageLevel) {
removeChild(messageLevel);
messageLevel = null;
}
(gotoAndStop("hide"));// not popped
}
function playAgainButtonClicked(mouseEvent) {
Object(__get__parent().parent).gotoGamePage();
}
function homeButtonClicked(mouseEvent) {
Object(__get__parent().parent).gotoTitlePage();
}
}
Symbol 150 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.CommonGame] Frame 0
class com.novelgames.flashgames.commonAS2.CommonGame extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
function CommonGame () {
super();
}
static function get gameStage() {
return(com.novelgames.flashgames.commonAS2.NewStage.getNewStage());
}
function pause() {
com.novelgames.flashgames.commonAS2.NewTimer.pause();
}
function unpause() {
com.novelgames.flashgames.commonAS2.NewTimer.unpause();
}
}
Symbol 151 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.Game] Frame 0
class com.novelgames.flashgames.pileofballsAS2.Game extends com.novelgames.flashgames.commonAS2.CommonGame
{
var scoreText, levelText, nextLevelText, message, nextBallsHolder, scoresHolder, explosionsHolder, ballsHolder, soundFall, createSound, soundCollapse, soundGroup, soundLevelClear, soundGameOver, __score, __level, __nextLevel, rowSpacing, noOfRows, levelColours, levelBalls, levelRows, levelSpeed, timer, balls, nextBalls, combo, __get__stage, stage, lastTime, fallingBalls, startTime, collapsingBalls, explodingBalls, explodingGroups, explosions, __get__parent;
function Game () {
super();
scoreText.__proto__ = com.novelgames.flashgames.commonAS2.NewTextField.prototype;
levelText.__proto__ = com.novelgames.flashgames.commonAS2.NewTextField.prototype;
nextLevelText.__proto__ = com.novelgames.flashgames.commonAS2.NewTextField.prototype;
message.__proto__ = com.novelgames.flashgames.pileofballsAS2.Message.prototype;
nextBallsHolder.__proto__ = com.novelgames.flashgames.commonAS2.NewMovieClip.prototype;
scoresHolder.__proto__ = com.novelgames.flashgames.commonAS2.NewMovieClip.prototype;
explosionsHolder.__proto__ = com.novelgames.flashgames.commonAS2.NewMovieClip.prototype;
ballsHolder.__proto__ = com.novelgames.flashgames.commonAS2.NewMovieClip.prototype;
score = (0);
level = (1);
nextLevel = (0);
initialize();
soundFall = createSound("SoundFall");
soundCollapse = createSound("SoundCollapse");
soundGroup = createSound("SoundGroup");
soundLevelClear = createSound("SoundLevelClear");
soundGameOver = createSound("SoundGameOver");
startLevel(1);
}
function set score(score) {
__score = score;
scoreText.text = score.toString();
//return(this.score);
}
function get score() {
return(__score);
}
function set level(level) {
__level = level;
levelText.text = level.toString();
//return(this.level);
}
function get level() {
return(__level);
}
function set nextLevel(nextLevel) {
__nextLevel = nextLevel;
nextLevelText.text = nextLevel.toString();
//return(this.nextLevel);
}
function get nextLevel() {
return(__nextLevel);
}
function initialize() {
rowSpacing = com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE * 0.866025403784439;
noOfRows = Math.ceil((((com.novelgames.flashgames.pileofballsAS2.Config.FIELD_BOTTOM - com.novelgames.flashgames.pileofballsAS2.Config.FIELD_TOP) - com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / rowSpacing) + 1);
ballsHolder.__set__x(com.novelgames.flashgames.pileofballsAS2.Config.FIELD_LEFT + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2));
ballsHolder.__set__y(((com.novelgames.flashgames.pileofballsAS2.Config.FIELD_TOP + com.novelgames.flashgames.pileofballsAS2.Config.FIELD_BOTTOM) - com.novelgames.flashgames.pileofballsAS2.Config.FIELD_TOP) - ((com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2) + (rowSpacing * (noOfRows - 1))));
explosionsHolder.__set__x(ballsHolder.x);
explosionsHolder.__set__y(ballsHolder.y);
scoresHolder.__set__x(ballsHolder.x);
scoresHolder.__set__y(ballsHolder.y);
}
function startLevel(level) {
this.level = (level);
levelColours = Math.floor(com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_INITIALCOLOURS + ((level - 1) * com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_COLOURSINCREASE));
if (levelColours > com.novelgames.flashgames.pileofballsAS2.Config.BALL_COLOURS) {
levelColours = com.novelgames.flashgames.pileofballsAS2.Config.BALL_COLOURS;
}
levelBalls = com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_INITIALBALLS + ((level - 1) * com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_BALLSINCREASE);
levelRows = Math.floor(com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_INITIALROWS + ((level - 1) * com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_ROWSINCREASE));
if (levelRows > com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_MAXROWS) {
levelRows = com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_MAXROWS;
}
levelSpeed = com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_INITIALSPEED + ((level - 1) * com.novelgames.flashgames.pileofballsAS2.Config.LEVEL_SPEEDINCREASE);
initializeBalls();
createNextBalls();
nextLevel = (levelBalls);
message.showLevel(level);
timer = new com.novelgames.flashgames.commonAS2.NewTimer(com.novelgames.flashgames.pileofballsAS2.Config.MESSAGE_LEVELTIME, 1);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "startPlay");
timer.start();
}
function initializeBalls() {
var _local4;
var _local3;
var _local2;
var _local5;
balls = new Array();
_local3 = 0;
while (_local3 < noOfRows) {
balls[_local3] = new Array();
if (_local3 < (noOfRows - levelRows)) {
_local2 = 0;
while (_local2 < ((com.novelgames.flashgames.pileofballsAS2.Config.DIMENSION_X * 2) - 1)) {
balls[_local3][_local2] = null;
_local2++;
}
} else {
_local2 = ((((_local3 + noOfRows) % 2) == 1) ? 0 : 1);
while (_local2 < ((com.novelgames.flashgames.pileofballsAS2.Config.DIMENSION_X * 2) - 1)) {
_local5 = ballsHolder.createMovie("Ball");
_local4 = _local5;
_local4.initialize(getBestType(_local2, _local3));
_local4.indexX = _local2;
_local4.indexY = _local3;
_local4.__set__x((_local2 * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2);
_local4.__set__y(_local3 * rowSpacing);
ballsHolder.addChild(_local4);
balls[_local3][_local2] = _local4;
_local2 = _local2 + 2;
}
}
_local3++;
}
}
function getBestType(indexX, indexY) {
var _local3 = new Array();
var _local2;
_local2 = 0;
while (_local2 < levelColours) {
_local3.push(_local2);
_local2++;
}
removeType(indexX - 1, indexY - 1, _local3);
removeType(indexX + 1, indexY - 1, _local3);
removeType(indexX - 2, indexY, _local3);
removeType(indexX + 2, indexY, _local3);
removeType(indexX - 1, indexY + 1, _local3);
removeType(indexX + 1, indexY + 1, _local3);
if (_local3.length == 0) {
return(Math.floor(Math.random() * levelColours));
}
return(_local3[Math.floor(Math.random() * _local3.length)]);
}
function removeType(indexX, indexY, types) {
var _local2;
if ((indexY < 0) || (indexY >= balls.length)) {
return(undefined);
}
if ((indexX < 0) || (indexX >= balls[indexY].length)) {
return(undefined);
}
if (balls[indexY][indexX] == null) {
return(undefined);
}
_local2 = 0;
while (_local2 < types.length) {
if (balls[indexY][indexX].type != types[_local2]) {
} else {
types.splice(_local2, 1);
break;
}
_local2++;
}
}
function createNextBalls() {
var _local2;
var _local4;
var _local3;
var _local5;
_local4 = (rowSpacing * 2) / 3;
nextBalls = new Array();
_local3 = 0;
while (_local3 < 3) {
_local5 = nextBallsHolder.createMovie("Ball");
_local2 = _local5;
_local2.initialize(0);
_local2.__set__x(_local4 * Math.cos((((_local3 * Math.PI) * 2) / 3) - (Math.PI/2)));
_local2.__set__y(_local4 * Math.sin((((_local3 * Math.PI) * 2) / 3) - (Math.PI/2)));
nextBalls.push(_local2);
nextBallsHolder.addChild(_local2);
_local3++;
}
generateNextBalls();
}
function generateNextBalls() {
var _local2;
_local2 = 0;
while (_local2 < nextBalls.length) {
nextBalls[_local2].initialize(Math.floor(Math.random() * levelColours));
_local2++;
}
}
function startPlay(timerEvent) {
message.hide();
combo = 0;
startFallBalls();
}
function startFallBalls() {
createFallingBalls();
generateNextBalls();
__get__stage().addEventListener(com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_DOWN, this, "onPlayKeyDown");
__get__stage().__set__focus(stage);
lastTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onPlayTime");
timer.start();
}
function createFallingBalls() {
var _local2;
_local2 = ballsHolder.createMovie("FallingBalls");
fallingBalls = _local2;
fallingBalls.initialize(nextBalls);
fallingBalls.__set__x(((com.novelgames.flashgames.pileofballsAS2.Config.DIMENSION_X - 1) * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2);
fallingBalls.__set__y(((com.novelgames.flashgames.pileofballsAS2.Config.FIELD_TOP - ballsHolder.__get__y()) + ((rowSpacing * 2) / 3)) + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2));
ballsHolder.addChild(fallingBalls);
}
function onPlayKeyDown(keyboardEvent) {
switch (keyboardEvent.__get__keyCode()) {
case com.novelgames.flashgames.commonAS2.Keyboard.LEFT :
fallingBalls.startMove(-1);
break;
case com.novelgames.flashgames.commonAS2.Keyboard.RIGHT :
fallingBalls.startMove(1);
break;
case com.novelgames.flashgames.commonAS2.Keyboard.UP :
fallingBalls.startRotate(-1);
break;
case com.novelgames.flashgames.commonAS2.Keyboard.DOWN :
fallingBalls.startRotate(1);
break;
case com.novelgames.flashgames.commonAS2.Keyboard.SPACE :
startDrop();
}
}
function startDrop() {
timer.stop();
__get__stage().removeEventListener(com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_DOWN);
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onDropTime");
timer.start();
}
function onDropTime(timerEvent) {
var _local2 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timerEvent.updateAfterEvent();
moveFallingBalls((com.novelgames.flashgames.pileofballsAS2.Config.BALL_DROPSPEED * (_local2 - lastTime)) / 1000);
lastTime = _local2;
}
function onPlayTime(timerEvent) {
var _local2 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timerEvent.updateAfterEvent();
moveFallingBalls((levelSpeed * (_local2 - lastTime)) / 1000);
lastTime = _local2;
}
function moveFallingBalls(distance) {
var _local9;
var _local5;
var _local4;
var _local10;
var _local11;
var _local6;
var _local8;
var _local7;
var _local12;
var _local3;
var _local2;
if ((fallingBalls.rotateIndex % 2) == 0) {
_local9 = (fallingBalls.__get__y() + (rowSpacing / 3)) + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2);
_local5 = fallingBalls.indexX - 1;
_local4 = _local5 + 2;
_local3 = 0;
while (_local3 < noOfRows) {
_local2 = _local5 - 1;
while (_local2 <= (_local4 + 1)) {
if (balls[_local3][_local2] != null) {
break;
}
_local2++;
}
if (_local2 <= (_local4 + 1)) {
break;
}
_local3++;
}
_local6 = _local3;
_local8 = (((fallingBalls.indexX + _local6) + noOfRows) % 2) == 1;
} else {
_local9 = (fallingBalls.__get__y() + ((rowSpacing * 2) / 3)) + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2);
_local5 = fallingBalls.indexX;
_local4 = _local5;
_local3 = 0;
while (_local3 < noOfRows) {
_local2 = _local5 - 1;
while (_local2 <= (_local4 + 1)) {
if (balls[_local3][_local2] != null) {
break;
}
_local2++;
}
if (_local2 <= (_local4 + 1)) {
break;
}
_local3++;
}
_local10 = _local3;
_local5 = _local5 - 2;
_local4 = _local4 + 2;
_local3 = 0;
while (_local3 < noOfRows) {
if ((_local5 >= 0) && (balls[_local3][_local5] != null)) {
break;
}
if ((_local4 < balls[_local3].length) && (balls[_local3][_local4] != null)) {
break;
}
_local3++;
}
_local11 = _local3;
_local6 = Math.min(_local11 + 1, _local10);
_local8 = (((fallingBalls.indexX + _local6) + noOfRows) % 2) == 0;
}
if (_local6 == noOfRows) {
_local7 = ((noOfRows - 1) * rowSpacing) + (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2);
} else {
_local7 = (_local6 * rowSpacing) - (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2);
if (!_local8) {
_local7 = _local7 - (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE - rowSpacing);
}
}
if ((_local9 + distance) >= _local7) {
_local12 = !createFallenBalls(_local6 - 1);
fallingBalls.stopMoveRotate();
ballsHolder.removeChild(fallingBalls);
if (!_local12) {
startCollapse();
}
} else {
fallingBalls.y = fallingBalls.y + distance;
}
}
function createFallenBalls(row) {
var _local4;
var _local3 = new Array();
var _local7 = false;
var _local2;
var _local5;
_local2 = 0;
while (_local2 < fallingBalls.balls.length) {
_local5 = ballsHolder.createMovie("Ball");
_local4 = _local5;
_local4.initialize(fallingBalls.balls[_local2].type);
_local3.push(_local4);
ballsHolder.addChild(_local4);
_local2++;
}
if ((fallingBalls.rotateIndex % 2) == 0) {
_local3[(fallingBalls.balls.length - (fallingBalls.rotateIndex / 2)) % fallingBalls.balls.length].indexX = fallingBalls.indexX;
_local3[(fallingBalls.balls.length - (fallingBalls.rotateIndex / 2)) % fallingBalls.balls.length].indexY = row - 1;
_local3[((fallingBalls.balls.length - (fallingBalls.rotateIndex / 2)) + 1) % fallingBalls.balls.length].indexX = fallingBalls.indexX + 1;
_local3[((fallingBalls.balls.length - (fallingBalls.rotateIndex / 2)) + 1) % fallingBalls.balls.length].indexY = row;
_local3[((fallingBalls.balls.length - (fallingBalls.rotateIndex / 2)) + 2) % fallingBalls.balls.length].indexX = fallingBalls.indexX - 1;
_local3[((fallingBalls.balls.length - (fallingBalls.rotateIndex / 2)) + 2) % fallingBalls.balls.length].indexY = row;
} else {
_local3[(fallingBalls.balls.length - ((fallingBalls.rotateIndex - 1) / 2)) % fallingBalls.balls.length].indexX = fallingBalls.indexX + 1;
_local3[(fallingBalls.balls.length - ((fallingBalls.rotateIndex - 1) / 2)) % fallingBalls.balls.length].indexY = row - 1;
_local3[((fallingBalls.balls.length - ((fallingBalls.rotateIndex - 1) / 2)) + 1) % fallingBalls.balls.length].indexX = fallingBalls.indexX;
_local3[((fallingBalls.balls.length - ((fallingBalls.rotateIndex - 1) / 2)) + 1) % fallingBalls.balls.length].indexY = row;
_local3[((fallingBalls.balls.length - ((fallingBalls.rotateIndex - 1) / 2)) + 2) % fallingBalls.balls.length].indexX = fallingBalls.indexX - 1;
_local3[((fallingBalls.balls.length - ((fallingBalls.rotateIndex - 1) / 2)) + 2) % fallingBalls.balls.length].indexY = row - 1;
}
_local2 = 0;
while (_local2 < _local3.length) {
_local3[_local2].x = (_local3[_local2].indexX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2;
_local3[_local2].y = _local3[_local2].indexY * rowSpacing;
if ((row != (noOfRows - 1)) && ((((_local3[_local2].indexX + _local3[_local2].indexY) + noOfRows) % 2) == 0)) {
_local3[_local2].y = _local3[_local2].y - (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE - rowSpacing);
}
if (_local3[_local2].indexY < 0) {
_local7 = true;
} else {
balls[_local3[_local2].indexY][_local3[_local2].indexX] = _local3[_local2];
}
_local2++;
}
soundFall.play();
if (_local7) {
showGameOver();
return(false);
}
return(true);
}
function startCollapse() {
var _local2;
timer.stop();
__get__stage().removeEventListener(com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_DOWN);
_local2 = moveOddPositionedBalls();
if (!_local2) {
_local2 = moveUnstableBalls();
}
if (_local2) {
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onCollapseTime");
timer.start();
} else if ((!checkDestroy()) && (!checkLevelClear())) {
startFallBalls();
}
}
function moveOddPositionedBalls() {
var _local2 = new Array();
var _local3;
var _local4;
_local3 = balls.length - 1;
while (_local3 >= 0) {
_local4 = 0;
while (_local4 < balls[_local3].length) {
if (!balls[_local3][_local4]) {
} else if (!getIsOdd(_local4, _local3)) {
} else {
_local2.push(balls[_local3][_local4]);
}
_local4++;
}
_local3--;
}
if (_local2.length == 0) {
return(false);
}
if (_local2[0].indexY == _local2[1].indexY) {
if (_local2[0].indexX == 0) {
_local2[0].startMove(_local2[0].indexX + 1, _local2[0].indexY, _local2[0].indexX, _local2[0].indexY + 1, true);
_local2[1].startMove(_local2[1].indexX + 1, _local2[1].indexY, _local2[1].indexX, _local2[1].indexY + 1, true);
_local2[2].startMove(_local2[2].indexX + 1, _local2[2].indexY, _local2[2].indexX, _local2[2].indexY + 1, true);
} else if (_local2[1].indexX == (balls[_local2[1].indexY].length - 1)) {
_local2[0].startMove(_local2[0].indexX - 1, _local2[0].indexY, _local2[0].indexX, _local2[0].indexY + 1, true);
_local2[1].startMove(_local2[1].indexX - 1, _local2[1].indexY, _local2[1].indexX, _local2[1].indexY + 1, true);
_local2[2].startMove(_local2[2].indexX - 1, _local2[2].indexY, _local2[2].indexX, _local2[2].indexY + 1, true);
} else {
if (_local2[0].indexY < (noOfRows - 1)) {
if (balls[_local2[0].indexY + 1][_local2[0].indexX] == null) {
_local2[0].startMove(_local2[0].indexX, _local2[0].indexY + 1, -1, -1, false);
} else {
_local2[0].startMove(_local2[0].indexX - 1, _local2[0].indexY, _local2[0].indexX, _local2[0].indexY + 1, true);
}
} else {
_local2[0].startMove(_local2[0].indexX - 1, _local2[0].indexY, -1, -1, false);
}
if (_local2[1].indexY < (noOfRows - 1)) {
if (balls[_local2[1].indexY + 1][_local2[1].indexX] == null) {
_local2[1].startMove(_local2[1].indexX, _local2[1].indexY + 1, -1, -1, false);
} else {
_local2[1].startMove(_local2[1].indexX + 1, _local2[1].indexY, _local2[1].indexX, _local2[1].indexY + 1, true);
}
} else {
_local2[1].startMove(_local2[1].indexX + 1, _local2[1].indexY, -1, -1, false);
}
_local2[2].startMove(_local2[2].indexX, _local2[2].indexY + 1, -1, -1, false);
}
} else if (_local2[0].indexX < com.novelgames.flashgames.pileofballsAS2.Config.DIMENSION_X) {
_local2[0].startMove(_local2[0].indexX + 1, _local2[0].indexY, _local2[0].indexX, _local2[0].indexY + 1, true);
_local2[1].startMove(_local2[1].indexX, _local2[1].indexY + 1, -1, -1, false);
_local2[2].startMove(_local2[2].indexX + 1, _local2[2].indexY, _local2[2].indexX, _local2[2].indexY + 1, true);
} else {
_local2[0].startMove(_local2[0].indexX - 1, _local2[0].indexY, _local2[0].indexX, _local2[0].indexY + 1, true);
_local2[1].startMove(_local2[1].indexX - 1, _local2[1].indexY, _local2[1].indexX, _local2[1].indexY + 1, true);
_local2[2].startMove(_local2[2].indexX, _local2[2].indexY + 1, -1, -1, false);
}
_local3 = 0;
while (_local3 < _local2.length) {
balls[_local2[_local3].indexY][_local2[_local3].indexX] = null;
balls[_local2[_local3].moveToY][_local2[_local3].moveToX] = _local2[_local3];
_local2[_local3].indexX = _local2[_local3].moveToX;
_local2[_local3].indexY = _local2[_local3].moveToY;
_local3++;
}
collapsingBalls = _local2;
return(true);
}
function getIsOdd(indexX, indexY) {
return((((indexY + noOfRows) + indexX) % 2) == 0);
}
function moveUnstableBalls() {
var _local6 = new Array();
var _local3 = new Array();
var _local8;
var _local7;
var _local5;
var _local2;
var _local4;
_local5 = balls.length - 2;
while (_local5 >= 0) {
_local3 = getBallRows(_local5);
if (_local3.length == 0) {
} else {
_local2 = 0;
while (_local2 < _local3.length) {
moveBallRows(_local3[_local2]);
_local4 = 0;
while (_local4 < _local3[_local2].balls.length) {
if (_local3[_local2].balls[_local4].isMoving) {
balls[_local3[_local2].balls[_local4].indexY][_local3[_local2].balls[_local4].indexX] = null;
balls[_local3[_local2].balls[_local4].moveToY][_local3[_local2].balls[_local4].moveToX] = _local3[_local2].balls[_local4];
_local3[_local2].balls[_local4].indexX = _local3[_local2].balls[_local4].moveToX;
_local3[_local2].balls[_local4].indexY = _local3[_local2].balls[_local4].moveToY;
_local6.push(_local3[_local2].balls[_local4]);
}
_local4++;
}
_local2++;
}
}
_local5--;
}
if (_local6.length == 0) {
return(false);
}
collapsingBalls = _local6;
return(true);
}
function getBallRows(row) {
var _local4 = new Array();
var _local5 = null;
var _local6;
var _local2;
_local6 = ((((row + noOfRows) % 2) == 1) ? 0 : 1);
_local2 = _local6;
while (_local2 < balls[row].length) {
if (balls[row][_local2] == null) {
if (_local5) {
_local5 = null;
}
} else {
if ((_local2 > 0) && (balls[row + 1][_local2 - 1] == null)) {
if (!_local5) {
_local5 = new com.novelgames.flashgames.pileofballsAS2.BallRow();
_local4.push(_local5);
}
_local5.balls.push(balls[row][_local2]);
} else if ((_local2 < (balls[row + 1].length - 1)) && (balls[row + 1][_local2 + 1] == null)) {
if (!_local5) {
_local5 = new com.novelgames.flashgames.pileofballsAS2.BallRow();
_local4.push(_local5);
}
_local5.balls.push(balls[row][_local2]);
}
if ((_local2 == (balls[row + 1].length - 1)) || (balls[row + 1][_local2 + 1] != null)) {
_local5 = null;
}
}
_local2 = _local2 + 2;
}
_local2 = 0;
while (_local2 < _local4.length) {
if ((_local4[_local2].balls[0].indexX > 0) && (balls[row + 1][_local4[_local2].balls[0].indexX - 1] == null)) {
_local4[_local2].leftOpen = true;
}
if ((_local4[_local2].balls[_local4[_local2].balls.length - 1].indexX < (balls[row + 1].length - 1)) && (balls[row + 1][_local4[_local2].balls[_local4[_local2].balls.length - 1].indexX + 1] == null)) {
_local4[_local2].rightOpen = true;
}
_local2++;
}
return(_local4);
}
function moveBallRows(ballRow) {
var _local1;
if (ballRow.leftOpen && (!ballRow.rightOpen)) {
_local1 = 0;
while (_local1 < ballRow.balls.length) {
ballRow.balls[_local1].startMove(ballRow.balls[_local1].indexX - 1, ballRow.balls[_local1].indexY + 1, ballRow.balls[_local1].indexX + 1, ballRow.balls[_local1].indexY + 1, true);
_local1++;
}
} else if ((!ballRow.leftOpen) && (ballRow.rightOpen)) {
_local1 = 0;
while (_local1 < ballRow.balls.length) {
ballRow.balls[_local1].startMove(ballRow.balls[_local1].indexX + 1, ballRow.balls[_local1].indexY + 1, ballRow.balls[_local1].indexX - 1, ballRow.balls[_local1].indexY + 1, true);
_local1++;
}
} else if (ballRow.leftOpen && (ballRow.rightOpen)) {
_local1 = 0;
while (_local1 < (ballRow.balls.length / 2)) {
ballRow.balls[_local1].startMove(ballRow.balls[_local1].indexX - 1, ballRow.balls[_local1].indexY + 1, ballRow.balls[_local1].indexX + 1, ballRow.balls[_local1].indexY + 1, true);
_local1++;
}
while (_local1 < ballRow.balls.length) {
ballRow.balls[_local1].startMove(ballRow.balls[_local1].indexX + 1, ballRow.balls[_local1].indexY + 1, ballRow.balls[_local1].indexX - 1, ballRow.balls[_local1].indexY + 1, true);
_local1++;
}
} else {
_local1 = 0;
while (_local1 < Math.floor(ballRow.balls.length / 2)) {
ballRow.balls[_local1].startMove(ballRow.balls[_local1].indexX + 1, ballRow.balls[_local1].indexY + 1, ballRow.balls[_local1].indexX - 1, ballRow.balls[_local1].indexY + 1, true);
_local1++;
}
_local1++;
while (_local1 < ballRow.balls.length) {
ballRow.balls[_local1].startMove(ballRow.balls[_local1].indexX - 1, ballRow.balls[_local1].indexY + 1, ballRow.balls[_local1].indexX + 1, ballRow.balls[_local1].indexY + 1, true);
_local1++;
}
}
}
function onCollapseTime(timerEvent) {
var _local5 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local3;
var _local4;
var _local2;
timerEvent.updateAfterEvent();
if (getIsOdd(collapsingBalls[0].indexX, collapsingBalls[0].indexY)) {
_local4 = com.novelgames.flashgames.pileofballsAS2.Config.BALL_COLLAPSETIME / 2;
} else {
_local4 = com.novelgames.flashgames.pileofballsAS2.Config.BALL_COLLAPSETIME;
}
_local3 = (_local5 - startTime) / _local4;
if (_local3 > 1) {
_local3 = 1;
}
_local2 = 0;
while (_local2 < collapsingBalls.length) {
collapsingBalls[_local2].move(_local3);
_local2++;
}
if (_local3 >= 1) {
timer.stop();
soundCollapse.play();
_local2 = 0;
while (_local2 < collapsingBalls.length) {
collapsingBalls[_local2].isMoving = false;
_local2++;
}
startCollapse();
}
}
function checkDestroy() {
var _local4 = getGroups();
var _local2;
var _local3;
if (_local4.length == 0) {
combo = 0;
return(false);
}
combo++;
explodingBalls = new Array();
_local2 = 0;
while (_local2 < _local4.length) {
_local3 = 0;
while (_local3 < _local4[_local2].length) {
explodingBalls.push(_local4[_local2][_local3]);
_local3++;
}
_local2++;
}
explodingGroups = _local4;
explosions = new Array();
_local2 = 0;
while (_local2 < explodingBalls.length) {
createHighlight(explodingBalls[_local2].indexX, explodingBalls[_local2].indexY);
_local2++;
}
soundGroup.play();
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onHighlightTime");
timer.start();
return(true);
}
function getGroups() {
var _local5 = new Array();
var _local4;
var _local3;
var _local2;
_local3 = 0;
while (_local3 < balls.length) {
_local2 = 0;
while (_local2 < balls[_local3].length) {
if (!balls[_local3][_local2]) {
} else if (getBallIsInGroups(balls[_local3][_local2], _local5)) {
} else {
_local4 = getGroup(_local2, _local3);
if (_local4.length < com.novelgames.flashgames.pileofballsAS2.Config.GROUPSIZE) {
} else {
_local5.push(_local4);
}
}
_local2++;
}
_local3++;
}
return(_local5);
}
function getBallIsInGroups(ball, groups) {
var _local2;
_local2 = 0;
while (_local2 < groups.length) {
if (getBallIsInGroup(ball, groups[_local2])) {
return(true);
}
_local2++;
}
return(false);
}
function getBallIsInGroup(ball, group) {
var _local1;
_local1 = 0;
while (_local1 < group.length) {
if (ball == group[_local1]) {
return(true);
}
_local1++;
}
return(false);
}
function getGroup(x, y) {
var _local2 = [balls[y][x]];
var _local5 = balls[y][x].type;
var _local6;
_local6 = 0;
while (_local6 < _local2.length) {
x = _local2[_local6].indexX;
y = _local2[_local6].indexY;
addBallToGroup(x - 1, y - 1, _local5, _local2);
addBallToGroup(x + 1, y - 1, _local5, _local2);
addBallToGroup(x - 2, y, _local5, _local2);
addBallToGroup(x + 2, y, _local5, _local2);
addBallToGroup(x - 1, y + 1, _local5, _local2);
addBallToGroup(x + 1, y + 1, _local5, _local2);
_local6++;
}
return(_local2);
}
function addBallToGroup(x, y, type, group) {
if ((y < 0) || (y >= balls.length)) {
return(undefined);
}
if ((x < 0) || (x >= balls[y].length)) {
return(undefined);
}
if (!balls[y][x]) {
return(undefined);
}
if (balls[y][x].type != type) {
return(undefined);
}
if (getBallIsInGroup(balls[y][x], group)) {
return(undefined);
}
group.push(balls[y][x]);
}
function createHighlight(indexX, indexY) {
var _local3 = explosionsHolder.createMovie("Highlight");
var _local2 = _local3;
_local2.initialize((indexX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2, indexY * rowSpacing);
explosions.push(_local2);
explosionsHolder.addChild(_local2);
}
function onHighlightTime(timerEvent) {
var _local4 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local3 = (_local4 - startTime) / com.novelgames.flashgames.pileofballsAS2.Config.HIGHLIGHT_SHOWTIME;
var _local2;
if (_local3 > 1) {
_local3 = 1;
}
timerEvent.updateAfterEvent();
_local2 = 0;
while (_local2 < explosions.length) {
explosions[_local2].show(_local3);
_local2++;
}
if (_local3 >= 1) {
timer.stop();
_local2 = 0;
while (_local2 < explosions.length) {
explosionsHolder.removeChild(explosions[_local2]);
_local2++;
}
startExplode();
}
}
function startExplode() {
var _local5 = 0;
var _local9 = Number.MAX_VALUE;
var _local8 = Number.MAX_VALUE;
var _local7 = Number.MIN_VALUE;
var _local6 = Number.MIN_VALUE;
var _local4;
var _local3;
var _local2;
_local2 = 0;
while (_local2 < explodingGroups.length) {
_local5 = _local5 + com.novelgames.flashgames.pileofballsAS2.Config.SCORE_GROUP;
if (explodingGroups[_local2].length > com.novelgames.flashgames.pileofballsAS2.Config.GROUPSIZE) {
_local5 = _local5 + ((explodingGroups[_local2].length - com.novelgames.flashgames.pileofballsAS2.Config.GROUPSIZE) * com.novelgames.flashgames.pileofballsAS2.Config.SCORE_EXTRABALL);
}
_local2++;
}
if (explodingGroups.length > 1) {
_local5 = _local5 + ((explodingGroups.length - 1) * com.novelgames.flashgames.pileofballsAS2.Config.SCORE_EXTRAGROUP);
}
if (combo > 1) {
_local5 = _local5 + ((combo - 1) * com.novelgames.flashgames.pileofballsAS2.Config.SCORE_COMBO);
}
explosions = new Array();
_local2 = 0;
while (_local2 < explodingBalls.length) {
createExplosion(explodingBalls[_local2].indexX, explodingBalls[_local2].indexY);
_local4 = balls[explodingBalls[_local2].indexY][explodingBalls[_local2].indexX].x;
_local3 = balls[explodingBalls[_local2].indexY][explodingBalls[_local2].indexX].y;
if (_local4 < _local9) {
_local9 = _local4;
}
if (_local4 > _local7) {
_local7 = _local4;
}
if (_local3 < _local8) {
_local8 = _local3;
}
if (_local3 > _local6) {
_local6 = _local3;
}
balls[explodingBalls[_local2].indexY][explodingBalls[_local2].indexX] = null;
ballsHolder.removeChild(explodingBalls[_local2]);
_local2++;
}
createScorePopup((_local9 + _local7) / 2, (_local8 + _local6) / 2, _local5, combo);
score = score + _local5;
nextLevel = nextLevel - explodingBalls.length;
if (nextLevel < 0) {
nextLevel = (0);
}
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onExplodeTime");
timer.start();
}
function createExplosion(indexX, indexY) {
var _local3 = explosionsHolder.createMovie("Explosion");
var _local2 = _local3;
_local2.initialize((indexX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2, indexY * rowSpacing);
explosions.push(_local2);
explosionsHolder.addChild(_local2);
}
function createScorePopup(x, y, score, combo) {
var _local3 = scoresHolder.createMovie("ScorePopup");
var _local2 = _local3;
_local2.initialize(x, y, score, combo);
scoresHolder.addChild(_local2);
}
function onExplodeTime(timerEvent) {
var _local4 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local3 = (_local4 - startTime) / com.novelgames.flashgames.pileofballsAS2.Config.EXPLOSION_SHOWTIME;
var _local2;
if (_local3 > 1) {
_local3 = 1;
}
timerEvent.updateAfterEvent();
_local2 = 0;
while (_local2 < explosions.length) {
explosions[_local2].move(_local3);
_local2++;
}
if (_local3 >= 1) {
timer.stop();
_local2 = 0;
while (_local2 < explosions.length) {
explosionsHolder.removeChild(explosions[_local2]);
_local2++;
}
startCollapse();
}
}
function checkLevelClear() {
var _local3;
var _local2;
if (nextLevel > 0) {
return(false);
}
explosions = new Array();
_local3 = 0;
while (_local3 < balls.length) {
_local2 = 0;
while (_local2 < balls[_local3].length) {
if (!balls[_local3][_local2]) {
} else {
createHighlight(_local2, _local3);
}
_local2++;
}
_local3++;
}
soundGroup.play();
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onLevelClearHighlightTime");
timer.start();
return(true);
}
function onLevelClearHighlightTime(timerEvent) {
var _local4 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local3 = (_local4 - startTime) / com.novelgames.flashgames.pileofballsAS2.Config.HIGHLIGHT_SHOWTIME;
var _local2;
if (_local3 > 1) {
_local3 = 1;
}
timerEvent.updateAfterEvent();
_local2 = 0;
while (_local2 < explosions.length) {
explosions[_local2].show(_local3);
_local2++;
}
if (_local3 >= 1) {
timer.stop();
_local2 = 0;
while (_local2 < explosions.length) {
explosionsHolder.removeChild(explosions[_local2]);
_local2++;
}
startLevelClearExplode();
}
}
function startLevelClearExplode() {
var _local2;
var _local3;
score = score + com.novelgames.flashgames.pileofballsAS2.Config.SCORE_LEVEL;
explosions = new Array();
_local2 = 0;
while (_local2 < balls.length) {
_local3 = 0;
while (_local3 < balls[_local2].length) {
if (!balls[_local2][_local3]) {
} else {
createExplosion(_local3, _local2);
ballsHolder.removeChild(balls[_local2][_local3]);
balls[_local2][_local3] = null;
}
_local3++;
}
_local2++;
}
_local2 = 0;
while (_local2 < nextBalls.length) {
nextBallsHolder.removeChild(nextBalls[_local2]);
_local2++;
}
message.showLevelUp();
soundLevelClear.play();
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onLevelClearExplodeTime");
timer.start();
}
function onLevelClearExplodeTime(timerEvent) {
var _local4 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local3 = (_local4 - startTime) / com.novelgames.flashgames.pileofballsAS2.Config.EXPLOSION_SHOWTIME;
var _local2;
if (_local3 > 1) {
_local3 = 1;
}
timerEvent.updateAfterEvent();
_local2 = 0;
while (_local2 < explosions.length) {
explosions[_local2].move(_local3);
_local2++;
}
if (_local3 >= 1) {
timer.stop();
_local2 = 0;
while (_local2 < explosions.length) {
explosionsHolder.removeChild(explosions[_local2]);
_local2++;
}
timer = new com.novelgames.flashgames.commonAS2.NewTimer(com.novelgames.flashgames.pileofballsAS2.Config.MESSAGE_LEVELCLEARTIME, 1);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "startNextLevel");
timer.start();
}
}
function startNextLevel(timerEvent) {
if (showAds) {
return(undefined);
}
showAds = true;
var b = this;
MochiAd.showInterLevelAd({id:"4753f1a0633c2f57", res:"600x400", ad_finished:function () {
b.startNextLevel2(timerEvent);
b.showAds = false;
trace("inter-ads");
}});
}
function startNextLevel2(timerEvent) {
startLevel(level + 1);
}
function showGameOver() {
timer.stop();
__get__stage().removeEventListener(com.novelgames.flashgames.commonAS2.KeyboardEvent.KEY_DOWN);
nextBallsHolder.__set__visible(false);
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onGameOverTime");
timer.start();
}
function onGameOverTime(timerEvent) {
var _local7 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local4;
var _local2;
var _local6;
var _local5;
var _local3;
timerEvent.updateAfterEvent();
_local5 = 0;
while (_local5 < balls.length) {
_local4 = (_local7 - startTime) - (_local5 * com.novelgames.flashgames.pileofballsAS2.Config.GAMEOVER_DROPINTERVAL);
if (_local4 < 0) {
} else {
_local2 = (balls.length - _local5) - 1;
_local3 = 0;
while (_local3 < balls[_local2].length) {
if (!balls[_local2][_local3]) {
} else {
balls[_local2][_local3].y = (_local2 * rowSpacing) + (((com.novelgames.flashgames.pileofballsAS2.Config.GAMEOVER_DROPACCELERATION * _local4) * _local4) / 2000000);
if ((_local2 == 0) && ((balls[_local2][_local3].y - (com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE / 2)) > (com.novelgames.flashgames.pileofballsAS2.Config.FIELD_BOTTOM - ballsHolder.__get__y()))) {
_local6 = true;
}
}
_local3++;
}
}
_local5++;
}
if (_local6) {
timer.stop();
message.showGameOver();
soundGameOver.play();
startTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
timer = new com.novelgames.flashgames.commonAS2.NewTimer(com.novelgames.flashgames.pileofballsAS2.Config.MESSAGE_GAMEOVERTIME, 1);
timer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "showPlayAgain");
timer.start();
}
}
function showPlayAgain(timerEvent) {
Object(__get__parent()).showEnterHighScore(score);
message.showPlayAgain();
}
var showAds = false;
}
Symbol 152 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.FallingBalls] Frame 0
class com.novelgames.flashgames.pileofballsAS2.FallingBalls extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var balls, createMovie, addChild, indexX, rotateIndex, moveTimer, __set__x, startMoveX, x, startMoveTime, rotateTimer, startRotateIndex, startRotateTime, __get__parent;
function FallingBalls () {
super();
}
function initialize(balls) {
var _local2;
var _local4;
this.balls = new Array();
_local2 = 0;
while (_local2 < balls.length) {
_local4 = createMovie("Ball");
this.balls[_local2] = _local4;
this.balls[_local2].initialize(balls[_local2].type);
this.balls[_local2].x = balls[_local2].x;
this.balls[_local2].y = balls[_local2].y;
addChild(this.balls[_local2]);
_local2++;
}
indexX = com.novelgames.flashgames.pileofballsAS2.Config.DIMENSION_X - 1;
rotateIndex = 0;
}
function startMove(step) {
var _local2;
if (moveTimer) {
moveTimer.stop();
}
__set__x((indexX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2);
startMoveX = x;
_local2 = indexX + step;
if (_local2 < 1) {
return(undefined);
}
if (_local2 > ((com.novelgames.flashgames.pileofballsAS2.Config.DIMENSION_X * 2) - 3)) {
return(undefined);
}
indexX = _local2;
startMoveTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
moveTimer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
moveTimer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onMoveTime");
moveTimer.start();
}
function startRotate(step) {
if (rotateTimer) {
rotateTimer.stop();
}
updateRotate(rotateIndex);
startRotateIndex = rotateIndex;
rotateIndex = ((rotateIndex + step) + 6) % 6;
startRotateTime = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
rotateTimer = new com.novelgames.flashgames.commonAS2.NewTimer(1, 0);
rotateTimer.addEventListener(com.novelgames.flashgames.commonAS2.TimerEvent.TIMER, this, "onRotateTime");
rotateTimer.start();
}
function stopMoveRotate() {
if (moveTimer) {
moveTimer.stop();
}
if (rotateTimer) {
rotateTimer.stop();
}
}
function onMoveTime(timerEvent) {
var _local3 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local4 = _local3 - startMoveTime;
var _local2 = _local4 / com.novelgames.flashgames.pileofballsAS2.Config.BALL_MOVETIME;
var _local5 = (indexX * com.novelgames.flashgames.pileofballsAS2.Config.BALL_SIZE) / 2;
if (_local2 > 1) {
_local2 = 1;
}
timerEvent.updateAfterEvent();
__set__x((startMoveX * (1 - _local2)) + (_local5 * _local2));
if (_local2 >= 1) {
moveTimer.stop();
}
}
function onRotateTime(timerEvent) {
var _local3 = com.novelgames.flashgames.commonAS2.NewTimer.getTimer();
var _local4 = _local3 - startRotateTime;
var _local2 = _local4 / com.novelgames.flashgames.pileofballsAS2.Config.BALL_ROTATETIME;
if (_local2 >= 1) {
_local2 = 1;
}
timerEvent.updateAfterEvent();
if ((startRotateIndex == 5) && (rotateIndex == 0)) {
updateRotate(_local2 - 1);
} else if ((startRotateIndex == 0) && (rotateIndex == 5)) {
updateRotate(-_local2);
} else {
updateRotate((startRotateIndex * (1 - _local2)) + (rotateIndex * _local2));
}
if (_local2 >= 1) {
rotateTimer.stop();
}
}
function updateRotate(index) {
var _local3 = (((index * Math.PI) * 2) / 6) - (Math.PI/2);
var _local4 = (Object(__get__parent().parent).rowSpacing * 2) / 3;
var _local2;
_local2 = 0;
while (_local2 < balls.length) {
balls[_local2].x = _local4 * Math.cos(_local3 + (((_local2 * Math.PI) * 2) / 3));
balls[_local2].y = _local4 * Math.sin(_local3 + (((_local2 * Math.PI) * 2) / 3));
_local2++;
}
}
}
Symbol 153 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.Keyboard] Frame 0
class com.novelgames.flashgames.commonAS2.Keyboard
{
function Keyboard () {
}
static var LEFT = 37;
static var RIGHT = 39;
static var UP = 38;
static var DOWN = 40;
static var SPACE = 32;
static var BACKSPACE = 8;
static var SHIFT = 16;
static var ENTER = 13;
static var DELETE = 46;
static var NUMPAD_DECIMAL = 110;
static var NUMPAD_ENTER = 13;
}
Symbol 154 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.BallRow] Frame 0
class com.novelgames.flashgames.pileofballsAS2.BallRow extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var leftOpen, rightOpen, balls;
function BallRow () {
super();
leftOpen = false;
rightOpen = false;
balls = new Array();
}
}
Symbol 155 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.Highlight] Frame 0
class com.novelgames.flashgames.pileofballsAS2.Highlight extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var __set__x, __set__y, stop, gotoAndStop, __get__totalFrames;
function Highlight () {
super();
}
function initialize(x, y) {
__set__x(x);
__set__y(y);
(stop());// not popped
}
function show(ratio) {
(gotoAndStop(Math.floor((__get__totalFrames() * ratio) + 1)));// not popped
}
}
Symbol 156 MovieClip [__Packages.com.novelgames.flashgames.pileofballsAS2.Explosion] Frame 0
class com.novelgames.flashgames.pileofballsAS2.Explosion extends com.novelgames.flashgames.commonAS2.NewMovieClip
{
var __set__x, __set__y, __set__scaleX, __set__scaleY, __set__rotation;
function Explosion () {
super();
}
function initialize(x, y) {
__set__x(x);
__set__y(y);
}
function move(ratio) {
__set__scaleX(1 - ratio);
__set__scaleY(1 - ratio);
__set__rotation(com.novelgames.flashgames.pileofballsAS2.Config.EXPLOSION_ROTATE * ratio);
}
}
Symbol 157 MovieClip [__Packages.MochiAd] Frame 0
class MochiAd
{
function MochiAd () {
}
static function getVersion() {
return("2.1");
}
static function showPreGameAd(options) {
var _local27 = {clip:_root, ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:16747008, background:16777161, outline:13994812, ad_started:function () {
this.clip.stop();
}, ad_finished:function () {
this.clip.play();
}};
options = _parseOptions(options, _local27);
var clip = options.clip;
var _local23 = 11000;
var _local26 = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!load(options)) {
options.ad_finished();
return(undefined);
}
options.ad_started();
var mc = clip._mochiad;
mc.onUnload = function () {
options.ad_finished();
};
var _local14 = _getRes(options);
var _local4 = _local14[0];
var _local13 = _local14[1];
mc._x = _local4 * 0.5;
mc._y = _local13 * 0.5;
var chk = mc.createEmptyMovieClip("_mochiad_wait", 3);
chk._x = _local4 * -0.5;
chk._y = _local13 * -0.5;
var _local7 = chk.createEmptyMovieClip("_mochiad_bar", 4);
_local7._x = 10;
_local7._y = _local13 - 20;
var _local22 = options.color;
delete options.color;
var _local19 = options.background;
delete options.background;
var _local24 = options.outline;
delete options.outline;
var _local5 = _local7.createEmptyMovieClip("_outline", 1);
_local5.beginFill(_local19);
_local5.moveTo(0, 0);
_local5.lineTo(_local4 - 20, 0);
_local5.lineTo(_local4 - 20, 10);
_local5.lineTo(0, 10);
_local5.lineTo(0, 0);
_local5.endFill();
var _local3 = _local7.createEmptyMovieClip("_inside", 2);
_local3.beginFill(_local22);
_local3.moveTo(0, 0);
_local3.lineTo(_local4 - 20, 0);
_local3.lineTo(_local4 - 20, 10);
_local3.lineTo(0, 10);
_local3.lineTo(0, 0);
_local3.endFill();
_local3._xscale = 0;
var _local6 = _local7.createEmptyMovieClip("_outline", 3);
_local6.lineStyle(0, _local24, 100);
_local6.moveTo(0, 0);
_local6.lineTo(_local4 - 20, 0);
_local6.lineTo(_local4 - 20, 10);
_local6.lineTo(0, 10);
_local6.lineTo(0, 0);
chk.ad_msec = _local23;
chk.ad_timeout = _local26;
chk.started = getTimer();
chk.showing = false;
chk.last_pcnt = 0;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function () {
var _local2 = 100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time));
if (_local2 > 0) {
this._parent._alpha = _local2;
} else {
var _local3 = this._parent._parent;
MochiAd.unload(_local3);
delete this.onEnterFrame;
}
};
mc.lc.adLoaded = function (width, height) {
};
mc.lc.adjustProgress = function (msec) {
var _local2 = this.mc._mochiad_wait;
_local2.server_control = true;
_local2.started = getTimer();
_local2.ad_msec = msec;
};
chk.onEnterFrame = function () {
var _local6 = this._parent._parent;
var _local12 = this._parent._mochiad_ctr;
var _local5 = getTimer() - this.started;
var _local3 = false;
var _local4 = _local6.getBytesTotal();
var _local8 = _local6.getBytesLoaded();
var _local10 = (100 * _local8) / _local4;
var _local11 = (100 * _local5) / chk.ad_msec;
var _local9 = this._mochiad_bar._inside;
var _local2 = Math.min(100, Math.min(_local10 || 0, _local11));
_local2 = Math.max(this.last_pcnt, _local2);
this.last_pcnt = _local2;
_local9._xscale = _local2;
if (!chk.showing) {
var _local7 = _local12.getBytesTotal();
if ((_local7 > 0) || (typeof(_local7) == "undefined")) {
chk.showing = true;
chk.started = getTimer();
} else if (_local5 > chk.ad_timeout) {
_local3 = true;
}
}
if (_local5 > chk.ad_msec) {
_local3 = true;
}
if (((_local4 > 0) && (_local8 >= _local4)) && (_local3)) {
if (this.server_control) {
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = chk.fadeFunction;
}
}
};
}
static function showInterLevelAd(options) {
var _local13 = {clip:_root, ad_timeout:2000, fadeout_time:10, regpt:"o", method:"showTimedAd", ad_started:function () {
this.clip.stop();
}, ad_finished:function () {
this.clip.play();
}};
options = _parseOptions(options, _local13);
var clip = options.clip;
var _local10 = 11000;
var _local12 = options.ad_timeout;
delete options.ad_timeout;
var fadeout_time = options.fadeout_time;
delete options.fadeout_time;
if (!load(options)) {
options.ad_finished();
return(undefined);
}
options.ad_started();
var mc = clip._mochiad;
mc.onUnload = function () {
options.ad_finished();
};
var _local5 = _getRes(options);
var _local14 = _local5[0];
var _local11 = _local5[1];
mc._x = _local14 * 0.5;
mc._y = _local11 * 0.5;
var chk = mc.createEmptyMovieClip("_mochiad_wait", 3);
chk.ad_msec = _local10;
chk.ad_timeout = _local12;
chk.started = getTimer();
chk.showing = false;
chk.fadeout_time = fadeout_time;
chk.fadeFunction = function () {
var _local2 = 100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time));
if (_local2 > 0) {
this._parent._alpha = _local2;
} else {
var _local3 = this._parent._parent;
MochiAd.unload(_local3);
delete this.onEnterFrame;
}
};
mc.lc.adLoaded = function (width, height) {
};
mc.lc.adjustProgress = function (msec) {
var _local2 = this.mc._mochiad_wait;
_local2.server_control = true;
_local2.started = getTimer();
_local2.ad_msec = msec - 250;
};
chk.onEnterFrame = function () {
var _local5 = this._parent._mochiad_ctr;
var _local4 = getTimer() - this.started;
var _local2 = false;
if (!chk.showing) {
var _local3 = _local5.getBytesTotal();
if ((_local3 > 0) || (typeof(_local3) == "undefined")) {
chk.showing = true;
chk.started = getTimer();
} else if (_local4 > chk.ad_timeout) {
_local2 = true;
}
}
if (_local4 > chk.ad_msec) {
_local2 = true;
}
if (_local2) {
if (this.server_control) {
delete this.onEnterFrame;
} else {
this.fadeout_start = getTimer();
this.onEnterFrame = this.fadeFunction;
}
}
};
}
static function showTimedAd(options) {
showInterLevelAd(options);
}
static function showPreloaderAd(options) {
showPreGameAd(options);
}
static function _allowDomains(server) {
var _local1 = server.split("/")[2].split(":")[0];
if (System.security) {
if (System.security.allowDomain) {
System.security.allowDomain("*");
System.security.allowDomain(_local1);
}
if (System.security.allowInsecureDomain) {
System.security.allowInsecureDomain("*");
System.security.allowInsecureDomain(_local1);
}
}
return(_local1);
}
static function _loadCommunicator(options) {
var _local26 = {clip:_root, com_server:"http://x.mochiads.com/com/1/", method:"loadCommunicator", depth:10337, id:"_UNKNOWN_"};
options = _parseOptions(options, _local26);
options.swfv = options.clip.getSWFVersion() || 6;
options.mav = getVersion();
var _local18 = options.clip;
var _local20 = "_mochiad_com_" + options.id;
if (!_isNetworkAvailable()) {
return(null);
}
if (_local18[_local20]) {
return(_local18[_local20].lc);
}
var _local21 = options.com_server + options.id;
_allowDomains(_local21);
delete options.id;
delete options.com_server;
var _local25 = options.depth;
delete options.depth;
var _local17 = _local18.createEmptyMovieClip(_local20, _local25);
var _local11 = _local17.createEmptyMovieClip("_mochiad_com", 1);
for (var _local15 in options) {
_local11[_local15] = options[_local15];
}
var _local6 = new LocalConnection();
var _local16 = ["", Math.floor(new Date().getTime()), random(999999)].join("_");
_local6.mc = _local17;
_local6.name = _local16;
_local6.allowDomain = function (d) {
return(true);
};
_local6.allowInsecureDomain = _local6.allowDomain;
_local6.connect(_local16);
_local17.lc = _local6;
_local11.lc = _local16;
_local6._id = 0;
_local6._queue = [];
_local6.rpcResult = function (cb_arg) {
var _local8 = parseInt(cb_arg);
var _local4 = this._callbacks[_local8];
if (!_local4) {
return(undefined);
}
delete this._callbacks[_local8];
var _local5 = [];
var _local3 = 2;
while (_local3 < _local4.length) {
_local5.push(_local4[_local3]);
_local3++;
}
_local3 = 1;
while (_local3 < arguments.length) {
_local5.push(arguments[_local3]);
_local3++;
}
var _local6 = _local4[1];
var _local7 = _local4[0];
if (_local7 && (typeof(_local6) == "string")) {
_local6 = _local7[_local6];
}
if (_local6) {
_local6.apply(_local7, _local5);
}
};
_local6._didConnect = function (endpoint) {
this._endpoint = endpoint;
var _local4 = this._queue;
delete this._queue;
var _local5 = this.doSend;
var _local2 = 0;
while (_local2 < _local4.length) {
var _local3 = _local4[_local2];
_local5.apply(this, _local3);
_local2++;
}
};
_local6.doSend = function (args, cbobj, cbfn) {
if (this._endpoint == null) {
var _local4 = [];
var _local3 = 0;
while (_local3 < arguments.length) {
_local4.push(arguments[_local3]);
_local3++;
}
this._queue.push(_local4);
return(undefined);
}
this._id = this._id + 1;
var _local5 = this._id;
if ((cbfn === undefined) || (cbfn === null)) {
cbfn = cbobj;
}
this._callbacks[_local5] = [cbobj, cbfn];
var _local7 = new LocalConnection();
var _local9 = _local7.send(this._endpoint, "rpc", _local5, args);
};
_local6._callbacks = {};
_local6._callbacks[0] = [_local6, "_didConnect"];
_local11.st = getTimer();
_local11.loadMovie(_local21 + ".swf", "POST");
return(_local6);
}
static function fetchHighScores(options, callbackObj, callbackMethod) {
var _local1 = _loadCommunicator({id:options.id});
if (!_local1) {
return(false);
}
var _local4 = ["fetchHighScores", options];
_local1.doSend(["fetchHighScores", options], callbackObj, callbackMethod);
return(true);
}
static function sendHighScore(options, callbackObj, callbackMethod) {
var _local1 = _loadCommunicator({id:options.id});
if (!_local1) {
return(false);
}
var _local4 = ["sendHighScore", options];
_local1.doSend(["sendHighScore", options], callbackObj, callbackMethod);
return(true);
}
static function load(options) {
var _local13 = {clip:_root, server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
options = _parseOptions(options, _local13);
options.swfv = options.clip.getSWFVersion() || 6;
options.mav = getVersion();
var _local9 = options.clip;
if (!_isNetworkAvailable()) {
return(null);
}
if (_local9._mochiad_loaded) {
return(null);
}
var _local12 = options.depth;
delete options.depth;
var _local6 = _local9.createEmptyMovieClip("_mochiad", _local12);
var _local11 = _getRes(options);
options.res = (_local11[0] + "x") + _local11[1];
options.server = options.server + options.id;
delete options.id;
_local9._mochiad_loaded = true;
var _local4 = _local6.createEmptyMovieClip("_mochiad_ctr", 1);
for (var _local7 in options) {
_local4[_local7] = options[_local7];
}
var _local10 = _local4.server;
delete _local4.server;
var _local14 = _allowDomains(_local10);
_local6.onEnterFrame = function () {
if (this._mochiad_ctr._url != this._url) {
this.onEnterFrame = function () {
if (!this._mochiad_ctr) {
delete this.onEnterFrame;
MochiAd.unload(this._parent);
}
};
}
};
var _local5 = new LocalConnection();
var _local8 = ["", Math.floor(new Date().getTime()), random(999999)].join("_");
_local5.mc = _local6;
_local5.name = _local8;
_local5.hostname = _local14;
_local5.allowDomain = function (d) {
return(true);
};
_local5.allowInsecureDomain = _local5.allowDomain;
_local5.connect(_local8);
_local6.lc = _local5;
_local4.lc = _local8;
_local4.st = getTimer();
_local4.loadMovie(_local10 + ".swf", "POST");
return(_local6);
}
static function unload(clip) {
if (typeof(clip) == "undefined") {
clip = _root;
}
if (clip.clip && (clip.clip._mochiad)) {
clip = clip.clip;
}
if (!clip._mochiad) {
return(false);
}
clip._mochiad.removeMovieClip();
delete clip._mochiad_loaded;
delete clip._mochiad;
return(true);
}
static function _isNetworkAvailable() {
if (System.security) {
var _local1 = System.security;
if (_local1.sandboxType == "localWithFile") {
return(false);
}
}
return(true);
}
static function _getRes(options) {
var _local3 = options.clip.getBounds();
var _local2 = 0;
var _local1 = 0;
if (typeof(options.res) != "undefined") {
var _local4 = options.res.split("x");
_local2 = parseFloat(_local4[0]);
_local1 = parseFloat(_local4[1]);
} else {
_local2 = _local3.xMax - _local3.xMin;
_local1 = _local3.yMax - _local3.yMin;
}
if ((_local2 == 0) || (_local1 == 0)) {
_local2 = Stage.width;
_local1 = Stage.height;
}
return([_local2, _local1]);
}
static function _parseOptions(options, defaults) {
var _local4 = {};
for (var _local8 in defaults) {
_local4[_local8] = defaults[_local8];
}
if (options) {
for (var _local8 in options) {
_local4[_local8] = options[_local8];
}
}
if (_root.mochiad_options) {
var _local5 = _root.mochiad_options.split("&");
var _local2 = 0;
while (_local2 < _local5.length) {
var _local3 = _local5[_local2].split("=");
_local4[unescape(_local3[0])] = unescape(_local3[1]);
_local2++;
}
}
return(_local4);
}
}
Symbol 158 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.Title] Frame 0
class com.novelgames.flashgames.commonAS2.Title extends MovieClip
{
var startButton, highScoresButton, moreGamesButton, _parent, getURL;
function Title () {
super();
startButton.onRelease = function () {
this._parent.startButtonClicked();
};
highScoresButton.onRelease = function () {
this._parent.highScoresButtonClicked();
};
moreGamesButton.onRelease = function () {
this._parent.moreGamesButtonClicked();
};
}
function startButtonClicked() {
_parent.gotoInstructionsPage();
}
function highScoresButtonClicked() {
_parent.showHighScores();
}
function moreGamesButtonClicked() {
(getURL("http://www.novelgames.com", "_blank"));// not popped
}
}
Symbol 159 MovieClip [__Packages.com.novelgames.flashgames.commonAS2.MainDevelopment] Frame 0
class com.novelgames.flashgames.commonAS2.MainDevelopment extends MovieClip
{
var title, attachMovie, titleDepth, instructions, game, musicGame, getNextHighestDepth, onEnterFrame, stop;
function MainDevelopment () {
super();
}
static function initialize(movieClip) {
movieClip.__proto__ = com.novelgames.flashgames.commonAS2.MainDevelopment.prototype;
movieClip.onEnterFrame = movieClip.checkTitle;
}
function gotoTitlePage() {
removePage();
title = com.novelgames.flashgames.commonAS2.Title(attachMovie("Title", "title", titleDepth));
}
function gotoInstructionsPage() {
removePage();
instructions = com.novelgames.flashgames.commonAS2.Instructions(attachMovie("Instructions", "instructions", titleDepth));
instructions.initialize();
}
function gotoGamePage() {
removePage();
game = attachMovie("Game", "game", titleDepth);
musicGame = new com.novelgames.flashgames.commonAS2.NewSound(this, "musicGame");
musicGame.start(0, 2147483647);
}
function showInstructionsFromGame() {
game.pause();
game._visible = false;
instructions = com.novelgames.flashgames.commonAS2.Instructions(attachMovie("Instructions", "instructions", getNextHighestDepth()));
instructions.swapDepths(titleDepth);
instructions.initialize(true);
}
function hideInstructionsFromGame() {
instructions.swapDepths(game.getDepth());
instructions.removeMovieClip();
instructions = null;
game._visible = true;
game.unpause();
}
function showHighScores() {
trace("showHighScores()");
}
function showEnterHighScore(score) {
mochi.MochiScores.showLeaderboard({boardID:"c7bc20779e892cfe", score:score, onClose:function () {
}});
trace(("showEnterHighScore(" + score) + ")");
}
function checkTitle() {
if (!title) {
return(undefined);
}
onEnterFrame = null;
(stop());// not popped
titleDepth = title.getDepth();
}
function removePage() {
if (title) {
title.removeMovieClip();
title = null;
}
if (instructions) {
instructions.removeMovieClip();
instructions = null;
}
if (game) {
game.removeMovieClip();
game = null;
}
if (musicGame) {
musicGame.stop();
musicGame = null;
}
}
}
Symbol 122 MovieClip Frame 1
Symbol 122 MovieClip Frame 137
_root.gotoAndStop("splash2");