Frame 1
_global.numberBalls = new chainfactor.Game();
Symbol 65 Button
on (release) {
_root.attachMovie("powerUnlocker", "powerUnlocker", _root.getNextHighestDepth());
}
Symbol 71 Button
on (release) {
_global.numberBalls.setMode("basic");
_visible = false;
}
Symbol 74 Button
on (release) {
_global.numberBalls.setMode("powers");
_visible = false;
}
Symbol 77 Button
on (release) {
_global.numberBalls.setMode("survival");
_visible = false;
}
Symbol 84 MovieClip Frame 335
gotoAndPlay (1);
Symbol 99 MovieClip Frame 1
stop();
Symbol 110 Button
on (release) {
_visible = false;
_global.numberBalls.showModeChooser();
}
Symbol 111 MovieClip [powerChooser] Frame 1
#initclip 52
Object.registerClass("powerChooser", chainfactor.powers.PowerChooser);
#endinitclip
Symbol 120 MovieClip [levelClock] Frame 1
#initclip 46
Object.registerClass("levelClock", chainfactor.LevelClock);
#endinitclip
Symbol 132 Button
on (release) {
this.fadeOut();
_global.numberBalls.playAgain();
}
Symbol 136 Button
on (release) {
this.fadeOut();
_global.numberBalls.showModeChooser();
}
Symbol 138 MovieClip [saveScore] Frame 1
#initclip 47
Object.registerClass("saveScore", chainfactor.SaveScore);
#endinitclip
stop();
Symbol 162 Button
on (release) {
this.removeMovieClip();
}
Symbol 163 MovieClip [powerUnlocker] Frame 1
#initclip 48
Object.registerClass("powerUnlocker", chainfactor.PowerUnlocker);
#endinitclip
blocker.useHandCursor = false;
Symbol 172 MovieClip [erode_line_3] Frame 1
stop();
Symbol 172 MovieClip [erode_line_3] Frame 18
stop();
removeMovieClip(this);
Symbol 175 MovieClip [erode_line_2] Frame 20
stop();
removeMovieClip(this);
Symbol 178 MovieClip [erode_line_1] Frame 18
stop();
removeMovieClip(this);
Symbol 192 MovieClip [lure_anim] Frame 10
gotoAndPlay (1);
Symbol 197 MovieClip [cull_effect] Frame 1
maskee.setMask(mask);
Symbol 200 MovieClip [effect_sift] Frame 20
stop();
Symbol 203 MovieClip [score_float] Frame 45
removeMovieClip(this);
Symbol 208 MovieClip [sequence_progress_final] Frame 1
#initclip 49
Object.registerClass("sequence_progress_final", chainfactor.SequenceProgressFinal);
#endinitclip
stop();
Symbol 208 MovieClip [sequence_progress_final] Frame 95
_showNames = true;
Symbol 208 MovieClip [sequence_progress_final] Frame 148
stop();
Symbol 245 Button
on (release) {
_visible = false;
}
Symbol 246 MovieClip [customize] Frame 1
#initclip 50
Object.registerClass("customize", chainfactor.Customize);
#endinitclip
Symbol 248 MovieClip [chain_display] Frame 1
#initclip 51
Object.registerClass("chain_display", chainfactor.ChainDisplay);
#endinitclip
Symbol 254 Button
on (release) {
_global.numberBalls.showModeChooser();
}
Symbol 263 Button
on (release) {
if (!sound_x._visible) {
chainfactor.SoundManager.setVolume(0);
} else {
chainfactor.SoundManager.setVolume(100);
}
sound_x._visible = !sound_x._visible;
}
Symbol 264 Button
on (release) {
if (!music_x._visible) {
trace("do the moot");
chainfactor.SoundManager.muteMusic();
} else {
trace("the point is not mute");
chainfactor.SoundManager.unMuteMusic();
}
music_x._visible = !music_x._visible;
}
Symbol 265 MovieClip Frame 1
sound_x._visible = false;
music_x._visible = false;
Symbol 268 MovieClip [__Packages.util.StaticBroadcaster] Frame 0
class util.StaticBroadcaster
{
static var _broadcaster;
function StaticBroadcaster () {
}
static function lazyInitBroadcaster() {
if (!_broadcaster) {
_broadcaster = new AsBroadcaster();
AsBroadcaster.initialize(_broadcaster);
}
}
static function addListener(aListen) {
lazyInitBroadcaster();
_broadcaster.addListener(aListen);
}
static function removeListener(aListen) {
lazyInitBroadcaster();
_broadcaster.removeListener(aListen);
}
}
Symbol 269 MovieClip [__Packages.chainfactor.Game] Frame 0
class chainfactor.Game extends util.StaticBroadcaster
{
var mode, _mouseListener, _spawned, _bag, _lastPiece, _intervalId;
function Game () {
super();
_root.versionNumber.text = VERSION;
_root.versionNumber._visible = false;
_root.chainDisplay._alpha = 0;
util.Util.init();
util.ThinkManager.init();
setupVersionKeys();
var me = this;
var _local4 = new Object();
_local4.onDisappearDone = function (aCt) {
if (aCt >= (chainfactor.Board.WIDTH * chainfactor.Board.HEIGHT)) {
me.gameOver();
} else if (aCt > 0) {
me.spawnPiece();
} else {
me.checkForClear(aCt);
}
chainfactor.Game.__set__allowDrop(true);
};
_local4.onClearPiece = function (aMult, aX, aY, aPiece) {
me.handleClearPiece(aMult, aX, aY, aPiece);
};
_local4.onPieceAboveTop = function () {
me.handlePieceAboveTop();
};
util.StaticBroadcaster.addListener(_local4);
initBoard();
showModeChooser();
loadPowerCosts();
var _local5 = Math.floor(1 + (Math.random() * 3));
chainfactor.SoundManager.cacheMusic(("game_loop_" + _local5) + "_final.mp3");
}
function setupVersionKeys() {
var _local2 = new Object();
_local2.onMouseDown = function () {
if (((Key.getCode() == 55) && (_xmouse > 600)) && (_ymouse < 50)) {
_root.versionNumber._visible = true;
}
};
_local2.onMouseUp = function () {
_root.versionNumber._visible = false;
};
Mouse.addListener(_local2);
}
function postGameCleanup() {
chainfactor.Debug.cleanup();
_root.boardHolder.gameOver.removeMovieClip();
_root.saveScore.removeMovieClip();
clearMouseListener();
}
function showModeChooser() {
util.StaticBroadcaster._broadcaster.broadcastMessage("onGameOver");
_gameOver = true;
postGameCleanup();
chainfactor.SoundManager.stopMusic();
_root.attachMovie("modeChooser", "modeChooser", 999);
_root.modeChooser._x = 160;
_root.modeChooser._y = 222;
_root.attachMovie("sequence_progress_final", "sequenceProgress", 9999);
}
function playAgain() {
trace("playing again");
postGameCleanup();
setMode(mode, true);
}
function setMode(aMode, aPlayAgain) {
trace("setting mode to: " + aMode);
_root.sequenceProgress.removeMovieClip();
switch (aMode) {
case "basic" :
mode = "basic";
STARTING_PIECES = 15;
chainfactor.Piece.GRAY_CHANCE = 0.3;
chainfactor.LevelManager.EVENTS_PER_LEVEL = 30;
chainfactor.LevelManager.LEVEL_BONUS = 5000;
chainfactor.powers.PowerManager.clearInventory();
init();
break;
case "powers" :
mode = "powers";
STARTING_PIECES = 15;
chainfactor.Piece.GRAY_CHANCE = 0.3;
chainfactor.LevelManager.EVENTS_PER_LEVEL = 20;
chainfactor.LevelManager.LEVEL_BONUS = 5000;
if (!aPlayAgain) {
_root.choosePowers._visible = true;
chainfactor.powers.PowerManager.init();
chainfactor.powers.PowerManager.REDUCE_MANA_RATE = false;
var _local3 = _root.attachMovie("powerChooser", "powerChooser", 9999);
_local3.maxPowers = 3;
} else {
init();
chainfactor.powers.PowerManager.init();
chainfactor.powers.PowerManager.resetPowers();
chainfactor.powers.PowerManager.displayPowerButtons();
}
break;
case "survival" :
mode = "survival";
STARTING_PIECES = 15;
chainfactor.Piece.GRAY_CHANCE = 0;
chainfactor.LevelManager.EVENTS_PER_LEVEL = 5;
chainfactor.LevelManager.MIN_EVENTS_PER_LEVEL = 5;
chainfactor.LevelManager.LEVEL_BONUS = 10000;
if (!aPlayAgain) {
chainfactor.powers.PowerManager.init();
_root.choosePowers._visible = true;
chainfactor.powers.PowerManager.REDUCE_MANA_RATE = true;
var _local3 = _root.attachMovie("powerChooser", "powerChooser", 9999);
_local3.maxPowers = 1;
} else {
init();
chainfactor.powers.PowerManager.init();
chainfactor.powers.PowerManager.resetPowers();
chainfactor.powers.PowerManager.displayPowerButtons();
}
}
displayHighScore(aMode);
}
function clearMouseListener() {
_mouseListener.onMouseMove = null;
_mouseListener.onMouseUp = null;
delete _mouseListener;
}
function initBoard() {
_root.boardHolder.removeMovieClip();
_root.createEmptyMovieClip("boardHolder", 10);
chainfactor.Board.init();
chainfactor.Board.drawGrid(_root.boardHolder);
_root.boardHolder._x = 134;
_root.boardHolder._y = 97;
}
function init() {
_root.debug.htmlText = "";
_gameOver = false;
_root.boardHolder.gameOver.removeMovieClip();
_score = 0;
_root.score.text = 0;
_dropped = 0;
_broken = 0;
_longestChain = 0;
_root.longest.text = "LONGEST CHAIN: 0";
_spawned = null;
_pieceUnspawned = false;
_root.chainDisplay._alpha = 0;
clearMouseListener();
scoringStarted = false;
initBoard();
chainfactor.LevelManager.initBehavior(chainfactor.AddGarbage);
_boardInitCount = 0;
chainfactor.Board.populateBoard(STARTING_PIECES);
chainfactor.Stats.send();
spawnPiece();
allowDrop = (true);
chainfactor.SoundManager.init();
chainfactor.SoundManager.playRandomTrack();
emptyBag();
}
function fillBag(aAry) {
if (_bag && (_bag.length > 0)) {
_bag = _bag.concat(aAry);
var _local2 = chainfactor.powers.PScoreballs.MAX_BAG;
if (_bag.length > _local2) {
_bag.splice(_local2 - 1, _bag.length - _local2);
}
} else {
_bag = aAry;
_spawned.destroy();
_spawned = null;
_mouseListener.onMouseMove = null;
_mouseListener.onMouseUp = null;
delete _mouseListener;
makeDropPiece();
}
displayBag();
}
function emptyBag() {
_root.boardHolder.bagHolder.removeMovieClip();
_bag = new Array();
}
function displayBag() {
_root.boardHolder.bagHolder.removeMovieClip();
if (_bag.length > 0) {
var _local7 = _root.boardHolder.createEmptyMovieClip("bagHolder", _root.boardHolder.getNextHighestDepth());
_local7._x = (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) + 12;
_local7._y = -60;
var _local3 = 0;
while (_local3 < chainfactor.powers.PScoreballs.MAX_BAG) {
var _local4 = _local7.createEmptyMovieClip("ball_" + _local3, _local3);
if (_bag[_local3]) {
_local4.beginFill(chainfactor.Piece.COLORS[_bag[_local3].amount], 100);
util.Util.drawCircle(_local4, 0, 0, 6);
_local4._x = (_bag.length - _local3) * -15;
var _local5 = _local4.createTextField("amount", 1, -6, -6, 12, 12);
var _local6 = new TextFormat();
_local6.size = 8;
_local6.color = 16777215 /* 0xFFFFFF */;
_local6.font = "04b03";
_local5.text = _bag[_local3].amount;
_local5.embedFonts = true;
_local5.selectable = false;
_local5.autoSize = "center";
_local5.setTextFormat(_local6);
} else if (_local3 > _bag.length) {
_local4.lineStyle(1, 0);
util.Util.drawCircle(_local4, 0, 0, 6);
_local4._x = _local3 * -15;
}
_local3++;
}
}
}
function addPoints(aS) {
if (scoringStarted) {
_score = _score + aS;
_root.score.text = util.Util.addCommas(_score);
if (_score > _highScore) {
_root.highScore.htmlText = ("<b>" + util.Util.addCommas(_score)) + "</b>";
_highScore = _score;
}
}
}
function handleClearPiece(aMult, aX, aY, aPiece) {
var _local3 = BASE_POINTS * Math.pow(aMult, BASE_CHAIN);
_local3 = Math.round(_local3);
addPoints(_local3);
if (aMult > _longestChain) {
_root.longest.text = "LONGEST CHAIN: " + aMult;
_longestChain = aMult;
}
if (scoringStarted) {
_root.broken.text = "Broken: " + (++_broken);
chainfactor.Board.showAward(_local3, aX, aY, aPiece);
_pieceCleared = true;
if (aMult > 1) {
chainfactor.powers.PowerManager.addMana();
}
}
}
function getNewPiece() {
var _local2;
if (_bag.length > 0) {
_local2 = _bag.shift();
} else {
_local2 = new chainfactor.Piece();
var _local3 = 0;
while ((_local3 < CONSECUTIVE_FIX_MAX_TRIES) && ((_lastPiece.isGray && (_local2.isGray)) || (_lastPiece.amount == _local2.amount))) {
_local2 = new chainfactor.Piece();
_local3++;
}
}
displayBag();
_lastPiece = _local2;
return(_local2);
}
function makeDropPiece() {
trace("MAKING A DROP PIECE!!!!");
if (!_gameOver) {
var p;
if (!_pieceUnspawned) {
p = getNewPiece();
p.draw(_root.boardHolder);
} else {
trace("making a drop piece");
showSpawn();
p = _spawned;
_pieceUnspawned = false;
}
_spawned = p;
p.__set__y(-1);
p.__set__x(Math.min(chainfactor.Board.WIDTH - 1, Math.max(0, Math.floor(_root.boardHolder._xmouse / chainfactor.Board.GRIDSIZE))));
var me = this;
_mouseListener = new Object();
_mouseListener.onMouseMove = function () {
var _local2 = Math.min(chainfactor.Board.WIDTH - 1, Math.max(0, Math.floor(_root.boardHolder._xmouse / chainfactor.Board.GRIDSIZE)));
p.__set__x(_local2);
updateAfterEvent();
};
_mouseListener.onMouseUp = function () {
if (((_root.boardHolder._xmouse > 0) && (_root.boardHolder._xmouse < (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE))) && (chainfactor.Game.__get__allowDrop())) {
me.dropPiece(p, p.__get__x(), 0);
}
};
Mouse.addListener(_mouseListener);
}
}
function spawnPiece() {
if (((!_spawned) || (_pieceUnspawned)) && (!_gameOver)) {
var _local2 = true;
if (_pieceUnspawned) {
_local2 = false;
}
makeDropPiece();
if (!scoringStarted) {
allowDrop = (true);
scoringStarted = true;
chainfactor.Board.resetMultiplier();
} else {
if (_local2) {
_dropped++;
util.StaticBroadcaster._broadcaster.broadcastMessage("onSpawnPiece", _dropped);
}
_pieceCleared = false;
}
}
clearInterval(_intervalId);
}
function resetDropped(aNew) {
_dropped = aNew;
}
function dropPiece(aPiece, aX, aY) {
if (chainfactor.Board.getColumnSize(aX) != chainfactor.Board.HEIGHT) {
_mouseListener.onMouseMove = null;
_mouseListener.onMouseUp = null;
delete _mouseListener;
_spawned.mc.removeMovieClip();
_spawned = null;
chainfactor.Board.resetMultiplier();
chainfactor.Board.addPieceAt(aPiece, aX, 0);
chainfactor.Board.startFalling(true);
util.StaticBroadcaster._broadcaster.broadcastMessage("onPieceDropped", aPiece, aX, aY);
}
}
function unspawnPiece() {
clearMouseListener();
hideSpawn();
_pieceUnspawned = true;
}
function checkForClear(aCt) {
if (aCt == 0) {
clearBonus();
}
_intervalId = setInterval(this, "spawnPiece", 1000);
}
function clearBonus() {
var _local4 = _root.boardHolder.createEmptyMovieClip("clearBonus", _root.boardHolder.getNextHighestDepth());
var _local3 = _local4.createTextField("txt", 1, 0, 0, (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2, 200);
var _local5 = new TextFormat();
_local5.size = 28;
_local5.color = 0;
_local5.font = "Eurostile";
_local3.text = "CLEAR BONUS: " + CLEAR_BONUS;
_local3.textColor = 6710886 /* 0x666666 */;
_local3.embedFonts = true;
_local3.selectable = false;
_local3.autoSize = "center";
_local3.setTextFormat(_local5);
addPoints(CLEAR_BONUS);
_local4._x = ((chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2) - 75;
var _local7 = new mx.transitions.Tween(_local4, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 2, true);
var _local6 = new mx.transitions.Tween(_local4, "_y", mx.transitions.easing.None.easeNone, (chainfactor.Board.HEIGHT * chainfactor.Board.GRIDSIZE) / 2, 0, 2, true);
}
function handlePieceAboveTop(aPiece) {
gameOver();
}
function gameOver() {
util.StaticBroadcaster._broadcaster.broadcastMessage("onGameOver");
clearMouseListener();
chainfactor.SoundManager.stopMusic();
unspawnPiece();
_gameOver = true;
_allowDrop = false;
chainfactor.HighScoreManager.saveScore(_score, mode);
var mc = _root.boardHolder.attachMovie("gameOver", "gameOver", _root.boardHolder.getNextHighestDepth());
mc._x = 63;
mc.back._xscale = 0;
mc.back._yscale = 0;
mc.button_submit._visible = false;
mc.button_submit.onRelease = function () {
mc._visible = false;
var _local2 = _root.attachMovie("saveScore", "saveScore", _root.getNextHighestDepth());
_local2._x = 290;
_local2._y = 254;
};
var _local8 = new mx.transitions.Tween(mc, "_alpha", mx.transitions.easing.None.easeNone, 0, 100, 1, true);
var _local5 = new mx.transitions.Tween(mc, "_y", mx.transitions.easing.None.easeNone, 0, -25 + ((chainfactor.Board.HEIGHT * chainfactor.Board.GRIDSIZE) / 2), 2, true);
_local5.onMotionFinished = function () {
var _local2 = new mx.transitions.Tween(mc.back, "_width", mx.transitions.easing.Regular.easeIn, 0, 234, 0.75, true);
var _local1 = new mx.transitions.Tween(mc.back, "_height", mx.transitions.easing.Regular.easeIn, 0, 98, 0.75, true);
_local1.onMotionFinished = function () {
mc.button_submit._visible = true;
chainfactor.Debug.save();
};
};
var _local6 = Math.floor(Math.random() * 2) + 1;
chainfactor.SoundManager.stopMusic();
chainfactor.SoundManager.playSound("gameOver_" + _local6, 100);
}
function loadPowerCosts() {
var me = this;
var _local2 = new XML();
_local2.ignoreWhite = true;
_local2.onLoad = function () {
me.parsePowerCosts(this);
};
_local2.load("power_costs.xml?r=" + Math.random());
}
function parsePowerCosts(aXML) {
chainfactor.powers.Power.COSTS = new Array();
var _local1 = 0;
while (_local1 < aXML.firstChild.childNodes.length) {
var _local2 = aXML.firstChild.childNodes[_local1];
chainfactor.powers.Power.COSTS[parseInt(_local2.attributes.id)] = parseFloat(_local2.attributes.cost);
_local1++;
}
}
static function get allowDrop() {
return(_allowDrop);
}
static function set allowDrop(aD) {
_allowDrop = aD;
if (_gameOver) {
_allowDrop = false;
}
//return(allowDrop);
}
function hideSpawn() {
_spawned.mc._visible = false;
}
function showSpawn() {
_spawned.mc._visible = true;
}
function displayHighScore(aMode) {
_highScore = chainfactor.HighScoreManager.getScore(aMode);
if (!_highScore) {
_highScore = 0;
}
_root.highScore.htmlText = ("<b>" + util.Util.addCommas(_highScore)) + "</b>";
}
function get score() {
return(_score);
}
static var VERSION = "r151";
static var STARTING_PIECES = 25;
static var BASE_POINTS = 10;
static var BASE_CHAIN = Math.E;
static var COUNT_ALL_DROPS = 1;
static var CONSECUTIVE_FIX_MAX_TRIES = 1;
static var CLEAR_BONUS = 50000;
var scoringStarted = false;
var _score = 0;
var _highScore = 0;
var _longestChain = 0;
var _dropped = 0;
var _broken = 0;
var _boardInitCount = 0;
var _pieceCleared = false;
var _pieceUnspawned = false;
static var _gameOver = false;
static var _allowDrop = false;
}
Symbol 270 MovieClip [__Packages.chainfactor.Board] Frame 0
class chainfactor.Board extends util.StaticBroadcaster
{
static var _instance, _board, _piecesToMove, _moveSteps, _movedSomething, _holder, mc, back;
function Board () {
super();
}
static function get instance() {
if (!_instance) {
_instance = new chainfactor.Board();
}
return(_instance);
}
static function init() {
_board = new Array();
var _local1 = 0;
while (_local1 < WIDTH) {
_board[_local1] = new Array();
_local1++;
}
_piecesToMove = new Array();
}
function think(aCt) {
if ((_piecesToMove.length > 0) && (_currentMoveStep < _moveSteps)) {
slidePieces();
} else if (!fallPieces()) {
util.ThinkManager.removeThinker(instance);
_multiplier++;
findToDisappear();
if (_moveSteps == MOVE_STEPS_FAST) {
}
_moveSteps = MOVE_STEPS_NORMAL;
}
}
static function startFalling(isFast) {
chainfactor.Game.__set__allowDrop(false);
util.ThinkManager.registerThinker(instance);
_currentMoveStep = 0;
if (isFast) {
_moveSteps = MOVE_STEPS_FAST;
} else {
_moveSteps = MOVE_STEPS_NORMAL;
}
}
static function fallPieces() {
var _local4 = false;
var _local3 = 0;
while (_local3 < WIDTH) {
var _local1 = HEIGHT - 2;
while (_local1 >= 0) {
var _local2 = _board[_local3][_local1];
if (_local2 && (!_board[_local3][_local1 + 1])) {
movePiece(_local2, _local3, _local1, _local3, _local1 + 1);
_local2.mc._y = (_local2.y - 1) * GRIDSIZE;
_piecesToMove.push(_local2);
_local4 = true;
}
_local1--;
}
_local3++;
}
if (_movedSomething && (!_local4)) {
chainfactor.SoundManager.playSound("sound_fall", 50);
}
_movedSomething = false;
if (_local4) {
slidePieces();
}
return(_local4);
}
static function slidePieces() {
_movedSomething = true;
_currentMoveStep++;
var _local1 = 0;
while (_local1 < _piecesToMove.length) {
var _local2 = _piecesToMove[_local1];
_local2.mc._y = (((_local2.y - 1) + (_currentMoveStep / _moveSteps)) * GRIDSIZE) + (GRIDSIZE / 2);
_local1++;
}
if (_currentMoveStep >= _moveSteps) {
_currentMoveStep = 0;
_piecesToMove = new Array();
}
}
static function drawGrid(aHolder) {
var _local2 = aHolder.createEmptyMovieClip("boardOuter", aHolder.getNextHighestDepth());
_local2._x = WIDTH * (GRIDSIZE / 2);
_local2._y = HEIGHT * (GRIDSIZE / 2);
var _local3 = _local2.createEmptyMovieClip("back", 1);
var _local1 = _local2.createEmptyMovieClip("inner", 3);
_local1._x = (-WIDTH) * (GRIDSIZE / 2);
_local1._y = (-HEIGHT) * (GRIDSIZE / 2);
_local3._x = _local1._x;
_local3._y = _local1._y;
_holder = _local1;
mc = _holder;
back = _local3;
var _local5 = _holder.attachMovie("gridBack", "grid", _holder.getNextHighestDepth());
}
static function findGroups() {
var _local2 = 0;
while (_local2 < WIDTH) {
var _local1 = new chainfactor.Group();
var _local3 = HEIGHT - 1;
while (_local3 >= 0) {
var _local4 = _board[_local2][_local3];
if (_board[_local2][_local3]) {
_local1.addPiece(_board[_local2][_local3]);
_local1.size++;
_local4.vGroup = _local1;
_local1.x = _local2;
_local1.y = _local3;
} else {
break;
}
_local3--;
}
_local2++;
}
var _local3 = 0;
while (_local3 < HEIGHT) {
var _local1 = new chainfactor.Group();
_local2 = 0;
while (_local2 < WIDTH) {
var _local4 = _board[_local2][_local3];
if (_board[_local2][_local3]) {
if (_local1 == null) {
_local1 = new chainfactor.Group();
}
_local1.addPiece(_board[_local2][_local3]);
_local1.size++;
_local4.hGroup = _local1;
if (_local1.x == null) {
_local1.x = _local2;
_local1.y = _local3;
}
} else {
_local1.destroy();
_local1 = null;
}
_local2++;
}
_local3++;
}
}
static function findToDisappear(aInvis) {
var _local5 = false;
chainfactor.Game.__set__allowDrop(false);
findGroups();
var _local8 = 0;
var _local6 = 0;
var _local7 = new Array();
var _local4 = 0;
while (_local4 < HEIGHT) {
var _local3 = 0;
while (_local3 < WIDTH) {
if (_board[_local3][_local4]) {
var _local2 = _board[_local3][_local4];
_local2.fixInvis();
_local6++;
if ((!_local2.isGray) && ((_local2.amount == _local2.hGroup.size) || (_local2.amount == _local2.vGroup.size))) {
_local5 = true;
_local2.disappear(_multiplier);
_local8++;
if (_local2.amount == _local2.hGroup.size) {
_local2.hGroup.hilite("h", _holder._parent.back);
}
if (_local2.amount == _local2.vGroup.size) {
_local2.vGroup.hilite("v", _holder._parent.back);
}
_local7.push(_local2);
}
}
_local3++;
}
_local4++;
}
if (!_local5) {
doDisappearDone(_local6);
} else {
_global.setTimeout(removePiecesSynced, chainfactor.Piece.DISAPPEAR_TIME * 1000, _local7);
}
return(_local5);
}
static function doDisappearDone(aCount) {
util.StaticBroadcaster._broadcaster.broadcastMessage("onDisappearDone", aCount);
clearAllHilites();
}
static function disappearPieces(aPieces) {
var _local2 = 0;
while (_local2 < aPieces.length) {
aPieces[_local2].disappear();
_local2++;
}
_global.setTimeout(removePiecesSynced, chainfactor.Piece.DISAPPEAR_TIME * 1000, aPieces);
}
static function removePiecesSynced(aPieces) {
var _local1 = 0;
while (_local1 < aPieces.length) {
removeSinglePiece(aPieces[_local1]);
_local1++;
}
startFalling();
}
static function handlePieceAboveTop(aPiece) {
util.StaticBroadcaster._broadcaster.broadcastMessage("onPieceAboveTop", aPiece);
}
static function removeSinglePiece(aPiece) {
var _local3 = aPiece.__get__x();
var _local2 = aPiece.__get__y();
_board[aPiece.__get__x() - 1][aPiece.__get__y()].thaw();
_board[aPiece.__get__x() + 1][aPiece.__get__y()].thaw();
_board[aPiece.__get__x()][aPiece.__get__y() - 1].thaw();
_board[aPiece.__get__x()][aPiece.__get__y() + 1].thaw();
_board[aPiece.__get__x()][aPiece.__get__y()] = null;
aPiece.destroy();
util.StaticBroadcaster._broadcaster.broadcastMessage("onClearPiece", _multiplier, _local3, _local2, aPiece);
}
static function testPopulate() {
var _local5 = new Array();
_local5.push([0, 0, 0, 0, 0, 0, 0]);
_local5.push([0, 0, 0, 0, 0, 0, 0]);
_local5.push([0, 0, 0, 0, 0, 0, 0]);
_local5.push([0, 0, 0, 0, 0, 0, 0]);
_local5.push([0, 0, 0, 0, 0, 0, 0]);
_local5.push([0, 0, 0, 0, 0, 0, 0]);
_local5.push([4, 7, 3, 3, 2, 0, 0]);
var _local4 = 0;
while (_local4 < HEIGHT) {
var _local1 = 0;
while (_local1 < WIDTH) {
var _local2 = new chainfactor.Piece();
_local2.isGray = false;
var _local3 = _local5[_local4][_local1];
if (_local3 > 0) {
_local2.amount = _local3;
addPieceAt(_local2, _local1, _local4);
}
_local1++;
}
_local4++;
}
}
static function franksPopulate() {
var _local3 = HEIGHT - 1;
while (_local3 >= 0) {
var _local1 = 0;
while (_local1 < WIDTH) {
var _local2 = new chainfactor.Piece();
_local2.isGray = false;
_local2.amount = _local1 + 1;
if (_local3 > ((WIDTH - _local1) - 1)) {
addPieceAt(_local2, _local1, _local3);
}
_local1++;
}
_local3--;
}
}
static function populateBoard(aMax) {
var _local6 = 0;
var _local5 = 0;
while ((_local5 < aMax) && (_local6 < 100)) {
var _local2 = Math.floor(Math.random() * WIDTH);
var _local1 = HEIGHT;
do {
_local1--;
} while (_board[_local2][_local1] && (_local1 > 1));
var _local3 = new chainfactor.Piece();
addPieceAt(_local3, _local2, _local1);
findGroups();
var _local4 = getAnyDisappeared();
if (!_local4) {
_local5++;
} else {
_local3.destroy();
_board[_local2][_local1] = null;
}
_local6++;
}
}
static function getAnyDisappeared() {
var _local3 = 0;
while (_local3 < HEIGHT) {
var _local2 = 0;
while (_local2 < WIDTH) {
if (_board[_local2][_local3]) {
var _local1 = _board[_local2][_local3];
if ((!_local1.isGray) && ((_local1.amount == _local1.hGroup.size) || (_local1.amount == _local1.vGroup.size))) {
return(true);
}
}
_local2++;
}
_local3++;
}
return(false);
}
static function showAward(award, aX, aY, aPiece) {
var _local2 = _holder.getNextHighestDepth();
var _local1 = _holder.attachMovie("score_float", "award_" + _local2, _local2);
_local1._x = (aX * GRIDSIZE) + (GRIDSIZE / 2);
_local1._y = (aY * GRIDSIZE) + (GRIDSIZE / 2);
var _local3 = chainfactor.Piece.COLORS[aPiece.amount].toString(16);
_local1.inner.txt.htmlText = ((("<font color='#" + _local3) + "'><b>+") + award) + "</b></font>";
}
static function clearAll() {
var _local2 = 0;
while (_local2 < WIDTH) {
var _local1 = 0;
while (_local1 < HEIGHT) {
_board[_local2][_local1].destroy();
_local1++;
}
_board[_local2] = new Array();
_local2++;
}
}
static function pieceCount() {
var _local3 = 0;
var _local2 = 0;
while (_local2 < WIDTH) {
var _local1 = 0;
while (_local1 < HEIGHT) {
if (_board[_local2][_local1]) {
_local3++;
}
_local1++;
}
_local2++;
}
return(_local3);
}
static function resetMultiplier() {
_multiplier = 0;
}
static function defaultMultiplier() {
_multiplier = 1;
}
static function movePiece(aPiece, aFromX, aFromY, aToX, aToY) {
_board[aFromX][aFromY] = null;
if (_board[aToX][aToY] != null) {
trace((("***MOVING TO UN-NULL GRID! " + aToX) + ", ") + aToY);
_board[aToX][aToY].destroy();
}
_board[aToX][aToY] = aPiece;
aPiece.__set__x(aToX);
aPiece.__set__y(aToY);
}
static function addPieceAt(aPiece, aX, aY) {
var _local4 = new Object();
_local4.onAboveTop = function (aPiece) {
chainfactor.Board.handlePieceAboveTop(aPiece);
};
aPiece.addListener(_local4);
if (_board[aX][aY] != null) {
trace((((("***TRYING TO ADD A PIECE AT " + aX) + ",") + aY) + " BUT SOMEONE LIVES THERE: ") + _board[aX][aY]);
}
_board[aX][aY] = aPiece;
aPiece.draw(_holder);
aPiece.__set__x(aX);
aPiece.__set__y(aY);
}
static function getColumnSize(aCol) {
var _local2 = 0;
var _local1 = 0;
while (_local1 < HEIGHT) {
if (_board[aCol][_local1]) {
_local2++;
}
_local1++;
}
return(_local2);
}
static function getRowSize(aRow) {
var _local2 = 0;
var _local1 = 0;
while (_local1 < WIDTH) {
if (_board[_local1][aRow]) {
_local2++;
}
_local1++;
}
return(_local2);
}
static function getColumnSum(aCol) {
var _local4 = 0;
var _local1 = 0;
while (_local1 < HEIGHT) {
var _local2 = _board[aCol][_local1];
if (_local2 && (!_local2.isGray)) {
_local4 = _local4 + _board[aCol][_local1].amount;
}
_local1++;
}
return(_local4);
}
static function getPieceAt(aCol, aRow) {
return(_board[aCol][aRow]);
}
static function getEmptyRow(aCol) {
var _local1 = _board[aCol].length - 1;
while (_local1 >= 0) {
if (!_board[aCol][_local1]) {
return(_local1);
}
_local1--;
}
}
static function get grid() {
return(_board);
}
static function addGarbageRow() {
var _local5 = false;
var _local4 = 0;
while (_local4 < WIDTH) {
var _local1 = 0;
while (_local1 < HEIGHT) {
var _local3 = getPieceAt(_local4, _local1);
if (_local3) {
var _local2 = _local1 - 1;
movePiece(_local3, _local4, _local1, _local4, _local2);
if (_local1 == 0) {
trace((("col " + _local4) + ": ") + _local2);
}
if (_local2 < 0) {
_local5 = true;
}
}
_local1++;
}
_local4++;
}
_local4 = 0;
while (_local4 < WIDTH) {
addPieceAt(new chainfactor.Piece(true), _local4, HEIGHT - 1);
_local4++;
}
if (_local5) {
util.StaticBroadcaster._broadcaster.broadcastMessage("onPieceAboveTop");
} else {
findToDisappear();
}
}
static function clearAllHilites() {
for (var _local1 in _holder._parent.back) {
if (_local1.indexOf("hilite_") > -1) {
_holder._parent.back[_local1].removeMovieClip();
}
}
}
static var WIDTH = 7;
static var HEIGHT = 7;
static var GRIDSIZE = 45;
static var HASHSIZE = 6;
static var MOVE_STEPS_NORMAL = 3;
static var MOVE_STEPS_FAST = 2;
static var _multiplier = 0;
static var _currentMoveStep = 0;
}
Symbol 271 MovieClip [__Packages.util.ThinkManager] Frame 0
class util.ThinkManager
{
static var _pause, thinkers, _thinkCount;
function ThinkManager () {
}
static function set pause(aVal) {
_pause = aVal;
//return(pause);
}
static function get pause() {
return(_pause);
}
static function init() {
thinkers = new Array();
_thinkCount = 0;
_root.createEmptyMovieClip("thinker", 1000);
_root.thinker.onEnterFrame = function () {
util.ThinkManager.think();
};
}
static function think() {
if (!_pause) {
var _local2 = null;
var _local1 = 0;
while (_local1 < thinkers.length) {
if (thinkers[_local1] == null) {
_local2 = thinkers[_local1];
}
thinkers[_local1].think(_thinkCount);
_local1++;
}
if (_local2 != null) {
removeThinker(_local2);
}
_thinkCount++;
}
}
static function registerThinker(aObject) {
var _local2 = false;
var _local1 = 0;
while (_local1 < thinkers.length) {
if (thinkers[_local1] == aObject) {
_local2 = true;
break;
}
_local1++;
}
if (!_local2) {
thinkers.push(aObject);
}
}
static function removeThinker(aObject) {
var _local1 = 0;
while (_local1 < thinkers.length) {
if (thinkers[_local1] == aObject) {
thinkers.splice(_local1, 1);
break;
}
_local1++;
}
}
}
Symbol 272 MovieClip [__Packages.chainfactor.SoundManager] Frame 0
class chainfactor.SoundManager
{
static var musicTracks, _sounds, _sound;
function SoundManager () {
}
static function init() {
if (!getSoundPref()) {
setVolume(0);
_root.soundControls.sound_x._visible = true;
}
if (!getMusicPref()) {
_root.soundControls.music_x._visible = true;
}
}
static function cacheMusic(aFile) {
if (getMusicPref()) {
if (!musicTracks) {
musicTracks = new Array();
}
var _local3 = _root.createEmptyMovieClip("music_" + musicTracks.length, _root.getNextHighestDepth());
musicTracks[aFile] = new Sound(_local3);
musicTracks[aFile].loadSound(MUSIC_URL + aFile, true);
musicTracks[aFile].stop();
trackCount++;
}
}
static function getSoundPref() {
var _local1 = SharedObject.getLocal("sound");
if (_local1.data.playSound == undefined) {
return(true);
}
return(Boolean(_local1.data.playSound));
}
static function setSoundPref(aP) {
trace("setting sound pref: " + aP);
var _local1 = SharedObject.getLocal("sound");
_local1.data.playSound = aP;
_local1.flush();
}
static function getMusicPref() {
var _local1 = SharedObject.getLocal("sound");
if (_local1.data.playMusic == undefined) {
return(true);
}
return(Boolean(_local1.data.playMusic));
}
static function setMusicPref(aP) {
var _local1 = SharedObject.getLocal("sound");
_local1.data.playMusic = aP;
_local1.flush();
}
static function playMusic(aFile) {
if (getMusicPref()) {
musicTracks[aFile].onSoundComplete = function () {
this.start();
};
musicTracks[aFile].start();
}
}
static function playRandomTrack() {
var _local2 = Math.floor(Math.random() * trackCount);
var _local1 = 0;
for (var _local3 in musicTracks) {
if (_local1 == _local2) {
playMusic(_local3);
break;
}
_local1++;
}
}
static function stopMusic() {
for (var _local1 in musicTracks) {
musicTracks[_local1].stop();
delete musicTracks[_local1].onSoundComplete;
}
}
static function muteMusic() {
setMusicPref(false);
for (var _local1 in musicTracks) {
trace("muting this dude: " + musicTracks[_local1]);
musicTracks[_local1].setVolume(0);
}
}
static function unMuteMusic() {
setMusicPref(true);
for (var _local1 in musicTracks) {
musicTracks[_local1].setVolume(100);
}
}
static function playExtSound(aSound) {
if (!_sounds) {
_sounds = new Array();
}
if (!_sounds[aSound]) {
trace("making stuff");
var _local4 = _root.sound.getNextHighestDepth();
var _local3 = _root.sound.createEmptyMovieClip(aSound, _local4);
_sounds[aSound] = new Sound(_local3);
trace("mc exists: " + _local3);
}
trace("sound exists: " + _sounds[aSound]);
_sounds[aSound].loadSound(("sounds/" + aSound) + ".mp3", true);
_sounds[aSound].start();
}
static function setVolume(aNum) {
var _local1 = new Sound();
if (aNum == 0) {
setSoundPref(false);
} else if (aNum == 100) {
setSoundPref(true);
}
_local1.setVolume(aNum);
}
static function lazy() {
if (!_sound) {
_sound = new Sound();
}
}
static function playSoundSingle(aSound, aVolume) {
lazy();
var _local4;
var _local2;
if (!_root.sound[aSound]) {
var _local5 = _root.sound.getNextHighestDepth();
_local4 = _root.sound.createEmptyMovieClip(aSound, _local5);
_local2 = new Sound(_local4);
_local4.sound = _local2;
_local2.attachSound(aSound);
trace("attaching");
} else {
_local2 = _root.sound[aSound].sound;
}
if ((_local2.position == 0) || (_local2.position == _local2.duration)) {
_local2.setVolume(aVolume);
_local2.start();
}
}
static function playSound(aSound, aVolume) {
lazy();
var _local3 = _root.sound.getNextHighestDepth();
var _local4 = _root.sound.createEmptyMovieClip("s_" + _local3, _local3);
var _local2 = new Sound(_local4);
_local2.attachSound(aSound);
_local2.setVolume(aVolume);
_local2.start();
}
static function loopSound(aSound, aLoop, aVolume) {
var _local3 = _root.sound.getNextHighestDepth();
var _local4 = _root.sound.createEmptyMovieClip("sound_" + _local3, _local3);
var _local2 = new Sound(_local4);
_local2.attachSound(aSound);
_local2.setVolume(aVolume);
_local2.start(0, aLoop);
return(_local2);
}
static function fadeSound(aSound, aFrom, aTo, aTime) {
var _local2 = new Object();
var _local4 = aSound.getVolume();
var _local3 = new mx.transitions.Tween(_local2, "v", mx.transitions.easing.None.easeNone, aFrom, aTo, aTime, true);
_local3.onMotionChanged = function () {
aSound.setVolume(this.position);
};
}
static var MUSIC_URL = "music/";
static var trackCount = 0;
}
Symbol 273 MovieClip [__Packages.mx.transitions.OnEnterFrameBeacon] Frame 0
class mx.transitions.OnEnterFrameBeacon
{
function OnEnterFrameBeacon () {
}
static function init() {
var _local4 = _global.MovieClip;
if (!_root.__OnEnterFrameBeacon) {
mx.transitions.BroadcasterMX.initialize(_local4);
var _local3 = _root.createEmptyMovieClip("__OnEnterFrameBeacon", 9876);
_local3.onEnterFrame = function () {
_global.MovieClip.broadcastMessage("onEnterFrame");
};
}
}
static var version = "1.1.0.52";
}
Symbol 274 MovieClip [__Packages.mx.transitions.BroadcasterMX] Frame 0
class mx.transitions.BroadcasterMX
{
var _listeners;
function BroadcasterMX () {
}
static function initialize(o, dontCreateArray) {
if (o.broadcastMessage != undefined) {
delete o.broadcastMessage;
}
o.addListener = mx.transitions.BroadcasterMX.prototype.addListener;
o.removeListener = mx.transitions.BroadcasterMX.prototype.removeListener;
if (!dontCreateArray) {
o._listeners = new Array();
}
}
function addListener(o) {
removeListener(o);
if (broadcastMessage == undefined) {
broadcastMessage = mx.transitions.BroadcasterMX.prototype.broadcastMessage;
}
return(_listeners.push(o));
}
function removeListener(o) {
var _local2 = _listeners;
var _local3 = _local2.length;
while (_local3--) {
if (_local2[_local3] == o) {
_local2.splice(_local3, 1);
if (!_local2.length) {
broadcastMessage = undefined;
}
return(true);
}
}
return(false);
}
function broadcastMessage() {
var _local5 = String(arguments.shift());
var _local4 = _listeners.concat();
var _local6 = _local4.length;
var _local3 = 0;
while (_local3 < _local6) {
_local4[_local3][_local5].apply(_local4[_local3], arguments);
_local3++;
}
}
static var version = "1.1.0.52";
}
Symbol 275 MovieClip [__Packages.mx.transitions.Tween] Frame 0
class mx.transitions.Tween
{
var obj, prop, begin, useSeconds, _listeners, addListener, prevTime, _time, looping, _duration, broadcastMessage, isPlaying, _fps, prevPos, _pos, change, _intervalID, _startTime;
function Tween (obj, prop, func, begin, finish, duration, useSeconds) {
mx.transitions.OnEnterFrameBeacon.init();
if (!arguments.length) {
return;
}
this.obj = obj;
this.prop = prop;
this.begin = begin;
position = (begin);
this.duration = (duration);
this.useSeconds = useSeconds;
if (func) {
this.func = func;
}
this.finish = (finish);
_listeners = [];
addListener(this);
start();
}
function set time(t) {
prevTime = _time;
if (t > duration) {
if (looping) {
rewind(t - _duration);
update();
broadcastMessage("onMotionLooped", this);
} else {
if (useSeconds) {
_time = _duration;
update();
}
stop();
broadcastMessage("onMotionFinished", this);
}
} else if (t < 0) {
rewind();
update();
} else {
_time = t;
update();
}
//return(time);
}
function get time() {
return(_time);
}
function set duration(d) {
_duration = (((d == null) || (d <= 0)) ? (_global.Infinity) : (d));
//return(duration);
}
function get duration() {
return(_duration);
}
function set FPS(fps) {
var _local2 = isPlaying;
stopEnterFrame();
_fps = fps;
if (_local2) {
startEnterFrame();
}
//return(FPS);
}
function get FPS() {
return(_fps);
}
function set position(p) {
setPosition(p);
//return(position);
}
function setPosition(p) {
prevPos = _pos;
obj[prop] = (_pos = p);
broadcastMessage("onMotionChanged", this, _pos);
updateAfterEvent();
}
function get position() {
return(getPosition());
}
function getPosition(t) {
if (t == undefined) {
t = _time;
}
return(func(t, begin, change, _duration));
}
function set finish(f) {
change = f - begin;
//return(finish);
}
function get finish() {
return(begin + change);
}
function continueTo(finish, duration) {
begin = position;
this.finish = (finish);
if (duration != undefined) {
this.duration = (duration);
}
start();
}
function yoyo() {
continueTo(begin, time);
}
function startEnterFrame() {
if (_fps == undefined) {
_global.MovieClip.addListener(this);
} else {
_intervalID = setInterval(this, "onEnterFrame", 1000 / _fps);
}
isPlaying = true;
}
function stopEnterFrame() {
if (_fps == undefined) {
_global.MovieClip.removeListener(this);
} else {
clearInterval(_intervalID);
}
isPlaying = false;
}
function start() {
rewind();
startEnterFrame();
broadcastMessage("onMotionStarted", this);
}
function stop() {
stopEnterFrame();
broadcastMessage("onMotionStopped", this);
}
function resume() {
fixTime();
startEnterFrame();
broadcastMessage("onMotionResumed", this);
}
function rewind(t) {
_time = ((t == undefined) ? 0 : (t));
fixTime();
update();
}
function fforward() {
time = (_duration);
fixTime();
}
function nextFrame() {
if (useSeconds) {
time = ((getTimer() - _startTime) / 1000);
} else {
time = (_time + 1);
}
}
function onEnterFrame() {
nextFrame();
}
function prevFrame() {
if (!useSeconds) {
time = (_time - 1);
}
}
function toString() {
return("[Tween]");
}
function fixTime() {
if (useSeconds) {
_startTime = getTimer() - (_time * 1000);
}
}
function update() {
position = (getPosition(_time));
}
static var version = "1.1.0.52";
static var __initBeacon = mx.transitions.OnEnterFrameBeacon.init();
static var __initBroadcaster = mx.transitions.BroadcasterMX.initialize(mx.transitions.Tween.prototype, true);
function func(t, b, c, d) {
return(((c * t) / d) + b);
}
}
Symbol 276 MovieClip [__Packages.mx.transitions.easing.None] Frame 0
class mx.transitions.easing.None
{
function None () {
}
static function easeNone(t, b, c, d) {
return(((c * t) / d) + b);
}
static function easeIn(t, b, c, d) {
return(((c * t) / d) + b);
}
static function easeOut(t, b, c, d) {
return(((c * t) / d) + b);
}
static function easeInOut(t, b, c, d) {
return(((c * t) / d) + b);
}
static var version = "1.1.0.52";
}
Symbol 277 MovieClip [__Packages.chainfactor.Group] Frame 0
class chainfactor.Group
{
var _pieces, _mc, _intervalId, _hilited, x, y;
function Group () {
_pieces = new Array();
}
function addPiece(aPiece) {
_pieces.push(aPiece);
}
function unHilite() {
_mc.removeMovieClip();
clearInterval(_intervalId);
}
function hilite(aType, aHolder) {
if (!_hilited) {
_hilited = true;
var _local6 = aHolder.getNextHighestDepth();
_mc = aHolder.createEmptyMovieClip("hilite_" + _local6, _local6);
var _local3;
var _local5;
var _local2;
var _local4;
_local3 = x * chainfactor.Board.GRIDSIZE;
_local2 = y * chainfactor.Board.GRIDSIZE;
if (aType == "h") {
_local5 = _local3 + (size * chainfactor.Board.GRIDSIZE);
_local4 = _local2 + chainfactor.Board.GRIDSIZE;
} else {
_local5 = _local3 + chainfactor.Board.GRIDSIZE;
_local4 = (_local2 + (size * chainfactor.Board.GRIDSIZE)) + 1;
}
_mc.beginFill(0);
_mc.moveTo(_local3, _local2);
_mc.lineTo(_local5, _local2);
_mc.lineTo(_local5, _local4);
_mc.lineTo(_local3, _local4);
_mc.lineTo(_local3, _local2);
_mc.endFill();
_intervalId = setInterval(this, "unHilite", HILITE_TIME * 1000);
}
}
function destroy() {
unHilite();
}
static var HILITE_TIME = 0.25;
var size = 0;
}
Symbol 278 MovieClip [__Packages.util.Broadcaster] Frame 0
class util.Broadcaster
{
var _broadcaster;
function Broadcaster () {
_broadcaster = new AsBroadcaster();
AsBroadcaster.initialize(_broadcaster);
}
function addListener(aListen) {
_broadcaster.addListener(aListen);
}
function removeListener(aListen) {
_broadcaster.removeListener(aListen);
}
}
Symbol 279 MovieClip [__Packages.chainfactor.Piece] Frame 0
class chainfactor.Piece extends util.Broadcaster
{
var _color, mc, amount, __get__thawLevel, _x, _y, _disappearing, vGroup, hGroup, _broadcaster;
function Piece (aGray) {
super();
pickRandomAmount();
if ((Math.random() < GRAY_CHANCE) || (aGray)) {
isGray = true;
_thawLevel = 0;
}
}
function thaw() {
if (isGray) {
thawLevel = (_thawLevel + 1);
}
}
function set thawLevel(aLevel) {
_thawLevel = aLevel;
if (aLevel == 0) {
_color.setRGB(13158600);
} else if (aLevel == 1) {
_color.setRGB(13158600);
var _local2 = Math.floor(Math.random() * 2) + 1;
var _local5 = mc.attachMovie("crack" + _local2, "crack", 100);
}
if (_thawLevel == THAW_STEPS) {
_color.setRGB(COLORS[amount]);
var _local4 = new mx.transitions.Tween(mc.crack, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 0.75, true);
isGray = false;
showAmount();
}
//return(__get__thawLevel());
}
function pickRandomAmount() {
amount = Math.floor(Math.random() * ((MAX_AMT - MIN_AMT) + 1)) + MIN_AMT;
}
function draw(aHolder) {
var _local2 = aHolder.getNextHighestDepth();
mc = aHolder.createEmptyMovieClip("piece_" + _local2, _local2);
drawCircle();
if ((!isGray) || (GRAYS_SHOW_VALUE)) {
showAmount();
}
if (isGray) {
_color.setRGB(13158600);
thawLevel = (_thawLevel);
}
return(mc);
}
function drawCircle() {
var _local2 = mc.createEmptyMovieClip("circle", 1);
_color = new Color(_local2);
_local2.beginFill(16777215, 100);
util.Util.drawCircle(_local2, 0, 0, (chainfactor.Board.GRIDSIZE / 2) - 1);
_color.setRGB(COLORS[amount]);
_local2.endFill();
}
function fixInvis() {
if (mc._alpha != 100) {
drawCircle();
mc._visible = true;
mc._alpha = 100;
mc.circle._alpha = 100;
if (isGray) {
makeGray();
} else {
mc.amt_holder._alpha = 100;
}
}
}
function makeGray() {
isGray = true;
mc.amt_holder.removeMovieClip();
_thawLevel = 0;
_color = new Color(mc.circle);
_color.setRGB(13158600);
}
function showAmount() {
var _local2 = mc.createEmptyMovieClip("amt_holder", 2);
_local2.createTextField("amt", 1, -11, -15, chainfactor.Board.GRIDSIZE / 2, chainfactor.Board.GRIDSIZE / 2);
var _local3 = new TextFormat();
_local3.size = 22;
_local3.color = 16777215 /* 0xFFFFFF */;
_local3.font = "Dirty Headline";
_local2.amt.text = amount;
_local2.amt.embedFonts = true;
_local2.amt.selectable = false;
_local2.amt.autoSize = "center";
_local2.amt.setTextFormat(_local3);
if (isGray) {
amountShowing = true;
_local2.amt._alpha = 50;
} else {
_color.setRGB(COLORS[amount]);
}
}
function makeSpikes(aNum) {
var _local14 = Math.min(aNum, 4);
var _local5 = _x;
var _local4 = _y;
while ((_local5 == _x) || (_local5 == (_x + 1))) {
_local5 = Math.floor((Math.random() * chainfactor.Board.WIDTH) + 1);
}
while (_local4 == _y) {
_local4 = Math.floor(((Math.random() * chainfactor.Board.HEIGHT) + 1) - _y);
}
_local5 = _local5 * chainfactor.Board.GRIDSIZE;
_local4 = _local4 * chainfactor.Board.GRIDSIZE;
var _local3 = 0;
while (_local3 < _local14) {
var _local9 = chainfactor.Board.back.getNextHighestDepth();
var spikeMC = chainfactor.Board.back.createEmptyMovieClip("spike_" + _local9, _local9);
if (_local4 < 0) {
_local4 = 0;
}
var _local2 = new flash.geom.Point(_x * chainfactor.Board.GRIDSIZE, (_y * chainfactor.Board.GRIDSIZE) + chainfactor.Board.GRIDSIZE);
var _local8 = new flash.geom.Point(_x * chainfactor.Board.GRIDSIZE, _y * chainfactor.Board.GRIDSIZE);
var _local7 = new flash.geom.Point((_x * chainfactor.Board.GRIDSIZE) + chainfactor.Board.GRIDSIZE, _y * chainfactor.Board.GRIDSIZE);
var _local6 = new flash.geom.Point(_local5, _local4 + (_local3 * chainfactor.Board.GRIDSIZE));
var _local10 = 0;
_local10 = COLORS[amount];
spikeMC.beginFill(_local10);
spikeMC.moveTo(_local2.x, _local2.y);
spikeMC.lineTo(_local8.x, _local8.y);
spikeMC.lineTo(_local7.x, _local7.y);
spikeMC.lineTo(_local6.x, _local6.y);
spikeMC.lineTo(_local2.x, _local2.y);
spikeMC.endFill();
var _local13 = this;
var _local12 = 0.15;
var _local11 = new mx.transitions.Tween(spikeMC, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 0.6 + (_local3 * _local12), true);
_local11.onMotionFinished = function () {
spikeMC.removeMovieClip();
};
_local3++;
}
}
function disappear(aMult) {
if (!_disappearing) {
_disappearing = true;
var _local6 = new Color(mc.amt_holder);
_local6.setRGB(0);
var _local3 = mc.createEmptyMovieClip("blackbox", -10);
_local3.beginFill(0);
_local3.moveTo((-chainfactor.Board.GRIDSIZE) / 2, (-chainfactor.Board.GRIDSIZE) / 2);
_local3.lineTo(((-chainfactor.Board.GRIDSIZE) / 2) + chainfactor.Board.GRIDSIZE, (-chainfactor.Board.GRIDSIZE) / 2);
_local3.lineTo(((-chainfactor.Board.GRIDSIZE) / 2) + chainfactor.Board.GRIDSIZE, ((-chainfactor.Board.GRIDSIZE) / 2) + chainfactor.Board.GRIDSIZE);
_local3.lineTo((-chainfactor.Board.GRIDSIZE) / 2, ((-chainfactor.Board.GRIDSIZE) / 2) + chainfactor.Board.GRIDSIZE);
_local3.lineTo((-chainfactor.Board.GRIDSIZE) / 2, (-chainfactor.Board.GRIDSIZE) / 2);
_local3.endFill();
mc.crack._visible = false;
var me = this;
var _local8 = new mx.transitions.Tween(mc, "_alpha", mx.transitions.easing.None.easeNone, 300, 0, DISAPPEAR_TIME, true);
var me = this;
var _local5 = new Object();
_local5.val = 1;
var _local7 = new mx.transitions.Tween(_local5, "val", mx.transitions.easing.Regular.easeIn, 1, 0, DISAPPEAR_TIME, true);
_local7.onMotionChanged = function () {
me.mc.circle._xscale = 125 * this.position;
me.mc.circle._yscale = 125 * this.position;
me.mc.amt_holder._xscale = 100 * this.position;
me.mc.amt_holder._yscale = 100 * this.position;
};
if (aMult > 1) {
_root.chainDisplay.showChain(aMult);
} else {
chainfactor.SoundManager.playSound("sound_disappear", 5);
}
if (aMult > 2) {
makeSpikes(aMult - 1);
}
_local8.onMotionFinished = function () {
me.finishDisappear();
};
}
}
function finishDisappear() {
vGroup.destroy();
hGroup.destroy();
_broadcaster.broadcastMessage("onDisappear", this);
}
function destroy() {
mc.removeMovieClip();
vGroup.destroy();
hGroup.destroy();
}
function set x(aX) {
_x = aX;
mc._x = (aX * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
//return(x);
}
function set y(aY) {
_y = aY;
mc._y = (aY * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
//return(y);
}
function get x() {
return(_x);
}
function get y() {
return(_y);
}
static var GRAY_CHANCE = 0.3;
static var GRAYS_SHOW_VALUE = 0;
static var MIN_AMT = 1;
static var MAX_AMT = 7;
static var COLORS = [0, 14864993, 15645799, 15505767, 15562855, 15625081, 15558553, 15493048];
static var THAW_STEPS = 2;
static var DISAPPEAR_DELAY = 250;
static var DISAPPEAR_MAX_SPIKES = 4;
static var DISAPPEAR_TIME = 0.5;
var amountShowing = false;
var _thawLevel = 0;
var isGray = false;
}
Symbol 280 MovieClip [__Packages.mx.transitions.easing.Regular] Frame 0
class mx.transitions.easing.Regular
{
function Regular () {
}
static function easeIn(t, b, c, d) {
t = t / d;
return(((c * t) * t) + b);
}
static function easeOut(t, b, c, d) {
t = t / d;
return((((-c) * t) * (t - 2)) + b);
}
static function easeInOut(t, b, c, d) {
t = t / (d / 2);
if (t < 1) {
return((((c / 2) * t) * t) + b);
}
t--;
return((((-c) / 2) * ((t * (t - 2)) - 1)) + b);
}
static var version = "1.1.0.52";
}
Symbol 281 MovieClip [__Packages.util.Util] Frame 0
class util.Util
{
function Util () {
}
static function init() {
Number.prototype.toRad = function () {
return((this * Math.PI) / 180);
};
Number.prototype.toDeg = function () {
return((this * 180) / Math.PI);
};
MovieClip.prototype.dashTo = function (startx, starty, endx, endy, len, gap) {
if (arguments.length < 6) {
return(false);
}
var _local12;
var _local9;
var _local8;
var _local10;
var _local4;
var _local3;
_local12 = len + gap;
_local9 = endx - startx;
_local8 = endy - starty;
var _local11 = Math.sqrt((_local9 * _local9) + (_local8 * _local8));
_local10 = Math.floor(Math.abs(_local11 / _local12));
var _local6 = Math.atan2(_local8, _local9);
_local4 = startx;
_local3 = starty;
_local9 = Math.cos(_local6) * _local12;
_local8 = Math.sin(_local6) * _local12;
var _local5 = 0;
while (_local5 < _local10) {
this.moveTo(_local4, _local3);
this.lineTo(_local4 + (Math.cos(_local6) * len), _local3 + (Math.sin(_local6) * len));
_local4 = _local4 + _local9;
_local3 = _local3 + _local8;
_local5++;
}
this.moveTo(_local4, _local3);
_local11 = Math.sqrt(((endx - _local4) * (endx - _local4)) + ((endy - _local3) * (endy - _local3)));
if (_local11 > len) {
this.lineTo(_local4 + (Math.cos(_local6) * len), _local3 + (Math.sin(_local6) * len));
} else if (_local11 > 0) {
this.lineTo(_local4 + (Math.cos(_local6) * _local11), _local3 + (Math.sin(_local6) * _local11));
}
this.moveTo(endx, endy);
};
MovieClip.prototype.drawWedge = function (x, y, startAngle, arc, radius, yRadius) {
if (arguments.length < 5) {
return(undefined);
}
this.moveTo(x, y);
if (yRadius == undefined) {
yRadius = radius;
}
var _local20;
var _local3;
var _local4;
var _local6;
var _local15;
var _local19;
var _local18;
var _local14;
var _local12;
var _local13;
var _local11;
if (Math.abs(arc) > 360) {
arc = 360;
}
_local15 = Math.ceil(Math.abs(arc) / 45);
_local20 = arc / _local15;
_local3 = (-(_local20 / 180)) * Math.PI;
_local4 = (-(startAngle / 180)) * Math.PI;
if (_local15 > 0) {
_local19 = x + (Math.cos((startAngle / 180) * Math.PI) * radius);
_local18 = y + (Math.sin(((-startAngle) / 180) * Math.PI) * yRadius);
this.lineTo(_local19, _local18);
var _local5 = 0;
while (_local5 < _local15) {
_local4 = _local4 + _local3;
_local6 = _local4 - (_local3 / 2);
_local14 = x + (Math.cos(_local4) * radius);
_local12 = y + (Math.sin(_local4) * yRadius);
_local13 = x + (Math.cos(_local6) * (radius / Math.cos(_local3 / 2)));
_local11 = y + (Math.sin(_local6) * (yRadius / Math.cos(_local3 / 2)));
this.curveTo(_local13, _local11, _local14, _local12);
_local5++;
}
this.lineTo(x, y);
}
};
}
static function drawCircle(mc, x, y, r) {
mc.moveTo(x + r, y);
mc.curveTo(r + x, (0.414213562373095 * r) + y, (0.707106781186547 * r) + x, (0.707106781186547 * r) + y);
mc.curveTo((0.414213562373095 * r) + x, r + y, x, r + y);
mc.curveTo((-0.414213562373095 * r) + x, r + y, (-0.707106781186547 * r) + x, (0.707106781186547 * r) + y);
mc.curveTo((-r) + x, (0.414213562373095 * r) + y, (-r) + x, y);
mc.curveTo((-r) + x, (-0.414213562373095 * r) + y, (-0.707106781186547 * r) + x, (-0.707106781186547 * r) + y);
mc.curveTo((-0.414213562373095 * r) + x, (-r) + y, x, (-r) + y);
mc.curveTo((0.414213562373095 * r) + x, (-r) + y, (0.707106781186547 * r) + x, (-0.707106781186547 * r) + y);
mc.curveTo(r + x, (-0.414213562373095 * r) + y, r + x, y);
}
static function addCommas(aNum) {
var _local2 = aNum.toString();
var _local4 = _local2.split(".")[1];
_local2 = _local2.split(".")[0];
if (aNum < 0) {
_local2 = _local2.substr(1, _local2.length);
}
var _local1 = "";
var _local3 = _local2.length;
while (_local3--) {
if ((_local3 < (_local2.length - 1)) && ((((_local2.length - _local3) - 1) % 3) == 0)) {
_local1 = "," + _local1;
}
_local1 = _local2.substr(_local3, 1) + _local1;
}
if (aNum < 0) {
_local1 = "-" + _local1;
}
if (_local4) {
_local1 = _local1 + ("." + _local4);
}
return(_local1);
}
static function str_replace(haystack, needle, replacement) {
var _local1 = haystack.split(needle);
return(_local1.join(replacement));
}
static function isPrime(aNum) {
if (aNum == NaN) {
return(false);
}
aNum = Math.floor(aNum);
if (aNum == 2) {
return(true);
}
if ((aNum < 2) || (aNum & false)) {
return(false);
}
var _local3 = Math.floor(Math.sqrt(aNum));
var _local1 = 2;
while (_local1 <= _local3) {
if ((aNum % _local1) == 0) {
return(false);
}
_local1 = _local1 + 1;
}
return(true);
}
static function getRandomString(aLength) {
var _local1 = "";
var _local2 = "0123456789abcdsefghijklmnopqrstuvwxyz";
while (_local1.length < aLength) {
_local1 = _local1 + _local2.charAt(Math.floor(Math.random() * _local2.length));
}
return(_local1);
}
static function MD5(string) {
function RotateLeft(lValue, iShiftBits) {
return((lValue << iShiftBits) | (lValue >>> (32 - iShiftBits)));
}
function AddUnsigned(lX, lY) {
var _local5;
var _local4;
var _local3;
var _local2;
var _local1;
_local3 = lX & 2147483648;
_local2 = lY & 2147483648;
_local5 = lX & 1073741824;
_local4 = lY & 1073741824;
_local1 = (lX & 1073741823) + (lY & 1073741823);
if (_local5 & _local4) {
return(((_local1 ^ 2147483648) ^ _local3) ^ _local2);
}
if (_local5 | _local4) {
if (_local1 & 1073741824) {
return(((_local1 ^ 3221225472) ^ _local3) ^ _local2);
}
return(((_local1 ^ 1073741824) ^ _local3) ^ _local2);
}
return((_local1 ^ _local3) ^ _local2);
}
function F(x, y, z) {
return((x & y) | ((~x) & z));
}
function G(x, y, z) {
return((x & z) | (y & (~z)));
}
function H(x, y, z) {
return((x ^ y) ^ z);
}
function I(x, y, z) {
return(y ^ (x | (~z)));
}
function FF(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(F(b, c, d), x), ac));
return(AddUnsigned(RotateLeft(a, s), b));
}
function GG(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(G(b, c, d), x), ac));
return(AddUnsigned(RotateLeft(a, s), b));
}
function HH(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(H(b, c, d), x), ac));
return(AddUnsigned(RotateLeft(a, s), b));
}
function II(a, b, c, d, x, s, ac) {
a = AddUnsigned(a, AddUnsigned(AddUnsigned(I(b, c, d), x), ac));
return(AddUnsigned(RotateLeft(a, s), b));
}
function ConvertToWordArray(string) {
var _local2;
var _local5 = string.length;
var _local8 = _local5 + 8;
var _local9 = (_local8 - (_local8 % 64)) / 64;
var _local7 = (_local9 + 1) * 16;
var _local3 = Array(_local7 - 1);
var _local4 = 0;
var _local1 = 0;
while (_local1 < _local5) {
_local2 = (_local1 - (_local1 % 4)) / 4;
_local4 = (_local1 % 4) * 8;
_local3[_local2] = _local3[_local2] | (string.charCodeAt(_local1) << _local4);
_local1++;
}
_local2 = (_local1 - (_local1 % 4)) / 4;
_local4 = (_local1 % 4) * 8;
_local3[_local2] = _local3[_local2] | (128 << _local4);
_local3[_local7 - 2] = _local5 << 3;
_local3[_local7 - 1] = _local5 >>> 29;
return(_local3);
}
function WordToHex(lValue) {
var _local3 = "";
var _local2 = "";
var _local4;
var _local1;
_local1 = 0;
while (_local1 <= 3) {
_local4 = (lValue >>> (_local1 * 8)) & 255;
_local2 = "0" + _local4.toString(16);
_local3 = _local3 + _local2.substr(_local2.length - 2, 2);
_local1++;
}
return(_local3);
}
function Utf8Encode(string) {
var _local2 = "";
var _local3 = 0;
while (_local3 < string.length) {
var _local1 = string.charCodeAt(_local3);
if (_local1 < 128) {
_local2 = _local2 + String.fromCharCode(_local1);
} else if ((_local1 > 127) && (_local1 < 2048)) {
_local2 = _local2 + String.fromCharCode((_local1 >> 6) | 192);
_local2 = _local2 + String.fromCharCode((_local1 & 63) | 128);
} else {
_local2 = _local2 + String.fromCharCode((_local1 >> 12) | 224);
_local2 = _local2 + String.fromCharCode(((_local1 >> 6) & 63) | 128);
_local2 = _local2 + String.fromCharCode((_local1 & 63) | 128);
}
_local3++;
}
return(_local2);
}
var _local6 = Array();
var _local5;
var _local35;
var _local36;
var _local37;
var _local34;
var _local4;
var _local3;
var _local2;
var _local1;
var _local21 = 7;
var _local19 = 12;
var _local16 = 17;
var _local13 = 22;
var _local20 = 5;
var _local17 = 9;
var _local14 = 14;
var _local11 = 20;
var _local18 = 4;
var _local15 = 11;
var _local12 = 16;
var _local10 = 23;
var _local25 = 6;
var _local24 = 10;
var _local23 = 15;
var _local22 = 21;
string = Utf8Encode(string);
_local6 = ConvertToWordArray(string);
_local4 = 1732584193 /* 0x67452301 */;
_local3 = 4023233417;
_local2 = 2562383102;
_local1 = 271733878 /* 0x10325476 */;
_local5 = 0;
while (_local5 < _local6.length) {
_local35 = _local4;
_local36 = _local3;
_local37 = _local2;
_local34 = _local1;
_local4 = FF(_local4, _local3, _local2, _local1, _local6[_local5 + 0], _local21, 3614090360);
_local1 = FF(_local1, _local4, _local3, _local2, _local6[_local5 + 1], _local19, 3905402710);
_local2 = FF(_local2, _local1, _local4, _local3, _local6[_local5 + 2], _local16, 606105819);
_local3 = FF(_local3, _local2, _local1, _local4, _local6[_local5 + 3], _local13, 3250441966);
_local4 = FF(_local4, _local3, _local2, _local1, _local6[_local5 + 4], _local21, 4118548399);
_local1 = FF(_local1, _local4, _local3, _local2, _local6[_local5 + 5], _local19, 1200080426);
_local2 = FF(_local2, _local1, _local4, _local3, _local6[_local5 + 6], _local16, 2821735955);
_local3 = FF(_local3, _local2, _local1, _local4, _local6[_local5 + 7], _local13, 4249261313);
_local4 = FF(_local4, _local3, _local2, _local1, _local6[_local5 + 8], _local21, 1770035416);
_local1 = FF(_local1, _local4, _local3, _local2, _local6[_local5 + 9], _local19, 2336552879);
_local2 = FF(_local2, _local1, _local4, _local3, _local6[_local5 + 10], _local16, 4294925233);
_local3 = FF(_local3, _local2, _local1, _local4, _local6[_local5 + 11], _local13, 2304563134);
_local4 = FF(_local4, _local3, _local2, _local1, _local6[_local5 + 12], _local21, 1804603682);
_local1 = FF(_local1, _local4, _local3, _local2, _local6[_local5 + 13], _local19, 4254626195);
_local2 = FF(_local2, _local1, _local4, _local3, _local6[_local5 + 14], _local16, 2792965006);
_local3 = FF(_local3, _local2, _local1, _local4, _local6[_local5 + 15], _local13, 1236535329);
_local4 = GG(_local4, _local3, _local2, _local1, _local6[_local5 + 1], _local20, 4129170786);
_local1 = GG(_local1, _local4, _local3, _local2, _local6[_local5 + 6], _local17, 3225465664);
_local2 = GG(_local2, _local1, _local4, _local3, _local6[_local5 + 11], _local14, 643717713);
_local3 = GG(_local3, _local2, _local1, _local4, _local6[_local5 + 0], _local11, 3921069994);
_local4 = GG(_local4, _local3, _local2, _local1, _local6[_local5 + 5], _local20, 3593408605);
_local1 = GG(_local1, _local4, _local3, _local2, _local6[_local5 + 10], _local17, 38016083);
_local2 = GG(_local2, _local1, _local4, _local3, _local6[_local5 + 15], _local14, 3634488961);
_local3 = GG(_local3, _local2, _local1, _local4, _local6[_local5 + 4], _local11, 3889429448);
_local4 = GG(_local4, _local3, _local2, _local1, _local6[_local5 + 9], _local20, 568446438);
_local1 = GG(_local1, _local4, _local3, _local2, _local6[_local5 + 14], _local17, 3275163606);
_local2 = GG(_local2, _local1, _local4, _local3, _local6[_local5 + 3], _local14, 4107603335);
_local3 = GG(_local3, _local2, _local1, _local4, _local6[_local5 + 8], _local11, 1163531501);
_local4 = GG(_local4, _local3, _local2, _local1, _local6[_local5 + 13], _local20, 2850285829);
_local1 = GG(_local1, _local4, _local3, _local2, _local6[_local5 + 2], _local17, 4243563512);
_local2 = GG(_local2, _local1, _local4, _local3, _local6[_local5 + 7], _local14, 1735328473);
_local3 = GG(_local3, _local2, _local1, _local4, _local6[_local5 + 12], _local11, 2368359562);
_local4 = HH(_local4, _local3, _local2, _local1, _local6[_local5 + 5], _local18, 4294588738);
_local1 = HH(_local1, _local4, _local3, _local2, _local6[_local5 + 8], _local15, 2272392833);
_local2 = HH(_local2, _local1, _local4, _local3, _local6[_local5 + 11], _local12, 1839030562);
_local3 = HH(_local3, _local2, _local1, _local4, _local6[_local5 + 14], _local10, 4259657740);
_local4 = HH(_local4, _local3, _local2, _local1, _local6[_local5 + 1], _local18, 2763975236);
_local1 = HH(_local1, _local4, _local3, _local2, _local6[_local5 + 4], _local15, 1272893353);
_local2 = HH(_local2, _local1, _local4, _local3, _local6[_local5 + 7], _local12, 4139469664);
_local3 = HH(_local3, _local2, _local1, _local4, _local6[_local5 + 10], _local10, 3200236656);
_local4 = HH(_local4, _local3, _local2, _local1, _local6[_local5 + 13], _local18, 681279174);
_local1 = HH(_local1, _local4, _local3, _local2, _local6[_local5 + 0], _local15, 3936430074);
_local2 = HH(_local2, _local1, _local4, _local3, _local6[_local5 + 3], _local12, 3572445317);
_local3 = HH(_local3, _local2, _local1, _local4, _local6[_local5 + 6], _local10, 76029189);
_local4 = HH(_local4, _local3, _local2, _local1, _local6[_local5 + 9], _local18, 3654602809);
_local1 = HH(_local1, _local4, _local3, _local2, _local6[_local5 + 12], _local15, 3873151461);
_local2 = HH(_local2, _local1, _local4, _local3, _local6[_local5 + 15], _local12, 530742520);
_local3 = HH(_local3, _local2, _local1, _local4, _local6[_local5 + 2], _local10, 3299628645);
_local4 = II(_local4, _local3, _local2, _local1, _local6[_local5 + 0], _local25, 4096336452);
_local1 = II(_local1, _local4, _local3, _local2, _local6[_local5 + 7], _local24, 1126891415);
_local2 = II(_local2, _local1, _local4, _local3, _local6[_local5 + 14], _local23, 2878612391);
_local3 = II(_local3, _local2, _local1, _local4, _local6[_local5 + 5], _local22, 4237533241);
_local4 = II(_local4, _local3, _local2, _local1, _local6[_local5 + 12], _local25, 1700485571);
_local1 = II(_local1, _local4, _local3, _local2, _local6[_local5 + 3], _local24, 2399980690);
_local2 = II(_local2, _local1, _local4, _local3, _local6[_local5 + 10], _local23, 4293915773);
_local3 = II(_local3, _local2, _local1, _local4, _local6[_local5 + 1], _local22, 2240044497);
_local4 = II(_local4, _local3, _local2, _local1, _local6[_local5 + 8], _local25, 1873313359);
_local1 = II(_local1, _local4, _local3, _local2, _local6[_local5 + 15], _local24, 4264355552);
_local2 = II(_local2, _local1, _local4, _local3, _local6[_local5 + 6], _local23, 2734768916);
_local3 = II(_local3, _local2, _local1, _local4, _local6[_local5 + 13], _local22, 1309151649);
_local4 = II(_local4, _local3, _local2, _local1, _local6[_local5 + 4], _local25, 4149444226);
_local1 = II(_local1, _local4, _local3, _local2, _local6[_local5 + 11], _local24, 3174756917);
_local2 = II(_local2, _local1, _local4, _local3, _local6[_local5 + 2], _local23, 718787259);
_local3 = II(_local3, _local2, _local1, _local4, _local6[_local5 + 9], _local22, 3951481745);
_local4 = AddUnsigned(_local4, _local35);
_local3 = AddUnsigned(_local3, _local36);
_local2 = AddUnsigned(_local2, _local37);
_local1 = AddUnsigned(_local1, _local34);
_local5 = _local5 + 16;
}
var _local46 = ((WordToHex(_local4) + WordToHex(_local3)) + WordToHex(_local2)) + WordToHex(_local1);
return(_local46.toLowerCase());
}
}
Symbol 282 MovieClip [__Packages.chainfactor.Debug] Frame 0
class chainfactor.Debug
{
static var _mouseListener;
function Debug () {
}
static function save() {
_root.debug = _root.debug + "\nStarting to save score";
var _local5 = new LoadVars();
_local5.onLoad = function (success) {
if (success) {
trace("RESPONSE:\n" + this);
}
};
_local5.onData = function (src) {
_root.debug = _root.debug + ("\n\n" + src);
if (src == undefined) {
_root.debug = _root.debug + "\nCouldn't connect to server";
} else {
var _local2 = new XML();
_local2.ignoreWhite = true;
_local2.parseXML(src);
chainfactor.Debug.parseResponse(_local2, src);
}
};
var _local4 = new LoadVars();
_local4.type = "stats";
_local4.score = _global.numberBalls.score;
_local4.level = chainfactor.LevelManager.level;
_local4.mode = _global.numberBalls.mode;
_local4.name = "a";
_local4.ver = chainfactor.Stats.getSession()[0];
_local4.p1 = chainfactor.powers.PowerManager.__get__inventory()[0].id;
_local4.p2 = chainfactor.powers.PowerManager.__get__inventory()[1].id;
_local4.p3 = chainfactor.powers.PowerManager.__get__inventory()[2].id;
var _local7 = chainfactor.Randomizer.getRandomString("a");
_local4.sendAndLoad(((SAVE_URL + _local7) + "&r=") + Math.random(), _local5, "POST");
}
static function parseResponse(aXML, src) {
aXML.ignoreWhite = true;
var _local2 = 0;
while (_local2 < aXML.firstChild.childNodes.length) {
var _local1 = aXML.firstChild.childNodes[_local2];
if (_local1.nodeName == "debug") {
buildMsgWindow(_local1.attributes.level, _local1.attributes.code, _local1.attributes.number, _local1.firstChild.nodeValue);
}
_local2++;
}
}
static function buildMsgWindow(aLevel, aCode, aNumber, aMsg) {
_mouseListener = new Object();
var ml = _mouseListener;
_mouseListener.onMouseDown = function () {
trace(_ymouse);
if ((((_root._xmouse > 233) && (_root._xmouse < 355)) && (_root._ymouse > 310)) && (_root._ymouse < 335)) {
_root.boardHolder.debugMsg.swapDepths(_root.boardHolder.gameOver);
delete this.onMouseDown;
Mouse.removeListener(ml);
}
};
Mouse.addListener(_mouseListener);
cleanup();
if (parseInt(aNumber) < 100) {
aNumber = "0" + aNumber;
}
if (parseInt(aNumber) < 10) {
aNumber = "0" + aNumber;
}
var _local4 = _root.boardHolder.createEmptyMovieClip("debugMsg", _root.getNextHighestDepth());
_local4._x = -80;
_local4._y = -35;
var _local5 = _local4.createEmptyMovieClip("redBox", 1);
_local5.beginFill(16711680);
_local5.lineTo(145, 0);
_local5.lineTo(145, 20);
_local5.lineTo(0, 20);
_local5.lineTo(0, 0);
_local5.endFill();
var _local7 = new TextField.StyleSheet();
var _local8 = new Object();
_local8.color = "#000000";
_local8.fontFamily = "ArialBoldBitmap";
_local7.setStyle(".debug", _local8);
_local7.setStyle(".bold", {fontFamily:"ArialBoldBitmap"});
_local7.setStyle("p", {color:"#000000", fontFamily:"ArialBitmap", fontSize:12});
var _local3 = _local4.createTextField("msg", _local4.getNextHighestDepth(), 0, 0, MSG_WIDTH - 10, 20);
_local3.html = true;
_local3.embedFonts = true;
_local3.styleSheet = _local7;
_local3.htmlText = ((((((("<p><span class='bold'><font color='#ffffff'> ERROR " + aNumber) + "\n<font size='4'>\n</font></font><b>LEVEL ") + aLevel) + " / CODE ") + aCode) + "</span>\n\n</p><p>") + aMsg) + "</p>";
_local3.selectable = true;
_local3.autoSize = "left";
_local4.useHandCursor = false;
_local3.onRelease = function () {
if ((((_root.boardHolder.gameOver._xmouse > 15) && (_root.boardHolder.gameOver._ymouse > 82)) && (_root.boardHolder.gameOver._xmouse < 150)) && (_root.boardHolder.gameOver._ymouse < 115)) {
var _local2 = _root.attachMovie("saveScore", "saveScore", _root.getNextHighestDepth());
_local2._x = Stage.width / 2;
_local2._y = Stage.height / 2;
}
};
}
static function cleanup() {
_root.debugMsg.removeMovieClip();
}
static var MSG_WIDTH = 400;
static var MSG_HEIGHT = 250;
static var SAVE_URL = "save_score.php?sid=";
}
Symbol 283 MovieClip [__Packages.chainfactor.LevelManager] Frame 0
class chainfactor.LevelManager extends util.StaticBroadcaster
{
static var _levelClock, _listener, _behavior, _nextLevel;
function LevelManager () {
super();
}
static function set level(aNum) {
_level = aNum;
_levelClock.level = aNum;
//return(level);
}
static function get level() {
return(_level);
}
static function disable() {
delete _listener;
_listener = new Object();
}
static function initBehavior(aClass) {
level = (1);
if (!_listener) {
_listener = new Object();
_listener.onSpawnPiece = handleLevelEvent;
util.StaticBroadcaster.addListener(_listener);
}
_behavior = new aClass[undefined]();
_nextLevel = EVENTS_PER_LEVEL;
_root.boardHolder.levelClock.removeMovieClip();
_levelClock = _root.boardHolder.attachMovie("levelClock", "levelClock", _root.boardHolder.getNextHighestDepth());
_levelClock._y = (chainfactor.Board.HEIGHT * chainfactor.Board.GRIDSIZE) + 10;
_levelClock.nextLevel = _nextLevel;
_levelClock.dropCount = EVENTS_PER_LEVEL;
}
static function resetLevel() {
var _local2 = _nextLevel - getNextLevelDelta();
_global.numberBalls.resetDropped(_local2);
_levelClock.nextLevel = getNextLevelDelta();
}
static function handleLevelEvent(aNum) {
if (aNum == _nextLevel) {
level = ((level+1));
var _local1 = getNextLevelDelta();
_nextLevel = _nextLevel + _local1;
_levelClock.nextLevel = _local1;
doLevelChange(_level);
}
_levelClock.dropCount = _nextLevel - aNum;
}
static function getNextLevelDelta() {
var _local1 = EVENTS_PER_LEVEL - (EVENTS_DECREASE_PER_LEVEL * (_level - 1));
if (_local1 < MIN_EVENTS_PER_LEVEL) {
_local1 = MIN_EVENTS_PER_LEVEL;
}
return(_local1);
}
static function doLevelChange(aLevel) {
chainfactor.Game.__set__allowDrop(false);
_global.numberBalls.unspawnPiece();
levelBonus();
_behavior.doChange(aLevel);
util.StaticBroadcaster._broadcaster.broadcastMessage("onLevelUp");
}
static function levelBonus() {
var _local4 = _root.boardHolder.createEmptyMovieClip("levelbonus", _root.boardHolder.getNextHighestDepth());
var _local3 = _local4.createTextField("txt", 1, 0, 0, (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2, 200);
var _local5 = new TextFormat();
_local5.size = 28;
_local5.color = 0;
_local5.font = "EurostileBold";
_local3.text = "LEVEL BONUS: " + LEVEL_BONUS;
_local3.textColor = 6710886 /* 0x666666 */;
_local3.embedFonts = true;
_local3.selectable = false;
_local3.autoSize = "center";
_local3.setTextFormat(_local5);
_global.numberBalls.addPoints(LEVEL_BONUS);
_local4._x = ((chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2) - 75;
var _local7 = new mx.transitions.Tween(_local4, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 2, true);
var _local6 = new mx.transitions.Tween(_local4, "_y", mx.transitions.easing.None.easeNone, (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2, 0, 2, true);
}
static function get behaviorType() {
return(_behavior.typeOf());
}
static var EVENTS_PER_LEVEL = 30;
static var EVENTS_DECREASE_PER_LEVEL = 1;
static var MIN_EVENTS_PER_LEVEL = 5;
static var LEVEL_BONUS = 5000;
static var _level = 1;
}
Symbol 284 MovieClip [__Packages.chainfactor.ILevelBehavior] Frame 0
interface chainfactor.ILevelBehavior
{
}
Symbol 285 MovieClip [__Packages.chainfactor.Stats] Frame 0
class chainfactor.Stats
{
static var _sessionId;
function Stats () {
}
static function send() {
if (System.capabilities.playerType != "External") {
var _local2 = new LoadVars();
_local2.onData = function (src) {
if (src != undefined) {
chainfactor.Stats.save(new XML(src));
}
};
var _local1 = new LoadVars();
_local1.version = System.capabilities.serverString;
_local1.os = System.capabilities.os;
_local1.manufacturer = System.capabilities.manufacturer;
_local1.sendAndLoad(STATS_URL + Math.random(), _local2, "POST");
}
}
static function save(aXML) {
_sessionId = aXML.firstChild.attributes.session;
trace("sent stats");
trace(getSession());
_root.debug = _root.debug + getSession();
}
static function getSession() {
var _local5 = _sessionId.substr(0, 32);
var _local4 = _sessionId.substr(32, 32);
var _local6 = new Array();
var _local3 = "";
var _local2 = "";
var _local1 = 0;
while (_local1 < 32) {
if ((_local1 % 2) == 0) {
_local3 = _local3 + _local5.substr(_local1, 1);
_local2 = _local2 + _local4.substr(_local1, 1);
} else {
_local3 = _local3 + _local4.substr(_local1, 1);
_local2 = _local2 + _local5.substr(_local1, 1);
}
_local1++;
}
_local6[0] = _local3;
_local6[1] = _local2;
return(_local6);
}
static var STATS_URL = "stats.php?sid=";
}
Symbol 286 MovieClip [__Packages.chainfactor.powers.PowerManager] Frame 0
class chainfactor.powers.PowerManager extends util.StaticBroadcaster
{
static var _meter, _allPowers, _inventory, _ignoreBreaks, _listener, __get__ignoreBreaks;
function PowerManager () {
super();
}
static function init() {
_meter = new chainfactor.powers.PowerMeter();
_meter.draw(_root.boardHolder);
_meter.mc._x = (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) + 12;
_meter.updateBar();
_allPowers = new Array();
_allPowers.push(new chainfactor.powers.PManaPoints());
_allPowers.push(new chainfactor.powers.PThaw());
_allPowers.push(new chainfactor.powers.PShow());
_allPowers.push(new chainfactor.powers.PPrime());
_allPowers.push(new chainfactor.powers.PPostpone());
_allPowers.push(new chainfactor.powers.PPromote());
_allPowers.push(new chainfactor.powers.PSniper());
_allPowers.push(new chainfactor.powers.PGoldCoin());
_allPowers.push(new chainfactor.powers.PBomb());
_allPowers.push(new chainfactor.powers.PEfficiency());
_allPowers.push(new chainfactor.powers.PRotate());
_allPowers.push(new chainfactor.powers.PScoreballs());
if ((!_inventory) || (_inventory.length == 0)) {
_inventory = new Array();
} else {
clearInventory();
}
_ignoreBreaks = false;
if (!_listener) {
_listener = new Object();
}
_listener.onDisappearDone = function () {
chainfactor.powers.PowerManager.handleDisappearDone();
};
_listener.onLevelUp = function () {
chainfactor.powers.PowerManager.handleLevelUp();
};
util.StaticBroadcaster.addListener(_listener);
util.StaticBroadcaster.addListener(_listener);
}
static function handleTilt() {
util.StaticBroadcaster._broadcaster.broadcastMessage("onTilt");
}
static function handleLevelUp() {
if (REDUCE_MANA_RATE) {
reduceManaAdd();
}
}
static function reduceManaAdd() {
_meter.reduceManaAdd();
}
static function addMana(aAmt) {
if (!_ignoreBreaks) {
_meter.addMana(aAmt);
handleManaUpdate();
}
}
static function deductMana(aAmt) {
_meter.deductMana(aAmt);
handleManaUpdate();
}
static function addPower(aP) {
_inventory.push(aP);
var _local1 = new Object();
_local1.onFire = function (aCost) {
chainfactor.powers.PowerManager.handlePowerFire(aCost);
};
_local1.onTilt = handleTilt;
aP.addListener(_local1);
}
static function resetPowers() {
var _local1 = 0;
while (_local1 < _inventory.length) {
_inventory[_local1].destroy();
_local1++;
}
}
static function clearPowers() {
var _local1 = 0;
while (_local1 < _inventory.length) {
_inventory[_local1].destroy();
delete _inventory[_local1];
_local1++;
}
_inventory = new Array();
}
static function handlePowerFire(aCost) {
_meter.deductMana(aCost);
handleManaUpdate();
if (aCost > 0) {
_ignoreBreaks = true;
}
}
static function handleDisappearDone() {
_ignoreBreaks = false;
}
static function handleManaUpdate() {
var _local1 = 0;
while (_local1 < _inventory.length) {
if (_inventory[_local1].cost <= _meter.amount) {
_inventory[_local1].enable();
} else {
_inventory[_local1].disable();
}
_local1++;
}
}
static function displayPowerButtons() {
_inventory.sort(sort);
var _local5 = 5;
var _local6 = Math.floor((_meter.mc._height - (chainfactor.powers.Power.HEIGHT * _inventory.length)) - ((_inventory.length - 1) * _local5));
var _local4 = 0;
while (_local4 < _inventory.length) {
var _local1 = _inventory[_local4];
var _local2 = _local1.getMovieClip(_meter.mc);
_local2._x = 26;
_local2._y = _local6 + (_local4 * (chainfactor.powers.Power.HEIGHT + _local5));
_local1.setMovieClip(_local2);
_local1.disable();
if (_local1.cost > 0) {
var _local3 = _meter.mc.createEmptyMovieClip("line_" + _local4, _meter.mc.getNextHighestDepth());
_local3.lineStyle(1, 8355711, 100, false, "normal", "round", "miter");
_local3.moveTo(_local2._x, _local2._y + (chainfactor.powers.Power.HEIGHT / 2));
_local3.lineTo(_local2._x - (3 + (_local4 * 4)), _local2._y + (chainfactor.powers.Power.HEIGHT / 2));
_local3.lineTo(_local2._x - (3 + (_local4 * 4)), _meter.mc._height * (1 - _local1.cost));
_local3.lineTo(6, _meter.mc._height * (1 - _local1.cost));
_local3.lineStyle(1, 16777215, 100, false, "normal", "round", "miter");
_local3.lineTo(0, _meter.mc._height * (1 - _local1.cost));
} else {
_local1.enable();
_local1.fire();
}
_local4++;
}
}
static function get mana() {
return(_meter.amount);
}
static function getPowerById(aId) {
var _local1 = 0;
while (_local1 < _allPowers.length) {
if (_allPowers[_local1].id == aId) {
return(_allPowers[_local1]);
}
_local1++;
}
}
static function sort(a, b) {
if (a.__get__cost() < b.__get__cost()) {
return(1);
}
if (a.__get__cost() > b.__get__cost()) {
return(-1);
}
return(0);
}
static function clearInventory() {
var _local1 = 0;
while (_local1 < _inventory.length) {
_inventory[_local1].destroy();
_local1++;
}
}
static function get allPowers() {
return(_allPowers);
}
static function get inventory() {
return(_inventory);
}
static function set ignoreBreaks(aB) {
_ignoreBreaks = aB;
//return(__get__ignoreBreaks());
}
static var REDUCE_MANA_RATE = false;
}
Symbol 287 MovieClip [__Packages.chainfactor.powers.PowerMeter] Frame 0
class chainfactor.powers.PowerMeter
{
static var isEfficient;
var addIncrement, mc;
function PowerMeter () {
isEfficient = false;
addIncrement = ADD_INCREMENT_DEFAULT;
}
function draw(aHolder) {
aHolder.meter.removeMovieClip();
mc = aHolder.createEmptyMovieClip("meter", aHolder.getNextHighestDepth());
var _local3 = chainfactor.Board.HEIGHT * chainfactor.Board.GRIDSIZE;
mc.beginFill(13158600);
mc.moveTo(0, 0);
mc.lineTo(WIDTH, 0);
mc.lineTo(WIDTH, _local3);
mc.lineTo(0, _local3);
mc.lineTo(0, 0);
var _local4 = mc.createEmptyMovieClip("dashed", 1);
_local4.lineStyle(WIDTH, 0, 100, true, "normal", "none", "miter");
_local4.dashTo(WIDTH / 2, 0, WIDTH / 2, _local3, 1, 1);
var _local2 = mc.createEmptyMovieClip("bar", 2);
_local2.beginFill(0);
_local2.lineTo(WIDTH, 0);
_local2.lineTo(WIDTH, -_local3);
_local2.lineTo(0, -_local3);
_local2.lineTo(0, 0);
_local2._y = _local3;
_local2.endFill();
_local4.setMask(_local2);
return(mc);
}
function reduceManaAdd() {
addIncrement = addIncrement - MANA_REDUCE_RATE;
trace("MANA INC REDUCED TO " + addIncrement);
}
function addMana(aAmt) {
var _local2 = addIncrement;
if (aAmt) {
_local2 = aAmt;
}
if (isEfficient) {
_local2 = _local2 * EFFICIENT_MULTIPLIER;
}
amount = amount + _local2;
if (amount > 1) {
amount = 1;
}
updateBar();
return(amount);
}
function deductMana(aAmt) {
amount = amount - aAmt;
if (amount < 0) {
amount = 0;
}
updateBar();
}
function updateBar() {
mc.bar._yscale = amount * 100;
}
static var ADD_INCREMENT_DEFAULT = 0.05;
static var EFFICIENT_MULTIPLIER = 1.2;
static var MANA_REDUCE_RATE = 0.001;
static var WIDTH = 6;
var amount = 0;
}
Symbol 288 MovieClip [__Packages.chainfactor.powers.Power] Frame 0
class chainfactor.powers.Power extends util.Broadcaster
{
static var COSTS;
var _enabled, _broadcaster, mc, _name, _nameField, id, _cost;
function Power () {
super();
if (System.capabilities.playerType == "External") {
unlocked = true;
}
}
function fire() {
if (_enabled) {
doEffect();
}
}
function doEffect() {
effectDone();
}
function effectDone() {
if (_enabled) {
chainfactor.Board.defaultMultiplier();
doFire();
_broadcaster.broadcastMessage("onFire", cost);
}
}
function doFire() {
}
function enable() {
mc._alpha = 100;
_enabled = true;
}
function disable() {
mc._alpha = 50;
_enabled = false;
}
function getMovieClip(aHolder) {
var _local2 = aHolder.getNextHighestDepth();
var _local3 = aHolder.attachMovie("power_" + _name, "power_" + _local2, _local2);
return(_local3);
}
function setMovieClip(aMC) {
mc = aMC;
_nameField = mc.createTextField("name", 2, 38, 12, 0, 0);
var _local2 = new TextFormat();
_local2.size = 8;
_local2.color = 0;
_local2.font = "04b03";
_nameField.text = _name.toUpperCase();
_nameField.embedFonts = true;
_nameField.selectable = false;
_nameField.autoSize = "left";
_nameField.setTextFormat(_local2);
_nameField._visible = false;
var me = this;
mc.onRollOver = function () {
this.name._visible = true;
};
mc.onRollOut = function () {
this.name._visible = false;
};
if (cost > 0) {
mc.onRelease = function () {
if (chainfactor.Game.__get__allowDrop()) {
me.doClick(this);
me.fire();
}
};
}
}
function doClick(aMC) {
if (_enabled) {
chainfactor.SoundManager.playSound("sound_power", 100);
var clickRing = _root.createEmptyMovieClip("clickRing", _root.getNextHighestDepth());
clickRing.lineStyle(5, 0);
util.Util.drawCircle(clickRing, 0, 0, 22);
var _local3 = {x:mc._x, y:mc._y};
mc._parent.localToGlobal(_local3);
clickRing._x = _local3.x + 18;
clickRing._y = _local3.y + 18;
clickRing._alpha = 100;
var _local4 = new mx.transitions.Tween(clickRing, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 0.5, true);
var _local6 = new mx.transitions.Tween(clickRing, "_xscale", mx.transitions.easing.Regular.easeIn, 100, 200, 0.5, true);
var _local5 = new mx.transitions.Tween(clickRing, "_yscale", mx.transitions.easing.Regular.easeIn, 100, 200, 0.5, true);
_local4.onMotionFinished = function () {
clickRing.removeMovieClip();
};
}
}
function destroy() {
}
function get name() {
return(_name);
}
function get cost() {
if (COSTS[id] != null) {
return(COSTS[id]);
}
return(_cost);
}
static var HEIGHT = 36;
var unlocked = false;
var description = "";
}
Symbol 289 MovieClip [__Packages.chainfactor.powers.PManaPoints] Frame 0
class chainfactor.powers.PManaPoints extends chainfactor.powers.Power
{
var _name, _cost, id, category;
function PManaPoints () {
super();
_name = "Redeem";
_cost = 1;
id = 9;
category = "transformation";
}
function doFire() {
_global.numberBalls.addPoints(BONUS_AMOUNT);
var _local4 = _root.boardHolder.createEmptyMovieClip("manaBonus", _root.boardHolder.getNextHighestDepth());
var _local3 = _local4.createTextField("txt", 1, 0, 0, (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2, 200);
var _local5 = new TextFormat();
_local5.size = 28;
_local5.color = 0;
_local5.font = "Eurostile";
_local3.text = "REDEEM +" + BONUS_AMOUNT;
_local3.textColor = 0;
_local3.embedFonts = true;
_local3.selectable = false;
_local3.autoSize = "center";
_local3.setTextFormat(_local5);
_local4._x = ((chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2) - 75;
var _local7 = new mx.transitions.Tween(_local4, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 2, true);
var _local6 = new mx.transitions.Tween(_local4, "_y", mx.transitions.easing.None.easeNone, (chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE) / 2, 0, 2, true);
}
static var BONUS_AMOUNT = 25000;
}
Symbol 290 MovieClip [__Packages.chainfactor.powers.PThaw] Frame 0
class chainfactor.powers.PThaw extends chainfactor.powers.Power
{
var _name, _cost, id, category, effectColors, effectStartTime, effectHolder, effectMask, effectDone;
function PThaw () {
super();
_name = "Erode";
_cost = 0.87;
id = 12;
category = "destruction";
effectColors = new Array();
effectColors = [8287667, 9142991, 14472191];
}
function doEffect() {
effectStartTime = getTimer();
util.ThinkManager.registerThinker(this);
effectHolder = _root.boardHolder.createEmptyMovieClip("erodeEffect", _root.boardHolder.getNextHighestDepth());
effectMask = _root.boardHolder.createEmptyMovieClip("erodeMask", _root.boardHolder.getNextHighestDepth());
effectMask.beginFill(0);
var _local3 = chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE;
effectMask.lineTo(_local3, 0);
effectMask.lineTo(_local3, _local3);
effectMask.lineTo(0, _local3);
effectMask.lineTo(0, 0);
effectMask.endFill();
effectHolder.setMask(effectMask);
}
function effectCleanup() {
effectHolder.removeMovieClip();
effectMask.removeMovieClip();
effectDone();
}
function think(aCt) {
var _local8 = getTimer() - effectStartTime;
if (_local8 >= EFFECT_TIME) {
var me = this;
util.ThinkManager.removeThinker(this);
var _local7 = new mx.transitions.Tween(effectHolder, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 1, true);
_local7.onMotionFinished = function () {
me.effectCleanup();
};
} else {
var _local4 = 0;
while (_local4 < 50) {
var _local6 = Math.floor(Math.random() * 3) + 1;
var _local3 = effectHolder.getNextHighestDepth();
var _local2 = effectHolder.attachMovie("erode_line_" + _local6, "line_" + _local3, _local3);
_local6 = Math.floor(Math.random() * effectColors.length);
var _local5 = new Color(_local2);
_local5.setRGB(effectColors[_local6]);
_local2._alpha = Math.floor(Math.random() * (EFFECT_ALPHA_MAX - EFFECT_ALPHA_MIN)) + EFFECT_ALPHA_MIN;
_local2._x = Math.floor(((Math.random() * chainfactor.Board.WIDTH) * chainfactor.Board.GRIDSIZE) * 2);
_local4++;
}
}
}
function doFire() {
var _local3 = chainfactor.Board.__get__grid();
var _local2 = 0;
while (_local2 < chainfactor.Board.HEIGHT) {
var _local1 = 0;
while (_local1 < chainfactor.Board.WIDTH) {
_local3[_local1][_local2].thaw();
_local1++;
}
chainfactor.Board.startFalling();
_local2++;
}
}
static var EFFECT_TIME = 300;
static var EFFECT_ALPHA_MIN = 20;
static var EFFECT_ALPHA_MAX = 60;
}
Symbol 291 MovieClip [__Packages.chainfactor.powers.PShow] Frame 0
class chainfactor.powers.PShow extends chainfactor.powers.Power
{
var _name, _cost, id, category;
function PShow () {
super();
_name = "Reveal";
_cost = 0.05;
id = 8;
category = "transformation";
}
function doFire() {
var _local3 = chainfactor.Board.__get__grid();
var _local2 = 0;
while (_local2 < chainfactor.Board.HEIGHT) {
var _local1 = 0;
while (_local1 < chainfactor.Board.WIDTH) {
_local3[_local1][_local2].showAmount();
_local1++;
}
_local2++;
}
}
}
Symbol 292 MovieClip [__Packages.chainfactor.powers.PPrime] Frame 0
class chainfactor.powers.PPrime extends chainfactor.powers.Power
{
var _name, _cost, id, category, effectMC, _effectInterval, effectDone;
function PPrime () {
super();
_name = "Sift";
_cost = 0.15;
id = 1;
category = "calculation";
}
function doEffect() {
effectMC = _root.boardHolder.attachMovie("effect_sift", "effectSift", _root.boardHolder.getNextHighestDepth());
_effectInterval = setInterval(this, "effectFade", EFFECT_TIME * 1000);
}
function effectFade() {
clearInterval(_effectInterval);
var me = this;
var _local2 = new mx.transitions.Tween(effectMC, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 0.5, true);
_local2.onMotionFinished = function () {
me.effectCleanup();
};
}
function effectCleanup() {
effectMC.removeMovieClip();
effectDone();
}
function doFire() {
var _local7 = chainfactor.Board.__get__grid();
var _local6 = false;
var _local5 = 0;
while (_local5 < chainfactor.Board.HEIGHT) {
var _local2 = "";
var _local4 = new Array();
var _local3 = 0;
while (_local3 < chainfactor.Board.WIDTH) {
var _local1 = _local7[_local3][_local5];
if ((_local1 && ((!_local1.isGray) || (_local1.isGray && (_local1.amountShowing)))) && (_local1.typeOf() != "bomb")) {
_local2 = _local2 + _local1.amount;
_local4.push(_local1);
}
if ((_local2 != "") && ((((!_local1) || (_local1.typeOf() == "bomb")) || (_local1.isGray && (!_local1.amountShowing))) || (_local3 == (chainfactor.Board.WIDTH - 1)))) {
trace("NUMSTR: " + _local2);
if (util.Util.isPrime(parseInt(_local2))) {
trace("FOUND A PRIME!");
_local6 = true;
chainfactor.Board.disappearPieces(_local4);
}
_local4 = new Array();
_local2 = "";
}
_local3++;
}
_local5++;
}
}
static var EFFECT_TIME = 0.6;
}
Symbol 293 MovieClip [__Packages.chainfactor.powers.PPostpone] Frame 0
class chainfactor.powers.PPostpone extends chainfactor.powers.Power
{
var _name, _cost, id, category;
function PPostpone () {
super();
_name = "Postpone";
_cost = 0;
id = 11;
category = "provision";
}
function doFire() {
var _local3 = this;
chainfactor.LevelManager.EVENTS_PER_LEVEL = Math.floor(chainfactor.LevelManager.EVENTS_PER_LEVEL * 1.5);
chainfactor.LevelManager.initBehavior(chainfactor.AddGarbage);
if (_global.numberBalls.mode == "survival") {
chainfactor.LevelManager.MIN_EVENTS_PER_LEVEL = chainfactor.LevelManager.EVENTS_PER_LEVEL;
}
}
function destroy() {
}
}
Symbol 294 MovieClip [__Packages.chainfactor.AddGarbage] Frame 0
class chainfactor.AddGarbage implements chainfactor.ILevelBehavior
{
function AddGarbage () {
}
function doChange(aLevel) {
chainfactor.Board.addGarbageRow();
}
function typeOf() {
return("AddGarbage");
}
}
Symbol 295 MovieClip [__Packages.chainfactor.powers.PPromote] Frame 0
class chainfactor.powers.PPromote extends chainfactor.powers.Power
{
static var EFFECT_COLORS;
var _name, _cost, id, category, effectHolder, effectDone;
function PPromote () {
super();
_name = "Promote";
_cost = 0.36;
id = 10;
category = "calculation";
EFFECT_COLORS = new Array();
EFFECT_COLORS = [9478854, 11309254, 9142991];
}
function doEffect() {
var _local8 = Math.floor(Math.random() * (EFFECT_MAX_ARROWS - EFFECT_MIN_ARROWS)) + EFFECT_MIN_ARROWS;
effectHolder = _root.boardHolder.createEmptyMovieClip("effectHolder", _root.boardHolder.getNextHighestDepth());
var _local4 = 0;
while (_local4 < _local8) {
var _local3 = effectHolder.attachMovie("promote_arrow", "promoteArrow_" + _local4, _local4);
_local3._y = EFFECT_START_Y;
_local3._x = (Math.floor(Math.random() * chainfactor.Board.WIDTH) * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE - (Math.random() * chainfactor.Board.GRIDSIZE));
_local3._alpha = 55;
var _local5 = new Color(_local3);
_local5.setRGB(EFFECT_COLORS[Math.floor(Math.random() * EFFECT_COLORS.length)]);
var me = this;
var _local7 = EFFECT_END_Y_MIN + (Math.random() * EFFECT_END_FUDGE);
var _local6 = new mx.transitions.Tween(_local3, "_y", mx.transitions.easing.None.easeNone, EFFECT_START_Y, _local7, EFFECT_TIME, true);
if (_local4 == 0) {
_local6.onMotionFinished = function () {
me.effectCleanup();
};
}
_local4++;
}
}
function effectCleanup() {
var _local3 = new mx.transitions.Tween(effectHolder, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 0.5, true);
_local3.onMotionFinished = function () {
_root.boardHolder.effectHolder.removeMovieClip();
};
effectDone();
}
function doFire() {
var _local4 = chainfactor.Board.__get__grid();
var _local3 = 0;
while (_local3 < chainfactor.Board.WIDTH) {
var _local2 = 0;
while (_local2 < chainfactor.Board.HEIGHT) {
var _local1 = _local4[_local3][_local2];
if (!_local1.isGray) {
if (_local1.amount == chainfactor.Piece.MAX_AMT) {
_local1.makeGray();
} else {
_local1.amount++;
_local1.showAmount();
}
}
_local2++;
}
_local3++;
}
chainfactor.Board.startFalling();
}
static var EFFECT_TIME = 0.5;
static var EFFECT_MIN_ARROWS = 4;
static var EFFECT_MAX_ARROWS = 7;
static var EFFECT_START_Y = 395;
static var EFFECT_END_Y_MIN = -180;
static var EFFECT_END_FUDGE = -600;
}
Symbol 296 MovieClip [__Packages.chainfactor.powers.PSniper] Frame 0
class chainfactor.powers.PSniper extends chainfactor.powers.Power
{
var _name, _cost, id, category, _effectMC, _enabled, _broadcaster, __get__cost, mc, _mouseListener, _reticle, _messageMC;
function PSniper () {
super();
_name = "Cull";
_cost = 0.32;
id = 7;
category = "destruction";
}
function effectCleanup() {
_effectMC.removeMovieClip();
}
function fire() {
if (_enabled && (boardHasGray())) {
chainfactor.Board.defaultMultiplier();
doFire();
_broadcaster.broadcastMessage("onFire", __get__cost());
} else {
mc.clickRing.removeMovieClip();
}
}
function boardHasGray() {
var _local3 = chainfactor.Board.__get__grid();
var _local2 = 0;
while (_local2 < chainfactor.Board.WIDTH) {
var _local1 = 0;
while (_local1 < chainfactor.Board.HEIGHT) {
if (_local3[_local2][_local1].isGray) {
return(true);
}
_local1++;
}
_local2++;
}
return(false);
}
function doFire() {
var me = this;
_mouseListener = new Object();
_mouseListener.onMouseUp = function () {
me.clickPieceAt(Math.floor(_root.boardHolder._xmouse / chainfactor.Board.GRIDSIZE), Math.floor(_root.boardHolder._ymouse / chainfactor.Board.GRIDSIZE));
};
_mouseListener.onMouseMove = function () {
me.pieceRollOver(Math.floor(_root.boardHolder._xmouse / chainfactor.Board.GRIDSIZE), Math.floor(_root.boardHolder._ymouse / chainfactor.Board.GRIDSIZE));
};
Mouse.addListener(_mouseListener);
chainfactor.Game.__set__allowDrop(false);
_reticle = _root.boardHolder.createEmptyMovieClip("reticle", _root.boardHolder.getNextHighestDepth());
_reticle.lineStyle(2, 0);
util.Util.drawCircle(_reticle, 0, 0, chainfactor.Board.GRIDSIZE / 2);
_reticle.moveTo(0, (-chainfactor.Board.GRIDSIZE) / 2);
_reticle.lineTo(0, (-chainfactor.Board.GRIDSIZE) / 4);
_reticle.moveTo(0, chainfactor.Board.GRIDSIZE / 2);
_reticle.lineTo(0, chainfactor.Board.GRIDSIZE / 4);
_reticle.moveTo((-chainfactor.Board.GRIDSIZE) / 2, 0);
_reticle.lineTo((-chainfactor.Board.GRIDSIZE) / 4, 0);
_reticle.moveTo(chainfactor.Board.GRIDSIZE / 2, 0);
_reticle.lineTo(chainfactor.Board.GRIDSIZE / 4, 0);
_reticle.moveTo((-chainfactor.Board.GRIDSIZE) / 8, 0);
_reticle.lineTo(chainfactor.Board.GRIDSIZE / 8, 0);
_reticle.moveTo(0, (-chainfactor.Board.GRIDSIZE) / 8);
_reticle.lineTo(0, chainfactor.Board.GRIDSIZE / 8);
_reticle._visible = false;
showMessage();
_global.numberBalls.hideSpawn();
}
function showMessage() {
_messageMC = _root.boardHolder.createEmptyMovieClip("cullMessage", _root.boardHolder.getNextHighestDepth());
var _local3 = _messageMC.createTextField("txt", 1, 0, 0, chainfactor.Board.WIDTH * chainfactor.Board.GRIDSIZE, 200);
var _local4 = new TextFormat();
_local4.size = 18;
_local4.color = 0;
_local4.font = "EurostileBold";
_local3.text = "CHOOSE A GRAY DISC TO REMOVE";
_local3.embedFonts = true;
_local3.selectable = false;
_local3.autoSize = "center";
_local3.setTextFormat(_local4);
_messageMC._y = (chainfactor.Board.HEIGHT * chainfactor.Board.GRIDSIZE) + 40;
}
function hideMessage() {
_messageMC.removeMovieClip();
}
function pieceRollOver(aX, aY) {
var _local2 = chainfactor.Board.getPieceAt(aX, aY);
if (_local2.isGray) {
_reticle._visible = true;
_reticle._x = (aX * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
_reticle._y = (aY * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
} else {
_reticle._visible = false;
}
}
function clickPieceAt(aX, aY) {
var _local3 = chainfactor.Board.getPieceAt(aX, aY);
if (_local3 && (_local3.isGray)) {
chainfactor.SoundManager.playSound("sound_cull", 100);
_effectMC = _root.boardHolder.attachMovie("cull_effect", "cull_effect", _root.boardHolder.getNextHighestDepth());
_effectMC._x = (aX * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
_effectMC._y = (aY * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
var _local4 = new mx.transitions.Tween(_effectMC, "_alpha", mx.transitions.easing.Regular.easeIn, 0, 100, 0.25, true);
var _local6 = new mx.transitions.Tween(_effectMC, "_xscale", mx.transitions.easing.Regular.easeIn, 0, 100, 0.25, true);
var _local5 = new mx.transitions.Tween(_effectMC, "_yscale", mx.transitions.easing.Regular.easeIn, 0, 100, 0.25, true);
var me = this;
_local4.onMotionFinished = function () {
me.snipePiece(aX, aY);
};
}
}
function snipePiece(aX, aY) {
var _local3 = chainfactor.Board.getPieceAt(aX, aY);
delete _mouseListener.onMouseUp;
chainfactor.Game.__set__allowDrop(true);
var me = this;
var _local4 = new Object();
_local4.onDisappear = function (aPiece) {
me.cleanup();
};
_local3.addListener(_local4);
chainfactor.Board.disappearPieces([_local3]);
_reticle.removeMovieClip();
hideMessage();
_global.numberBalls.showSpawn();
var _local5 = new mx.transitions.Tween(_effectMC, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, 0.25, true);
_local5.onMotionFinished = function () {
me.effectCleanup();
};
}
function cleanup() {
Mouse.removeListener(_mouseListener);
hideMessage();
}
}
Symbol 297 MovieClip [__Packages.chainfactor.powers.PGoldCoin] Frame 0
class chainfactor.powers.PGoldCoin extends chainfactor.powers.Power
{
var _name, _cost, _listener, id, category, _spawned, _mc, _targetAmount, _targetCol;
function PGoldCoin () {
super();
_name = "Lure";
_cost = 0;
_listener = new Object();
id = 5;
category = "provision";
}
function doFire() {
var me = this;
_listener.onPieceDropped = function (aPiece, aX, aY) {
me.handlePieceDropped(aPiece, aX, aY);
};
_listener.onSpawnPiece = function () {
me.handleSpawnPiece();
};
util.StaticBroadcaster.addListener(_listener);
var _local2 = new Object();
_local2.onTilt = function () {
trace("lure hearing tilt");
me.handleTilt();
};
util.StaticBroadcaster.addListener(_local2);
}
function handleTilt() {
if (_spawned) {
pickColumn(true);
}
}
function handleSpawnPiece() {
if (_spawned) {
pickColumn();
} else {
tryToSpawn();
}
}
function tryToSpawn() {
trace("TRYING TO SPAWN: " + chainfactor.powers.PowerManager.__get__mana());
if ((Math.random() < SPAWN_CHANCE) && (chainfactor.powers.PowerManager.__get__mana() >= MANA_DRAIN)) {
spawn();
pickColumn();
chainfactor.SoundManager.playSound("sound_lure", 100);
}
}
function spawn() {
_mc.removeMovieClip();
_mc = _root.boardHolder.attachMovie("lure_anim", "lure", _root.boardHolder.getNextHighestDepth());
var _local3 = _mc.createTextField("award", 1, 0, -10, 0, 0);
_local3.textColor = 0;
_local3.embedFonts = true;
_local3.selectable = false;
_local3.autoSize = "center";
_local3.text = "";
_targetAmount = 0;
setAmountText(0);
_spawned = true;
}
function unSpawn() {
_spawned = false;
_mc.removeMovieClip();
}
function setAmountText(aAmt) {
var _local2 = new TextFormat();
_local2.size = 13;
_local2.color = 0;
_local2.align = "center";
_local2.font = "EurostileBold";
_mc.award.text = aAmt;
_mc.award.setTextFormat(_local2);
}
function pickColumn(aIgnoreMana) {
if ((chainfactor.powers.PowerManager.__get__mana() >= MANA_DRAIN) || (aIgnoreMana)) {
var _local2 = _targetCol;
var _local3 = 0;
while ((_targetCol == _local2) || (chainfactor.Board.getColumnSize(_targetCol) == chainfactor.Board.HEIGHT)) {
_targetCol = Math.floor(Math.random() * chainfactor.Board.WIDTH);
if (_local3 > 30) {
_targetCol = _local2;
break;
}
_local3++;
}
var _local7 = chainfactor.Board.getEmptyRow(_targetCol);
if (!_targetAmount) {
_targetAmount = MIN_REWARD;
} else if (!aIgnoreMana) {
_targetAmount = _targetAmount + (MIN_REWARD_INC + (Math.floor(Math.random() * ((MAX_REWARD_INC - MIN_REWARD_INC) / 10)) * 10));
}
var _local5 = (_targetCol * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
var _local4 = (_local7 * chainfactor.Board.GRIDSIZE) + (chainfactor.Board.GRIDSIZE / 2);
_mc._visible = true;
var myMC = _mc;
var newAmt = _targetAmount;
if ((_mc._x == 0) && (_mc._y == 0)) {
_mc._x = _local5;
_mc._y = _local4;
setAmountText(_targetAmount);
} else {
var myMC = _mc;
var _local9 = new mx.transitions.Tween(myMC, "_x", mx.transitions.easing.Regular.easeOut, myMC._x, _local5, 0.5, true);
var _local6 = new mx.transitions.Tween(myMC, "_y", mx.transitions.easing.Regular.easeOut, myMC._y, _local4, 0.5, true);
var newAmt = _targetAmount;
var me = this;
_local6.onMotionFinished = function () {
me.setAmountText(newAmt);
var _local2 = new mx.transitions.Tween(myMC, "_xscale", mx.transitions.easing.Bounce.easeIn, 110, 100, 0.25, true);
var _local1 = new mx.transitions.Tween(myMC, "_yscale", mx.transitions.easing.Bounce.easeIn, 110, 100, 0.25, true);
};
}
} else {
unSpawn();
}
}
function handlePieceDropped(aPiece, aX, aY) {
if (aX == _targetCol) {
if (_spawned) {
awardPoints(_targetAmount);
chainfactor.powers.PowerManager.deductMana(MANA_DRAIN);
chainfactor.SoundManager.playSound("sound_lure_reward", 10);
}
} else if (_spawned) {
chainfactor.SoundManager.playSound("sound_lure_unspawn", 50);
unSpawn();
}
}
function awardPoints(aAmt) {
_global.numberBalls.addPoints(aAmt);
chainfactor.Board.showAward(aAmt, _targetCol, _mc._y / chainfactor.Board.GRIDSIZE);
}
function destroy() {
delete _listener.onPieceDropped;
delete _listener.onSpawnPiece;
unSpawn();
}
static var SPAWN_CHANCE = 0.05;
static var MANA_DRAIN = 0.03;
static var MIN_REWARD = 500;
static var MIN_REWARD_INC = 10;
static var MAX_REWARD_INC = 50;
}
Symbol 298 MovieClip [__Packages.mx.transitions.easing.Bounce] Frame 0
class mx.transitions.easing.Bounce
{
function Bounce () {
}
static function easeOut(t, b, c, d) {
t = t / d;
if (t < 0.363636363636364) {
return((c * ((7.5625 * t) * t)) + b);
}
if (t < 0.727272727272727) {
t = t - 0.545454545454545;
return((c * (((7.5625 * t) * t) + 0.75)) + b);
}
if (t < 0.909090909090909) {
t = t - 0.818181818181818;
return((c * (((7.5625 * t) * t) + 0.9375)) + b);
}
t = t - 0.954545454545455;
return((c * (((7.5625 * t) * t) + 0.984375)) + b);
}
static function easeIn(t, b, c, d) {
return((c - easeOut(d - t, 0, c, d)) + b);
}
static function easeInOut(t, b, c, d) {
if (t < (d / 2)) {
return((easeIn(t * 2, 0, c, d) * 0.5) + b);
}
return(((easeOut((t * 2) - d, 0, c, d) * 0.5) + (c * 0.5)) + b);
}
static var version = "1.1.0.52";
}
Symbol 299 MovieClip [__Packages.chainfactor.powers.PBomb] Frame 0
class chainfactor.powers.PBomb extends chainfactor.powers.Power
{
var _name, _cost, id, category, _enabled, _broadcaster, __get__cost;
function PBomb () {
super();
_name = "Detonate";
_cost = 0.24;
id = 4;
category = "destruction";
}
function fire() {
if (_enabled) {
chainfactor.Board.defaultMultiplier();
doFire();
_broadcaster.broadcastMessage("onFire", __get__cost());
chainfactor.powers.PowerManager.__set__ignoreBreaks(false);
}
}
function doFire() {
_global.numberBalls.fillBag([new chainfactor.PieceBomb()]);
}
}
Symbol 300 MovieClip [__Packages.chainfactor.PieceBomb] Frame 0
class chainfactor.PieceBomb extends chainfactor.Piece
{
var _ticks, _listener, amount, mc, highlights, _x, _y, _clock;
function PieceBomb () {
super();
_ticks = Math.floor(Math.random() * (MAX_TICKS - MIN_TICKS)) + MIN_TICKS;
_currentTick = _ticks + 1;
var me = this;
_listener = new Object();
_listener.onSpawnPiece = function () {
me.tick();
};
_listener.onDisappearDone = function () {
me.checkExplode();
};
_listener.onGameOver = function () {
me.handleGameOver();
};
util.StaticBroadcaster.addListener(_listener);
}
function typeOf() {
return("bomb");
}
function handleGameOver() {
cleanUp();
}
function pickRandomAmount() {
amount = 0;
}
function tick() {
drawWedge(MAX_TICKS - _currentTick, 6710886);
_currentTick--;
}
function checkExplode() {
if (_currentTick == 0) {
explode();
}
}
function explode() {
if (!_exploded) {
chainfactor.Game.__set__allowDrop(false);
chainfactor.SoundManager.playSound("sound_detonate", 100);
chainfactor.powers.PowerManager.__set__ignoreBreaks(true);
_exploded = true;
var _local4 = new mx.transitions.Tween(mc, "_alpha", mx.transitions.easing.Regular.easeIn, 200, 0, EXPLODE_TIME, true);
var _local3 = new mx.transitions.Tween(mc, "_xscale", mx.transitions.easing.Regular.easeIn, 100, 200, EXPLODE_TIME, true);
var _local2 = new mx.transitions.Tween(mc, "_yscale", mx.transitions.easing.Regular.easeIn, 100, 200, EXPLODE_TIME, true);
highlights = new Array();
highlights.push(drawHilite(_x, _y - 1));
highlights.push(drawHilite(_x, _y + 1));
highlights.push(drawHilite(_x - 1, _y));
highlights.push(drawHilite(_x + 1, _y));
var me = this;
_local2.onMotionFinished = function () {
me.finishExplode();
};
}
}
function finishExplode() {
var _local3 = new Array();
var _local10 = chainfactor.Board.__get__grid()[_x][_y - 1];
var _local9 = chainfactor.Board.__get__grid()[_x][_y + 1];
var _local8 = chainfactor.Board.__get__grid()[_x - 1][_y];
var _local7 = chainfactor.Board.__get__grid()[_x + 1][_y];
_local3 = [_local10, _local9, _local8, _local7];
var _local5 = null;
var _local6 = new Array();
var _local2 = 0;
while (_local2 < _local3.length) {
if (_local3[_local2].isBomb) {
_local3[_local2].explode();
} else if (_local3[_local2]) {
_local5 = _local3[_local2];
_local6.push(_local3[_local2]);
var me = this;
var _local4 = new Object();
_local4.onDisappear = function (aPiece) {
me.cleanUp();
};
_local3[_local2].addListener(_local4);
}
_local2++;
}
if (!_local5) {
cleanUp();
} else {
chainfactor.Board.disappearPieces(_local6);
}
}
function cleanUp() {
var _local2 = 0;
while (_local2 < highlights.length) {
highlights[_local2].removeMovieClip();
_local2++;
}
chainfactor.Board.removePiecesSynced([this]);
chainfactor.Board.__get__grid()[_x][_y] = null;
util.StaticBroadcaster.removeListener(_listener);
}
function drawHilite(aX, aY) {
var _local1;
if ((((aX >= 0) && (aY >= 0)) && (aX < chainfactor.Board.WIDTH)) && (aY < chainfactor.Board.HEIGHT)) {
var _local5 = chainfactor.Board.back.getNextHighestDepth();
_local1 = chainfactor.Board.back.createEmptyMovieClip("hi_" + _local5, _local5);
_local1.beginFill(0);
var _local3 = aX * chainfactor.Board.GRIDSIZE;
var _local2 = aY * chainfactor.Board.GRIDSIZE;
var _local6 = _local3 + chainfactor.Board.GRIDSIZE;
var _local4 = _local2 + chainfactor.Board.GRIDSIZE;
_local1.moveTo(_local3, _local2);
_local1.lineTo(_local6, _local2);
_local1.lineTo(_local6, _local4);
_local1.lineTo(_local3, _local4);
_local1.lineTo(_local3, _local2);
_local1.endFill();
}
return(_local1);
}
function draw(aHolder) {
var _local3 = aHolder.getNextHighestDepth();
mc = aHolder.createEmptyMovieClip("piece_" + _local3, _local3);
var _local4 = mc.createEmptyMovieClip("circle", 0);
_local4.beginFill(0, 100);
util.Util.drawCircle(_local4, 0, 0, (chainfactor.Board.GRIDSIZE / 2) - 1);
_clock = mc.createEmptyMovieClip("clock", 1);
var _local6 = [2236962, 4473924, 8947848, 11184810, 13421772, 16777215];
var _local2 = 0;
while (_local2 < MAX_TICKS) {
if (_local2 < (MAX_TICKS - _ticks)) {
drawWedge(_local2, 6710886);
} else {
drawWedge(_local2, 16777215);
}
_local2++;
}
return(mc);
}
function drawWedge(aPos, aColor) {
var _local2 = _clock.createEmptyMovieClip("wedge_" + aPos, aPos);
_local2.lineStyle(0, 2);
_local2.beginFill(aColor);
_local2.drawWedge(0, 0, ((aPos - 2) * (-360 / MAX_TICKS)) - 30, -360 / MAX_TICKS, chainfactor.Board.GRIDSIZE / 4);
_local2.endFill();
}
function thaw() {
}
function showAmount() {
}
static var MIN_TICKS = 2;
static var MAX_TICKS = 6;
static var EXPLODE_TIME = 0.5;
var _currentTick = -1;
var isBomb = true;
var _exploded = false;
}
Symbol 301 MovieClip [__Packages.chainfactor.powers.PEfficiency] Frame 0
class chainfactor.powers.PEfficiency extends chainfactor.powers.Power
{
var _name, _cost, id, category;
function PEfficiency () {
super();
_name = "Thrive";
_cost = 0;
id = 6;
category = "provision";
}
function doFire() {
chainfactor.powers.PowerMeter.isEfficient = true;
}
}
Symbol 302 MovieClip [__Packages.chainfactor.powers.PRotate] Frame 0
class chainfactor.powers.PRotate extends chainfactor.powers.Power
{
var _name, _cost, id, category, _listener, _broadcaster;
function PRotate () {
super();
_name = "Tilt";
_cost = 0.08;
id = 2;
category = "transformation";
}
function doFire() {
var me = this;
var _local2 = new mx.transitions.Tween(chainfactor.Board.mc._parent, "_rotation", mx.transitions.easing.Regular.easeOut, 0, 90, 0.75, true);
_local2.onMotionFinished = function () {
me.movePieces();
chainfactor.Board.mc._parent._rotation = 0;
};
chainfactor.Game.__set__allowDrop(false);
}
function movePieces() {
var _local5 = new Array();
var _local6 = chainfactor.Board.__get__grid();
var _local4 = 0;
while (_local4 < chainfactor.Board.WIDTH) {
_local5[_local4] = new Array();
var _local3 = 0;
while (_local3 < chainfactor.Board.HEIGHT) {
_local5[_local4][_local3] = _local6[_local4][_local3];
_local3++;
}
_local4++;
}
chainfactor.Board.clearAll();
_local4 = 0;
while (_local4 < chainfactor.Board.WIDTH) {
var _local3 = 0;
while (_local3 < chainfactor.Board.HEIGHT) {
var _local2 = _local5[_local4][_local3];
chainfactor.Board.addPieceAt(_local2, (chainfactor.Board.HEIGHT - _local2.y) - 1, _local2.x);
if (_local2.amountShowing) {
_local2.showAmount();
}
_local3++;
}
_local4++;
}
var me = this;
_listener = new Object();
_listener.onDisappearDone = function () {
me.handleDisappearDone();
};
util.StaticBroadcaster.addListener(_listener);
chainfactor.Board.startFalling();
}
function handleDisappearDone() {
util.StaticBroadcaster.removeListener(_listener);
_broadcaster.broadcastMessage("onTilt");
}
static var BONUS_AMOUNT = 5000;
}
Symbol 303 MovieClip [__Packages.chainfactor.powers.PScoreballs] Frame 0
class chainfactor.powers.PScoreballs extends chainfactor.powers.Power
{
var _name, _cost, id, category, _flashStart, effectDone, _listener;
function PScoreballs () {
super();
_name = "Transmute";
_cost = 0.17;
id = 3;
category = "calculation";
}
function doEffect() {
util.ThinkManager.registerThinker(this);
_flashStart = getTimer();
}
function think(aCt) {
var _local10 = util.Util.addCommas(_global.numberBalls.score);
var _local9 = "";
if ((getTimer() - _flashStart) <= FLASH_TIME) {
if ((aCt % FLASH_PERIOD) == 0) {
var _local5 = 0;
while (_local5 < _local10.length) {
var _local4 = _local10.charAt(_local5);
var _local6;
var _local8 = "";
var _local7 = "";
if ((parseInt(_local4) >= 1) && (parseInt(_local4) <= 7)) {
if (toggle) {
_local8 = "<b>";
_local7 = "</b>";
_local6 = "#" + chainfactor.Piece.COLORS[parseInt(_local4)].toString(16);
} else {
_local6 = "#000000";
}
_local9 = _local9 + (((((("<font color='" + _local6) + "'>") + _local8) + _local4) + _local7) + "</font>");
} else {
_local9 = _local9 + _local4;
}
_local5++;
}
toggle = !toggle;
_root.score.htmlText = _local9;
}
} else {
util.ThinkManager.removeThinker(this);
_root.score.text = util.Util.addCommas(_global.numberBalls.score);
effectDone();
}
}
function doFire() {
var _local5 = "" + _global.numberBalls.score;
var _local6 = new Array();
var _local4 = 0;
while (_local4 < _local5.length) {
var _local3 = new chainfactor.Piece();
_local3.amount = parseInt(_local5.charAt(_local4, 1));
if ((_local3.amount > 0) && (_local3.amount <= 7)) {
_local3.isGray = false;
_local6.push(_local3);
}
_local4++;
}
transmuteScoreDisplay();
_global.numberBalls.fillBag(_local6);
}
function transmuteScoreDisplay() {
var _local2 = "" + _global.numberBalls.score;
}
function destroy() {
_global.numberBalls.removeListener(_listener);
delete _listener;
}
static var FLASH_PERIOD = 5;
static var FLASH_TIME = 1000;
static var MAX_BAG = 15;
var toggle = true;
}
Symbol 304 MovieClip [__Packages.chainfactor.Randomizer] Frame 0
class chainfactor.Randomizer
{
function Randomizer () {
}
static function getRandomString(aStr) {
var _local4 = (((_global.numberBalls.score + "") + "^") + ",") + chainfactor.LevelManager.__get__level();
var _local3 = (((aStr + "") + ")") + "~") + util.Util.MD5(_local4);
var _local2 = (((util.Util.MD5(_local3) + "") + "|") + "u") + _global.numberBalls.mode;
return(util.Util.MD5(_local2));
}
}
Symbol 305 MovieClip [__Packages.chainfactor.HighScoreManager] Frame 0
class chainfactor.HighScoreManager
{
function HighScoreManager () {
}
static function getScore(aMode) {
trace("trying to get score: " + aMode);
var _local1 = SharedObject.getLocal("hiScore_" + aMode);
trace("here's what i got: " + _local1.data.highScore);
return(Number(_local1.data.highScore));
}
static function saveScore(aScore, aMode) {
if ((aScore > getScore(aMode)) || (!getScore(aMode))) {
var _local1 = SharedObject.getLocal("hiScore_" + aMode);
_local1.data.highScore = aScore;
_local1.flush();
}
}
static function getName() {
var _local1 = SharedObject.getLocal("hiScore_name");
return(_local1.data.name);
}
static function saveName(aName) {
var _local1 = SharedObject.getLocal("hiScore_name");
_local1.data.name = aName;
_local1.flush();
}
}
Symbol 306 MovieClip [__Packages.chainfactor.LevelClock] Frame 0
class chainfactor.LevelClock extends MovieClip
{
var levelNum, nextLevelTxt, __get__level, ballMCs, createEmptyMovieClip, getNextHighestDepth, __get__nextLevel, __get__dropCount;
function LevelClock () {
super();
}
function set level(aNum) {
levelNum.text = "LEVEL " + aNum;
nextLevelTxt._x = levelNum.textWidth + 2;
//return(__get__level());
}
function set nextLevel(aNum) {
var _local3 = 0;
while (_local3 < ballMCs.length) {
ballMCs[_local3].removeMovieClip();
_local3++;
}
ballMCs = new Array();
_local3 = 0;
while (_local3 < aNum) {
var _local2 = createEmptyMovieClip("ball_" + _local3, getNextHighestDepth());
_local2.beginFill(16777215);
util.Util.drawCircle(_local2, (_local3 * ((BALL_RADIUS * 2) + 2)) + BALL_RADIUS, 20, BALL_RADIUS);
_local2.endFill();
_local2.color = new Color(_local2);
_local2.color.setRGB(13421772);
ballMCs.push(_local2);
_local3++;
}
//return(__get__nextLevel());
}
function set dropCount(aNum) {
ballMCs[(ballMCs.length - aNum) - 1].color.setRGB(0);
nextLevelTxt.text = ("NEXT LEVEL IN " + aNum) + " DROP";
if (aNum > 1) {
nextLevelTxt.text = nextLevelTxt.text + "S";
}
//return(__get__dropCount());
}
static var BALL_RADIUS = 4;
}
Symbol 307 MovieClip [__Packages.chainfactor.SaveScore] Frame 0
class chainfactor.SaveScore extends MovieClip
{
var button_close, button_save, name, notes, gotoAndStop, removeMovieClip;
function SaveScore () {
super();
var me = this;
button_close.onRelease = function () {
me.close();
};
button_save.onRelease = function () {
this.enabled = false;
me.save();
};
button_save._visible = true;
var _local3 = chainfactor.HighScoreManager.getName();
if (_local3) {
name.text = _local3;
}
}
function save() {
if (name.text != "") {
var me = this;
var _local4 = new LoadVars();
_local4.onLoad = function (success) {
if (success) {
trace("RESPONSE:\n" + this);
}
};
_local4.onData = function (src) {
trace("response from server: " + src);
if (src == undefined) {
this.notes.text = this.notes.text + "\n\nERROR CONNECTING TO SERVER";
this.gotoAndStop(2);
} else {
me.parseResponse(new XML(src));
}
};
var _local3 = new LoadVars();
chainfactor.HighScoreManager.saveName(name.text);
var _local6 = name.text;
_local3.type = "hiscore";
_local3.score = _global.numberBalls.score;
_local3.level = chainfactor.LevelManager.level;
_local3.mode = _global.numberBalls.mode;
_local3.name = name.text;
_local3.version = chainfactor.Game.VERSION;
_local3.notes = notes.text;
_local3.p1 = chainfactor.powers.PowerManager.__get__inventory()[0].id;
_local3.p2 = chainfactor.powers.PowerManager.__get__inventory()[1].id;
_local3.p3 = chainfactor.powers.PowerManager.__get__inventory()[2].id;
if ((!_local3.p1) || (_local3.p1 == undefined)) {
_local3.p1 = 0;
}
if ((!_local3.p2) || (_local3.p2 == undefined)) {
_local3.p2 = 0;
}
if ((!_local3.p3) || (_local3.p3 == undefined)) {
_local3.p3 = 0;
}
_local3.ver = chainfactor.Stats.getSession()[1];
var _local5 = chainfactor.Randomizer.getRandomString(_local6);
_local3.sendAndLoad(SAVE_URL + _local5, _local4, "POST");
}
}
function parseResponse(aXML, src) {
aXML.ignoreWhite = true;
notes.text = aXML;
gotoAndStop(2);
}
function fadeOut() {
var _local2 = new mx.transitions.Tween(this, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 0.5, true);
button_save._visible = false;
var me = this;
_local2.onMotionFinished = function () {
me.close();
};
}
function close() {
removeMovieClip();
}
var SAVE_URL = "save_score.php?sid=";
}
Symbol 308 MovieClip [__Packages.chainfactor.PowerUnlocker] Frame 0
class chainfactor.PowerUnlocker extends MovieClip
{
var _x, _y, _mode, credit, msgBox, button_submit, codeInput, _key;
function PowerUnlocker () {
super();
_x = 158;
_y = 160;
_mode = "attempt";
credit._visible = false;
msgBox.text = "Enter a Code";
var me = this;
button_submit.onRelease = function () {
me.handleSubmit();
};
}
function handleSubmit() {
switch (_mode) {
case "attempt" :
sendCode();
break;
case "email" :
sendCredit();
}
}
function sendCode() {
msgBox.text = "Submitting code...";
var me = this;
var _local2 = new LoadVars();
_local2.onError = function () {
};
_local2.onLoad = function (success) {
if (success) {
trace("RESPONSE:\n" + this);
} else {
me.msgBox.text = "Unable to contact server.";
}
};
_local2.onData = function (src) {
if (src == undefined) {
me.msgBox.text = "Server error.";
} else {
var _local1 = new XML();
_local1.ignoreWhite = true;
_local1.parseXML(src);
me.parseCodeResponse(_local1);
}
};
var _local3 = new LoadVars();
_local3.task = "u";
_local3.keyword = codeInput.keyword.text;
_local3.number = codeInput.keyNumber.text;
_local3.sendAndLoad(URL + util.Util.getRandomString(32), _local2, "POST");
}
function parseCodeResponse(aXML) {
trace("xml: " + aXML);
var _local2 = aXML.firstChild.childNodes[0];
trace("nodie: " + _local2.attributes.mode);
if (_local2.attributes.mode == "unlock") {
msgBox.text = "Congratulations. You were the first person to enter this code.\nEnter your name and email below for credit.";
codeInput._visible = false;
credit._visible = true;
_key = _local2.attributes.id;
_mode = "email";
chainfactor.SoundManager.playSound("sound_good_code", 100);
} else if (_local2.attributes.mode == "failure") {
trace("this should be failure: " + msgBox);
msgBox.text = "Incorrect code.";
chainfactor.SoundManager.playSound("sound_bad_code", 100);
} else if (_local2.attributes.mode == "found") {
msgBox.text = "Code entry successful. Enter your name and email below.";
codeInput._visible = false;
credit._visible = true;
_key = _local2.attributes.id;
_mode = "email";
chainfactor.SoundManager.playSound("sound_good_code", 100);
} else {
trace("i should be here");
msgBox.text = "Incorrect code";
chainfactor.SoundManager.playSound("sound_bad_code", 100);
}
}
function sendCredit() {
var me = this;
var _local3 = new LoadVars();
_local3.onLoad = function (success) {
if (success) {
trace("RESPONSE:\n" + this);
}
};
_local3.onData = function (src) {
if (src == undefined) {
} else {
me.parseCreditResponse(new XML(src));
}
};
var _local2 = new LoadVars();
_local2.task = "c";
_local2.key = _key;
_local2.name = credit.name.text;
_local2.email = credit.email.text;
_local2.sendAndLoad(URL + util.Util.getRandomString(32), _local3, "POST");
}
function parseCreditResponse(aXML) {
var me = this;
msgBox.text = "Thank you.";
credit._visible = false;
var _local2 = new mx.transitions.Tween(this, "_alpha", mx.transitions.easing.None.easeNone, 100, 0, 1, true);
_local2.onMotionFinished = function () {
me.removeMovieClip();
};
}
static var URL = "unlock.php?sess=";
}
Symbol 309 MovieClip [__Packages.chainfactor.SequenceProgressFinal] Frame 0
class chainfactor.SequenceProgressFinal extends MovieClip
{
var _idx, onEnterFrame, _unlockers, gotoAndPlay, _lastTime, unlocker;
function SequenceProgressFinal () {
super();
_frameCount = 0;
_idx = 0;
loadXML();
onEnterFrame = function () {
this.showUnlockers();
};
}
function loadXML() {
var me = this;
var _local2 = new XML();
_local2.ignoreWhite = true;
_local2.onLoad = function () {
me.parseXML(this);
};
_local2.load(XML_URL);
}
function parseXML(aXML) {
_unlockers = new Array();
var _local2 = 0;
while (_local2 < aXML.firstChild.childNodes.length) {
_unlockers.push(aXML.firstChild.childNodes[_local2].firstChild);
_local2++;
}
gotoAndPlay(2);
}
function showUnlockers() {
if (_showNames && (!_lastTime)) {
_lastTime = getTimer();
}
if (_showNames && (_unlockers)) {
var _local2 = getTimer() - _lastTime;
if (_local2 >= BLINK_PERIOD) {
unlocker.htmlText = "<b>> </b>";
_lastTime = getTimer();
_idx++;
if (_idx >= _unlockers.length) {
_idx = 0;
}
} else if (_local2 >= DISPLAY_PERIOD) {
unlocker.htmlText = ("<b>> " + _unlockers[_idx]) + "</b>";
}
}
}
static var XML_URL = "unlockers.xml";
static var DISPLAY_PERIOD = 100;
static var BLINK_PERIOD = 1000;
var _frameCount = 1;
var _showNames = false;
}
Symbol 310 MovieClip [__Packages.chainfactor.Customize] Frame 0
class chainfactor.Customize extends MovieClip
{
var _visible, button_go, bWidth, bHeight, starting, grayChance, min, max, graysShow, thawSteps, basePoints, baseChain, eventsPerLevel, minDrops, dropsDecrease, swapDepths, allDrops, incGray, addGarbage;
function Customize () {
super();
_visible = false;
var me = this;
button_go.onRelease = function () {
me.go();
};
}
function go() {
chainfactor.Board.WIDTH = parseInt(bWidth.text);
chainfactor.Board.HEIGHT = parseInt(bHeight.text);
chainfactor.Game.STARTING_PIECES = parseInt(starting.text);
chainfactor.Piece.GRAY_CHANCE = parseFloat(grayChance.text);
chainfactor.Piece.MIN_AMT = parseInt(min.text);
chainfactor.Piece.MAX_AMT = parseInt(max.text);
chainfactor.Piece.GRAYS_SHOW_VALUE = parseInt(graysShow.text);
chainfactor.Piece.THAW_STEPS = parseInt(thawSteps.text);
chainfactor.Game.BASE_POINTS = parseInt(basePoints.text);
chainfactor.Game.BASE_CHAIN = parseFloat(baseChain.text);
chainfactor.LevelManager.EVENTS_PER_LEVEL = parseInt(eventsPerLevel.text);
chainfactor.LevelManager.MIN_EVENTS_PER_LEVEL = parseInt(minDrops.text);
chainfactor.LevelManager.EVENTS_DECREASE_PER_LEVEL = dropsDecrease.text;
util.ThinkManager.removeThinker(chainfactor.Board.__get__instance());
_global.numberBalls.init();
chainfactor.LevelManager.disable();
chainfactor.LevelManager.initBehavior(chainfactor.AddGarbage);
_visible = false;
}
function show() {
swapDepths(1000);
bWidth.text = chainfactor.Board.WIDTH;
bHeight.text = chainfactor.Board.HEIGHT;
starting.text = chainfactor.Game.STARTING_PIECES;
grayChance.text = chainfactor.Piece.GRAY_CHANCE;
min.text = chainfactor.Piece.MIN_AMT;
max.text = chainfactor.Piece.MAX_AMT;
graysShow.text = chainfactor.Piece.GRAYS_SHOW_VALUE;
thawSteps.text = chainfactor.Piece.THAW_STEPS;
basePoints.text = chainfactor.Game.BASE_POINTS;
baseChain.text = chainfactor.Game.BASE_CHAIN;
eventsPerLevel.text = chainfactor.LevelManager.EVENTS_PER_LEVEL;
minDrops.text = chainfactor.LevelManager.MIN_EVENTS_PER_LEVEL;
dropsDecrease.text = chainfactor.LevelManager.EVENTS_DECREASE_PER_LEVEL;
allDrops.text = chainfactor.Game.COUNT_ALL_DROPS;
if (chainfactor.LevelManager.__get__behaviorType() == "IncreaseGray") {
incGray.selected = true;
} else {
addGarbage.selected = true;
}
_visible = true;
}
}
Symbol 311 MovieClip [__Packages.chainfactor.ChainDisplay] Frame 0
class chainfactor.ChainDisplay extends MovieClip
{
var fadeTween, txt, _alpha;
function ChainDisplay () {
super();
}
function showChain(aNum) {
if ((aNum > 1) && (aNum != _curNum)) {
_curNum = aNum;
var _local3 = aNum;
if (_local3 > 6) {
_local3 = 6;
}
var _local6 = Math.min(aNum, 12);
var _local4 = Math.min(100, 10 + (60 * (aNum / 12)));
chainfactor.SoundManager.playSound("sound_chain_" + aNum, _local4);
fadeTween.stop();
txt.text = "CHAIN x" + aNum;
if (_alpha == 0) {
new mx.transitions.Tween(this, "_alpha", mx.transitions.easing.Regular.easeIn, 0, 100, 0.35, true);
}
var _local5 = new mx.transitions.Tween(this, "_xscale", mx.transitions.easing.Regular.easeIn, 115, 100, 0.35, true);
new mx.transitions.Tween(this, "_yscale", mx.transitions.easing.Regular.easeIn, 115, 100, 0.35, true);
var me = this;
_local5.onMotionFinished = function () {
me.resetNum();
};
fadeTween = new mx.transitions.Tween(this, "foo", mx.transitions.easing.Regular.easeIn, 100, 0, FADE_DELAY, true);
fadeTween.onMotionFinished = function () {
me.fadeTween = new mx.transitions.Tween(me, "_alpha", mx.transitions.easing.Regular.easeIn, 100, 0, chainfactor.ChainDisplay.FADE_TIME_NORMAL, true);
};
}
}
function resetNum() {
_curNum = 0;
}
static var FADE_DELAY = 2;
static var FADE_TIME_NORMAL = 1;
var _curNum = 0;
}
Symbol 312 MovieClip [__Packages.chainfactor.powers.PowerChooser] Frame 0
class chainfactor.powers.PowerChooser extends MovieClip
{
var _x, _y, _mcs, powersChosen, _maxPowers, info, button_go, _rollOver, createEmptyMovieClip, getNextHighestDepth, _highlightHolder, _powerHolder, debug, removeMovieClip, chooseMsg;
function PowerChooser () {
super();
_x = 0;
_y = 0;
_mcs = new Array();
powersChosen = 0;
_maxPowers = 3;
info._visible = false;
button_go.onRelease = function () {
this._parent.go();
};
drawIcons();
loadPowerXML();
_rollOver = createEmptyMovieClip("rollRing", getNextHighestDepth());
_rollOver.lineStyle(2, 15558518);
util.Util.drawCircle(_rollOver, 0, 0, (MC_WIDTH / 2) + 5);
_rollOver._visible = false;
}
function drawIcons() {
var _local6 = chainfactor.powers.PowerManager.__get__allPowers();
var _local9 = 16;
var _local10 = 60;
var _local8 = _local9;
var _local7 = _local10;
_highlightHolder = createEmptyMovieClip("highlightHolder", getNextHighestDepth());
_powerHolder = createEmptyMovieClip("powerHolder", getNextHighestDepth());
var _local3 = 0;
while (_local3 < _local6.length) {
var _local2 = _local6[_local3].getMovieClip(this);
_local2._xscale = 240;
_local2._yscale = 240;
if ((_local3 % 3) == 0) {
if (_local3 > 0) {
_local7 = _local7 + (MC_WIDTH + SPACING);
}
_local2._x = _local9;
_local2._y = _local7;
} else {
_local2._x = (_local8 + MC_WIDTH) + SPACING;
_local2._y = _local7;
}
_local2.id = _local6[_local3].id;
_local8 = _local2._x;
_local2.onRelease = function () {
this._parent.doClick(this);
};
_local2.onRollOver = function () {
this._parent.showRollover(this);
};
_local2.onRollOut = function () {
this._parent.hideRollover();
};
var _local5 = _powerHolder.attachMovie("unlock_meter", "unlockMeter_" + _local2.id, _powerHolder.getNextHighestDepth());
_local5._x = _local2._x + 53;
_local5._y = _local2._y + 73;
_local5._visible = false;
_local2.power = _local6[_local3];
_local2._visible = false;
_mcs.push(_local2);
var _local4 = _highlightHolder.createEmptyMovieClip("hi_" + _local2.id, _highlightHolder.getNextHighestDepth());
_local4.beginFill(14733921);
util.Util.drawCircle(_local4, (_local2._x + (MC_WIDTH / 2)) + 1, (_local2._y + (MC_WIDTH / 2)) + 1, 55);
_local4.endFill();
_local4._visible = false;
_local3++;
}
}
function showPowers() {
var _local3 = 0;
while (_local3 < _mcs.length) {
_mcs[_local3]._visible = true;
var _local4 = _powerHolder["unlockMeter_" + _mcs[_local3].id];
var _local5 = _mcs[_local3].power;
if (_local5.unlocked) {
_local4._visible = false;
} else {
_mcs[_local3]._alpha = 50;
_local4._visible = true;
var _local2 = 0;
while (_local2 < _local5.unlockers.length) {
_local4["pip_" + _local2]._visible = false;
_local2++;
}
}
_local3++;
}
}
function showRollover(aMC) {
var _local5 = aMC.id;
info._visible = true;
var _local4 = chainfactor.powers.PowerManager.getPowerById(_local5);
info.powerName.htmlText = ("<b>" + _local4.name.toUpperCase()) + "</b>";
info.description.text = _local4.description;
var _local2 = 0;
while (_local2 < 3) {
var _local3 = "";
if (_local4.unlockers[_local2]) {
_local3 = _local4.unlockers[_local2];
}
info["unlocker_" + _local2].htmlText = ("<b>" + _local3) + "</b>";
_local2++;
}
if (_local4.unlocked) {
info.powerStatus.htmlText = "<b>UNLOCKED</b>";
info.lock.gotoAndStop(2);
info.powerStatusMsg.text = "This power is available for use.";
info.category.autoSize = "left";
info.category.text = ("[" + _local4.category.toUpperCase()) + "]";
info.cost.text = ("ENERGY COST: " + (_local4.cost * 100)) + "%";
if (_local4.cost == 0) {
info.cost.text = info.cost.text + " (PASSIVE)";
}
info.cost._x = (info.category._x + info.category.textWidth) + 5;
} else {
info.powerStatus.htmlText = "<b>LOCKED</b>";
info.lock.gotoAndStop(1);
info.powerStatusMsg.text = "This power is currently locked.";
info.category.text = "";
info.cost.text = "";
}
_rollOver._visible = true;
_rollOver._x = (aMC._x + (MC_WIDTH / 2)) + 0.5;
_rollOver._y = (aMC._y + (MC_WIDTH / 2)) + 0.5;
}
function hideRollover() {
info._visible = false;
_rollOver._visible = false;
}
function doClick(aMC) {
var _local4 = chainfactor.powers.PowerManager.getPowerById(aMC.id);
var _local2 = _highlightHolder["hi_" + aMC.id];
if (_local4.unlocked) {
if (_local2._visible) {
_local2._visible = false;
aMC.chosen = false;
powersChosen--;
} else if (powersChosen < maxPowers) {
_local2._visible = true;
aMC.chosen = true;
powersChosen++;
}
}
}
function loadPowerXML() {
var me = this;
var _local2 = new XML();
_local2.ignoreWhite = true;
_local2.onLoad = function () {
this.debug.text = "xml loaded";
me.parseXML(this);
};
_local2.load((XML_URL + "?sess=") + util.Util.getRandomString(32));
}
function parseXML(aXML) {
debug.text = aXML;
var _local8 = 0;
while (_local8 < aXML.firstChild.childNodes.length) {
var _local5 = aXML.firstChild.childNodes[_local8];
var _local7 = parseInt(_local5.attributes.id);
var _local6;
var _local3;
var _local4 = 0;
while (_local4 < _mcs.length) {
if (_mcs[_local4].id == _local7) {
_local6 = _mcs[_local4];
_local3 = _local6.power;
break;
}
_local4++;
}
debug.text = debug.text + ("\nFOUND AN ID: " + _local7);
debug.text = debug.text + ("\nAND AN MC: " + _local6);
debug.text = debug.text + ("\nAND A POWER? " + _local3);
_local3.unlockers = new Array();
if (_local5.attributes.unlocked == "1") {
_local3.unlocked = true;
}
_local4 = 0;
while (_local4 < _local5.childNodes.length) {
var _local2 = _local5.childNodes[_local4];
if (_local2.nodeName == "desc") {
_local3.description = _local2.firstChild.nodeValue;
} else if (_local2.nodeName == "unlockedby") {
_local3.unlockers.push(_local2.firstChild.nodeValue);
}
_local4++;
}
var _local9 = _powerHolder["unlockMeter_" + _local3.id];
debug.text = debug.text + ("\nAND A METER? " + _local9);
_local8++;
}
showPowers();
}
function go() {
chainfactor.powers.PowerManager.clearPowers();
var _local3 = 0;
while (_local3 < _mcs.length) {
if (_mcs[_local3].chosen) {
chainfactor.powers.PowerManager.addPower(_mcs[_local3].power);
}
_local3++;
}
_global.numberBalls.init();
chainfactor.powers.PowerManager.init();
chainfactor.powers.PowerManager.displayPowerButtons();
removeMovieClip();
}
function set maxPowers(aM) {
_maxPowers = aM;
chooseMsg.htmlText = ("<b>CHOOSE " + aM) + " POWER";
if (aM > 1) {
chooseMsg.text = chooseMsg.text + "S";
}
//return(maxPowers);
}
function get maxPowers() {
return(_maxPowers);
}
static var XML_URL = "powers.php";
static var MC_WIDTH = 85;
static var MC_SCALE = 240;
static var SPACING = 19;
}