Section 1
//blinkRed_79 (boardbalance_fla.blinkRed_79)
package boardbalance_fla {
import flash.display.*;
public dynamic class blinkRed_79 extends MovieClip {
public function blinkRed_79(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package boardbalance_fla
Section 2
//goalReached_47 (boardbalance_fla.goalReached_47)
package boardbalance_fla {
import flash.display.*;
public dynamic class goalReached_47 extends MovieClip {
public function goalReached_47(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
prevFrame();
}
}
}//package boardbalance_fla
Section 3
//MainTimeline (boardbalance_fla.MainTimeline)
package boardbalance_fla {
import flash.display.*;
import Game.*;
public dynamic class MainTimeline extends MovieClip {
public var g;
public function MainTimeline(){
addFrameScript(0, frame1);
}
function frame1(){
g = new Main();
addChild(g);
}
}
}//package boardbalance_fla
Section 4
//powerup_mc_80 (boardbalance_fla.powerup_mc_80)
package boardbalance_fla {
import flash.display.*;
public dynamic class powerup_mc_80 extends MovieClip {
public function powerup_mc_80(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package boardbalance_fla
Section 5
//Symbol32_77 (boardbalance_fla.Symbol32_77)
package boardbalance_fla {
import flash.display.*;
public dynamic class Symbol32_77 extends MovieClip {
public function Symbol32_77(){
addFrameScript(0, frame1);
}
function frame1(){
stop();
}
}
}//package boardbalance_fla
Section 6
//Symbol50_39 (boardbalance_fla.Symbol50_39)
package boardbalance_fla {
import flash.display.*;
public dynamic class Symbol50_39 extends MovieClip {
public function Symbol50_39(){
addFrameScript(9, frame10);
}
function frame10(){
stop();
}
}
}//package boardbalance_fla
Section 7
//thecusto_aniqew_13 (boardbalance_fla.thecusto_aniqew_13)
package boardbalance_fla {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public dynamic class thecusto_aniqew_13 extends MovieClip {
public var btnHidden:SimpleButton;
public function thecusto_aniqew_13(){
addFrameScript(0, frame1, 182, frame183);
}
function frame1(){
btnHidden.addEventListener(MouseEvent.MOUSE_DOWN, function (){
var _local1:* = new URLRequest("http://www.thecustomcards.com/?fg_blocks1");
navigateToURL(_local1, "_blank");
});
}
function frame183(){
stop();
}
}
}//package boardbalance_fla
Section 8
//ComboAlert (Game.ComboAlert)
package Game {
import flash.display.*;
public class ComboAlert extends MovieClip {
private var _isCombo:Boolean;// = false
private var _isDouble:Boolean;// = false
public var box:MovieClip;
public function ComboAlert(){
addFrameScript(10, frame11);
}
public function set isCombo(_arg1:Boolean){
_isCombo = _arg1;
}
public function set score(_arg1:Number){
trace("set score");
box.scoreTx.text = _arg1;
}
public function updateText():void{
trace("updateText ", _isCombo, _isDouble);
if (((_isCombo) && (_isDouble))){
box.comboTitle.comboType.text = "2xCombo!";
} else {
if (((_isCombo) && (!(_isDouble)))){
box.comboTitle.comboType.text = "Combo!";
} else {
if (((!(_isCombo)) && (_isDouble))){
box.comboTitle.comboType.text = "Double!";
} else {
if (((!(_isCombo)) && (!(_isDouble)))){
box.comboTitle.comboType.text = "";
};
};
};
};
}
public function set isDouble(_arg1:Boolean){
_isDouble = _arg1;
}
function frame11(){
stop();
parent.removeChild(this);
x = -10000;
}
}
}//package Game
Section 9
//EndLevel (Game.EndLevel)
package Game {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
public class EndLevel extends MovieClip {
public var nextLevelBtn:SimpleButton;
public var bonusTime;
public var time:TextField;
public var lvlScore;
public var numCombos:TextField;
public var level:Number;// = 0
public var score:TextField;
public var levelNum:TextField;
public var combos:Number;// = 0
public var levelScore:int;// = 0
public var levelTimePar:int;// = 0
public var levelTime:int;// = 0
public var t:Timer;
public var pointer;
public function EndLevel():void{
addFrameScript(0, frame1, 7, frame8, 13, frame14, 26, frame27, 41, frame42, 50, frame51, 51, frame52);
trace("end screen");
}
function frame42(){
t = new Timer(1);
stop();
t.addEventListener(TimerEvent.TIMER, onT);
t.start();
nextLevelBtn.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{
removeTimer();
pointer.updateScore(levelScore);
play();
});
parent.dispatchEvent(new Event("reset"));
}
function frame51(){
parent.dispatchEvent(new Event("start"));
trace(" closing");
}
function frame52(){
stop();
parent.removeChild(this);
}
public function onT(_arg1:TimerEvent):void{
pointer.updateScore(1);
levelScore = (levelScore - 3);
score.text = Math.max(levelScore, 0).toString();
if (levelScore <= 0){
removeTimer();
};
}
function frame14(){
trace("levelTimePar", levelTimePar);
bonusTime = levelTimePar;
time.text = bonusTime.toString();
}
public function removeTimer(){
if (t){
t.stop();
t.removeEventListener(TimerEvent.TIMER, onT);
t = null;
};
}
function frame1(){
lvlScore = ((combos * 10) + (level * 100)).toString();
trace(lvlScore);
trace(combos);
trace(level);
play();
}
function frame8(){
numCombos.text = combos.toString();
}
function frame27(){
score.text = levelScore.toString();
}
}
}//package Game
Section 10
//GoalBar (Game.GoalBar)
package Game {
import flash.events.*;
import flash.display.*;
public class GoalBar extends MovieClip {
private var finaly:Number;
public var bar:MovieClip;
private var iniy:Number;
private var moveBarTo:Number;
private var endy:Number;
public var goalReached:MovieClip;
public function GoalBar(){
addFrameScript(0, frame1);
iniy = bar.y;
endy = (bar.y - bar.height);
finaly = bar.y;
addEventListener(Event.ENTER_FRAME, moveTo);
}
public function retract(){
bar.y = iniy;
finaly = bar.y;
goalReached.gotoAndPlay(3);
}
function frame1(){
trace(this);
}
private function moveTo(_arg1:Event){
bar.y = (bar.y - ((bar.y - finaly) / 2));
}
public function reset(){
finaly = iniy;
}
public function pos(_arg1:int, _arg2:int){
trace(finaly, Math.abs(((_arg1 * bar.height) / _arg2)));
finaly = (finaly - Math.abs(((_arg1 * bar.height) / _arg2)));
}
}
}//package Game
Section 11
//Intro (Game.Intro)
package Game {
import flash.events.*;
import flash.display.*;
import flash.net.*;
public class Intro extends MovieClip {
public var myRequest:URLRequest;
public var keepAlive;
public var btnStart:SimpleButton;
public var btnMoreGames:SimpleButton;
public var _mochiads_game_id:String;
public var btnEcards:SimpleButton;
public var myLoader:URLLoader;
public function Intro(){
addFrameScript(0, frame1, 188, frame189);
this.addEventListener(Event.ADDED_TO_STAGE, addStage);
}
public function start(_arg1){
trace(this.currentFrame);
if (this.currentFrame < this.totalFrames){
this.nextFrame();
} else {
parent.dispatchEvent(new Event("start"));
};
}
public function onLoaded(_arg1:Event):void{
if (myLoader.data == "&keepAlive=true"){
keepAlive = true;
} else {
keepAlive = false;
};
}
public function ecards(_arg1){
var _local2:* = new URLRequest("http://www.thecustomcards.com/");
navigateToURL(_local2, "_blank");
}
function frame189(){
stop();
if (!keepAlive){
prevFrame();
};
btnStart.addEventListener(MouseEvent.MOUSE_DOWN, start);
btnMoreGames.addEventListener(MouseEvent.MOUSE_DOWN, moreGames);
btnEcards.addEventListener(MouseEvent.MOUSE_DOWN, ecards);
}
public function kill(){
this.removeEventListener(Event.ADDED_TO_STAGE, addStage);
btnStart.removeEventListener(MouseEvent.MOUSE_DOWN, start);
btnMoreGames.removeEventListener(MouseEvent.MOUSE_DOWN, moreGames);
btnEcards.removeEventListener(MouseEvent.MOUSE_DOWN, ecards);
}
public function moreGames(_arg1){
var _local2:* = new URLRequest("http://www.thecustomcards.com/games");
navigateToURL(_local2, "_blank");
}
function frame1(){
_mochiads_game_id = "c7e7e8702200a9d8";
keepAlive = false;
if (!parent["hasIntro"]){
parent["hasIntro"] = true;
myRequest = new URLRequest("http://www.malumenezes.com/games/scripts/giveAwaysKeepAlive.php?game=boardballance");
myLoader = new URLLoader();
myLoader.addEventListener(Event.COMPLETE, onLoaded);
myLoader.load(myRequest);
} else {
keepAlive = true;
gotoAndStop("splash");
};
}
private function addStage(_arg1){
}
}
}//package Game
Section 12
//Main (Game.Main)
package Game {
import flash.events.*;
import Match3Game.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
import flash.ui.*;
public class Main extends MovieClip {
private const levelLength:Array;
private const levelSpeed:Array;
private const levelGoal:Array;
private var goalBar:MovieClip;
private var perfectBallance:MovieClip;
private var level:Number;// = 1
private var msk:Mask;
private var sinkMc:SinkMc;
private var comboCounter:Number;// = 0
public var goal:Number;// = 0
public var score:Number;// = 0
private var levelTimer:Timer;
private var levelStartTimer:Timer;
private var levelSpeedFramer:Number;// = 0
private var endTimer:Timer;
public var timeTx:TextField;
public var scoreTx:TextField;
private var levelEndFramer:Number;// = 0
private var goalReached;// = false
private var timer:Timer;
private var scale:MovieClip;
public var numCombos:Number;// = 0
private var board:BoardBallance;
private var fps:Number;// = 30
private var gameOver;// = false
public var levelScore:Number;// = 0
private var levelTime:Number;// = 0
public var hasIntro;// = false
private var scoreMultiplier:int;// = 1
private var intro:Intro;
public function Main():void{
levelStartTimer = new Timer(3000);
levelLength = [60];
levelGoal = [150];
levelSpeed = [100];
super();
trace("init main");
addEventListeners();
}
private function endLevel(_arg1:int=2){
removeEventListener(Event.ENTER_FRAME, enterFrame);
levelTimer.stop();
levelTimer.removeEventListener(TimerEvent.TIMER, enterFrame);
var _local2:Timer = new Timer((_arg1 * 1000), 1);
_local2.addEventListener(TimerEvent.TIMER, showLevelCompleteScreen, false, 0, true);
_local2.start();
board.removeEventListeners();
}
public function updateGoal(_arg1:Number){
goal = (goal + _arg1);
goalBar.pos(_arg1, levelGoal[(level - 1)]);
if (goal >= levelGoal[(level - 1)]){
endLevel();
goalBar.retract();
goal = 0;
goalReached = true;
};
}
private function comboAlert(_arg1:Event){
var _local2:* = calcScore(board.board.comboCounter);
var _local3:* = new ComboAlert();
addChild(_local3);
_local3.x = mouseX;
_local3.y = mouseY;
_local3.score = _local2;
if (board.board.comboCounter < 3){
_local3.isCombo = false;
} else {
_local3.isCombo = true;
numCombos++;
};
if (scoreMultiplier > 1){
_local3.isDouble = true;
} else {
_local3.isDouble = false;
};
_local3.updateText();
updateScore(_local2);
updateGoal(board.board.comboCounter);
}
private function ballanceNeedle(_arg1:BallanceEvent){
scale.needle.rotation = (scale.needle.rotation - ((_arg1.dif + scale.needle.rotation) / 3));
}
private function start(_arg1){
if (intro.parent == this){
this.removeChild(intro);
};
board = new BoardBallance();
msk = new Mask();
board.level = level;
board.mask = msk;
board.start();
sinkMc = new SinkMc();
perfectBallance = new PerfectBallance();
scale = new Scale();
goalBar = new GoalBar();
addChild(goalBar);
addChild(board);
addChild(msk);
addChild(scale);
addChild(perfectBallance);
addChild(sinkMc);
addEventListener("nextLevel", showStartLevel);
showStartLevel(null);
gameOver = false;
trace(("parent: " + parent.parent));
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, checkHacks);
}
private function init(_arg1){
intro = new Intro();
this.addChild(intro);
}
private function freeze(_arg1:Event){
levelTimer.stop();
}
private function sink(_arg1:Event){
sinkMc.play();
}
private function showStartLevel(_arg1){
var _local2:* = new StartLevel();
addChild(_local2);
_local2.level = level;
_local2.prop = (level + 1);
}
private function showLevelCompleteScreen(_arg1:TimerEvent):void{
var _local2:* = new EndLevel();
addChild(_local2);
_local2.level = level;
_local2.combos = numCombos;
_local2.levelTime = levelTime;
_local2.levelTimePar = Math.max((int((levelGoal[(level - 1)] / 2)) - levelTime), 0);
_local2.levelScore = ((_local2.levelTimePar * 10) + (numCombos * 10));
updateScore(_local2.levelScore);
_local2.pointer = this;
_local2.play();
}
private function ballanceAlert(_arg1:Event){
perfectBallance.play();
scoreMultiplier = 2;
}
private function unballanceAlert(_arg1:Event){
perfectBallance.gotoAndStop(1);
scoreMultiplier = 1;
}
private function releaseLine():void{
board.board.releaseLine();
levelSpeedFramer = 0;
}
private function levelStart(_arg1){
goalReached = false;
board.board.start(5);
levelTimer = new Timer(100);
levelTimer.addEventListener(TimerEvent.TIMER, enterFrame);
goal = 0;
numCombos = 0;
levelTime = 0;
levelEndFramer = 0;
board.addEventListeners();
levelTimer.start();
}
private function calcScore(_arg1:Number):Number{
return (((_arg1 + (_arg1 * 10)) * scoreMultiplier));
}
public function updateScore(_arg1:Number){
score = (score + _arg1);
levelScore = (levelScore + _arg1);
if (score < 0){
score = 0;
};
scoreTx.text = score.toString();
}
private function addEventListeners(){
addEventListener(Event.ADDED_TO_STAGE, init);
addEventListener("removedFromStage", kill);
addEventListener("reset", reset);
addEventListener("start", start);
addEventListener("init", init);
addEventListener("startLevel", levelStart);
addEventListener("combo", comboAlert);
addEventListener("ballance", ballanceAlert);
addEventListener("unballance", unballanceAlert);
addEventListener(BallanceEvent.NEEDLE, ballanceNeedle);
addEventListener("gameOver", endGame);
addEventListener("sink", sink);
}
private function reset(_arg1:Event){
removeChild(board);
removeChild(perfectBallance);
removeChild(scale);
removeChild(sinkMc);
removeChild(goalBar);
level++;
levelLength[levelLength.length] = (levelLength[(levelLength.length - 1)] + 10);
if (level > 8){
levelGoal[levelGoal.length] = (levelGoal[(levelGoal.length - 1)] + 50);
levelSpeed[levelSpeed.length] = (levelSpeed[(levelSpeed.length - 1)] + 10);
} else {
trace("level is less than 8, level speed stays the same at ", levelSpeed[(levelSpeed.length - 1)]);
levelSpeed[levelSpeed.length] = levelSpeed[(levelSpeed.length - 1)];
levelGoal[levelGoal.length] = levelGoal[(levelGoal.length - 1)];
};
}
public function checkHacks(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == 83){
endLevel(0);
};
if ((((_arg1.keyCode == Keyboard.SPACE)) && ((levelSpeedFramer > 20)))){
releaseLine();
};
}
private function updateClock(){
levelTime = (levelTime + 0.1);
timeTx.text = int(levelTime).toString();
}
private function kill(_arg1:Event){
removeEventListeners();
}
private function endGameTimer(_arg1):void{
trace("end game timer");
var _local2:* = new EndGame();
addChild(_local2);
endTimer.stop();
endTimer = null;
levelTimer.stop();
levelTimer = null;
}
private function removeEventListeners(){
removeEventListener(Event.ADDED_TO_STAGE, start);
removeEventListener("removedFromStage", kill);
removeEventListener("reset", reset);
removeEventListener("start", start);
removeEventListener("startLevel", levelStart);
removeEventListener("combo", comboAlert);
removeEventListener("ballance", ballanceAlert);
removeEventListener("unballance", unballanceAlert);
removeEventListener(BallanceEvent.NEEDLE, ballanceNeedle);
removeEventListener("gameOver", endGame);
}
private function endGame(_arg1){
trace("end game");
if (!gameOver){
gameOver = true;
level = 0;
removeEventListener(Event.ENTER_FRAME, enterFrame);
endTimer = new Timer(1000, 0);
endTimer.addEventListener(TimerEvent.TIMER, endGameTimer, false, 0, true);
endTimer.start();
};
}
private function enterFrame(_arg1:TimerEvent){
updateClock();
levelSpeedFramer++;
if ((((levelSpeedFramer >= levelSpeed[(level - 1)])) || ((board.board.getNumStones() < 15)))){
releaseLine();
};
}
}
}//package Game
Section 13
//StartLevel (Game.StartLevel)
package Game {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
public class StartLevel extends MovieClip {
public var pwType:MovieClip;
public var levelNum:TextField;
private var timer:Timer;
public var nextLevelBtn:SimpleButton;
private var currLevel;
private var powerUpType;
public function StartLevel():void{
addFrameScript(8, frame9, 9, frame10, 15, frame16);
trace("start screen");
}
public function set prop(_arg1):void{
powerUpType = _arg1;
}
public function set level(_arg1):void{
currLevel = _arg1;
}
function frame9(){
stop();
levelNum.text = ("Level " + currLevel);
pwType.gotoAndStop(Math.min(pwType.totalFrames, powerUpType));
nextLevelBtn.addEventListener(MouseEvent.CLICK, function (_arg1:MouseEvent):void{
play();
});
}
public function set delay(_arg1:Number):void{
trace((" setting delay: " + _arg1));
timer = new Timer(_arg1);
timer.addEventListener(TimerEvent.TIMER, kill);
timer.start();
}
function frame10(){
parent.dispatchEvent(new Event("startLevel"));
trace(" closing");
play();
}
private function kill(_arg1){
trace(" removing from stage");
timer.removeEventListener(TimerEvent.TIMER, kill);
play();
}
function frame16(){
stop();
parent.removeChild(this);
}
}
}//package Game
Section 14
//BallanceEvent (Match3Game.BallanceEvent)
package Match3Game {
import flash.events.*;
public class BallanceEvent extends Event {
public var dif:Number;
public var score:int;
public var j:Number;
public static const NEEDLE:String = "BallanceNeedle";
public function BallanceEvent(_arg1:String, _arg2:Number, _arg3:Boolean=false, _arg4:Boolean=false){
dif = _arg2;
super(_arg1, _arg3, _arg4);
}
}
}//package Match3Game
Section 15
//Board (Match3Game.Board)
package Match3Game {
import flash.events.*;
import flash.display.*;
public class Board extends MovieClip {
public var level:Number;// = 0
public var comboCounter:Number;// = 0
public var boardArray:Array;
private var stoneWidth:int;// = 26
private var stoneHeight:int;// = 26
public var cols:Number;// = 0
private var pi:Number;// = 0
private var pj:Number;// = 0
private var boardEnabled:Boolean;// = false
public var lines:Number;// = 0
public function Board(){
boardArray = new Array();
super();
addEventListener(Event.ADDED_TO_STAGE, addEventListeners);
addEventListener("removedFromStage", kill);
}
public function removeColumn(_arg1, _arg2:Number){
var _local3:* = 0;
while (_local3 <= lines) {
if (isStone(boardArray[_arg1][_local3])){
boardArray[_arg1][_local3].color = null;
};
_local3++;
};
}
public function columner(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeColumn(_arg1.i, _arg1.j);
};
}
public function rower(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeRow(_arg1.i, _arg1.j);
};
}
private function getStoneX(_arg1, _arg2:Number):Number{
return (((stoneWidth + 1) * _arg1));
}
private function getStoneY(_arg1, _arg2:Number):Number{
return (((stoneHeight + 1) * _arg2));
}
public function init(_arg1, _arg2:Number):void{
lines = _arg1;
cols = _arg2;
pi = 0;
pj = (cols - 1);
initBoardArray();
}
public function removeColors(_arg1, _arg2, _arg3=null){
var _local5:*;
if (_arg3 == null){
_arg3 = boardArray[_arg1][_arg2].color;
};
var _local4:* = 0;
while (_local4 < cols) {
_local5 = 0;
while (_local5 < lines) {
if (isStone(boardArray[_local4][_local5])){
if (boardArray[_local4][_local5].color == _arg3){
boardArray[_local4][_local5].color = null;
};
};
_local5++;
};
_local4++;
};
}
public function isNextEmpty(_arg1, _arg2:Number):Boolean{
return ((((boardArray[_arg1][(_arg2 + 1)] == null)) || ((boardArray[_arg1][(_arg2 + 1)] == undefined))));
}
public function rowercol(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeRowCol(_arg1.i, _arg1.j);
};
}
public function removeLateral(_arg1, _arg2):void{
var _local3:*;
var _local4:*;
if (_arg1 < 8){
_local3 = 0;
while (_local3 < _arg1) {
_local4 = 0;
while (_local4 < lines) {
if (isStone(boardArray[_local3][_local4])){
boardArray[_local3][_local4].color = null;
};
_local4++;
};
_local3++;
};
} else {
_local3 = _arg1;
while (_local3 < cols) {
_local4 = 0;
while (_local4 < lines) {
if (isStone(boardArray[_local3][_local4])){
boardArray[_local3][_local4].color = null;
};
_local4++;
};
_local3++;
};
};
}
public function hasBorderStone(_arg1, _arg2:Number):Boolean{
var _local3:*;
if (_arg1 > 0){
_local3 = boardArray[(_arg1 - 1)][_arg2];
if (isStone(_local3)){
if (_local3.color == boardArray[_arg1][_arg2].color){
return (true);
};
};
};
if (_arg1 < (cols - 1)){
_local3 = boardArray[(_arg1 + 1)][_arg2];
if (isStone(_local3)){
if (_local3.color == boardArray[_arg1][_arg2].color){
return (true);
};
};
};
if (_arg2 > 0){
_local3 = boardArray[_arg1][(_arg2 - 1)];
if (isStone(_local3)){
if (_local3.color == boardArray[_arg1][_arg2].color){
return (true);
};
};
};
if (_arg2 < (lines - 1)){
_local3 = boardArray[_arg1][(_arg2 + 1)];
if (isStone(_local3)){
if (_local3.color == boardArray[_arg1][_arg2].color){
return (true);
};
};
};
return (false);
}
public function lateraler(_arg1:StoneEvent){
removeLateral(_arg1.i, _arg1.j);
}
private function removeNulls(){
var _local2:*;
comboCounter = 0;
var _local1:* = 0;
while (_local1 < cols) {
_local2 = 0;
while (_local2 < lines) {
if (isStone(boardArray[_local1][_local2])){
if (boardArray[_local1][_local2].color == 0){
removeChild(boardArray[_local1][_local2]);
boardArray[_local1][_local2] = null;
comboCounter++;
};
};
_local2++;
};
_local1++;
};
comboAlert();
}
private function moveStoneTo(_arg1, _arg2:Number){
boardArray[_arg1][_arg2] = boardArray[_arg1][(_arg2 - 1)];
boardArray[_arg1][(_arg2 - 1)] = null;
if (boardArray[_arg1][_arg2] != null){
boardArray[_arg1][_arg2].posY = getStoneY(_arg1, _arg2);
boardArray[_arg1][_arg2].posX = getStoneX(_arg1, _arg2);
boardArray[_arg1][_arg2].i = _arg1;
boardArray[_arg1][_arg2].j = _arg2;
};
}
public function leveler(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeLevel(_arg1.i, _arg1.j);
};
}
public function removeRow(_arg1, _arg2:Number){
var _local3:* = 0;
while (_local3 < cols) {
if (isStone(boardArray[_local3][_arg2])){
boardArray[_local3][_arg2].color = null;
};
_local3++;
};
}
private function stoneRemoved(_arg1:StoneEvent){
var _local2:* = new StoneBlow();
addChild(_local2);
_local2.x = boardArray[_arg1.i][_arg1.j].x;
_local2.y = boardArray[_arg1.i][_arg1.j].y;
}
public function removeStone(_arg1:StoneEvent){
boardArray[_arg1.i][_arg1.j] = null;
if (isStone(boardArray[_arg1.i][(_arg1.j - 1)])){
boardArray[_arg1.i][(_arg1.j - 1)].nextFrame();
};
}
private function initBoardArray(){
var _local2:*;
boardArray = new Array();
var _local1:* = 0;
while (_local1 < cols) {
boardArray[_local1] = new Array();
_local2 = 0;
while (_local2 < lines) {
boardArray[_local1][_local2] = null;
_local2++;
};
_local1++;
};
}
public function addStone(_arg1, _arg2, _arg3:Boolean=false, _arg4:Boolean=false):Stone{
var _local5:* = new Stone();
addChild(_local5);
boardArray[_arg1][_arg2] = _local5;
var _local6:* = getStoneX(_arg1, _arg2);
var _local7:* = getStoneY(_arg1, _arg2);
_local5.init(_local6, _local7, _local6, _local7, _arg1, _arg2, level, _arg3, _arg4);
return (_local5);
}
public function addEventListeners(_arg1:Event){
addEventListener(Event.ENTER_FRAME, enterFrame);
addEventListener(StoneEvent.KILL, stoneRemoved);
addEventListener(StoneEvent.REMOVED, removeStone);
addEventListener(MouseEvent.CLICK, mouseClick);
addEventListener(StoneEvent.BLOW, blower);
addEventListener(StoneEvent.LEVEL, leveler);
addEventListener(StoneEvent.COLUMN, columner);
addEventListener(StoneEvent.ROW, rower);
addEventListener(StoneEvent.ROWCOL, rowercol);
addEventListener(StoneEvent.COLOR, colorer);
}
private function getGroundCol(_arg1:Number):Number{
var _local2:* = (cols - 1);
while (_local2 > 0) {
if ((((boardArray[_arg1][_local2] == null)) || ((boardArray[_arg1][_local2] == undefined)))){
return (_local2);
};
_local2--;
};
return (_local2);
}
public function colorer(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeColors(_arg1.i, _arg1.j);
};
}
public function getInitStonePos(_arg1:Number):Number{
return ((9 * _arg1));
}
private function updateStones(){
var _local2:*;
var _local1:* = (cols - 1);
while (_local1 >= 0) {
_local2 = (lines - 2);
while (_local2 >= 0) {
if (((isNextEmpty(_local1, _local2)) && (isStone(boardArray[_local1][_local2])))){
moveStoneTo(_local1, (_local2 + 1));
};
_local2--;
};
_local1--;
};
}
public function isStone(_arg1):Boolean{
return (((!((_arg1 == null))) && (!((_arg1 == undefined)))));
}
public function kill(_arg1:Event){
removeEventListeners();
}
public function blower(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeMatrix(_arg1.i, _arg1.j);
};
}
public function removeLevel(_arg1, _arg2){
var _local4:*;
var _local3:* = 0;
while (_local3 < cols) {
_local4 = 0;
while (_local4 <= _arg2) {
if (isStone(boardArray[_local3][_local4])){
boardArray[_local3][_local4].color = null;
};
_local4++;
};
_local3++;
};
}
public function start(_arg1:Number){
var _local5:*;
var _local2:int = int((Math.random() * cols));
var _local3:int = int((Math.random() * _arg1));
var _local4:* = 0;
while (_local4 < cols) {
_local5 = 0;
while (_local5 < _arg1) {
if ((((_local4 == _local2)) && ((_local5 == _local3)))){
addStone(_local4, _local5, true, true);
} else {
addStone(_local4, _local5, true);
};
boardArray[_local4][_local5].y = (boardArray[_local4][_local5].y - getInitStonePos(_local4));
boardArray[_local4][_local5].setMaxAccel();
_local5++;
};
_local4++;
};
boardEnabled = true;
}
public function mouseClick(_arg1:MouseEvent){
}
public function removeMatrix(_arg1, _arg2:Number){
var _local4:*;
var _local3:* = (_arg1 - 1);
while (_local3 <= (_arg1 + 1)) {
_local4 = (_arg2 - 1);
while (_local4 <= (_arg2 + 1)) {
if ((((((((_local4 >= 0)) && ((_local3 >= 0)))) && ((_local3 < cols)))) && ((_local4 < lines)))){
if (isStone(boardArray[_local3][_local4])){
boardArray[_local3][_local4].color = null;
};
};
_local4++;
};
_local3++;
};
}
public function removeEventListeners(){
removeEventListener(Event.ENTER_FRAME, enterFrame);
removeEventListener(StoneEvent.KILL, stoneRemoved);
removeEventListener(StoneEvent.REMOVED, removeStone);
removeEventListener(MouseEvent.CLICK, mouseClick);
removeEventListener(StoneEvent.BLOW, blower);
removeEventListener(StoneEvent.LEVEL, leveler);
removeEventListener(StoneEvent.COLUMN, columner);
removeEventListener(StoneEvent.ROW, rower);
removeEventListener(StoneEvent.ROWCOL, rowercol);
removeEventListener(StoneEvent.COLOR, colorer);
removeEventListener(StoneEvent.LATERAL, lateraler);
removeEventListener(Event.ADDED_TO_STAGE, addEventListeners);
removeEventListener("removedFromStage", kill);
}
public function removeRowCol(_arg1, _arg2:int):void{
removeRow(_arg1, _arg2);
removeColumn(_arg1, _arg2);
}
public function comboAlert(){
}
public function enterFrame(_arg1:Event){
if (boardEnabled){
updateStones();
};
if (boardArray.length > 0){
removeNulls();
};
}
}
}//package Match3Game
Section 16
//BoardBallance (Match3Game.BoardBallance)
package Match3Game {
import flash.events.*;
import flash.display.*;
public class BoardBallance extends MovieClip {
private var weightArray:Array;
private var count1:Number;// = 0
private var count2:Number;// = 0
private var speed:Number;// = 300
public var lastLineBar:MovieClip;
private var maxSpeed:Number;// = 1
private var speed2:Number;// = 1
private var maxSpeed2:Number;// = 1
public var level:Number;
public var sinkAccel:Number;// = 3
private var accel2:Number;// = 0
public var board:BoardBreakout;
private var accel:Number;// = 0
public var sinking:Boolean;// = false
public function BoardBallance():void{
board = new BoardBreakout();
weightArray = new Array();
super();
addEventListener("removedFromStage", kill);
board.addEventListener("gameOver", onGameOver);
}
private function move(_arg1:Event){
var _local2:*;
if (level <= 6){
_local2 = (1000 - (level * 100));
} else {
_local2 = speed;
};
var _local3:* = getWeight();
if (!sinking){
if ((((Math.abs(_local3) < 5)) && (!((rotation == 0))))){
_local3 = rotation;
this.rotation = (this.rotation - (_local3 / speed));
parent.dispatchEvent(new Event("ballance"));
} else {
parent.dispatchEvent(new Event("unballance"));
this.rotation = (this.rotation - (_local3 / _local2));
};
if (Math.abs(rotation) > 18){
sink();
};
} else {
sinkAccel = (sinkAccel + 0.5);
y = (y + (sinkAccel / 2));
if ((((rotation < 0)) && ((rotation > -90)))){
this.rotation = (this.rotation - sinkAccel);
if (this.rotation <= -90){
rotation = -90;
};
};
if ((((rotation > 0)) && ((rotation < 90)))){
this.rotation = (this.rotation + sinkAccel);
if (this.rotation >= 90){
rotation = 90;
};
};
if ((((rotation == -90)) || ((rotation == 90)))){
y = (y + sinkAccel);
};
if (y > 1000){
removeEventListeners();
};
};
}
private function sink(){
sinking = true;
parent.dispatchEvent(new Event("sink"));
}
public function start():void{
board.init(10, 17);
addChild(board);
board.level = level;
board.x = -233;
board.y = -229;
x = (590 / 2);
y = 300;
}
private function updateScale(_arg1:MouseEvent){
}
public function removeEventListeners(){
removeEventListener(Event.ENTER_FRAME, move);
removeEventListener("combo", comboAlert);
removeEventListener("removedFromStage", kill);
}
private function onGameOver(_arg1:Event){
this.lastLineBar.play();
}
private function kill(_arg1:Event){
removeEventListeners();
}
private function getWeight():Number{
var _local7:*;
var _local1:* = 0;
while (_local1 < board.cols) {
weightArray[_local1] = 0;
_local7 = 0;
while (_local7 < board.lines) {
if (board.isStone(board.boardArray[_local1][_local7])){
var _local8 = weightArray;
var _local9 = _local1;
var _local10 = (_local8[_local9] + 1);
_local8[_local9] = _local10;
};
_local7++;
};
_local1++;
};
var _local2:* = Math.round((board.cols / 2));
if ((board.cols % 2) == 1){
_local2--;
//unresolved jump
};
var _local3:* = _local2;
var _local4:* = 0;
var _local5:* = 0;
_local1 = 0;
while (_local1 < _local2) {
var _temp1 = _local3;
_local3 = (_local3 - 1);
_local4 = (_local4 + (weightArray[_local1] * _temp1));
_local1++;
};
_local3 = 1;
if ((board.cols % 2) == 1){
_local2++;
//unresolved jump
};
_local1 = _local2;
while (_local1 < board.cols) {
var _temp2 = _local3;
_local3 = (_local3 + 1);
_local5 = (_local5 + (weightArray[_local1] * _temp2));
_local1++;
};
var _local6:* = (_local4 - _local5);
parent.dispatchEvent(new BallanceEvent(BallanceEvent.NEEDLE, _local6));
return (_local6);
}
private function comboAlert(_arg1:Event){
parent.dispatchEvent(new Event("combo"));
}
public function addEventListeners(){
addEventListener(Event.ENTER_FRAME, move);
addEventListener("combo", comboAlert);
addEventListener("gameOver", function (){
parent.dispatchEvent(new Event("gameOver"));
});
}
}
}//package Match3Game
Section 17
//BoardBreakout (Match3Game.BoardBreakout)
package Match3Game {
import flash.events.*;
import flash.utils.*;
public class BoardBreakout extends Board {
private var gameOverTimer:Timer;// = null
override public function removeStone(_arg1:StoneEvent){
if (hasBorderStone(_arg1.i, _arg1.j)){
removeBounds(_arg1.i, _arg1.j, boardArray[_arg1.i][_arg1.j].color);
};
}
private function onGameOver(_arg1:TimerEvent){
if (gameOverTimer){
gameOverTimer.stop();
gameOverTimer.removeEventListener(TimerEvent.TIMER, onGameOver);
gameOverTimer = null;
};
if (this.parent){
this.parent.dispatchEvent(new Event("gameOver"));
};
}
override public function comboAlert(){
if (comboCounter > 0){
parent.dispatchEvent(new Event("combo"));
};
}
private function removeBounds(_arg1, _arg2, _arg3:Number):void{
if ((((((((_arg1 >= 0)) && ((_arg1 < cols)))) && ((_arg2 >= 0)))) && ((_arg2 < lines)))){
if (isStone(boardArray[_arg1][_arg2])){
if ((((_arg3 == boardArray[_arg1][_arg2].color)) && (!((boardArray[_arg1][_arg2].powerupType == Stone.PW_BLOCK))))){
boardArray[_arg1][_arg2].color = null;
removeBounds((_arg1 - 1), _arg2, _arg3);
removeBounds((_arg1 + 1), _arg2, _arg3);
removeBounds(_arg1, (_arg2 - 1), _arg3);
removeBounds(_arg1, (_arg2 + 1), _arg3);
if (boardArray[_arg1][_arg2].powerup == true){
switch (boardArray[_arg1][_arg2].powerupType){
case 2:
removeRow(_arg1, _arg2);
break;
case 3:
removeMatrix(_arg1, _arg2);
break;
case 4:
trace("remove COlor");
removeColors(_arg1, _arg2, _arg3);
break;
case 5:
removeColumn(_arg1, _arg2);
break;
case 6:
removeLevel(_arg1, _arg2);
break;
case 8:
removeRowCol(_arg1, _arg2);
break;
case 9:
removeLateral(_arg1, _arg2);
break;
};
};
};
};
};
}
public function releaseLine():void{
var _local1:* = 0;
while (_local1 < cols) {
if (isStone(boardArray[_local1][1])){
trace("game should end...");
gameOverTimer = new Timer(1000, 0);
gameOverTimer.addEventListener(TimerEvent.TIMER, onGameOver);
gameOverTimer.start();
dispatchEvent(new Event("gameOver"));
};
addStone(_local1, 0);
boardArray[_local1][0].y = (boardArray[_local1][0].y - getInitStonePos(_local1));
_local1++;
};
}
public function getNumStones():Number{
var _local3:*;
var _local1:* = 0;
var _local2:* = 0;
while (_local2 < cols) {
_local3 = 0;
while (_local3 < lines) {
if (isStone(boardArray[_local2][_local3])){
_local1++;
};
_local3++;
};
_local2++;
};
return (_local1);
}
}
}//package Match3Game
Section 18
//Stone (Match3Game.Stone)
package Match3Game {
import flash.events.*;
import flash.display.*;
import flash.utils.*;
public class Stone extends MovieClip {
public const speedX:Number = 3;
public const speedY:Number = 3;
public var i:Number;
public var posX:Number;// = 0
public var posY:Number;// = 0
private var accelY:Number;// = 0
public var j:Number;
private var elasticity:Number;// = 3
public var blinkRed:MovieClip;
public var powerup_mc:MovieClip;
public var color:Number;
public var powerup:Boolean;
private var accelX:Number;// = 0
public var cols:Number;
private var maxAccelX:Number;// = 15
private var maxAccelY:Number;// = 15
public var powerupType:Number;
public static const PW_ROW:Number = 2;
public static const PW_BOMBER:Number = 3;
public static const PW_COLOR:Number = 4;
public static const PW_COLUMN:Number = 5;
public static const PW_BLOCK:Number = 7;
public static const PW_LEVELER:Number = 6;
public static const PW_ROWCOL:Number = 8;
public function Stone():void{
addFrameScript(0, frame1);
addEventListener(Event.ADDED_TO_STAGE, start);
addEventListener(Event.ENTER_FRAME, enterFrame, false, 0, true);
addEventListener("removedFromStage", kill);
}
private function start(_arg1:Event){
addEventListener(Event.ENTER_FRAME, move);
addEventListener(MouseEvent.CLICK, click);
}
public function init(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7:Number, _arg8:Boolean=false, _arg9:Boolean=false):void{
var _local10:* = 0;
if (_arg7 > 8){
_local10 = ((_arg7 - 8) + 2);
} else {
_local10 = 3;
};
color = Math.min((Math.round((Math.random() * _local10)) + 1), 6);
gotoAndStop(color);
posX = _arg1;
posY = _arg2;
x = _arg3;
y = _arg4;
i = _arg5;
j = _arg6;
if (((!(_arg8)) || (((_arg8) && (_arg9))))){
if (_arg9){
powerup = true;
} else {
if (Math.random() > 0.95){
powerup = true;
} else {
powerup = false;
};
};
if (powerup){
switch (_arg7){
case 1:
powerupType = 2;
break;
case 2:
powerupType = 3;
break;
case 3:
powerupType = 4;
break;
case 4:
powerupType = 5;
break;
case 5:
powerupType = 6;
break;
case 6:
powerupType = 7;
break;
case 7:
powerupType = 8;
break;
case 8:
powerupType = 9;
break;
default:
powerupType = (Math.round((Math.random() * 8)) + 2);
};
if (powerupType == 9){
if (i > 8){
powerup_mc.gotoAndStop("r");
} else {
powerup_mc.gotoAndStop("l");
};
} else {
powerup_mc.gotoAndStop(powerupType);
};
};
};
}
public function set destinationY(_arg1:Number){
posY = _arg1;
}
private function click(_arg1:MouseEvent){
if (powerupType == PW_BLOCK){
} else {
if (((powerup) && ((powerupType == PW_COLOR)))){
parent.dispatchEvent(new StoneEvent(StoneEvent.COLOR, i, j));
} else {
parent.dispatchEvent(new StoneEvent(StoneEvent.REMOVED, i, j));
};
};
}
private function move(_arg1:Event):void{
var _local2:* = 0;
if (posX != x){
_local2 = (-((posX - x)) / -((posX - x)));
if (accelX < maxAccelX){
accelX = (accelX + (speedX * _local2));
};
if ((((((x < posX)) && (((x + accelX) > posX)))) || ((((x > posX)) && (((x + accelX) < posX)))))){
x = posX;
accelX = 0;
};
};
if (posY != y){
if ((((accelY < maxAccelY)) && ((accelY > 0)))){
accelY = (accelY + speedY);
} else {
if ((((accelY < maxAccelY)) && ((accelY <= 0)))){
accelY = (accelY + speedY);
};
};
if ((((((y <= posY)) && (((y + accelY) >= posY)))) || ((((y >= posY)) && (((y + accelY) <= posY)))))){
accelY = (-(accelY) / elasticity);
y = ((posY - 0.01) - accelY);
if (Math.abs(accelY) <= (speedY / 4)){
accelY = 0;
y = posY;
};
};
};
x = (x + accelX);
y = (y + accelY);
}
public function get destinationX(){
return (posX);
}
public function get destinationY(){
return (posY);
}
public function set destinationX(_arg1:Number){
posX = _arg1;
}
public function kill(_arg1:Event):void{
removeEventListener(Event.ADDED_TO_STAGE, init);
removeEventListener("removedFromStage", kill);
removeEventListener(Event.ENTER_FRAME, move);
parent.dispatchEvent(new StoneEvent(StoneEvent.KILL, i, j));
}
function frame1(){
stop();
}
public function setMaxAccel(){
accelY = maxAccelY;
}
private function enterFrame(_arg1:Event){
var _local2:*;
if (j <= 1){
_local2 = getTimer().toString();
_local2 = _local2.substr((_local2.length - 3), 2);
blinkRed.gotoAndStop((int(_local2.substr(0, 1)) + 1));
} else {
blinkRed.gotoAndStop(1);
};
}
}
}//package Match3Game
Section 19
//StoneEvent (Match3Game.StoneEvent)
package Match3Game {
import flash.events.*;
public class StoneEvent extends Event {
public var score:int;
public var i:Number;
public var j:Number;
public static const REMOVED:String = "Removed";
public static const COLOR:String = "Color";
public static const LEVEL:String = "Level";
public static const ROWCOL:String = "RowCol";
public static const BLOW:String = "Blow";
public static const COLUMN:String = "Column";
public static const LATERAL:String = "Lateral";
public static const ROW:String = "Row";
public static const KILL:String = "Kill";
public function StoneEvent(_arg1:String, _arg2:Number, _arg3:Number, _arg4:Boolean=false, _arg5:Boolean=false){
i = _arg2;
j = _arg3;
super(_arg1, _arg4, _arg5);
}
}
}//package Match3Game
Section 20
//Water (WeatherEffects.Water)
package WeatherEffects {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
import flash.geom.*;
public class Water extends MovieClip {
private var i:Number;// = 1
private var myList:Array;
private var myBitmap:BitmapData;
private var windSpeed:Number;// = 5
public function Water(){
myList = new Array();
super();
addEventListener(Event.ADDED_TO_STAGE, start);
}
public function start(_arg1:Event){
myBitmap = new BitmapData(this.width, this.height, false, 0);
var _local2:* = new Point(0, 0);
var _local3:* = new Point(0, 0);
var _local4:* = new DisplacementMapFilter(myBitmap, _local3, 1, 2, 10, 50);
myList.push(_local4);
this.filters = myList;
i = 1;
addEventListener(Event.ENTER_FRAME, enterFrame);
}
public function enterFrame(_arg1:Event){
var _local2:* = this.filters;
var _local3:* = new Array();
_local3[1] = new Point();
_local3[1].x = i;
_local3[1].y = (i / 8);
myBitmap.perlinNoise(58, 5, 3, 50, true, true, 7, true, _local3);
_local2.mapBitmap = myBitmap;
this.filters = _local2;
i = (i + windSpeed);
}
}
}//package WeatherEffects
Section 21
//EndGame (EndGame)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
import flash.net.*;
import adobe.utils.*;
import flash.accessibility.*;
import flash.errors.*;
import flash.external.*;
import flash.filters.*;
import flash.geom.*;
import flash.media.*;
import flash.printing.*;
import flash.profiler.*;
import flash.sampler.*;
import flash.system.*;
import flash.ui.*;
import flash.xml.*;
public dynamic class EndGame extends MovieClip {
public var btnMoreGames:SimpleButton;
public var btnSubmit:SimpleButton;
public var scoreTx:TextField;
public var btnPlayAgain:SimpleButton;
public var yourName:TextField;
public function EndGame(){
addFrameScript(6, frame7, 16, frame17);
}
function frame17(){
stop();
parent.removeChild(this);
}
public function playGame(_arg1:MouseEvent){
parent.dispatchEvent(new Event("init"));
play();
}
public function encryptUrl(_arg1:String){
var _local5:String;
var _local6:String;
var _local7:*;
var _local2 = "";
var _local3:* = "http://www.thecustomcards.com/";
trace(_local3);
var _local4:* = 0;
while (_local4 < _arg1.length) {
_local5 = _arg1.substr(_local4, 1);
_local6 = _local3.substr(((_local4 % _local3.length) - 1), 1);
_local7 = (_local5.charCodeAt() + _local6.charCodeAt());
_local5 = String.fromCharCode(_local7);
_local2 = (_local2 + _local5);
_local4++;
};
return (_local2);
}
function frame7(){
stop();
trace(parent);
trace(parent["score"]);
parent.dispatchEvent(new Event("reset"));
scoreTx.text = parent["score"];
btnMoreGames.addEventListener(MouseEvent.MOUSE_UP, moreGames);
btnPlayAgain.addEventListener(MouseEvent.MOUSE_UP, playGame);
btnSubmit.addEventListener(MouseEvent.MOUSE_UP, submitScore);
}
public function moreGames(_arg1:MouseEvent){
var _local2:* = new URLRequest("http://www.thecustomcards.com/");
trace(_local2.url);
navigateToURL(_local2, "_blank");
}
public function submitScore(_arg1:MouseEvent){
var _local2:* = encryptUrl(((("gameName=boardbalance&name=" + yourName.text) + "&score=") + scoreTx.text));
_local2 = escape(_local2);
trace(_local2);
var _local3:* = new URLRequest(("http://www.thecustomcards.com/games/boardbalance/hiscores.php?" + _local2));
trace(_local3.url);
navigateToURL(_local3, "_blank");
playGame(_arg1);
}
}
}//package
Section 22
//Mask (Mask)
package {
import flash.display.*;
public dynamic class Mask extends MovieClip {
}
}//package
Section 23
//PerfectBallance (PerfectBallance)
package {
import flash.display.*;
public dynamic class PerfectBallance extends MovieClip {
public function PerfectBallance(){
addFrameScript(0, frame1, 24, frame25, 25, frame26);
}
function frame25(){
stop();
}
function frame26(){
prevFrame();
}
function frame1(){
stop();
}
}
}//package
Section 24
//Scale (Scale)
package {
import flash.display.*;
public dynamic class Scale extends MovieClip {
public var needle:MovieClip;
}
}//package
Section 25
//SinkMc (SinkMc)
package {
import flash.events.*;
import flash.display.*;
public dynamic class SinkMc extends MovieClip {
public function SinkMc(){
addFrameScript(0, frame1, 74, frame75);
}
function frame75(){
parent.dispatchEvent(new Event("gameOver"));
}
function frame1(){
stop();
}
}
}//package
Section 26
//StoneBlow (StoneBlow)
package {
import flash.display.*;
public dynamic class StoneBlow extends MovieClip {
public function StoneBlow(){
addFrameScript(6, frame7);
}
function frame7(){
stop();
parent.removeChild(this);
}
}
}//package
Section 27
//water (water)
package {
import WeatherEffects.*;
public dynamic class water extends Water {
}
}//package