Section 1
//cAppMode (app.cAppMode)
package app {
import flash.display.*;
import flash.events.*;
public class cAppMode extends MovieClip {
public function modeStart(){
}
public function modeShutdown(){
}
public function keyDown(_arg1:KeyboardEvent){
}
public function keyUp(_arg1:KeyboardEvent){
}
public function mouseDown(_arg1:MouseEvent){
}
public function mouseUp(_arg1:MouseEvent){
}
public function mouseMove(_arg1:MouseEvent){
}
public function printf(_arg1:String){
cHost.printf(_arg1);
}
}
}//package app
Section 2
//cBullet (app.cBullet)
package app {
public class cBullet extends cEntity {
private var m_targetArrayIndex:int;
private var m_targetId:int;
private var m_towerArrayIndex:int;
private var m_towerId:int;
private var m_dirX;
private var m_dirY;
private var m_simplebulletLifeTime:int;
private var m_damage:int;
private var m_laserTime:int;
public function cBullet(){
setType(eENEMY);
}
public function setTarget(_arg1:int, _arg2:int){
m_targetArrayIndex = _arg1;
m_targetId = _arg2;
}
public function isHaveTarget(){
if (m_targetArrayIndex < 0){
return (false);
};
return (true);
}
public function getTargetArrayIndex(){
return (m_targetArrayIndex);
}
public function getTargetId(){
return (m_targetId);
}
public function setParam(_arg1:int, _arg2:int, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:int, _arg7:int){
setTarget(_arg1, _arg2);
m_dirX = _arg3;
m_dirY = _arg4;
m_damage = _arg6;
if (_arg7 > _arg6){
m_damage = cGlobal.randRange(_arg6, _arg7);
};
var _local8:* = cGlobal.getEntityDef(getEntityDefIndex());
var _local9:* = ((Math.acos(-(m_dirY)) * 180) / Math.PI);
if (m_dirX < 0){
_local9 = -(_local9);
};
getClip().rotation = _local9;
m_simplebulletLifeTime = (_arg5 / _local8.speed);
m_laserTime = 0;
}
public function getDirX(){
return (m_dirX);
}
public function getDirY(){
return (m_dirY);
}
public function setDir(_arg1, _arg2){
m_dirX = _arg1;
m_dirY = _arg2;
}
public function cooldownSimpleBulletLifeTime():Boolean{
m_simplebulletLifeTime--;
if (m_simplebulletLifeTime > 0){
return (true);
};
return (false);
}
public function getDamage(){
return (m_damage);
}
public function rotate(){
var _local1:* = ((Math.acos(-(m_dirY)) * 180) / Math.PI);
if (m_dirX < 0){
_local1 = -(_local1);
};
getClip().rotation = _local1;
}
public function setTower(_arg1:int, _arg2:int){
m_towerArrayIndex = _arg1;
m_towerId = _arg2;
}
public function getTowerArrayIndex(){
return (m_towerArrayIndex);
}
public function getTowerId(){
return (m_towerId);
}
public function laserCooldown():Boolean{
var _local2:*;
m_laserTime--;
var _local1:Boolean;
if (m_laserTime <= 0){
_local1 = true;
_local2 = cGlobal.getEntityDef(getEntityDefIndex()).laser_fire_rate;
if (((!(_local2)) || ((_local2 <= 0)))){
_local2 = 1;
};
m_laserTime = _local2;
};
return (_local1);
}
}
}//package app
Section 3
//cConsole (app.cConsole)
package app {
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.ui.*;
public class cConsole extends MovieClip {
public var tf_input:TextField;
public var tf:TextField;
public function cConsole(){
tf.text = "";
tf_input.addEventListener(FocusEvent.FOCUS_IN, focusIn);
tf_input.addEventListener(FocusEvent.FOCUS_OUT, focusOut);
tf_input.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener_Input);
this.visible = false;
}
public function isVisible(){
return (this.visible);
}
public function toggle(){
this.visible = !(this.visible);
}
public function keyDown(_arg1:KeyboardEvent){
}
public function keyUp(_arg1:KeyboardEvent){
}
public function focusIn(_arg1:FocusEvent){
tf_input.text = "";
}
public function focusOut(_arg1:FocusEvent){
tf_input.text = "type command here... (press '\\' to close console)";
}
public function keyDownListener_Input(_arg1:KeyboardEvent){
if (_arg1.keyCode == Keyboard.ENTER){
printf(tf_input.text);
tf_input.text = "";
};
}
public function printf(_arg1:String){
trace(_arg1);
tf.appendText((_arg1 + "\n"));
}
}
}//package app
Section 4
//cContentClip (app.cContentClip)
package app {
import flash.display.*;
public class cContentClip extends MovieClip {
public function cContentClip(){
stop();
}
}
}//package app
Section 5
//cCorpse (app.cCorpse)
package app {
public class cCorpse extends cEntity {
private var m_lifeTimeCurrent:int;
public function cCorpse(){
setType(eCORPSE);
m_lifeTimeCurrent = 0;
}
override public function update():void{
m_lifeTimeCurrent--;
if (m_lifeTimeCurrent <= 0){
alpha = (alpha - (1 / 12));
if (alpha <= 0){
setNeedDelete(true);
};
};
}
override public function init(){
var _local1:* = getClip();
if (!_local1){
return;
};
var _local2:* = _local1.getChildAt(0);
if (!_local2){
return;
};
m_lifeTimeCurrent = _local2.totalFrames;
}
}
}//package app
Section 6
//cEnemy (app.cEnemy)
package app {
public class cEnemy extends cEntity {
private var m_startX:Number;
private var m_startY:Number;
private var m_endX:Number;
private var m_endY:Number;
private var m_t:Number;
private var m_tspeed:Number;
private var m_isEndMoving:Boolean;
private var m_pointIndex:int;
private var m_wayIndex:int;
private var m_health;
private var m_healthMax;
private var m_flash:Boolean;
private var m_flashTime:int;
private var m_numFlash:int;
private var m_speed:Number;
private var m_slowedTime:int;
private var m_slowCoeff:Number;
private var m_poisonTimes:int;
private var m_poisonRate:int;
private var m_poisonCurrentRate:int;
private var m_poisonDmg:Number;
private var m_regenRate:int;
private var m_regenNum:int;
private var m_regenCur:int;
private var m_clipSlow;
private var m_clipPoison;
private var m_clipHealthBar;
private var m_showHealthBarTime:int;
private var m_shiftX;
private var m_shiftY;
public function cEnemy(){
setType(eENEMY);
m_shiftX = 0;
m_shiftY = 0;
}
override public function init(){
m_startX = (m_startY = 0);
m_endX = (m_endY = 0);
m_t = 0;
m_tspeed = 1;
m_isEndMoving = true;
m_health = cGlobal.getEntityDef(getEntityDefIndex()).health;
m_healthMax = m_health;
m_speed = cGlobal.getEntityDef(getEntityDefIndex()).speed;
m_regenRate = -1;
m_regenNum = 0;
var _local1:* = cGlobal.getEntityDef(getEntityDefIndex()).regen_rate;
var _local2:* = cGlobal.getEntityDef(getEntityDefIndex()).regen_num;
if (((_local1) && ((_local1 > 0)))){
m_regenRate = _local1;
};
if (((_local2) && ((_local2 > 0)))){
m_regenNum = _local2;
};
m_regenCur = m_regenRate;
m_flash = false;
m_slowedTime = 0;
m_slowCoeff = 0;
m_poisonTimes = 0;
m_poisonRate = 0;
m_poisonCurrentRate = 0;
m_poisonDmg = 0;
m_clipSlow = cGlobal.generateMovieClipByStringExternalSWF("Unit_slow_effect");
m_clipPoison = cGlobal.generateMovieClipByStringExternalSWF("Unit_poison_effect");
m_clipHealthBar = cGlobal.generateMovieClipByStringExternalSWF("health_bar");
if (m_clipSlow){
addChild(m_clipSlow);
};
if (m_clipPoison){
addChild(m_clipPoison);
};
if (m_clipHealthBar){
addChild(m_clipHealthBar);
m_clipHealthBar.visible = false;
};
m_clipSlow.visible = (m_clipPoison.visible = false);
var _local3:* = getClip();
m_clipHealthBar.scaleX = 0.5;
m_clipHealthBar.scaleY = 0.5;
if (m_clipHealthBar.scaleX < 0.45){
m_clipHealthBar.scaleX = 0.45;
} else {
if (m_clipHealthBar.scaleX > 2.5){
m_clipHealthBar.scaleX = 2.5;
};
};
m_clipHealthBar.x = (_local3.x - (m_clipHealthBar.width / 2));
m_clipHealthBar.y = (m_clipHealthBar.y - 20);
m_clipHealthBar.bar.scaleX = (m_health / m_healthMax);
m_showHealthBarTime = 0;
var _local4:* = _local3.getChildAt(0);
var _local5:* = cGlobal.randRange(1, _local4.totalFrames);
trace(_local5);
_local4.gotoAndPlay(_local5);
}
override public function update():void{
if (!m_isEndMoving){
m_t = (m_t + m_tspeed);
if (m_t >= 1){
m_t = 1;
m_isEndMoving = true;
};
x = (m_startX + (m_t * (m_endX - m_startX)));
y = (m_startY + (m_t * (m_endY - m_startY)));
};
if (m_flash){
m_flashTime--;
if (m_flashTime <= 0){
m_flashTime = 3;
getClip().visible = !(getClip().visible);
m_numFlash--;
if (m_numFlash <= 0){
getClip().visible = true;
m_flash = false;
};
};
};
if (m_slowedTime > 0){
m_slowedTime--;
if (m_slowedTime <= 0){
m_slowCoeff = 0;
calculateSpeed();
m_clipSlow.visible = false;
};
};
if (m_poisonTimes > 0){
m_poisonCurrentRate--;
if (m_poisonCurrentRate <= 0){
m_poisonCurrentRate = m_poisonRate;
m_poisonTimes--;
applyDamage(m_poisonDmg);
if (m_poisonTimes <= 0){
m_clipPoison.visible = false;
};
};
};
if ((((m_regenRate > 0)) && ((m_health < m_healthMax)))){
m_regenCur--;
if (m_regenCur <= 0){
m_regenCur = m_regenRate;
m_health = (m_health + m_regenNum);
if (m_health > m_healthMax){
m_health = m_healthMax;
};
m_clipHealthBar.tf.text = m_health;
};
};
if (m_showHealthBarTime > 0){
m_showHealthBarTime--;
if (m_showHealthBarTime == 0){
m_showHealthBarTime = 0;
};
} else {
if (m_clipHealthBar.alpha > 0){
m_clipHealthBar.alpha = (m_clipHealthBar.alpha - 0.1);
if (m_clipHealthBar.alpha <= 0){
m_clipHealthBar.alpha = 0;
m_clipHealthBar.visible = false;
};
};
};
var _local1:* = (m_health / m_healthMax);
if (m_clipHealthBar.bar.scaleX > _local1){
m_clipHealthBar.bar.scaleX = (m_clipHealthBar.bar.scaleX - 0.1);
if (m_clipHealthBar.bar.scaleX < _local1){
m_clipHealthBar.bar.scaleX = _local1;
};
} else {
if (m_clipHealthBar.bar.scaleX < _local1){
m_clipHealthBar.bar.scaleX = (m_clipHealthBar.bar.scaleX + 0.1);
if (m_clipHealthBar.bar.scaleX > _local1){
m_clipHealthBar.bar.scaleX = _local1;
};
};
};
}
public function isEndMoving(){
return (m_isEndMoving);
}
public function getCurrentPointIndex(){
return (m_pointIndex);
}
public function setWayIndex(_arg1:int){
m_wayIndex = _arg1;
}
public function getWayIndex(){
return (m_wayIndex);
}
public function setShiftVector(_arg1:Number, _arg2:Number){
m_shiftX = _arg1;
m_shiftY = _arg2;
}
public function setMovingParams(_arg1:int, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number){
m_pointIndex = _arg1;
m_startX = x;
m_startY = y;
m_endX = _arg4;
m_endY = _arg5;
m_t = 0;
m_isEndMoving = false;
m_endX = (m_endX + m_shiftX);
m_endY = (m_endY + m_shiftY);
var _local6:* = (m_endX - x);
var _local7:* = (m_endY - y);
var _local8:* = Math.sqrt(((_local6 * _local6) + (_local7 * _local7)));
_local6 = (_local6 / _local8);
_local7 = (_local7 / _local8);
var _local9:* = -(_local7);
var _local10:* = ((Math.acos(_local9) * 180) / Math.PI);
if (_local6 < 0){
_local10 = -(_local10);
};
getClip().rotation = _local10;
calculateSpeed();
}
public function takeDamage(_arg1:Number, _arg2:int){
if (m_health < 0){
return (false);
};
var _local3:* = cGlobal.getEntityDef(_arg2);
var _local4:* = cGlobal.getEntityDef(getEntityDefIndex());
if (((!(_local3)) || (!(_local4)))){
return (true);
};
var _local5:* = _local4.armor;
if (!_local5){
_local5 = 0;
};
var _local6:* = _local3.ignore_armor;
if (!_local6){
_local6 = 0;
};
var _local7:* = _arg1;
if (_local6 != 1){
_local7 = (_local7 - _local5);
};
if (_local7 <= 0){
_local7 = 0;
};
if (_local3.slow_time){
m_slowedTime = _local3.slow_time;
};
if (_local3.slow_coeff){
m_slowCoeff = _local3.slow_coeff;
};
if ((((m_slowedTime > 0)) && ((m_slowCoeff > 0)))){
calculateSpeed();
m_clipSlow.visible = true;
};
if (_local3.poison_times){
m_poisonTimes = _local3.poison_times;
};
if (_local3.poison_rate){
m_poisonRate = _local3.poison_rate;
m_poisonCurrentRate = m_poisonRate;
};
if (_local3.poison_dmg){
m_poisonDmg = _local3.poison_dmg;
};
if (m_poisonTimes > 0){
m_clipPoison.visible = true;
};
return (applyDamage(_local7));
}
public function applyDamage(_arg1:Number):Boolean{
if (getNeedDelete()){
return (false);
};
m_health = (m_health - _arg1);
if (m_health <= 0){
m_health = 0;
setNeedDelete(true);
};
if (!m_flash){
m_flash = true;
m_flashTime = 0;
m_numFlash = 3;
} else {
m_numFlash = 3;
};
m_flash = false;
if (m_health > 0){
m_clipHealthBar.alpha = 1;
m_clipHealthBar.visible = true;
m_showHealthBarTime = 24;
};
if (m_health > 0){
return (true);
};
return (false);
}
private function calculateSpeed(){
var _local1:* = Math.sqrt((((m_endX - m_startX) * (m_endX - m_startX)) + ((m_endY - m_startY) * (m_endY - m_startY))));
var _local2:* = m_speed;
_local2 = (_local2 - (m_slowCoeff * _local2));
m_tspeed = (_local2 / _local1);
}
public function applyHealthBonus(_arg1:Number):void{
if (_arg1 <= 0){
return;
};
m_healthMax = (m_healthMax + Math.floor((_arg1 * m_healthMax)));
m_health = m_healthMax;
}
public function applySpeedBonus(_arg1:Number):void{
if (_arg1 <= 0){
return;
};
m_speed = (m_speed + _arg1);
}
}
}//package app
Section 7
//cEntity (app.cEntity)
package app {
import flash.display.*;
public class cEntity extends MovieClip {
private var m_type:int;
private var m_id:int;
private var m_needDelete:Boolean;
private var m_dead:Boolean;
private var m_clip;
private var m_entityDefIndex:int;
private var m_layerIndex:int;
public static var eENTITY = 0;
public static var eTOWER = 1;
public static var eENEMY = 2;
public static var eSPLASH = 3;
public static var ePARTICLEEMITTER = 4;
public static var ePARTICLE = 5;
public static var eCORPSE = 6;
public static var s_entityNames:Array = new Array("entity", "tower", "enemy", "splash", "particle emitter", "particle", "corpse");
public function cEntity(){
m_type = eENTITY;
m_needDelete = false;
m_dead = false;
m_clip = null;
m_entityDefIndex = -1;
m_id = -1;
}
public function update():void{
}
protected function setType(_arg1:int):void{
m_type = _arg1;
}
public function getType():int{
return (m_type);
}
public function getNeedDelete():Boolean{
return (m_needDelete);
}
public function setNeedDelete(_arg1:Boolean):void{
m_needDelete = _arg1;
}
public function getDead():Boolean{
return (m_dead);
}
public function makeDead():void{
if (m_dead){
return;
};
m_dead = true;
}
public function setClip(_arg1){
if (m_clip){
return;
};
m_clip = _arg1;
addChild(m_clip);
}
public function getClip(){
return (m_clip);
}
public function setEntityDefIndex(_arg1:int){
m_entityDefIndex = _arg1;
}
public function getEntityDefIndex():int{
return (m_entityDefIndex);
}
public function setId(_arg1:int){
if (m_id >= 0){
return;
};
m_id = _arg1;
}
public function getId(){
return (m_id);
}
public function setLayerIndex(_arg1:int){
m_layerIndex = _arg1;
}
public function getLayerIndex(){
return (m_layerIndex);
}
public function init(){
}
}
}//package app
Section 8
//cFade (app.cFade)
package app {
import flash.display.*;
public class cFade extends MovieClip {
private var m_modeAfterFade:int;
private var m_fadeDir:int;
public function cFade(){
this.graphics.beginFill(0, 1);
this.graphics.drawRect(0, 0, 720, 540);
this.name = "fade";
this.visible = false;
m_modeAfterFade = -1;
}
public function start(_arg1:int){
m_modeAfterFade = _arg1;
m_fadeDir = 1;
this.visible = true;
this.alpha = 0;
}
public function execute(){
if (!this.visible){
return (-1);
};
this.alpha = (this.alpha + (m_fadeDir * 0.1));
if ((((m_fadeDir > 0)) && ((this.alpha >= 1)))){
this.alpha = 1;
m_fadeDir = -1;
return (m_modeAfterFade);
};
if ((((m_fadeDir < 0)) && ((this.alpha <= 0)))){
this.alpha = 0;
this.visible = false;
m_modeAfterFade = -1;
};
return (-1);
}
public function resetMode(){
m_modeAfterFade = -1;
}
}
}//package app
Section 9
//cGame (app.cGame)
package app {
import flash.display.*;
import Playtomic.*;
import flash.events.*;
import flash.geom.*;
public class cGame extends cAppMode {
private var m_messageClip;
private var m_gameLayer:Array;
private var m_layerEnemyIndex:int;
private var m_layerTowerIndex:int;
private var m_layerBackgroundIndex:int;
private var m_layerBulletIndex:int;
private var m_layerEffectIndex:int;
private var m_layerCorpseIndex:int;
private var m_guiClip;
private var m_mouseX:int;
private var m_mouseY:int;
private var m_cellWidth:int;
private var m_cellHeight:int;
private var m_levelWidth:int;
private var m_levelHeight:int;
private var m_levelObj;
private var m_wayPoints:Array;
private var m_gold:int;
private var m_health:int;
private var m_healthMax:int;
private var m_curWave:int;
private var m_waveTime:int;
private var m_towersIndex:Array;
private var m_currentBuildTower:int;
private var m_currentBuildTowerClip;
private var m_currentBuildTowerDefaultColorTransform;
private var m_currentSelectedTower:int;
private var m_genQueue:Array;
private var m_arrayTowers:Array;
private var m_nextTowerIndex:int;
private var m_arrayEnemies:Array;
private var m_nextEnemyIndex:int;
private var m_arrayBullets:Array;
private var m_nextBulletIndex:int;
private var m_arrayGameEntitys:Array;
private var m_levelEnded:Boolean;
private var m_healthBonusInWave:Number;
private var m_speedBonusInWave:Number;
private var m_castleHealthBar;
private var m_maskingShape;
private var m_maskAngle:Number;
private var m_maskStartAngle:Number;
private var m_maskAngleSpeed:Number;
private var m_tmp:int;
private var m_arraySoundPlaying:Array;
private var m_timeFromLastAttackSound:int;
private var m_tutorialStep:int;
private var m_tutorialClip:cTutorialMessage;
public function cGame(){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
super();
m_timeFromLastAttackSound = 0;
m_currentSelectedTower = -1;
m_arraySoundPlaying = new Array();
m_guiClip = cGlobal.generateMovieClipByString("cGameGUI");
if (m_guiClip){
m_guiClip.next_wave_message.visible = false;
m_currentBuildTower = -1;
m_currentBuildTowerClip = null;
m_guiClip.tower_icons.visible = false;
m_guiClip.tower_build.visible = false;
m_guiClip.tower_image.visible = false;
m_guiClip.tower_selected.visible = false;
m_guiClip.tower_build.addEventListener(MouseEvent.CLICK, towerCancelBuild);
m_guiClip.tower_build.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
trace(("m_guiClip.tower_selected.button_sell.tf = " + m_guiClip.tower_selected.button_sell.tf));
m_guiClip.tower_selected.button_sell.addEventListener(MouseEvent.MOUSE_OVER, sellButtonOver);
m_guiClip.tower_selected.button_sell.addEventListener(MouseEvent.MOUSE_OUT, sellButtonOut);
m_guiClip.tower_selected.button_sell.addEventListener(MouseEvent.CLICK, towerSell);
m_guiClip.tower_selected.button_sell.tf.text = "";
m_guiClip.tower_selected.button_sell.buttonMode = true;
m_guiClip.tower_selected.button_sell.tf.mouseEnabled = false;
m_guiClip.tower_selected.button_upgr.addEventListener(MouseEvent.MOUSE_OVER, upgrButtonOver);
m_guiClip.tower_selected.button_upgr.addEventListener(MouseEvent.MOUSE_OUT, upgrButtonOut);
m_guiClip.tower_selected.button_upgr.addEventListener(MouseEvent.CLICK, towerUpgr);
m_guiClip.tower_selected.button_upgr.tf.text = "";
m_guiClip.tower_selected.button_upgr.buttonMode = true;
m_guiClip.tower_selected.button_upgr.tf.mouseEnabled = false;
_local3 = m_guiClip.getChildByName("button_replay");
_local3.addEventListener(MouseEvent.CLICK, pauseGame);
_local3.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
_local4 = m_guiClip.getChildByName("button_site");
_local4.addEventListener(MouseEvent.CLICK, onMoreFreeGames);
_local4.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
_local5 = m_guiClip.getChildByName("button_win");
if (_local5){
_local5.addEventListener(MouseEvent.CLICK, levelWon);
_local5.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
};
} else {
printf("Can't create game gui!");
};
m_layerBackgroundIndex = 1;
m_layerTowerIndex = 2;
m_layerEnemyIndex = 4;
m_layerCorpseIndex = 3;
m_layerBulletIndex = 5;
m_layerEffectIndex = 6;
var _local1:* = new MovieClip();
m_gameLayer = new Array();
var _local2:* = 0;
while (_local2 < 10) {
_local6 = new MovieClip();
m_gameLayer.push(_local6);
_local1.addChild(m_gameLayer[(m_gameLayer.length - 1)]);
_local2++;
};
m_messageClip = null;
createLevel(cGlobal.getCurrentLevelNum());
m_curWave = 0;
if (_local1){
addChild(_local1);
};
if (m_guiClip){
addChild(m_guiClip);
};
m_arrayTowers = new Array();
m_nextTowerIndex = 0;
m_arrayEnemies = new Array();
m_nextEnemyIndex = 0;
m_arrayBullets = new Array();
m_nextBulletIndex = 0;
m_genQueue = new Array();
m_arrayGameEntitys = new Array();
m_levelEnded = false;
addEventListener(Event.ENTER_FRAME, update);
m_healthBonusInWave = 0;
cGlobal.setUnitsUsedArray();
m_tutorialStep = -1;
m_tutorialClip = null;
if (cGlobal.getCurrentLevelNum() == 1){
m_tutorialStep = 0;
};
if (m_tutorialStep == 0){
m_tutorialClip = new cTutorialMessage();
m_tutorialClip.addChild(cGlobal.generateMovieClipByStringExternalSWF("tutorial_01"));
m_tutorialClip.x = 15;
m_tutorialClip.y = 425;
m_tutorialClip.setPos();
m_guiClip.addChild(m_tutorialClip);
};
}
private function update(_arg1:Event){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:*;
var _local19:*;
var _local20:ColorTransform;
var _local21:*;
var _local22:*;
var _local23:*;
var _local24:*;
var _local25:*;
if (m_messageClip){
return;
};
if (m_levelEnded){
return;
};
if (m_tutorialClip){
m_tutorialClip.update();
};
if (m_timeFromLastAttackSound > 0){
m_timeFromLastAttackSound--;
};
var _local2:* = 0;
if ((((((m_genQueue.length == 0)) && ((m_arrayEnemies.length == 0)))) && ((m_tutorialStep == -1)))){
m_guiClip.next_wave_message.visible = true;
m_guiClip.next_wave_message.tf.text = (("Next wave in " + (Math.floor((m_waveTime / 24)) + 1)) + " seconds!");
m_waveTime--;
if (m_waveTime < 0){
launchNextWave(null);
m_guiClip.next_wave_message.visible = false;
};
setTimeToNextWave(m_waveTime);
if (m_curWave > (m_levelObj.wave.length - 1)){
m_guiClip.next_wave_message.visible = true;
m_guiClip.next_wave_message.tf.text = "Last wave!";
};
};
if ((((((m_genQueue.length == 0)) && ((m_curWave > (m_levelObj.wave.length - 1))))) && ((m_arrayEnemies.length == 0)))){
levelWon(null);
m_levelEnded = true;
printf("Level Completed!");
printf(("m_genQueue.length = " + m_genQueue.length));
printf(("m_curWave = " + m_curWave));
printf(("m_levelObj.wave.length = " + m_levelObj.wave.length));
printf(("m_arrayEnemies.length = " + m_arrayEnemies.length));
return;
};
_local2 = 0;
for (;_local2 < m_genQueue.length;_local2++) {
m_genQueue[_local2].time--;
if (m_genQueue[_local2].time > 0){
} else {
_local3 = cGlobal.findEntityDefIndex(m_genQueue[_local2].unit);
_local4 = cGlobal.getEntityDef(_local3);
m_genQueue.splice(_local2, 1);
_local2--;
if (_local3 < 0){
} else {
_local5 = 0;
_local6 = m_wayPoints[_local5][0].x;
_local7 = m_wayPoints[_local5][0].y;
_local8 = m_wayPoints[_local5][1].x;
_local9 = m_wayPoints[_local5][1].y;
_local10 = (_local8 - _local6);
_local11 = (_local9 - _local7);
_local12 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local12);
_local11 = (_local11 / _local12);
_local13 = (m_cellWidth / 4);
_local14 = cGlobal.randRange(-100, 100);
_local15 = cGlobal.randRange(-100, 100);
_local12 = Math.sqrt(((_local14 * _local14) + (_local15 * _local15)));
_local14 = (_local14 / _local12);
_local15 = (_local15 / _local12);
_local14 = (_local14 * _local13);
_local15 = (_local15 * _local13);
_local6 = (_local6 + _local14);
_local7 = (_local7 + _local15);
_local16 = createEntity(_local3, _local6, _local7);
_local16.name = ("unit" + m_nextEnemyIndex);
m_nextEnemyIndex++;
_local16.applySpeedBonus(m_speedBonusInWave);
_local16.setShiftVector(_local14, _local15);
_local16.setMovingParams(1, m_wayPoints[_local5][0].x, m_wayPoints[_local5][0].y, _local8, _local9);
_local16.setWayIndex(_local5);
_local16.setId((m_nextEnemyIndex - 1));
_local16.setLayerIndex(m_layerEnemyIndex);
_local16.applyHealthBonus(m_healthBonusInWave);
m_gameLayer[m_layerEnemyIndex].addChild(_local16);
m_arrayEnemies.push(_local16);
if (cGlobal.isUnitAlreadyUsed(_local4.name) == false){
cGlobal.setUnitAlreadyUsed(_local4.name);
continue;
};
};
};
};
if (m_currentBuildTowerClip){
_local18 = m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius");
if (isCursorOnGUI(m_mouseX, m_mouseY)){
m_currentBuildTowerClip.visible = false;
_local18.visible = false;
} else {
m_currentBuildTowerClip.visible = true;
_local18.visible = true;
};
m_currentBuildTowerClip.x = calcPositionX(m_mouseX);
m_currentBuildTowerClip.y = calcPositionX(m_mouseY);
_local18.x = m_currentBuildTowerClip.x;
_local18.y = m_currentBuildTowerClip.y;
_local19 = cGlobal.getEntityDef(m_currentBuildTower);
_local20 = m_currentBuildTowerClip.transform.colorTransform;
if (canBuildHere(calcPositionX(m_mouseX), calcPositionY(m_mouseY), _local19.radius)){
m_currentBuildTowerClip.transform.colorTransform = m_currentBuildTowerDefaultColorTransform;
} else {
_local20.color = 0xFF0000;
m_currentBuildTowerClip.transform.colorTransform = _local20;
};
};
updateTowers();
_local2 = 0;
while (_local2 < m_arrayEnemies.length) {
m_arrayEnemies[_local2].update();
if (m_arrayEnemies[_local2].isEndMoving()){
_local21 = m_arrayEnemies[_local2].getCurrentPointIndex();
_local22 = m_arrayEnemies[_local2].getWayIndex();
if (_local21 < (m_wayPoints[_local22].length - 1)){
_local23 = m_wayPoints[_local22][_local21].x;
_local24 = m_wayPoints[_local22][_local21].y;
_local21++;
m_arrayEnemies[_local2].setMovingParams(_local21, _local23, _local24, m_wayPoints[_local22][_local21].x, m_wayPoints[_local22][_local21].y);
} else {
m_arrayEnemies[_local2].setNeedDelete(true);
_local25 = 10;
m_health = (m_health - _local25);
if (m_health <= 0){
m_health = 0;
levelLose(null);
m_levelEnded = true;
return;
};
if (m_timeFromLastAttackSound <= 0){
cHost.playSound("enemyAttack");
m_timeFromLastAttackSound = 24;
};
setHealth(m_health);
};
};
if (m_arrayEnemies[_local2].getNeedDelete()){
m_gameLayer[m_arrayEnemies[_local2].getLayerIndex()].removeChild(m_arrayEnemies[_local2]);
m_arrayEnemies.splice(_local2, 1);
_local2--;
};
_local2++;
};
updateBullets();
_local2 = 0;
while (_local2 < m_arrayGameEntitys.length) {
m_arrayGameEntitys[_local2].update();
if (m_arrayGameEntitys[_local2].getNeedDelete()){
m_gameLayer[m_arrayGameEntitys[_local2].getLayerIndex()].removeChild(m_arrayGameEntitys[_local2]);
m_arrayGameEntitys.splice(_local2, 1);
_local2--;
};
_local2++;
};
setHealth(m_health);
}
private function updateTowers(){
var _local3:*;
var _local4:*;
var _local5:int;
var _local6:int;
var _local7:Boolean;
var _local8:int;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:int;
var _local19:*;
var _local20:*;
var _local1:int;
var _local2:Number = 0;
_local1 = 0;
for (;_local1 < m_arrayTowers.length;_local1++) {
if (!m_arrayTowers[_local1].isBuilded()){
m_arrayTowers[_local1].build();
} else {
_local3 = m_arrayTowers[_local1];
_local4 = cGlobal.getEntityDef(_local3.getEntityDefIndex());
_local3.update();
if (_local3.isHaveTarget()){
_local5 = _local3.getTargetArrayIndex();
_local6 = _local3.getTargetId();
_local7 = false;
_local8 = checkTarget(_local5, _local6);
if (_local8 == -2){
_local7 = true;
} else {
if (_local8 >= 0){
_local5 = _local8;
_local3.setTarget(_local5, _local6);
};
};
_local9 = null;
if (!_local7){
_local9 = m_arrayEnemies[_local5];
_local2 = (((_local9.x - _local3.x) * (_local9.x - _local3.x)) + ((_local9.y - _local3.y) * (_local9.y - _local3.y)));
if (_local2 > (_local4.fire_radius * _local4.fire_radius)){
_local7 = true;
};
};
if (_local7){
_local3.setTarget(-1, -1);
continue;
};
_local9 = m_arrayEnemies[_local5];
_local10 = (_local9.x - _local3.x);
_local11 = (_local9.y - _local3.y);
_local2 = Math.sqrt(((_local10 * _local10) + (_local11 * _local11)));
_local10 = (_local10 / _local2);
_local11 = (_local11 / _local2);
_local12 = -(_local11);
_local13 = ((Math.acos(_local12) * 180) / Math.PI);
if (_local10 < 0){
_local13 = -(_local13);
};
_local3.rotateGun(_local13);
_local3.cooldownTimeToFire();
if (_local3.getTimeToFire() > 0){
continue;
};
_local3.resetTimeToFire();
_local14 = cGlobal.findEntityDefIndex(_local4.bullet);
if (_local14 < 0){
continue;
};
_local15 = cGlobal.getEntityDef(_local14);
if (_local15.bullet_type == 3){
makeNova(_local3.x, _local3.y, _local4.fire_radius, _local4.attack, _local14);
playShootSound(_local4.sound_shoot);
continue;
};
_local16 = createEntity(_local14, _local3.x, _local3.y);
_local16.name = ("bullet" + m_nextBulletIndex);
m_nextBulletIndex++;
_local16.setId((m_nextBulletIndex - 1));
_local17 = 0;
if (_local4.attack2){
_local17 = _local4.attack2;
};
_local16.setParam(_local5, _local6, _local10, _local11, _local2, _local4.attack, _local17);
_local16.setTower(_local1, _local3.getId());
if (_local3.canAddNewBullet()){
m_gameLayer[m_layerBulletIndex].addChild(_local16);
m_arrayBullets.push(_local16);
playShootSound(_local4.sound_shoot);
if (_local15.bullet_type == 2){
_local3.lockSpamNewBullet();
};
};
} else {
_local3.cooldownTimeToFire();
_local18 = -1;
_local19 = 0;
while (_local19 < m_arrayEnemies.length) {
_local20 = m_arrayEnemies[_local19];
_local2 = (((_local20.x - _local3.x) * (_local20.x - _local3.x)) + ((_local20.y - _local3.y) * (_local20.y - _local3.y)));
if (_local2 > (_local4.fire_radius * _local4.fire_radius)){
} else {
_local18 = _local19;
break;
};
_local19++;
};
if (_local18 >= 0){
_local3.setTarget(_local18, m_arrayEnemies[_local18].getId());
};
};
};
};
}
private function playShootSound(_arg1:String){
if (m_arraySoundPlaying[_arg1] >= 2){
return;
};
var _local2:* = cHost.playSound(_arg1);
if (!_local2){
return;
};
if (_arg1 == "shootArcher"){
_local2.addEventListener(Event.SOUND_COMPLETE, endShootArcher);
};
if (_arg1 == "shootCannon"){
_local2.addEventListener(Event.SOUND_COMPLETE, endShootCannon);
};
if (_arg1 == "shootFrost"){
_local2.addEventListener(Event.SOUND_COMPLETE, endShootFrost);
} else {
if (_arg1 == "shootLazer"){
_local2.addEventListener(Event.SOUND_COMPLETE, endShootLazer);
};
};
if (!m_arraySoundPlaying[_arg1]){
m_arraySoundPlaying[_arg1] = new Number(0);
};
var _local3 = m_arraySoundPlaying;
var _local4 = _arg1;
var _local5 = (_local3[_local4] + 1);
_local3[_local4] = _local5;
}
private function endShootArcher(_arg1){
var _local2 = m_arraySoundPlaying;
var _local3 = "shootArcher";
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
}
private function endShootCannon(_arg1){
var _local2 = m_arraySoundPlaying;
var _local3 = "shootCannon";
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
}
private function endShootFrost(_arg1){
var _local2 = m_arraySoundPlaying;
var _local3 = "shootFrost";
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
}
private function endShootLazer(_arg1){
var _local2 = m_arraySoundPlaying;
var _local3 = "shootLazer";
var _local4 = (_local2[_local3] - 1);
_local2[_local3] = _local4;
}
private function updateBullets(){
var _local2:*;
var _local3:*;
var _local4:int;
var _local5:int;
var _local6:Boolean;
var _local7:int;
var _local8:*;
var _local9:Boolean;
var _local10:int;
var _local11:int;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:*;
var _local19:*;
var _local20:*;
var _local21:*;
var _local22:*;
var _local23:*;
var _local24:*;
var _local25:*;
var _local26:*;
m_guiClip.debug.text = ("" + m_arraySoundPlaying["shootArcher"]);
var _local1:int;
_local1 = 0;
for (;_local1 < m_arrayBullets.length;_local1++) {
_local2 = m_arrayBullets[_local1];
_local3 = cGlobal.getEntityDef(_local2.getEntityDefIndex());
_local4 = _local2.getTargetArrayIndex();
_local5 = _local2.getTargetId();
_local6 = false;
_local7 = checkTarget(_local4, _local5);
if (_local7 == -2){
_local6 = true;
} else {
if (_local7 >= 0){
_local4 = _local7;
_local2.setTarget(_local4, _local5);
};
};
_local8 = null;
if (_local6){
_local2.setNeedDelete(true);
} else {
_local9 = false;
_local10 = 0;
_local11 = 0;
if ((((_local3.splash_radius > 0)) && ((_local3.splash_dmg > 0)))){
_local9 = true;
_local10 = _local3.splash_radius;
_local11 = _local3.splash_dmg;
};
_local8 = m_arrayEnemies[_local4];
if (_local3.bullet_type == 0){
_local2.x = (_local2.x + (_local2.getDirX() * _local3.speed));
_local2.y = (_local2.y + (_local2.getDirY() * _local3.speed));
if (!_local2.cooldownSimpleBulletLifeTime()){
_local2.setNeedDelete(true);
_local12 = _local8.takeDamage(_local2.getDamage(), _local2.getEntityDefIndex());
if (!_local12){
enemyDie(_local8);
};
if (_local9){
makeBOOM(_local2.x, _local2.y, _local10, _local11);
};
};
} else {
if (_local3.bullet_type == 1){
_local13 = (_local8.x - _local2.x);
_local14 = (_local8.y - _local2.y);
_local15 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14)));
_local16 = cGlobal.getEntityDef(_local8.getEntityDefIndex());
if (_local15 <= _local16.radius){
_local2.setNeedDelete(true);
if (!_local8.takeDamage(_local2.getDamage(), _local2.getEntityDefIndex())){
enemyDie(_local8);
};
if (_local9){
makeBOOM(_local2.x, _local2.y, _local10, _local11);
};
} else {
_local13 = (_local13 / _local15);
_local14 = (_local14 / _local15);
_local2.setDir(_local13, _local14);
_local2.x = (_local2.x + (_local2.getDirX() * _local3.speed));
_local2.y = (_local2.y + (_local2.getDirY() * _local3.speed));
_local2.rotate();
};
} else {
if (_local3.bullet_type == 2){
_local17 = _local2.getTowerArrayIndex();
_local18 = m_arrayTowers[_local2.getTowerArrayIndex()];
if ((((_local17 >= m_arrayTowers.length)) || (!((m_arrayTowers[_local2.getTowerArrayIndex()].getTargetId() == _local2.getTargetId()))))){
_local2.setNeedDelete(true);
} else {
_local13 = (_local8.x - _local2.x);
_local14 = (_local8.y - _local2.y);
_local15 = Math.sqrt(((_local13 * _local13) + (_local14 * _local14)));
_local13 = (_local13 / _local15);
_local14 = (_local14 / _local15);
_local2.setDir(_local13, _local14);
_local2.rotate();
if (!_local2.laserCooldown()){
continue;
};
_local19 = 0;
while (_local19 < m_arrayEnemies.length) {
_local20 = _local2.x;
_local21 = _local2.y;
_local22 = _local8.x;
_local23 = _local8.y;
_local24 = m_arrayEnemies[_local19].x;
_local25 = m_arrayEnemies[_local19].y;
_local26 = Math.abs((((((_local21 - _local23) * _local24) + ((_local22 - _local20) * _local25)) + ((_local20 * _local23) - (_local22 * _local21))) / _local15));
if (_local26 > cGlobal.getEntityDef(_local8.getEntityDefIndex()).radius){
} else {
if (!m_arrayEnemies[_local19].takeDamage(_local2.getDamage(), _local2.getEntityDefIndex())){
enemyDie(_local8);
};
if (_local9){
makeBOOM(_local24, _local25, _local10, _local11);
};
};
_local19++;
};
};
} else {
_local2.setNeedDelete(true);
};
};
};
};
if (_local2.getNeedDelete()){
if (_local3.bullet_type == 2){
_local18 = m_arrayTowers[_local2.getTowerArrayIndex()];
_local18.unlockSpamNewBullet();
};
m_gameLayer[_local2.getLayerIndex()].removeChild(_local2);
m_arrayBullets.splice(_local1, 1);
_local1--;
};
_local2 = null;
_local8 = null;
};
}
private function enemyDie(_arg1):void{
if (!_arg1){
return;
};
var _local2:* = cGlobal.getEntityDef(_arg1.getEntityDefIndex());
m_gold = (m_gold + _local2.price);
setGold(m_gold);
if (!_local2.linkage_die){
return;
};
var _local3:* = new cCorpse();
_local3.x = _arg1.x;
_local3.y = _arg1.y;
_local3.setEntityDefIndex(-1);
var _local4:* = cGlobal.generateMovieClipByStringExternalSWF(_local2.linkage_die);
cGlobal.generateMovieClipByStringExternalSWF(_local2.linkage_die).x = (_local4.y = 0);
_local4.rotation = _arg1.getClip().rotation;
_local3.setClip(_local4);
_local3.init();
_local3.setLayerIndex(m_layerCorpseIndex);
m_gameLayer[m_layerCorpseIndex].addChild(_local3);
m_arrayGameEntitys.push(_local3);
if (!_local2.sounds_die){
return;
};
if (_local2.sounds_die.length == 0){
return;
};
var _local5:* = 0;
if (_local2.sounds_die.length > 1){
_local5 = cGlobal.randRange(0, (_local2.sounds_die.length - 1));
};
cHost.playSound(_local2.sounds_die[_local5]);
}
private function makeBOOM(_arg1:int, _arg2:int, _arg3:int, _arg4:int):void{
var _local8:*;
var _local9:*;
var _local5:* = new cSplashEffect();
_local5.x = _arg1;
_local5.y = _arg2;
_local5.setEntityDefIndex(-1);
var _local6:* = cGlobal.generateMovieClipByString("exploRadius");
cGlobal.generateMovieClipByString("exploRadius").x = (_local6.y = 0);
_local6.width = (_local6.height = (_arg3 * 2));
_local5.setClip(_local6);
_local5.init();
_local5.setNeedRadius(_arg3);
_local5.setLayerIndex(m_layerEffectIndex);
m_gameLayer[m_layerEffectIndex].addChild(_local5);
m_arrayGameEntitys.push(_local5);
var _local7:* = 0;
while (_local7 < m_arrayEnemies.length) {
_local8 = m_arrayEnemies[_local7];
_local9 = (((_local8.x - _arg1) * (_local8.x - _arg1)) + ((_local8.y - _arg2) * (_local8.y - _arg2)));
if (_local9 > (_arg3 * _arg3)){
} else {
if (!_local8.applyDamage(_arg4)){
enemyDie(_local8);
};
};
_local7++;
};
}
private function makeNova(_arg1:int, _arg2:int, _arg3:int, _arg4:int, _arg5:int):void{
var _local10:*;
var _local11:*;
var _local6:* = new cSplashEffect();
_local6.x = _arg1;
_local6.y = _arg2;
_local6.setEntityDefIndex(-1);
var _local7:* = cGlobal.getEntityDef(_arg5);
var _local8:* = cGlobal.generateMovieClipByStringExternalSWF(_local7.linkage);
cGlobal.generateMovieClipByStringExternalSWF(_local7.linkage).x = (_local8.y = 0);
_local8.width = (_local8.height = (_arg3 * 2));
_local6.setClip(_local8);
_local6.init();
_local6.setNeedRadius(_arg3);
_local6.setLayerIndex(m_layerEffectIndex);
m_gameLayer[m_layerEffectIndex].addChild(_local6);
m_arrayGameEntitys.push(_local6);
var _local9:* = 0;
while (_local9 < m_arrayEnemies.length) {
_local10 = m_arrayEnemies[_local9];
_local11 = (((_local10.x - _arg1) * (_local10.x - _arg1)) + ((_local10.y - _arg2) * (_local10.y - _arg2)));
if (_local11 > (_arg3 * _arg3)){
} else {
if (!_local10.takeDamage(_arg4, _arg5)){
m_gold = (m_gold + cGlobal.getEntityDef(_local10.getEntityDefIndex()).price);
setGold(m_gold);
};
};
_local9++;
};
}
private function checkTarget(_arg1:int, _arg2:int):int{
var _local4:*;
var _local3 = -1;
if ((((_arg1 >= m_arrayEnemies.length)) || ((((_arg1 < m_arrayEnemies.length)) && (!((m_arrayEnemies[_arg1].getId() == _arg2))))))){
_arg1 = -1;
_local4 = 0;
while (_local4 < m_arrayEnemies.length) {
if (m_arrayEnemies[_local4].getId() != _arg2){
} else {
_arg1 = _local4;
_local3 = _arg1;
break;
};
_local4++;
};
};
if (_arg1 < 0){
return (-2);
};
if (((m_arrayEnemies[_arg1].getNeedDelete()) || (m_arrayEnemies[_arg1].getDead()))){
return (-2);
};
return (_local3);
}
private function onMenu(_arg1:MouseEvent){
if (m_levelEnded){
return;
};
removeEventListener(Event.ENTER_FRAME, update);
cHost.changeMode(cHost.s_eModeMenu);
}
private function levelWon(_arg1:MouseEvent){
if (m_levelEnded){
return;
};
cGlobal.setWonLevel(true);
cGlobal.setLevelStat1(50);
cGlobal.setLevelStat2(100);
cGlobal.setLevelStat3(150);
cGlobal.setLevelStat4(570);
removeEventListener(Event.ENTER_FRAME, update);
cHost.changeMode(cHost.s_eModeLevelStats);
cHost.playSound("levelCompleted");
if (cGlobal.isPlaytomic()){
trace((("----------PLAYTOMIC Completed level " + cGlobal.getCurrentLevelNum()) + ";"));
Log.LevelCounterMetric("Completed", cGlobal.getCurrentLevelNum());
Log.ForceSend();
};
}
private function levelLose(_arg1:MouseEvent){
if (m_levelEnded){
return;
};
cGlobal.setWonLevel(false);
removeEventListener(Event.ENTER_FRAME, update);
cHost.changeMode(cHost.s_eModeLevelStats);
cHost.playSound("levelFailed");
if (cGlobal.isPlaytomic()){
trace((("----------PLAYTOMIC Failed level " + cGlobal.getCurrentLevelNum()) + ";"));
Log.LevelCounterMetric("Fail", cGlobal.getCurrentLevelNum());
Log.ForceSend();
};
}
private function pauseGame(_arg1:MouseEvent){
if (m_messageClip){
return;
};
m_messageClip = new cInGamePause();
m_messageClip.button_menu.addEventListener(MouseEvent.CLICK, onMenu);
m_messageClip.button_menu.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_messageClip.button_continue.addEventListener(MouseEvent.CLICK, onCloseMessage);
m_messageClip.button_continue.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_messageClip.button_site.addEventListener(MouseEvent.CLICK, onMoreFreeGames);
m_messageClip.button_site.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_messageClip.button_replay.addEventListener(MouseEvent.CLICK, onReplayLevel);
m_messageClip.button_replay.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
addChild(m_messageClip);
}
private function onReplayLevel(_arg1:MouseEvent){
cHost.changeMode(cHost.s_eModeGame);
}
private function onMoreFreeGames_Pause(_arg1:MouseEvent){
cHost.openGametopCom("GamePaused", "Site");
}
private function onMoreFreeGames(_arg1:MouseEvent){
cHost.openGametopCom("Game", "Site");
}
private function onCloseMessage(_arg1:MouseEvent){
if (!m_messageClip){
return;
};
removeChild(m_messageClip);
m_messageClip = null;
}
override public function keyDown(_arg1:KeyboardEvent){
if (m_levelEnded){
return;
};
}
override public function keyUp(_arg1:KeyboardEvent){
if (m_levelEnded){
return;
};
}
override public function mouseMove(_arg1:MouseEvent){
if (m_messageClip){
return;
};
if (m_levelEnded){
return;
};
m_mouseX = _arg1.stageX;
m_mouseY = _arg1.stageY;
}
override public function mouseUp(_arg1:MouseEvent){
var _local2:*;
var _local3:*;
var _local4:*;
var _local5:int;
var _local6:int;
var _local7:*;
var _local8:*;
var _local9:*;
var _local10:*;
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
if (m_messageClip){
return;
};
if (m_levelEnded){
return;
};
if (m_tutorialStep == 2){
m_tutorialStep = -1;
m_guiClip.removeChild(m_tutorialClip);
m_tutorialClip = null;
m_waveTime = (24 * 3);
};
if (isCursorOnGUI(m_mouseX, m_mouseY)){
return;
};
if (m_currentBuildTowerClip){
_local2 = cGlobal.getEntityDef(m_currentBuildTower);
if (!canBuildHere(calcPositionX(m_mouseX), calcPositionY(m_mouseY), _local2.raduis)){
trace("CAN'T BUILD HERE!");
return;
};
_local3 = createEntity(m_currentBuildTower, calcPositionX(m_mouseX), calcPositionY(m_mouseY));
_local3.name = ("tower" + m_nextTowerIndex);
m_nextTowerIndex++;
_local3.setPrice(_local2.price);
m_gameLayer[m_layerTowerIndex].addChild(_local3);
m_arrayTowers.push(_local3);
towerCancelBuild(null);
m_gold = (m_gold - _local2.price);
setGold(m_gold);
cHost.playSound("towerBuild");
if (m_tutorialStep == 0){
m_tutorialStep = 1;
m_guiClip.removeChild(m_tutorialClip);
m_tutorialClip = null;
m_tutorialClip = new cTutorialMessage();
m_tutorialClip.addChild(cGlobal.generateMovieClipByStringExternalSWF("tutorial_02"));
m_tutorialClip.x = (_local3.x + 15);
m_tutorialClip.y = (_local3.y - 40);
m_tutorialClip.setPos();
m_tutorialClip.setDir(1, 0);
m_gameLayer[m_layerTowerIndex].addChild(m_tutorialClip);
};
} else {
_local4 = null;
_local5 = 0;
_local6 = -1;
_local7 = 0;
while (_local7 < m_arrayTowers.length) {
_local4 = (m_arrayTowers[_local7] as cTower);
if (!_local4.isBuilded()){
return;
};
_local11 = cGlobal.getEntityDef(_local4.getEntityDefIndex());
_local12 = m_mouseX;
_local13 = m_mouseY;
_local14 = (((_local4.x - _local12) * (_local4.x - _local12)) + ((_local4.y - _local13) * (_local4.y - _local13)));
if (_local14 <= (_local11.radius * _local11.radius)){
_local6 = _local5;
break;
};
_local5++;
_local7++;
};
towerIconOut(null);
if (m_gameLayer[m_layerBackgroundIndex].getChildByName("select_frame")){
m_gameLayer[m_layerBackgroundIndex].removeChild(m_gameLayer[m_layerBackgroundIndex].getChildByName("select_frame"));
};
if (m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius")){
m_gameLayer[m_layerBackgroundIndex].removeChild(m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius"));
};
m_guiClip.tower_icons.visible = false;
m_guiClip.tower_build.visible = false;
m_guiClip.tower_selected.visible = false;
m_currentSelectedTower = -1;
if (_local6 < 0){
m_guiClip.tower_icons.visible = true;
return;
};
m_guiClip.tower_selected.visible = true;
m_guiClip.tower_selected.button_sell.tf.text = Math.floor((_local4.getPrice() / 2));
_local8 = null;
_local9 = -1;
_local9 = cGlobal.findEntityDefIndex(_local11.upgrade);
if (_local9 >= 0){
_local8 = cGlobal.getEntityDef(_local9);
m_guiClip.tower_selected.button_upgr.tf.text = _local8.price;
m_guiClip.tower_selected.button_upgr.visible = true;
} else {
m_guiClip.tower_selected.button_upgr.tf.text = "";
m_guiClip.tower_selected.button_upgr.visible = false;
};
m_currentSelectedTower = _local6;
setGold(m_gold);
_local10 = cGlobal.generateMovieClipByString("fire_radius");
_local10.name = "fire_radius";
_local10.x = _local4.x;
_local10.y = _local4.y;
_local10.width = (_local10.height = (_local11.fire_radius * 2));
m_gameLayer[m_layerBackgroundIndex].addChild(_local10);
cHost.playSound("towerSelect");
if (m_tutorialStep == 1){
m_gameLayer[m_layerTowerIndex].removeChild(m_tutorialClip);
m_tutorialStep = 2;
m_tutorialClip = null;
m_tutorialClip = new cTutorialMessage();
m_tutorialClip.addChild(cGlobal.generateMovieClipByStringExternalSWF("tutorial_03"));
m_tutorialClip.x = 25;
m_tutorialClip.y = 425;
m_tutorialClip.setPos();
m_guiClip.addChild(m_tutorialClip);
};
};
}
private function createLevel(_arg1:int){
var _local18:MovieClip;
var _local19:*;
var _local20:*;
var _local21:*;
var _local22:*;
var _local23:int;
var _local24:*;
var _local25:*;
m_levelObj = cGlobal.getGameSettings_LevelObj(_arg1);
if (!m_levelObj){
printf(("Can't find level with index " + _arg1));
cHost.changeMode(cHost.s_eModeMenu);
return;
};
var _local2:* = m_levelObj.clip;
printf((("Creating level " + _arg1) + "..."));
printf((("Level clip '" + _local2) + "'"));
var _local3:* = cGlobal.getLevel(_local2);
if (!_local3){
cHost.changeMode(cHost.s_eModeMenu);
return;
};
m_levelWidth = 720;
m_levelHeight = 540;
m_cellWidth = cGlobal.getGameSettings_CellWidth();
m_cellHeight = cGlobal.getGameSettings_CellHeight();
if (_local3.background){
m_levelWidth = _local3.background.width;
m_levelHeight = _local3.background.height;
printf((((("level size: (" + m_levelWidth) + ",") + m_levelHeight) + ")"));
m_gameLayer[m_layerBackgroundIndex].addChild(_local3.background);
} else {
printf((((("level background not found! using default level size: (" + m_levelWidth) + ",") + m_levelHeight) + ")"));
};
var _local4:* = null;
if (_local3.road){
_local4 = m_gameLayer[m_layerBackgroundIndex].addChild(_local3.road);
} else {
printf("can't find road clip!");
};
var _local5:* = new MovieClip();
_local5.name = "cant_build";
m_gameLayer[m_layerBackgroundIndex].addChild(_local5);
_local5.visible = false;
var _local6:* = false;
var _local7:* = false;
if (_local6){
_local18 = new MovieClip();
_local18.graphics.lineStyle(1);
_local19 = 0;
_local19 = 0;
while (_local19 < ((m_levelWidth / m_cellWidth) + 1)) {
_local18.graphics.moveTo((_local19 * m_cellWidth), 0);
_local18.graphics.lineTo((_local19 * m_cellWidth), m_levelHeight);
_local19++;
};
_local19 = 0;
while (_local19 < ((m_levelHeight / m_cellHeight) + 1)) {
_local18.graphics.moveTo(0, (_local19 * m_cellHeight));
_local18.graphics.lineTo(m_levelWidth, (_local19 * m_cellHeight));
_local19++;
};
_local18.alpha = cGlobal.getGameSettings_GridAlpha();
_local18.visible = cGlobal.getGameSettings_ShowGrid();
m_gameLayer[m_layerBackgroundIndex].addChild(_local18);
};
printf(("LEVEL MATRIX INDEX: " + m_levelObj.matrix_index));
var _local8:* = cGlobal.getGameSettings_LevelMatrix(m_levelObj.matrix_index);
var _local9:* = 0;
var _local10:* = 0;
var _local11:* = 0;
while (_local11 < 14) {
_local20 = 0;
while (_local20 < 18) {
if (_local8.matrix[(_local20 + (_local11 * 18))] == 0){
} else {
if (_local8.matrix[(_local20 + (_local11 * 18))] == 3){
_local9 = _local20;
_local10 = _local11;
} else {
_local21 = null;
_local22 = null;
if (_local8.matrix[(_local20 + (_local11 * 18))] == 1){
if (_local7){
_local21 = _local4.addChild(cGlobal.generateMovieClipByStringExternalSWF("road_cell"));
_local21.x = ((_local20 * m_cellWidth) + (m_cellWidth / 2));
_local21.y = ((_local11 * m_cellHeight) + (m_cellHeight / 2));
};
_local22 = _local5.addChild(cGlobal.generateMovieClipByStringExternalSWF("cell_disabled"));
_local22.x = ((_local20 * m_cellWidth) + (m_cellWidth / 2));
_local22.y = ((_local11 * m_cellHeight) + (m_cellHeight / 2));
} else {
if (_local8.matrix[(_local20 + (_local11 * 18))] == 2){
_local22 = _local5.addChild(cGlobal.generateMovieClipByStringExternalSWF("cell_disabled"));
_local22.x = ((_local20 * m_cellWidth) + (m_cellWidth / 2));
_local22.y = ((_local11 * m_cellHeight) + (m_cellHeight / 2));
};
};
};
};
_local20++;
};
_local11++;
};
printf("Creating castle...");
printf((((("castle cell: (" + _local9) + ",") + _local10) + ")"));
var _local12:* = m_gameLayer[m_layerEffectIndex].addChild(cGlobal.generateMovieClipByStringExternalSWF("castle"));
_local12.x = ((_local9 * m_cellWidth) + (m_cellWidth / 2));
_local12.y = ((_local10 * m_cellHeight) + (m_cellHeight / 2));
_local12.name = "castle";
m_castleHealthBar = cGlobal.generateMovieClipByStringExternalSWF("castleHealthBar");
m_gameLayer[m_layerEffectIndex].addChild(m_castleHealthBar);
m_castleHealthBar.x = ((_local12.x - (m_castleHealthBar.width / 2)) + 2);
m_castleHealthBar.y = (_local12.y - 10);
printf("castle was created.");
var _local13:* = 0;
printf("Level info:");
printf((" index: " + m_levelObj.index));
printf((" clip: " + m_levelObj.clip));
printf(((" time between wave: " + m_levelObj.time_between_wave) + " frames"));
printf((" number of waves: " + m_levelObj.wave.length));
printf(((" level time: " + Math.floor(((m_levelObj.wave.length * m_levelObj.time_between_wave) / 24))) + " seconds"));
var _local14:* = "";
m_towersIndex = new Array();
_local19 = 0;
while (_local19 < m_levelObj.towers.length) {
_local23 = cGlobal.findEntityDefIndexByName(m_levelObj.towers[_local19]);
_local14 = (_local14 + m_levelObj.towers[_local19]);
_local14 = (_local14 + (("(" + _local23) + ") "));
m_towersIndex.push(_local23);
_local19++;
};
printf((" towers: " + _local14));
_local19 = 0;
while (_local19 < m_levelObj.wave.length) {
printf(((" wave " + _local19) + ": "));
_local13 = 0;
while (_local13 < m_levelObj.wave[_local19].attackers.length) {
printf((((" " + m_levelObj.wave[_local19].attackers[_local13].time) + " ") + m_levelObj.wave[_local19].attackers[_local13].unit));
_local13++;
};
_local19++;
};
printf("--------------------------------------");
printf("Setup tower icons");
m_guiClip.tower_icons.visible = true;
var _local15:* = null;
var _local16:int;
while ((_local15 = m_guiClip.tower_icons.getChildByName(("t" + _local16)))) {
printf(("set slot t" + _local16));
_local15.visible = false;
if (_local16 < m_towersIndex.length){
_local24 = cGlobal.getEntityDef(m_towersIndex[_local16]);
if (!_local24){
printf(("can't find tower description with index " + m_towersIndex[_local16]));
_local16++;
continue;
};
_local25 = cGlobal.generateMovieClipByStringExternalSWF(_local24.icon_clip);
if (!_local25){
printf(("can't find icon for " + _local24.name));
_local16++;
continue;
};
if (!_local25.tf){
printf("INVALID TOWER ICON CLIP: No text field!");
_local16++;
continue;
};
if (!_local25.locked){
printf("INVALID TOWER ICON CLIP: No locked image!");
_local16++;
continue;
};
_local25.x = _local15.x;
_local25.y = _local15.y;
_local25.name = m_towersIndex[_local16];
_local25.buttonMode = true;
if (_local25.tf){
_local25.tf.text = _local24.price;
_local25.tf.mouseEnabled = false;
};
_local25.addEventListener(MouseEvent.CLICK, towerIconClick);
_local25.addEventListener(MouseEvent.MOUSE_OVER, towerIconOver);
_local25.addEventListener(MouseEvent.MOUSE_OUT, towerIconOut);
m_guiClip.tower_icons.addChild(_local25);
};
printf("OK");
_local16++;
};
printf("Setup tower icons - OK");
printf("Setup gold and wave bar");
setGold(m_levelObj.start_gold);
setWave(0, m_levelObj.wave.length);
m_maskAngle = m_maskStartAngle;
m_maskAngleSpeed = (360 / m_levelObj.time_between_wave);
setTimeToNextWave((10 * 24));
printf("OK");
printf("Set castle health");
m_healthMax = cGlobal.getGameSettings_CastleHealth();
m_health = ((m_levelObj.start_health / 100) * m_healthMax);
setHealth(m_health);
printf("OK");
m_wayPoints = new Array();
var _local17:* = new Array();
_local19 = 0;
while (_local19 < _local8.waypoints.length) {
_local17.push(new Point((_local8.waypoints[_local19] * m_cellWidth), (_local8.waypoints[(_local19 + 1)] * m_cellHeight)));
_local19 = (_local19 + 2);
};
m_wayPoints.push(_local17);
_local19 = 0;
while (_local19 < m_wayPoints.length) {
printf((((("way" + _local19) + "(len ") + m_wayPoints[_local19].length) + "): "));
_local13 = 0;
while (_local13 < m_wayPoints[_local19].length) {
printf(((((((" p" + _local13) + ": (") + m_wayPoints[_local19][_local13].x) + ",") + m_wayPoints[_local19][_local13].y) + ")"));
_local13++;
};
_local19++;
};
if (m_wayPoints.length == 0){
printf("No 'way' was founded!");
printf("Each level must have at least one way!");
cHost.changeMode(cHost.s_eModeMenu);
return;
};
printf((("Level " + _arg1) + " was created successfully!"));
}
private function createLevel_old(_arg1:int){
var _local11:*;
var _local12:*;
var _local13:*;
var _local14:*;
var _local15:*;
var _local16:*;
var _local17:*;
var _local18:*;
var _local19:*;
var _local20:*;
var _local21:*;
var _local22:int;
var _local23:*;
var _local24:*;
m_levelObj = cGlobal.getGameSettings_LevelObj(_arg1);
if (!m_levelObj){
printf(("Can't find level with index " + _arg1));
cHost.changeMode(cHost.s_eModeMenu);
return;
};
var _local2:* = m_levelObj.clip;
printf((("Creating level " + _arg1) + "..."));
printf((("Level clip '" + _local2) + "'"));
var _local3:* = cGlobal.getLevel(_local2);
if (!_local3){
cHost.changeMode(cHost.s_eModeMenu);
return;
};
m_levelWidth = 720;
m_levelHeight = 540;
m_cellWidth = cGlobal.getGameSettings_CellWidth();
m_cellHeight = cGlobal.getGameSettings_CellHeight();
if (_local3.background){
m_levelWidth = _local3.background.width;
m_levelHeight = _local3.background.height;
printf((((("level size: (" + m_levelWidth) + ",") + m_levelHeight) + ")"));
_local11 = m_gameLayer[m_layerBackgroundIndex].addChild(_local3.background);
_local12 = cGlobal.getGameSettings_LevelMatrix(0);
trace(("matrix.length = " + _local12.length));
_local13 = 0;
while (_local13 < 14) {
_local14 = 0;
while (_local14 < 18) {
if (_local12[(_local14 + (_local13 * 18))] == 0){
} else {
_local15 = _local11.road.addChild(cGlobal.generateMovieClipByStringExternalSWF("road_cell"));
_local15.x = ((_local14 * m_cellWidth) + (m_cellWidth / 2));
_local15.y = ((_local13 * m_cellHeight) + (m_cellHeight / 2));
};
_local14++;
};
_local13++;
};
} else {
printf((((("level background not found! using default level size: (" + m_levelWidth) + ",") + m_levelHeight) + ")"));
};
if (_local3.cant_build){
_local3.cant_build.visible = true;
_local16 = m_gameLayer[m_layerBackgroundIndex].addChild(_local3.cant_build);
_local13 = 0;
while (_local13 < 14) {
_local14 = 0;
while (_local14 < 18) {
if (_local12[(_local14 + (_local13 * 18))] == 0){
} else {
_local17 = _local16.addChild(cGlobal.generateMovieClipByStringExternalSWF("cell_disabled"));
_local17.x = ((_local14 * m_cellWidth) + (m_cellWidth / 2));
_local17.y = ((_local13 * m_cellHeight) + (m_cellHeight / 2));
};
_local14++;
};
_local13++;
};
} else {
printf("Can't find 'cant_build' clip in level clip!");
cHost.changeMode(cHost.s_eModeMenu);
return;
};
var _local4:MovieClip = new MovieClip();
_local4.graphics.lineStyle(1);
var _local5:* = 0;
_local5 = 0;
while (_local5 < ((m_levelWidth / m_cellWidth) + 1)) {
_local4.graphics.moveTo((_local5 * m_cellWidth), 0);
_local4.graphics.lineTo((_local5 * m_cellWidth), m_levelHeight);
_local5++;
};
_local5 = 0;
while (_local5 < ((m_levelHeight / m_cellHeight) + 1)) {
_local4.graphics.moveTo(0, (_local5 * m_cellHeight));
_local4.graphics.lineTo(m_levelWidth, (_local5 * m_cellHeight));
_local5++;
};
_local4.alpha = cGlobal.getGameSettings_GridAlpha();
_local4.visible = cGlobal.getGameSettings_ShowGrid();
m_gameLayer[m_layerBackgroundIndex].addChild(_local4);
m_wayPoints = new Array();
var _local6:* = null;
var _local7:* = 0;
while ((_local6 = _local3.getChildByName(("way" + _local7)))) {
_local6.visible = cGlobal.getGameSettings_ShowWay();
m_gameLayer[m_layerBackgroundIndex].addChild(_local6);
_local18 = new Array();
_local19 = null;
_local20 = 0;
while ((_local19 = _local6.getChildByName(("p" + _local20)))) {
_local18.push(new Point(Math.floor(_local19.x), Math.floor(_local19.y)));
_local20++;
};
m_wayPoints.push(_local18);
_local7++;
};
_local5 = 0;
while (_local5 < m_wayPoints.length) {
printf((("way" + _local5) + ":"));
_local21 = 0;
while (_local21 < m_wayPoints[_local5].length) {
printf(((((((" p" + _local21) + ": (") + m_wayPoints[_local5][_local21].x) + ",") + m_wayPoints[_local5][_local21].y) + ")"));
_local21++;
};
_local5++;
};
if (m_wayPoints.length == 0){
printf("No 'way' was founded!");
printf("Each level must have at least one way!");
cHost.changeMode(cHost.s_eModeMenu);
return;
};
printf((("Level " + _arg1) + " was created successfully!"));
printf("Level info:");
printf((" index: " + m_levelObj.index));
printf((" clip: " + m_levelObj.clip));
printf(((" time between wave: " + m_levelObj.time_between_wave) + " frames"));
printf((" number of waves: " + m_levelObj.wave.length));
printf(((" level time: " + Math.floor(((m_levelObj.wave.length * m_levelObj.time_between_wave) / 24))) + " seconds"));
var _local8:* = "";
m_towersIndex = new Array();
_local5 = 0;
while (_local5 < m_levelObj.towers.length) {
_local22 = cGlobal.findEntityDefIndexByName(m_levelObj.towers[_local5]);
_local8 = (_local8 + m_levelObj.towers[_local5]);
_local8 = (_local8 + (("(" + _local22) + ") "));
m_towersIndex.push(_local22);
_local5++;
};
printf((" towers: " + _local8));
_local5 = 0;
while (_local5 < m_levelObj.wave.length) {
printf(((" wave " + _local5) + ": "));
_local21 = 0;
while (_local21 < m_levelObj.wave[_local5].attackers.length) {
printf((((" " + m_levelObj.wave[_local5].attackers[_local21].time) + " ") + m_levelObj.wave[_local5].attackers[_local21].unit));
_local21++;
};
_local5++;
};
printf("--------------------------------------");
if (_local3.castle){
printf("Creating castle...");
m_gameLayer[m_layerBackgroundIndex].addChild(_local3.castle);
m_castleHealthBar = cGlobal.generateMovieClipByStringExternalSWF("health_bar");
m_gameLayer[m_layerBackgroundIndex].addChild(m_castleHealthBar);
m_castleHealthBar.scaleX = 2.5;
m_castleHealthBar.x = ((_local3.castle.x + (_local3.castle.width / 2)) - (m_castleHealthBar.width / 2));
m_castleHealthBar.y = (_local3.castle.y + 10);
printf("castle was created.");
} else {
printf("ERROR: Can't find castle on level!!!");
};
printf("Setup tower icons");
m_guiClip.tower_icons.visible = true;
var _local9:* = null;
var _local10:int;
while ((_local9 = m_guiClip.tower_icons.getChildByName(("t" + _local10)))) {
printf(("set slot t" + _local10));
_local9.visible = false;
if (_local10 < m_towersIndex.length){
_local23 = cGlobal.getEntityDef(m_towersIndex[_local10]);
if (!_local23){
printf(("can't find tower description with index " + m_towersIndex[_local10]));
_local10++;
continue;
};
_local24 = cGlobal.generateMovieClipByStringExternalSWF(_local23.icon_clip);
if (!_local24){
printf(("can't find icon for " + _local23.name));
_local10++;
continue;
};
if (!_local24.tf){
printf("INVALID TOWER ICON CLIP: No text field!");
_local10++;
continue;
};
if (!_local24.locked){
printf("INVALID TOWER ICON CLIP: No locked image!");
_local10++;
continue;
};
_local24.x = _local9.x;
_local24.y = _local9.y;
_local24.name = m_towersIndex[_local10];
_local24.buttonMode = true;
if (_local24.tf){
_local24.tf.text = _local23.price;
_local24.tf.mouseEnabled = false;
};
_local24.addEventListener(MouseEvent.CLICK, towerIconClick);
_local24.addEventListener(MouseEvent.MOUSE_OVER, towerIconOver);
_local24.addEventListener(MouseEvent.MOUSE_OUT, towerIconOut);
m_guiClip.tower_icons.addChild(_local24);
};
printf("OK");
_local10++;
};
printf("Setup tower icons - OK");
printf("Setup gold and wave bar");
setGold(m_levelObj.start_gold);
setWave(0, m_levelObj.wave.length);
m_maskAngle = m_maskStartAngle;
m_maskAngleSpeed = (360 / m_levelObj.time_between_wave);
setTimeToNextWave(m_levelObj.time_between_wave);
printf("OK");
printf("Set castle health");
m_healthMax = cGlobal.getGameSettings_CastleHealth();
m_health = ((m_levelObj.start_health / 100) * m_healthMax);
setHealth(m_health);
printf("OK");
}
private function setGold(_arg1:int){
var _local3:*;
var _local4:*;
var _local5:*;
var _local6:*;
var _local7:*;
var _local8:*;
var _local9:*;
m_gold = _arg1;
m_guiClip.gold_tf.text = m_gold;
var _local2:* = 0;
while (_local2 < m_towersIndex.length) {
_local3 = m_towersIndex[_local2];
_local4 = cGlobal.getEntityDef(_local3);
if (!_local4){
} else {
_local5 = m_guiClip.tower_icons.getChildByName(m_towersIndex[_local2]);
if (!_local5){
} else {
if (m_gold >= _local4.price){
_local5.buttonMode = true;
if (_local5.locked){
_local5.locked.visible = false;
};
} else {
_local5.buttonMode = false;
if (_local5.locked){
_local5.locked.visible = true;
};
};
};
};
_local2++;
};
if (m_currentSelectedTower >= 0){
_local6 = (m_arrayTowers[m_currentSelectedTower] as cTower);
_local4 = cGlobal.getEntityDef(_local6.getEntityDefIndex());
_local7 = cGlobal.findEntityDefIndex(_local4.upgrade);
if (_local7 < 0){
return;
};
_local8 = m_guiClip.tower_selected.button_upgr;
_local9 = cGlobal.getEntityDef(_local7);
if ((m_gold - _local9.price) < 0){
_local8.buttonMode = false;
if (_local8.locked){
_local8.locked.visible = true;
};
} else {
_local8.buttonMode = true;
if (_local8.locked){
_local8.locked.visible = false;
};
};
};
}
private function setWave(_arg1:int, _arg2:int){
m_curWave = _arg1;
var _local3:String = ((_arg1 + "/") + _arg2);
if (_arg1 == 0){
_local3 = ("" + _arg2);
};
m_guiClip.wave_tf.text = _local3;
if (m_curWave > (m_levelObj.wave.length - 1)){
m_guiClip.wave_tf.text = "";
};
}
private function setTimeToNextWave(_arg1:int){
m_waveTime = _arg1;
}
private function setHealth(_arg1:int){
m_health = _arg1;
var _local2:* = (2.5 * (m_health / m_healthMax));
if (m_castleHealthBar.bar.scaleX > _local2){
m_castleHealthBar.bar.scaleX = (m_castleHealthBar.bar.scaleX - 0.03);
if (m_castleHealthBar.bar.scaleX < _local2){
m_castleHealthBar.bar.scaleX = _local2;
};
} else {
if (m_castleHealthBar.bar.scaleX < _local2){
m_castleHealthBar.bar.scaleX = (m_castleHealthBar.bar.scaleX + 0.03);
if (m_castleHealthBar.bar.scaleX > _local2){
m_castleHealthBar.bar.scaleX = _local2;
};
};
};
}
private function launchNextWave(_arg1:MouseEvent){
var _local3:Object;
if (m_curWave > (m_levelObj.wave.length - 1)){
return;
};
m_healthBonusInWave = 0;
if (m_levelObj.wave[m_curWave].health_add > 0){
m_healthBonusInWave = m_levelObj.wave[m_curWave].health_add;
};
m_speedBonusInWave = 0;
if (m_levelObj.wave[m_curWave].speed_add > 0){
m_speedBonusInWave = m_levelObj.wave[m_curWave].speed_add;
};
var _local2:* = 0;
while (_local2 < m_levelObj.wave[m_curWave].attackers.length) {
_local3 = {time:m_levelObj.wave[m_curWave].attackers[_local2].time, unit:m_levelObj.wave[m_curWave].attackers[_local2].unit};
m_genQueue.push(_local3);
_local2++;
};
m_waveTime = m_levelObj.time_between_wave;
m_curWave++;
if (m_curWave > (m_levelObj.wave.length - 1)){
};
setWave(m_curWave, m_levelObj.wave.length);
setTimeToNextWave(m_waveTime);
}
private function towerIconClick(_arg1:MouseEvent){
var _local2:* = _arg1.currentTarget;
if (_local2.locked.visible){
return;
};
m_currentBuildTower = new int(_arg1.target.name);
trace(m_currentBuildTower);
var _local3:* = cGlobal.getEntityDef(m_currentBuildTower);
if (!_local3){
return;
};
if ((m_gold - _local3.price) < 0){
return;
};
m_guiClip.tower_icons.visible = false;
m_guiClip.tower_build.visible = true;
m_currentBuildTowerClip = cGlobal.generateMovieClipByStringExternalSWF(_local3.linkage);
m_gameLayer[m_layerTowerIndex].addChild(m_currentBuildTowerClip);
m_currentBuildTowerDefaultColorTransform = m_currentBuildTowerClip.transform.colorTransform;
var _local4:* = cGlobal.generateMovieClipByString("fire_radius");
_local4.name = "fire_radius";
_local4.x = 0;
_local4.y = 0;
_local4.width = (_local4.height = (_local3.fire_radius * 2));
_local4.visible = false;
m_gameLayer[m_layerBackgroundIndex].addChild(_local4);
if (m_tutorialStep == 0){
m_tutorialClip.visible = false;
};
}
private function towerIconOver(_arg1:MouseEvent){
var _local2:* = _arg1.currentTarget;
if (_local2.locked.visible){
return;
};
cHost.onOverButton(_arg1);
_arg1.currentTarget.gotoAndStop(2);
m_guiClip.tower_image.visible = true;
var _local3:* = cGlobal.getEntityDef(new int(_arg1.currentTarget.name));
m_guiClip.tower_image.tf_name.text = _local3.name;
m_guiClip.tower_image.tf_desc.text = "";
if (_local3.gname){
m_guiClip.tower_image.tf_name.text = _local3.gname;
};
if (_local3.gdesc){
m_guiClip.tower_image.tf_desc.text = _local3.gdesc;
};
}
private function towerIconOut(_arg1:MouseEvent){
if (_arg1){
_arg1.currentTarget.gotoAndStop(1);
};
m_guiClip.tower_image.visible = false;
}
private function towerCancelBuild(_arg1:MouseEvent){
m_currentBuildTower = -1;
towerIconOut(null);
m_guiClip.tower_icons.visible = true;
m_guiClip.tower_build.visible = false;
if (m_currentBuildTowerClip){
m_gameLayer[m_layerTowerIndex].removeChild(m_currentBuildTowerClip);
};
m_currentBuildTowerClip = null;
var _local2:* = m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius");
if (_local2){
m_gameLayer[m_layerBackgroundIndex].removeChild(_local2);
};
if ((((m_tutorialStep == 0)) && (_arg1))){
m_tutorialClip.visible = true;
};
}
public function sellButtonOver(_arg1:MouseEvent){
cHost.onOverButton(_arg1);
m_guiClip.tower_selected.button_sell.gotoAndStop(2);
m_guiClip.tower_image.visible = true;
m_guiClip.tower_image.tf_name.text = "Sell tower";
m_guiClip.tower_image.tf_desc.text = "";
}
public function sellButtonOut(_arg1:MouseEvent){
m_guiClip.tower_selected.button_sell.gotoAndStop(1);
m_guiClip.tower_image.visible = false;
}
public function upgrButtonOver(_arg1:MouseEvent){
cHost.onOverButton(_arg1);
if (m_guiClip.tower_selected.button_upgr.locked.visible){
return;
};
m_guiClip.tower_selected.button_upgr.gotoAndStop(2);
m_guiClip.tower_image.visible = true;
m_guiClip.tower_image.tf_name.text = "Upgrade tower";
m_guiClip.tower_image.tf_desc.text = "";
}
public function upgrButtonOut(_arg1:MouseEvent){
m_guiClip.tower_image.visible = false;
m_guiClip.tower_selected.button_upgr.gotoAndStop(1);
}
private function towerSell(_arg1:MouseEvent){
if (m_currentSelectedTower < 0){
return;
};
var _local2:* = (m_arrayTowers[m_currentSelectedTower] as cTower);
if (!_local2){
trace("ERROR!");
};
var _local3:* = cGlobal.getEntityDef(_local2.getEntityDefIndex());
m_gold = (m_gold + Math.floor((_local2.getPrice() / 2)));
setGold(m_gold);
m_arrayTowers.splice(m_currentSelectedTower, 1);
m_gameLayer[m_layerTowerIndex].removeChild(_local2);
_local2 = null;
towerIconOut(null);
if (m_gameLayer[m_layerBackgroundIndex].getChildByName("select_frame")){
m_gameLayer[m_layerBackgroundIndex].removeChild(m_gameLayer[m_layerBackgroundIndex].getChildByName("select_frame"));
};
if (m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius")){
m_gameLayer[m_layerBackgroundIndex].removeChild(m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius"));
};
m_guiClip.tower_icons.visible = true;
m_guiClip.tower_build.visible = false;
m_guiClip.tower_selected.visible = false;
m_currentSelectedTower = -1;
cHost.playSound("towerSell");
}
private function towerUpgr(_arg1:MouseEvent){
if (m_currentSelectedTower < 0){
return;
};
var _local2:* = (m_arrayTowers[m_currentSelectedTower] as cTower);
var _local3:* = cGlobal.getEntityDef(_local2.getEntityDefIndex());
var _local4:* = _local2.getPrice();
var _local5:* = cGlobal.findEntityDefIndex(_local3.upgrade);
if (_local5 < 0){
return;
};
var _local6:* = cGlobal.getEntityDef(_local5);
if ((m_gold - _local6.price) < 0){
return;
};
var _local7:* = _local2.x;
var _local8:* = _local2.y;
m_arrayTowers.splice(m_currentSelectedTower, 1);
m_gameLayer[m_layerTowerIndex].removeChild(_local2);
_local2 = null;
var _local9:* = createEntity(_local5, calcPositionX(_local7), calcPositionY(_local8));
_local9.name = ("tower" + m_nextTowerIndex);
m_nextTowerIndex++;
_local9.setPrice((_local4 + _local6.price));
m_gameLayer[m_layerTowerIndex].addChild(_local9);
m_arrayTowers.push(_local9);
m_gold = (m_gold - _local6.price);
setGold(m_gold);
towerIconOut(null);
if (m_gameLayer[m_layerBackgroundIndex].getChildByName("select_frame")){
m_gameLayer[m_layerBackgroundIndex].removeChild(m_gameLayer[m_layerBackgroundIndex].getChildByName("select_frame"));
};
if (m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius")){
m_gameLayer[m_layerBackgroundIndex].removeChild(m_gameLayer[m_layerBackgroundIndex].getChildByName("fire_radius"));
};
m_guiClip.tower_icons.visible = true;
m_guiClip.tower_build.visible = false;
m_guiClip.tower_selected.visible = false;
m_currentSelectedTower = -1;
cHost.playSound("towerBuild");
}
private function isCursorOnGUI(_arg1:int, _arg2:int):Boolean{
if (_arg2 > 470){
return (true);
};
return (false);
}
private function canBuildHere(_arg1:int, _arg2:int, _arg3:int):Boolean{
var _local8:*;
var _local9:*;
var _local4:* = m_gameLayer[m_layerBackgroundIndex].getChildByName("cant_build");
if (!_local4){
return (true);
};
if (_local4.hitTestPoint((_arg1 - _arg3), (_arg2 - _arg3), true)){
return (false);
};
if (_local4.hitTestPoint((_arg1 + _arg3), (_arg2 - _arg3), true)){
return (false);
};
if (_local4.hitTestPoint((_arg1 + _arg3), (_arg2 + _arg3), true)){
return (false);
};
if (_local4.hitTestPoint((_arg1 - _arg3), (_arg2 + _arg3), true)){
return (false);
};
var _local5:* = null;
var _local6:int;
var _local7:* = 0;
while (_local7 < m_arrayTowers.length) {
_local5 = (m_arrayTowers[_local7] as cTower);
_local8 = cGlobal.getEntityDef(_local5.getEntityDefIndex());
_local9 = (((_local5.x - _arg1) * (_local5.x - _arg1)) + ((_local5.y - _arg2) * (_local5.y - _arg2)));
if (_local9 <= (_arg3 * _arg3)){
return (false);
};
_local6++;
_local7++;
};
return (true);
}
private function calcPositionX(_arg1:int):int{
if (!cGlobal.getGameSettings_SnapToGrid()){
return (_arg1);
};
var _local2:* = cGlobal.getGameSettings_CellWidth();
return (((Math.floor((_arg1 / _local2)) * _local2) + Math.floor((_local2 / 2))));
}
private function calcPositionY(_arg1:int):int{
if (!cGlobal.getGameSettings_SnapToGrid()){
return (_arg1);
};
var _local2:* = cGlobal.getGameSettings_CellHeight();
return (((Math.floor((_arg1 / _local2)) * _local2) + Math.floor((_local2 / 2))));
}
private function createEntity(_arg1:int, _arg2:int, _arg3:int){
var _local4:* = null;
if (_arg1 < 0){
printf("Entity: Entity (default)");
_local4 = new cEntity();
return (_local4);
};
var _local5:* = cGlobal.getEntityDefType(_arg1);
var _local6:* = cGlobal.getEntityDef(_arg1);
if (_local5 == "Tower"){
_local4 = new cTower();
_local4.setLayerIndex(m_layerTowerIndex);
} else {
if (_local5 == "Enemy"){
_local4 = new cEnemy();
_local4.setLayerIndex(m_layerEnemyIndex);
} else {
if (_local5 == "Bullet"){
_local4 = new cBullet();
_local4.setLayerIndex(m_layerBulletIndex);
} else {
_local5 = "Entity";
_local4 = new cEntity();
_local4.setLayerIndex(m_layerEffectIndex);
};
};
};
_local4.x = _arg2;
_local4.y = _arg3;
_local4.setEntityDefIndex(_arg1);
var _local7:* = cGlobal.generateMovieClipByStringExternalSWF(_local6.linkage);
cGlobal.generateMovieClipByStringExternalSWF(_local6.linkage).x = (_local7.y = 0);
_local4.setClip(_local7);
_local4.init();
return (_local4);
}
}
}//package app
Section 10
//cGlobal (app.cGlobal)
package app {
import flash.display.*;
import flash.utils.*;
public class cGlobal {
private static var m_levelPackLoader:Loader;
private static var m_loadExternal:Boolean;
private static var m_settings:cLevelsPackSettings;
private static var m_currentLevelNum:int;
private static var m_isWonLevel:Boolean;
private static var m_levelStat1:int;
private static var m_levelStat2:int;
private static var m_levelStat3:int;
private static var m_levelStat4:int;
private static var m_isUnitWasUsed:Array;
private static var m_usePlaytomic:Boolean = true;
public static function setDefaultValues():void{
setCurrentLevelNum(1);
m_loadExternal = false;
if (m_loadExternal){
m_levelPackLoader = new Loader();
} else {
m_levelPackLoader = null;
};
m_isWonLevel = false;
m_levelStat1 = (m_levelStat2 = (m_levelStat3 = (m_levelStat4 = 0)));
m_isUnitWasUsed = null;
m_settings = new cLevelsPackSettings();
}
public static function isPlaytomic():Boolean{
return (m_usePlaytomic);
}
public static function isLoadExternal():Boolean{
return (m_loadExternal);
}
public static function getCurrentLevelNum():int{
return (m_currentLevelNum);
}
public static function setCurrentLevelNum(_arg1:int):void{
m_currentLevelNum = _arg1;
}
public static function isWonLevel(){
return (m_isWonLevel);
}
public static function setWonLevel(_arg1:Boolean){
m_isWonLevel = _arg1;
}
public static function getLevelStat1(){
return (m_levelStat1);
}
public static function setLevelStat1(_arg1:int){
m_levelStat1 = _arg1;
}
public static function getLevelStat2(){
return (m_levelStat2);
}
public static function setLevelStat2(_arg1:int){
m_levelStat2 = _arg1;
}
public static function getLevelStat3(){
return (m_levelStat3);
}
public static function setLevelStat3(_arg1:int){
m_levelStat3 = _arg1;
}
public static function getLevelStat4(){
return (m_levelStat4);
}
public static function setLevelStat4(_arg1:int){
m_levelStat4 = _arg1;
}
public static function setUnitsUsedArray(){
if (m_isUnitWasUsed){
return;
};
cHost.printf("Setup units used array: ");
m_isUnitWasUsed = new Array();
var _local1:* = cGlobal.getLevelPackSettings();
var _local2:* = _local1.entitys;
var _local3:* = -1;
var _local4:* = 0;
while (_local4 < _local2.length) {
if (_local2[_local4].type != "Enemy"){
} else {
m_isUnitWasUsed[_local2[_local4].name] = false;
cHost.printf(((("m_isUnitWasUsed[" + _local2[_local4].name) + "] = ") + m_isUnitWasUsed[_local2[_local4].name]));
};
_local4++;
};
}
public static function isUnitAlreadyUsed(_arg1:String){
return (m_isUnitWasUsed[_arg1]);
}
public static function setUnitAlreadyUsed(_arg1:String){
m_isUnitWasUsed[_arg1] = true;
}
public static function generateMovieClipByString(_arg1:String){
var _local2:Object;
_local2 = getDefinitionByName(_arg1.toString());
return ((new (_local2) as MovieClip));
}
public static function generateMovieClipByStringExternalSWF(_arg1:String){
var pack:*;
var id = _arg1;
try {
if (m_loadExternal){
pack = m_levelPackLoader.content;
return (pack.getLevel(id));
} else {
return (generateMovieClipByString(id));
};
} catch(e:Error) {
cHost.printf(((("generateMovieClipByStringExternalSWF: Can't find clip " + id) + ": ") + e));
};
}
public static function lineInterpolation(_arg1, _arg2, _arg3, _arg4, _arg5){
var _local6:*;
var _local7:*;
var _local8:*;
_local7 = ((_arg2 - _arg1) / (_arg4 - _arg3));
_local8 = (_arg1 - (_local7 * _arg3));
_local6 = ((_local7 * _arg5) + _local8);
return (_local6);
}
public static function getAngleBetweenVectors(_arg1, _arg2, _arg3, _arg4){
_arg1 = roundTo(_arg1, 0.0001);
_arg3 = roundTo(_arg3, 0.0001);
_arg2 = roundTo(_arg2, 0.0001);
_arg4 = roundTo(_arg4, 0.0001);
var _local5:* = getDistBetweenPoints(_arg1, _arg2, 0, 0);
if (_local5 == 0){
return (0);
};
var _local6:* = getDistBetweenPoints(_arg3, _arg4, 0, 0);
if (_local6 == 0){
return (0);
};
_arg1 = (_arg1 / _local5);
_arg2 = (_arg2 / _local5);
_arg3 = (_arg3 / _local6);
_arg4 = (_arg4 / _local6);
var _local7:* = getDotProduct(_arg1, _arg2, _arg3, _arg4);
var _local8:* = Math.acos(_local7);
var _local9:* = ((_local8 * 180) / Math.PI);
_local9 = roundTo(_local9, 0.01);
return (_local9);
}
public static function roundTo(_arg1:Number, _arg2:Number):Number{
return ((Math.floor(((_arg1 + (_arg2 / 2)) / _arg2)) * _arg2));
}
public static function getDistBetweenPoints(_arg1, _arg2, _arg3, _arg4){
return (Math.sqrt((((_arg3 - _arg1) * (_arg3 - _arg1)) + ((_arg4 - _arg2) * (_arg4 - _arg2)))));
}
public static function getDotProduct(_arg1, _arg2, _arg3, _arg4){
var _local5:* = ((_arg1 * _arg3) + (_arg2 * _arg4));
return (_local5);
}
public static function randRange(_arg1:Number, _arg2:Number):Number{
var _local3:Number = (Math.floor((Math.random() * ((_arg2 - _arg1) + 1))) + _arg1);
return (_local3);
}
public static function getLevelPackLoader():Loader{
return (m_levelPackLoader);
}
public static function getLevel(_arg1:String){
var pack:*;
var lvl_name = _arg1;
try {
if (m_loadExternal){
pack = m_levelPackLoader.content;
return (pack.getLevel(lvl_name));
} else {
return (generateMovieClipByString(lvl_name));
};
} catch(e:Error) {
cHost.printf(((("ERROR: Can't create level " + lvl_name) + ": ") + e));
};
return (null);
}
public static function findEntityDefIndex(_arg1):int{
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.entitys;
var _local4:* = -1;
var _local5:* = 0;
while (_local5 < _local3.length) {
if (_local3[_local5].name != _arg1){
} else {
_local4 = _local5;
break;
};
_local5++;
};
return (_local4);
}
public static function getEntityDefType(_arg1:int){
if (_arg1 < 0){
return ("ERROR");
};
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.entitys;
return (_local3[_arg1].type);
}
public static function getEntityDefName(_arg1:int){
if (_arg1 < 0){
return ("ERROR");
};
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.entitys;
return (_local3[_arg1].name);
}
public static function getEntityDefClip(_arg1:int){
var entitys:*;
var pack:*;
var eindex = _arg1;
if (eindex < 0){
return (null);
};
var settings:* = cGlobal.getLevelPackSettings();
entitys = settings.entitys;
try {
if (m_loadExternal){
pack = m_levelPackLoader.content;
return (pack.generateMovieClipByString(entitys[eindex].linkage));
} else {
return (generateMovieClipByString(entitys[eindex].linkage));
};
} catch(e:Error) {
cHost.printf(((("ERROR: Can't create entity clip " + entitys[eindex].linkage) + ": ") + e));
};
return (null);
}
public static function findEntityDefIndexByName(_arg1:String):int{
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.entitys;
var _local4 = -1;
var _local5:* = 0;
while (_local5 < _local3.length) {
if (_local3[_local5].name != _arg1){
} else {
_local4 = _local5;
break;
};
_local5++;
};
return (_local4);
}
public static function getEntityDef(_arg1:int){
if (_arg1 < 0){
return (null);
};
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.entitys;
return (_local3[_arg1]);
}
public static function getGameSettings_ShowGrid(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.show_grid);
}
public static function getGameSettings_ShowWay(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.show_way);
}
public static function getGameSettings_ShowArea(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.show_area);
}
public static function getGameSettings_GridAlpha(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.grid_alpha);
}
public static function getGameSettings_CellWidth(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.cell_width);
}
public static function getGameSettings_CellHeight(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.cell_height);
}
public static function getGameSettings_SnapToGrid(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.snap_to_grid);
}
public static function getGameSettings_CastleHealth(){
var _local1:* = cGlobal.getLevelPackSettings();
return (_local1.castle_health);
}
public static function getGameSettings_LevelObj(_arg1:int){
if (_arg1 < 0){
return (null);
};
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.levels;
var _local4:* = -1;
var _local5:* = 0;
while (_local5 < _local3.length) {
if (_local3[_local5].index != _arg1){
} else {
_local4 = _local5;
break;
};
_local5++;
};
if (_local4 < 0){
return (null);
};
return (_local3[_local4]);
}
public static function getGameSettings_LevelMatrix(_arg1:int){
if (_arg1 < 0){
return (null);
};
var _local2:* = cGlobal.getLevelPackSettings();
var _local3:* = _local2.levels_matrix;
return (_local3[_arg1]);
}
private static function getLevelPackSettings(){
var pack:*;
try {
if (m_loadExternal){
pack = m_levelPackLoader.content;
return (pack.getSettings());
} else {
return (m_settings);
};
} catch(e:Error) {
cHost.printf("ERROR: Can't getting levels settings!");
};
return (null);
}
public static function getLevelsNum(){
var _local1:* = getLevelPackSettings();
return (_local1.levels.length);
}
}
}//package app
Section 11
//cHelp (app.cHelp)
package app {
import flash.display.*;
import Playtomic.*;
import flash.events.*;
public class cHelp extends cAppMode {
public var button_site:SimpleButton;
public var button_menu:SimpleButton;
public var button_continue:SimpleButton;
private var m_buttonNewGame;
private var m_buttonHowToPlay;
private var m_buttonMoreFreeGames;
private var m_buttonSound;
public function cHelp(){
m_buttonNewGame = getChildByName("button_continue");
m_buttonNewGame.addEventListener(MouseEvent.CLICK, onNewGame);
m_buttonNewGame.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonHowToPlay = getChildByName("button_menu");
m_buttonHowToPlay.addEventListener(MouseEvent.CLICK, onMenu);
m_buttonHowToPlay.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonMoreFreeGames = getChildByName("button_site");
m_buttonMoreFreeGames.addEventListener(MouseEvent.CLICK, onMoreFreeGames);
m_buttonMoreFreeGames.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
}
override public function modeStart(){
}
override public function modeShutdown(){
}
private function onNewGame(_arg1:MouseEvent){
cGlobal.setCurrentLevelNum(1);
cHost.changeMode(cHost.s_eModeGame);
if (cGlobal.isPlaytomic()){
Log.Play();
trace("----------PLAYTOMIC Play");
};
}
private function onMenu(_arg1:MouseEvent){
cHost.changeMode(cHost.s_eModeMenu);
}
private function onMoreFreeGames(_arg1:MouseEvent){
cHost.openGametopCom("MainMenu", "Site");
}
}
}//package app
Section 12
//cHost (app.cHost)
package app {
import flash.display.*;
import Playtomic.*;
import flash.events.*;
import flash.net.*;
public class cHost extends MovieClip {
private var m_modeContainer:cModeContainer;
public static var s_eModeLoading:int = 0;
public static var s_eModeLoadingPack:int = 1;
public static var s_eModeMenu:int = 2;
public static var s_eModeGame:int = 3;
public static var s_eModeLevelStats:int = 4;
public static var s_eModeHelp:int = 5;
public static var s_modeNames:Array = new Array("Loading", "Loading Levels Pack", "Main Menu", "Game", "Level Statistics", "Help");
private static var s_modeCurrent:int = 0;
private static var s_fadeClip:MovieClip;
private static var s_console:cConsole;
private static var s_soundOn:Boolean;
private static var m_musicSound;
private static var m_musicChannel;
private static var m_sounds:Array;
private static var m_numSoundPlaying:int;
public function cHost(){
printf("cHost::cHost (): ... ");
m_modeContainer = new cModeContainer();
addChild(m_modeContainer);
printf(("mode container was created: " + m_modeContainer));
s_console = new cConsole();
addChild(s_console);
printf("console was created.");
s_fadeClip = new cFade();
addChild(s_fadeClip);
printf((("fade clip created: '" + s_fadeClip) + "'"));
cGlobal.setDefaultValues();
printf("all global varibles was reseted to its default values");
prepareSounds();
s_soundOn = true;
playMusic();
if (cGlobal.isLoadExternal()){
changeMode(s_eModeLoadingPack);
} else {
changeMode(s_eModeMenu);
};
addEventListener(Event.ENTER_FRAME, update);
printf("cHost::cHost (): done!");
}
private function update(_arg1:Event){
if (m_modeContainer.numChildren > 1){
trace("!!!!!!!!!!!!!!!");
};
executeFade();
}
private function executeFade(){
var _local1:* = s_fadeClip.execute();
if (_local1 < 0){
return;
};
setMode(_local1);
s_fadeClip.resetMode();
}
private function setMode(_arg1:int){
printf((((("Changing mode from '" + s_modeNames[s_modeCurrent]) + "' to '") + s_modeNames[_arg1]) + "'."));
var _local2:* = null;
switch (_arg1){
case s_eModeLoadingPack:
_local2 = new cLoadingPack();
break;
case s_eModeMenu:
_local2 = new cMenu();
break;
case s_eModeGame:
_local2 = new cGame();
break;
case s_eModeLevelStats:
_local2 = new cLevelStats();
break;
case s_eModeHelp:
_local2 = new cHelp();
break;
};
if (!_local2){
printf("Can't create new mode clip!");
return;
};
var _local3:* = m_modeContainer.getChildByName("mode_clip");
if (_local3){
printf("Shutdown previous mode...");
_local3.modeShutdown();
_local3 = null;
printf("ok!");
} else {
printf("Can't find previous mode clip!");
};
while (m_modeContainer.numChildren) {
m_modeContainer.removeChildAt(0);
};
_local2.name = "mode_clip";
_local2.modeStart();
m_modeContainer.addChild(_local2);
s_modeCurrent = _arg1;
_local2 = null;
printf("Mode was changed successfully!");
}
public function hostKeyDown(_arg1:KeyboardEvent){
var _local2:*;
if (s_console.isVisible()){
s_console.keyDown(_arg1);
} else {
_local2 = m_modeContainer.getChildByName("mode_clip");
_local2.keyDown(_arg1);
};
}
public function hostKeyUp(_arg1:KeyboardEvent){
var _local2:*;
if (_arg1.keyCode == 220){
s_console.toggle();
};
if (s_console.isVisible()){
s_console.keyUp(_arg1);
} else {
_local2 = m_modeContainer.getChildByName("mode_clip");
_local2.keyUp(_arg1);
};
}
public function hostMouseDown(_arg1:MouseEvent){
if (s_console.isVisible()){
return;
};
var _local2:* = m_modeContainer.getChildByName("mode_clip");
_local2.mouseDown(_arg1);
}
public function hostMouseUp(_arg1:MouseEvent){
if (s_console.isVisible()){
return;
};
var _local2:* = m_modeContainer.getChildByName("mode_clip");
_local2.mouseUp(_arg1);
}
public function hostMouseMove(_arg1:MouseEvent){
if (!s_console){
return;
};
if (s_console.isVisible()){
return;
};
if (!m_modeContainer){
return;
};
var _local2:* = m_modeContainer.getChildByName("mode_clip");
if (_local2){
_local2.mouseMove(_arg1);
};
}
public function prepareSounds(){
var _local1:Object;
m_numSoundPlaying = 0;
m_sounds = new Array();
_local1 = new Object();
_local1.snd_name = "button";
_local1.snd = new sndButton();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "pig";
_local1.snd = new sndPig();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "levelFailed";
_local1.snd = new sndLevelFailed();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "levelCompleted";
_local1.snd = new sndLevelCompleted();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "shootArcher";
_local1.snd = new sndShootArcher();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "shootCannon";
_local1.snd = new sndShootCannon();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "shootFrost";
_local1.snd = new sndShootFrost();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "shootLazer";
_local1.snd = new sndShootLazer();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "towerSelect";
_local1.snd = new sndSelectTower();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "towerBuild";
_local1.snd = new sndBuildTower();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "towerSell";
_local1.snd = new sndSellTower();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyAttack";
_local1.snd = new sndEnemyAttack();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie01";
_local1.snd = new sndEnemyDie01();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie02";
_local1.snd = new sndEnemyDie02();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie03";
_local1.snd = new sndEnemyDie03();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie04";
_local1.snd = new sndEnemyDie04();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie05";
_local1.snd = new sndEnemyDie05();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie06";
_local1.snd = new sndEnemyDie06();
m_sounds.push(_local1);
_local1 = new Object();
_local1.snd_name = "enemyDie07";
_local1.snd = new sndEnemyDie07();
m_sounds.push(_local1);
printf("sounds loaded: ");
var _local2:* = 0;
while (_local2 < m_sounds.length) {
printf(((((_local2 + 1) + ". sound '") + m_sounds[_local2].snd_name) + "'"));
_local2++;
};
}
public static function changeMode(_arg1:int){
s_fadeClip.start(_arg1);
}
public static function onOverButton(_arg1:MouseEvent){
playSound("button");
}
public static function printf(_arg1:String){
if (!s_console){
trace((("Console not created yet! Message: '" + _arg1) + "'"));
return;
};
s_console.printf(_arg1);
}
public static function isSoundOn(){
return (s_soundOn);
}
public static function toggleSound(){
s_soundOn = !(s_soundOn);
if (s_soundOn){
printf("sound was turned on!");
playMusic();
} else {
printf("sound was turned off!");
if (m_musicSound){
m_musicChannel.stop();
m_musicChannel.removeEventListener(Event.SOUND_COMPLETE, loopMusic);
m_musicSound = null;
m_musicChannel = null;
};
};
}
private static function playMusic(){
if (!s_soundOn){
return;
};
if (((m_musicSound) || (m_musicChannel))){
return;
};
trace("playMusic");
m_musicSound = new sndMusic();
m_musicChannel = m_musicSound.play();
var _local1:* = m_musicChannel.soundTransform;
_local1.volume = 0.2;
m_musicChannel.soundTransform = _local1;
m_musicChannel.addEventListener(Event.SOUND_COMPLETE, loopMusic);
}
private static function loopMusic(_arg1){
if (!s_soundOn){
return;
};
trace("loopMusic");
m_musicChannel = m_musicSound.play();
var _local2:* = m_musicChannel.soundTransform;
_local2.volume = 0.2;
m_musicChannel.soundTransform = _local2;
m_musicChannel.addEventListener(Event.SOUND_COMPLETE, loopMusic);
}
public static function playSound(_arg1:String){
if (!s_soundOn){
return (null);
};
var _local2:* = -1;
var _local3:* = 0;
while (_local3 < m_sounds.length) {
if (m_sounds[_local3].snd_name == _arg1){
_local2 = _local3;
break;
};
_local3++;
};
if (_local2 < 0){
printf((("sound '" + _arg1) + "' was not found!"));
return (null);
};
var _local4:* = m_sounds[_local2].snd.play();
return (_local4);
}
public static function soundEnd(_arg1){
}
public static function openGametopCom(_arg1:String, _arg2:String){
var _local3:* = "http://www.gametop.com/stats/orcsattack.html";
if (cGlobal.isPlaytomic()){
printf((((((("----------PLAYTOMIC Open url = " + _local3) + "; link_name = ") + _arg1) + "; link_group = ") + _arg2) + ";"));
Link.Open(_local3, _arg1, _arg2);
} else {
printf(("open url: " + _local3));
navigateToURL(new URLRequest(_local3), "_blank");
};
}
}
}//package app
Section 13
//cInGamePause (app.cInGamePause)
package app {
import flash.display.*;
public class cInGamePause extends MovieClip {
public var button_site:SimpleButton;
public var header:MovieClip;
public var button_menu:SimpleButton;
public var button_continue:SimpleButton;
public var button_replay:SimpleButton;
public function cInGamePause(){
var _local1:* = getChildByName("header");
_local1.gotoAndStop(4);
}
}
}//package app
Section 14
//cInGameUnitInfo (app.cInGameUnitInfo)
package app {
import flash.display.*;
import flash.text.*;
public class cInGameUnitInfo extends MovieClip {
public var stat_1:TextField;
public var stat_2:TextField;
public var unit_name:TextField;
public var stat_3:TextField;
public var stat_4:TextField;
public var unit_desc:TextField;
public var button_continue:SimpleButton;
}
}//package app
Section 15
//cLevelsPackSettings (app.cLevelsPackSettings)
package app {
public class cLevelsPackSettings {
public var show_grid:Boolean;// = true
public var show_way:Boolean;// = false
public var show_area:Boolean;// = false
public var grid_alpha:Number;// = 0.3
public var cell_width:int;// = 40
public var cell_height:int;// = 40
public var snap_to_grid:Boolean;// = true
public var castle_health:int;// = 100
public var entitys:Array;
public var levels:Array;
public var levels_matrix:Array;
public function cLevelsPackSettings(){
entitys = new Array({name:"DefaultEntity", type:"Entity", linkage:"none"}, {name:"Archer_Tower", type:"Tower", linkage:"Tower_1", image_clip:"Tower_1_Image", icon_clip:"Tower_1_Icon", build_clip:"Tower_Build", sound_shoot:"shootArcher", gname:"Archer Tower", gdesc:"Basic combat tower", price:100, attack:10, fire_rate:15, fire_radius:95, upgrade:"Archer_Tower_II", build_time:12, bullet:"Bullet_Basic", radius:15}, {name:"Archer_Tower_II", type:"Tower", linkage:"Tower_1_II", image_clip:"Tower_1_II_Image", icon_clip:"Tower_2_Icon", build_clip:"Tower_Build", sound_shoot:"shootArcher", gname:"Archer Tower II lvl", gdesc:"Base combat tower", price:30, attack:13, fire_rate:15, fire_radius:105, upgrade:"Archer_Tower_III", build_time:12, bullet:"Bullet_Basic2", radius:15}, {name:"Archer_Tower_III", type:"Tower", linkage:"Tower_1_III", image_clip:"Tower_1_III_Image", icon_clip:"Tower_2_Icon", build_clip:"Tower_Build", sound_shoot:"shootArcher", gname:"Archer Tower III lvl", gdesc:"Base combat tower", price:70, attack:20, fire_rate:15, fire_radius:115, build_time:12, bullet:"Bullet_Basic3", radius:15}, {name:"Cannon_Tower", type:"Tower", linkage:"Tower_2", image_clip:"Tower_2_Image", icon_clip:"Tower_2_Icon", build_clip:"Tower_Build", sound_shoot:"shootCannon", gname:"Cannon Tower", gdesc:"Deals splash damage", price:200, attack:20, fire_rate:65, fire_radius:85, upgrade:"Cannon_Tower_II", build_time:12, bullet:"Bullet_Splash_v1", radius:15}, {name:"Cannon_Tower_II", type:"Tower", linkage:"Tower_2_II", image_clip:"Tower_2_Image", icon_clip:"Tower_2_Icon", build_clip:"Tower_Build", sound_shoot:"shootCannon", gname:"Cannon Tower II lvl", gdesc:"Heavy combat tower MK2", price:60, attack:26, fire_rate:65, fire_radius:90, upgrade:"Cannon_Tower_III", build_time:12, bullet:"Bullet_Splash_v2", radius:15}, {name:"Cannon_Tower_III", type:"Tower", linkage:"Tower_2_III", image_clip:"Tower_2_Image", icon_clip:"Tower_2_Icon", build_clip:"Tower_Build", sound_shoot:"shootCannon", gname:"Cannon Tower", gdesc:"Heavy combat tower", price:140, attack:40, fire_rate:65, fire_radius:100, upgrade:"", build_time:12, bullet:"Bullet_Splash_v3", radius:15}, {name:"Freeze_Tower", type:"Tower", linkage:"Tower_3", image_clip:"Tower_3_Image", icon_clip:"Tower_3_Icon", build_clip:"Tower_Build", sound_shoot:"shootFrost", gname:"Ice Tower", gdesc:"Slows enemies around", price:300, attack:0, fire_rate:20, fire_radius:85, upgrade:"Freeze_Tower_II", build_time:12, bullet:"Bullet_Web", radius:15}, {name:"Freeze_Tower_II", type:"Tower", linkage:"Tower_3_II", image_clip:"Tower_3_Image", icon_clip:"Tower_3_Icon", build_clip:"Tower_Build", sound_shoot:"shootFrost", gname:"Freeze Tower II lvl", gdesc:"Simple street magic! MK2", price:90, attack:0, fire_rate:20, fire_radius:95, upgrade:"Freeze_Tower_III", build_time:12, bullet:"Bullet_Web_v2", radius:15}, {name:"Freeze_Tower_III", type:"Tower", linkage:"Tower_3_III", image_clip:"Tower_3_Image", icon_clip:"Tower_3_Icon", build_clip:"Tower_Build", sound_shoot:"shootFrost", gname:"Freeze_Tower", gdesc:"Simple street magic! MK3", price:210, attack:0, fire_rate:20, fire_radius:105, upgrade:"", build_time:12, bullet:"Bullet_Web_v3", radius:15}, {name:"Laser_Tower", type:"Tower", linkage:"Tower_4", image_clip:"Tower_4_Image", icon_clip:"Tower_4_Icon", build_clip:"Tower_Build", sound_shoot:"shootLazer", gname:"Fire Tower", gdesc:"Emits fire ray", price:400, attack:5, fire_rate:12, fire_radius:200, upgrade:"Laser_Tower_II", build_time:12, bullet:"Ray", radius:15}, {name:"Laser_Tower_II", type:"Tower", linkage:"Tower_4_II", image_clip:"Tower_4_Image", icon_clip:"Tower_4_Icon", build_clip:"Tower_Build", sound_shoot:"shootLazer", gname:"Laser Tower II lvl", gdesc:"Combat laser MK2", price:100, attack:7, fire_rate:12, fire_radius:220, upgrade:"Laser_Tower_III", build_time:12, bullet:"Ray2", radius:15}, {name:"Laser_Tower_III", type:"Tower", linkage:"Tower_4_III", image_clip:"Tower_4_Image", icon_clip:"Tower_4_Icon", build_clip:"Tower_Build", sound_shoot:"shootLazer", gname:"Cannon Tower", gdesc:"Heavy combat tower", price:300, attack:10, fire_rate:12, fire_radius:250, upgrade:"", build_time:12, bullet:"Ray3", radius:15}, {name:"Unit_1_1", type:"Enemy", linkage:"Orc01", linkage_die:"Orc01_Die", sounds_die:new Array("enemyDie03", "enemyDie04"), price:10, attack:10, health:40, speed:2, gname:"Unit_1_1", gdesc:"Bring It ON!", armor:0, radius:19}, {name:"Unit_1_2", type:"Enemy", linkage:"Goblin", linkage_die:"Explosion", sounds_die:new Array("enemyDie05"), price:20, attack:15, health:80, speed:2, gname:"Goblin", gdesc:"Somthing green!", armor:0, radius:19}, {name:"Unit_1_3", type:"Enemy", linkage:"Knight", linkage_die:"Knight_Die", sounds_die:new Array("enemyDie06"), price:30, attack:10, health:120, speed:2, gname:"Death Knight", gdesc:"Snipe him fast!", armor:0, radius:19}, {name:"Unit_1_4", type:"Enemy", linkage:"Skeletal", linkage_die:"Skeletal_die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:15, attack:10, health:40, speed:2, gname:"Skeletal", gdesc:"OMG, Skeleton!", armor:3, radius:19}, {name:"Unit_1_5", type:"Enemy", linkage:"SkeletalWarrior", linkage_die:"Skeletal_die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:20, attack:10, health:200, speed:2, gname:"Skeletal Warrior", gdesc:"Clash, Clash, Bones!", armor:0, radius:19}, {name:"Unit_1_6", type:"Enemy", linkage:"SkeletalMage", linkage_die:"SkeletalMage_Die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:20, attack:10, health:120, speed:2, gname:"Warlock", gdesc:"Bring It ON!", armor:0, radius:19}, {name:"Unit_1_7", type:"Enemy", linkage:"Grg", linkage_die:"Grg_Die", sounds_die:new Array("enemyDie07"), price:40, attack:10, health:50, speed:5, gname:"Gorgyle", gdesc:"AIR, AIR, Warning!", armor:0, radius:19}, {name:"Unit_2_1", type:"Enemy", linkage:"Orc01", linkage_die:"Orc01_Die", sounds_die:new Array("enemyDie03", "enemyDie04"), price:35, attack:10, health:40, speed:2, gname:"Unit_1_1", gdesc:"Bring It ON!", armor:3, radius:19}, {name:"Unit_2_2", type:"Enemy", linkage:"Goblin", linkage_die:"Explosion", sounds_die:new Array("enemyDie05"), price:40, attack:15, health:80, speed:2, gname:"Goblin", gdesc:"Somthing green!", armor:3, radius:19}, {name:"Unit_2_3", type:"Enemy", linkage:"Knight", linkage_die:"Knight_Die", sounds_die:new Array("enemyDie06"), price:60, attack:10, health:120, speed:2, gname:"Death Knight", gdesc:"Snipe him fast!", armor:3, radius:19}, {name:"Unit_3_4", type:"Enemy", linkage:"Skeletal", linkage_die:"Skeletal_die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:30, attack:10, health:100, speed:2, gname:"Skeletal", gdesc:"OMG, Skeleton!", armor:3, radius:19}, {name:"Unit_3_5", type:"Enemy", linkage:"SkeletalWarrior", linkage_die:"Skeletal_die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:40, attack:10, health:400, speed:2, gname:"Skeletal Warrior", gdesc:"Clash, Clash, Bones!", armor:0, radius:19}, {name:"Unit_3_6", type:"Enemy", linkage:"SkeletalMage", linkage_die:"SkeletalMage_Die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:40, attack:10, health:240, speed:2, gname:"Warlock", gdesc:"Bring It ON!", armor:0, radius:19}, {name:"Unit_3_7", type:"Enemy", linkage:"Grg", linkage_die:"Grg_Die", sounds_die:new Array("enemyDie07"), price:60, attack:10, health:150, speed:5, gname:"Gorgyle", gdesc:"AIR, AIR, Warning!", armor:0, radius:19}, {name:"Unit_10_1", type:"Enemy", linkage:"Orc01", linkage_die:"Orc01_Die", sounds_die:new Array("enemyDie03", "enemyDie04"), price:25, attack:10, health:40, speed:2, gname:"Unit_1_1", gdesc:"Bring It ON!", armor:0, radius:19}, {name:"Unit_10_2", type:"Enemy", linkage:"Goblin", linkage_die:"Explosion", sounds_die:new Array("enemyDie05"), price:40, attack:15, health:80, speed:2, gname:"Goblin", gdesc:"Somthing green!", armor:0, radius:19}, {name:"Unit_10_3", type:"Enemy", linkage:"Knight", linkage_die:"Knight_Die", sounds_die:new Array("enemyDie06"), price:60, attack:10, health:120, speed:2, gname:"Death Knight", gdesc:"Snipe him fast!", armor:0, radius:19}, {name:"Unit_10_4", type:"Enemy", linkage:"Skeletal", linkage_die:"Skeletal_die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:25, attack:10, health:50, speed:2, gname:"Skeletal", gdesc:"OMG, Skeleton!", armor:3, radius:19}, {name:"Unit_10_5", type:"Enemy", linkage:"SkeletalWarrior", linkage_die:"Skeletal_die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:65, attack:10, health:150, speed:2, gname:"Skeletal Warrior", gdesc:"Clash, Clash, Bones!", armor:0, radius:19}, {name:"Unit_10_6", type:"Enemy", linkage:"SkeletalMage", linkage_die:"SkeletalMage_Die", sounds_die:new Array("enemyDie01", "enemyDie02"), price:40, attack:10, health:120, speed:2, gname:"Warlock", gdesc:"Bring It ON!", armor:0, radius:19}, {name:"Unit_10_7", type:"Enemy", linkage:"Grg", linkage_die:"Grg_Die", sounds_die:new Array("enemyDie07"), price:50, attack:10, health:80, speed:5, gname:"Gorgyle", gdesc:"AIR, AIR, Warning!", armor:0, radius:19}, {name:"Boss_LvL_3", type:"Enemy", linkage:"SkeletalMage_Boss", linkage_die:"SkeletalMage_Die", sounds_die:new Array("enemyDie06"), price:30, attack:10, health:6000, speed:2, gname:"Death Knight", gdesc:"Snipe him fast!", armor:0, radius:19}, {name:"Boss_LvL_6", type:"Enemy", linkage:"Knight_Boss", linkage_die:"Knight_Die", sounds_die:new Array("enemyDie06"), price:30, attack:10, health:(120 * 60), speed:2, gname:"Death Knight", gdesc:"Snipe him fast!", armor:0, radius:19}, {name:"Boss_LvL_10", type:"Enemy", linkage:"Grg_Boss", linkage_die:"Grg_Die", sounds_die:new Array("enemyDie07"), price:40, attack:10, health:(50 * 50), speed:5, gname:"Gorgyle", gdesc:"AIR, AIR, Warning!", armor:0, radius:19}, {name:"Bullet_Basic", type:"Bullet", linkage:"bullet_2", bullet_type:1, speed:10}, {name:"Bullet_Basic2", type:"Bullet", linkage:"bullet_2a", bullet_type:1, speed:10}, {name:"Bullet_Basic3", type:"Bullet", linkage:"bullet_2b", bullet_type:1, speed:10}, {name:"Bullet_Piercing", type:"Bullet", linkage:"bullet_1", bullet_type:0, speed:25, ignore_armor:1}, {name:"Bullet_Web", type:"Bullet", linkage:"frost_nova", bullet_type:3, speed:25, slow_time:180, slow_coeff:0.45}, {name:"Bullet_Web_v2", type:"Bullet", linkage:"frost_nova", bullet_type:3, speed:25, slow_time:240, slow_coeff:0.5}, {name:"Bullet_Web_v3", type:"Bullet", linkage:"frost_nova", bullet_type:3, speed:25, slow_time:240, slow_coeff:0.55}, {name:"Bullet_Poison", type:"Bullet", linkage:"poison_nova", bullet_type:3, speed:25, poison_times:10, poison_rate:10, poison_dmg:3}, {name:"Bullet_Splash_v1", type:"Bullet", linkage:"bullet_1", bullet_type:0, speed:20, splash_radius:45, splash_dmg:20}, {name:"Bullet_Splash_v2", type:"Bullet", linkage:"bullet_1a", bullet_type:0, speed:20, splash_radius:45, splash_dmg:26}, {name:"Bullet_Splash_v3", type:"Bullet", linkage:"bullet_1b", bullet_type:0, speed:20, splash_radius:45, splash_dmg:40}, {name:"Bullet_2", type:"Bullet", linkage:"bullet_2", bullet_type:1, speed:5}, {name:"Ray", type:"Bullet", linkage:"bullet_3", bullet_type:2, speed:5, laser_fire_rate:10}, {name:"Ray2", type:"Bullet", linkage:"bullet_3a", bullet_type:2, speed:5, laser_fire_rate:10}, {name:"Ray3", type:"Bullet", linkage:"bullet_3b", bullet_type:2, speed:5, laser_fire_rate:10}, {name:"Bullet_4", type:"Bullet", linkage:"bullet_1", bullet_type:0, speed:15, slow_time:12, slow_coeff:0.5});
levels = new Array({index:1, clip:"level_1", matrix_index:0, time_between_wave:(24 * 4), start_gold:150, start_health:100, towers:new Array("Archer_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_1"}, {time:80, unit:"Unit_1_1"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_1"}, {time:100, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:220, unit:"Unit_1_1"})}, {way:0, health_add:0.2, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:40, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:160, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"})}, {way:0, health_add:0.3, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:40, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_1"}, {time:160, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"})}, {way:0, health_add:0.4, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:40, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_2"}, {time:160, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_1"})})}, {index:2, clip:"level_2", matrix_index:1, time_between_wave:(24 * 4), start_gold:381, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower"), wave:new Array({way:0, health_add:0.2, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:50, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_1_4"})}, {way:0, health_add:0.1, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:50, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_4"})}, {way:0, health_add:0.3, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:50, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"})}, {way:0, health_add:0, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_5"}, {time:90, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_1_4"}, {time:220, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:270, unit:"Unit_1_4"})}, {way:0, health_add:0.2, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_6"}, {time:60, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_6"}, {time:110, unit:"Unit_1_6"}, {time:140, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_6"}, {time:180, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_6"}, {time:230, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_6"}, {time:250, unit:"Unit_1_4"})}, {way:0, health_add:0.3, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:100, unit:"Unit_1_5"}, {time:130, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_4"}, {time:170, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:190, unit:"Unit_1_6"}, {time:220, unit:"Unit_1_6"}, {time:250, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_4"}, {time:290, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"})}, {way:0, health_add:1.3, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:30, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_4"}, {time:90, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_5"}, {time:130, unit:"Unit_1_6"}, {time:140, unit:"Unit_1_4"}, {time:170, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:190, unit:"Unit_1_6"}, {time:220, unit:"Unit_1_6"})}, {way:0, health_add:0, speed_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_5"}, {time:100, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_5"}, {time:140, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_6"}, {time:180, unit:"Unit_1_6"}, {time:200, unit:"Unit_1_6"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_6"}, {time:260, unit:"Unit_1_6"}, {time:280, unit:"Unit_1_6"}, {time:300, unit:"Unit_1_6"}, {time:320, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_6"})})}, {index:3, clip:"level_3", matrix_index:9, time_between_wave:(24 * 4), start_gold:260, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_2_1"}, {time:50, unit:"Unit_2_1"}, {time:100, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_1"}, {time:200, unit:"Unit_2_1"}, {time:250, unit:"Unit_2_1"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_2_1"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_2_1"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_2_1"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_2_1"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:2.5, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_1_7"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:3, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_1_7"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_1_7"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:4, attackers:new Array({time:0, unit:"Unit_2_3"}, {time:30, unit:"Unit_1_7"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_1_7"}, {time:120, unit:"Unit_2_3"}, {time:150, unit:"Unit_1_7"}, {time:180, unit:"Unit_2_3"}, {time:210, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_1_7"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_1_7"})}, {way:0, health_add:5.6, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_3"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_3"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:6.5, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_1_7"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:7, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:7, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_2"}, {time:60, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_3"}, {time:150, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_2"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_2_2"})}, {way:0, health_add:7, attackers:new Array({time:0, unit:"Unit_2_3"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_2"}, {time:120, unit:"Unit_2_2"}, {time:150, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_2"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_1_7"}, {time:300, unit:"Unit_1_7"}, {time:330, unit:"Unit_1_7"})}, {way:0, health_add:7, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"}, {time:350, unit:"Unit_2_3"}, {time:380, unit:"Unit_2_1"}, {time:410, unit:"Unit_2_1"}, {time:440, unit:"Unit_2_3"}, {time:470, unit:"Unit_2_1"}, {time:500, unit:"Unit_2_1"}, {time:530, unit:"Unit_2_3"})}, {way:0, health_add:8, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_2"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_2"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_2"}, {time:270, unit:"Unit_2_3"}, {time:300, unit:"Unit_2_2"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:0, attackers:new Array({time:80, unit:"Boss_LvL_3"})})}, {index:4, clip:"level_4", matrix_index:4, time_between_wave:(24 * 4), start_gold:200, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_1_1"}, {time:60, unit:"Unit_1_1"}, {time:90, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:150, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:210, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:270, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:330, unit:"Unit_1_1"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_1_1"}, {time:60, unit:"Unit_1_1"}, {time:90, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:150, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:210, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:270, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:330, unit:"Unit_1_1"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:1, attackers:new Array({time:0, unit:"Unit_2_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_1_7"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_1_7"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_2_3"}, {time:30, unit:"Unit_1_7"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_1_7"}, {time:120, unit:"Unit_2_3"}, {time:150, unit:"Unit_1_7"}, {time:180, unit:"Unit_2_3"}, {time:210, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_1_7"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_1_7"})}, {way:0, health_add:1.7, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_3"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_3"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_1_7"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:3, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:4, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_2"}, {time:60, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_3"}, {time:150, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_2"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_2_2"})}, {way:0, health_add:6, attackers:new Array({time:0, unit:"Unit_2_3"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_2"}, {time:120, unit:"Unit_2_2"}, {time:150, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_2"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_1_7"}, {time:300, unit:"Unit_1_7"}, {time:330, unit:"Unit_1_7"})}, {way:0, health_add:8, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"}, {time:350, unit:"Unit_2_3"}, {time:380, unit:"Unit_2_1"}, {time:410, unit:"Unit_2_1"}, {time:440, unit:"Unit_2_3"}, {time:470, unit:"Unit_2_1"}, {time:500, unit:"Unit_2_1"}, {time:530, unit:"Unit_2_3"})}, {way:0, health_add:9, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_2"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_2"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_2"}, {time:270, unit:"Unit_2_3"}, {time:300, unit:"Unit_2_2"}, {time:330, unit:"Unit_2_3"})}, {way:0, health_add:10, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_3"}, {time:150, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_3"}, {time:330, unit:"Unit_2_1"}, {time:350, unit:"Unit_2_1"}, {time:380, unit:"Unit_2_1"}, {time:410, unit:"Unit_2_3"}, {time:440, unit:"Unit_2_1"}, {time:470, unit:"Unit_2_1"}, {time:500, unit:"Unit_2_3"}, {time:530, unit:"Unit_2_3"})}, {way:0, health_add:12, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:30, unit:"Unit_2_1"}, {time:60, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_1"}, {time:210, unit:"Unit_2_1"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_1"}, {time:300, unit:"Unit_2_1"}, {time:330, unit:"Unit_2_3"}, {time:350, unit:"Unit_2_3"}, {time:380, unit:"Unit_2_1"}, {time:410, unit:"Unit_2_1"}, {time:440, unit:"Unit_2_3"}, {time:470, unit:"Unit_2_1"}, {time:500, unit:"Unit_2_1"}, {time:530, unit:"Unit_2_3"})}, {way:0, health_add:14, attackers:new Array({time:0, unit:"Unit_2_3"}, {time:30, unit:"Unit_2_3"}, {time:60, unit:"Unit_2_3"}, {time:90, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_3"}, {time:150, unit:"Unit_2_3"}, {time:180, unit:"Unit_2_3"}, {time:210, unit:"Unit_2_3"}, {time:240, unit:"Unit_2_3"}, {time:270, unit:"Unit_2_3"}, {time:300, unit:"Unit_2_3"})})}, {index:5, clip:"level_5", matrix_index:7, time_between_wave:(24 * 4), start_gold:200, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_4"})}, {way:0, health_add:0.2, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"}, {time:360, unit:"Unit_1_4"})}, {way:0, health_add:0.2, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"}, {time:360, unit:"Unit_1_5"})}, {way:0, health_add:0.1, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_5"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_5"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_6"}, {time:30, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_6"}, {time:150, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_6"}, {time:270, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"})}, {way:0, health_add:0.7, attackers:new Array({time:0, unit:"Unit_1_5"}, {time:30, unit:"Unit_1_6"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_5"}, {time:150, unit:"Unit_1_6"}, {time:180, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_5"}, {time:270, unit:"Unit_1_6"}, {time:300, unit:"Unit_1_4"}, {time:360, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"}, {time:380, unit:"Unit_1_4"}, {time:420, unit:"Unit_1_4"}, {time:430, unit:"Unit_1_4"}, {time:440, unit:"Unit_1_4"}, {time:500, unit:"Unit_1_4"}, {time:510, unit:"Unit_1_4"}, {time:520, unit:"Unit_1_4"})}, {way:0, health_add:1, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:50, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:150, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_4"}, {time:170, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_6"}, {time:210, unit:"Unit_1_4"}, {time:220, unit:"Unit_1_4"}, {time:250, unit:"Unit_1_6"}, {time:260, unit:"Unit_1_4"}, {time:270, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_5"}, {time:310, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_4"}, {time:350, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"})}, {way:0, health_add:1, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_7"}, {time:50, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_1_7"}, {time:100, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_7"}, {time:150, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_4"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_1_7"}, {time:200, unit:"Unit_1_6"}, {time:210, unit:"Unit_1_4"}, {time:220, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_1_6"}, {time:260, unit:"Unit_1_4"}, {time:270, unit:"Unit_1_4"}, {time:290, unit:"Unit_1_7"}, {time:300, unit:"Unit_1_5"}, {time:310, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_4"}, {time:340, unit:"Unit_1_7"}, {time:350, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"}, {time:390, unit:"Unit_1_7"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_3_4"}, {time:10, unit:"Unit_3_4"}, {time:20, unit:"Unit_3_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_4"}, {time:60, unit:"Unit_3_4"}, {time:70, unit:"Unit_3_4"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_4"}, {time:110, unit:"Unit_3_4"}, {time:120, unit:"Unit_3_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_4"}, {time:160, unit:"Unit_3_4"}, {time:170, unit:"Unit_3_4"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_6"}, {time:210, unit:"Unit_3_4"}, {time:220, unit:"Unit_3_4"}, {time:240, unit:"Unit_3_7"}, {time:250, unit:"Unit_3_6"}, {time:260, unit:"Unit_3_4"}, {time:270, unit:"Unit_3_4"}, {time:290, unit:"Unit_3_7"}, {time:300, unit:"Unit_3_5"}, {time:310, unit:"Unit_3_4"}, {time:320, unit:"Unit_3_4"}, {time:340, unit:"Unit_3_7"}, {time:350, unit:"Unit_3_5"}, {time:260, unit:"Unit_3_4"}, {time:370, unit:"Unit_3_4"}, {time:390, unit:"Unit_3_7"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_3_5"}, {time:10, unit:"Unit_3_4"}, {time:20, unit:"Unit_3_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_5"}, {time:60, unit:"Unit_3_4"}, {time:70, unit:"Unit_3_4"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_5"}, {time:110, unit:"Unit_3_4"}, {time:120, unit:"Unit_3_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_5"}, {time:160, unit:"Unit_3_6"}, {time:170, unit:"Unit_3_6"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_6"}, {time:210, unit:"Unit_3_6"}, {time:220, unit:"Unit_3_6"}, {time:240, unit:"Unit_3_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_6"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_6"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_5"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_5"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_5"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_4"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_5"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2.5, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_1_3"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_5"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_3"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:4, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_3"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_3"}, {time:70, unit:"Unit_1_3"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_3"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_6"}, {time:160, unit:"Unit_1_3"}, {time:170, unit:"Unit_1_3"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_4"}, {time:210, unit:"Unit_3_4"}, {time:220, unit:"Unit_3_4"}, {time:230, unit:"Unit_3_4"}, {time:240, unit:"Unit_3_4"})}, {way:0, health_add:7, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_1_3"}, {time:320, unit:"Unit_1_2"}, {time:360, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_7"}, {time:400, unit:"Unit_1_2"}, {time:440, unit:"Unit_1_2"}, {time:470, unit:"Unit_1_7"}, {time:480, unit:"Unit_1_2"}, {time:520, unit:"Unit_1_2"})}, {way:0, health_add:9, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_1_3"}, {time:320, unit:"Unit_1_2"}, {time:360, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_7"}, {time:400, unit:"Unit_1_2"}, {time:440, unit:"Unit_1_2"}, {time:470, unit:"Unit_1_7"}, {time:480, unit:"Unit_1_2"}, {time:520, unit:"Unit_1_2"})}, {way:0, health_add:11, attackers:new Array({time:0, unit:"Unit_1_6"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_6"}, {time:100, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_6"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_1_6"}, {time:320, unit:"Unit_1_3"}, {time:360, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_7"}, {time:400, unit:"Unit_1_3"}, {time:440, unit:"Unit_1_2"}, {time:470, unit:"Unit_1_7"}, {time:480, unit:"Unit_1_2"}, {time:520, unit:"Unit_1_2"})}, {way:0, health_add:14, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_3"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_6"}, {time:80, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_3"}, {time:120, unit:"Unit_1_6"}, {time:140, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_6"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_1_6"}, {time:320, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_1"}, {time:370, unit:"Unit_1_7"}, {time:400, unit:"Unit_1_2"}, {time:440, unit:"Unit_1_2"}, {time:470, unit:"Unit_1_7"}, {time:480, unit:"Unit_3_5"}, {time:520, unit:"Unit_3_5"})})}, {index:6, clip:"level_6", matrix_index:3, time_between_wave:(24 * 4), start_gold:200, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:60, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"})}, {way:0, health_add:0.7, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:60, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_1"})}, {way:0, health_add:0.8, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:60, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_2"})}, {way:0, health_add:0.4, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_1"}, {time:160, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_2"}, {time:320, unit:"Unit_1_2"})}, {way:0, health_add:0.7, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_3"}, {time:150, unit:"Unit_1_2"}, {time:180, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_3"}, {time:270, unit:"Unit_1_2"}, {time:300, unit:"Unit_1_2"})}, {way:0, health_add:0.7, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_3"}, {time:150, unit:"Unit_1_2"}, {time:180, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_3"}, {time:270, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_2"}, {time:380, unit:"Unit_1_2"}, {time:420, unit:"Unit_1_2"}, {time:430, unit:"Unit_1_2"}, {time:440, unit:"Unit_1_2"}, {time:500, unit:"Unit_1_2"}, {time:510, unit:"Unit_1_2"}, {time:520, unit:"Unit_1_2"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_1_2"}, {time:20, unit:"Unit_1_2"}, {time:50, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:100, unit:"Unit_1_1"}, {time:110, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:150, unit:"Unit_1_2"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_3"}, {time:210, unit:"Unit_1_2"}, {time:220, unit:"Unit_1_2"}, {time:250, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:270, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_5"}, {time:310, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_4"}, {time:350, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"})}, {way:0, health_add:0.7, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_1_2"}, {time:20, unit:"Unit_1_2"}, {time:40, unit:"Unit_1_7"}, {time:50, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:90, unit:"Unit_1_7"}, {time:100, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_7"}, {time:150, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_4"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_1_7"}, {time:200, unit:"Unit_1_6"}, {time:210, unit:"Unit_1_1"}, {time:220, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_1_6"}, {time:260, unit:"Unit_1_1"}, {time:270, unit:"Unit_1_1"}, {time:290, unit:"Unit_1_7"}, {time:300, unit:"Unit_1_5"}, {time:310, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_4"}, {time:340, unit:"Unit_1_7"}, {time:350, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"}, {time:390, unit:"Unit_1_7"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_3_4"}, {time:10, unit:"Unit_3_4"}, {time:20, unit:"Unit_3_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_2_2"}, {time:60, unit:"Unit_2_2"}, {time:70, unit:"Unit_2_2"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_2_1"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:140, unit:"Unit_2_2"}, {time:150, unit:"Unit_2_2"}, {time:160, unit:"Unit_2_2"}, {time:170, unit:"Unit_2_2"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_3"}, {time:210, unit:"Unit_3_4"}, {time:220, unit:"Unit_3_4"}, {time:240, unit:"Unit_3_7"}, {time:250, unit:"Unit_1_3"}, {time:260, unit:"Unit_3_4"}, {time:270, unit:"Unit_3_4"}, {time:290, unit:"Unit_3_7"}, {time:300, unit:"Unit_3_5"}, {time:310, unit:"Unit_3_4"}, {time:320, unit:"Unit_3_4"}, {time:340, unit:"Unit_3_7"}, {time:350, unit:"Unit_1_3"}, {time:260, unit:"Unit_3_4"}, {time:370, unit:"Unit_3_4"}, {time:390, unit:"Unit_3_7"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_3_5"}, {time:10, unit:"Unit_2_1"}, {time:20, unit:"Unit_2_1"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_5"}, {time:60, unit:"Unit_2_2"}, {time:70, unit:"Unit_2_2"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_5"}, {time:110, unit:"Unit_3_4"}, {time:120, unit:"Unit_3_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_3"}, {time:170, unit:"Unit_3_6"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_2"}, {time:210, unit:"Unit_1_2"}, {time:220, unit:"Unit_3_6"}, {time:240, unit:"Unit_3_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_6"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_6"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_5"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_5"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_5"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_4"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_5"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2.5, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_1_3"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_5"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_3"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:4, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_3"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_3"}, {time:70, unit:"Unit_1_3"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_3"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_6"}, {time:160, unit:"Unit_1_3"}, {time:170, unit:"Unit_1_3"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_4"}, {time:210, unit:"Unit_3_4"}, {time:220, unit:"Unit_3_4"}, {time:230, unit:"Unit_3_4"}, {time:240, unit:"Unit_3_4"})}, {way:0, health_add:7, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_1_3"}, {time:320, unit:"Unit_1_2"}, {time:360, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_7"}, {time:400, unit:"Unit_1_2"}, {time:440, unit:"Unit_1_2"}, {time:470, unit:"Unit_1_7"}, {time:480, unit:"Unit_1_2"}, {time:520, unit:"Unit_1_2"})}, {way:0, health_add:60, attackers:new Array({time:80, unit:"Boss_LvL_6"})})}, {index:7, clip:"level_7", matrix_index:2, time_between_wave:(24 * 4), start_gold:200, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"})}, {way:0, health_add:0.2, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_1"}, {time:400, unit:"Unit_1_1"}, {time:440, unit:"Unit_1_1"}, {time:480, unit:"Unit_1_1"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:60, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_2"}, {time:360, unit:"Unit_1_2"})}, {way:0, health_add:0.4, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_1"}, {time:160, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_2"}, {time:320, unit:"Unit_1_2"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_3"}, {time:150, unit:"Unit_1_2"}, {time:180, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_5"}, {time:270, unit:"Unit_1_2"}, {time:300, unit:"Unit_1_2"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_3"}, {time:150, unit:"Unit_1_2"}, {time:180, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_3"}, {time:270, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_2"}, {time:380, unit:"Unit_1_2"}, {time:420, unit:"Unit_1_6"}, {time:430, unit:"Unit_1_6"}, {time:440, unit:"Unit_1_6"}, {time:500, unit:"Unit_1_1"}, {time:510, unit:"Unit_1_1"}, {time:520, unit:"Unit_1_1"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:10, unit:"Unit_1_1"}, {time:20, unit:"Unit_1_1"}, {time:50, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:100, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:150, unit:"Unit_1_2"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_6"}, {time:210, unit:"Unit_1_2"}, {time:220, unit:"Unit_1_2"}, {time:250, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:270, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_5"}, {time:310, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_4"}, {time:350, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_2"}, {time:370, unit:"Unit_1_2"})}, {way:0, health_add:0.7, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_1_2"}, {time:20, unit:"Unit_1_2"}, {time:40, unit:"Unit_1_7"}, {time:50, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:90, unit:"Unit_1_7"}, {time:100, unit:"Unit_1_4"}, {time:110, unit:"Unit_1_4"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_7"}, {time:150, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_4"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_1_7"}, {time:200, unit:"Unit_1_6"}, {time:210, unit:"Unit_1_1"}, {time:220, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_1_6"}, {time:260, unit:"Unit_1_1"}, {time:270, unit:"Unit_1_1"}, {time:290, unit:"Unit_1_7"}, {time:300, unit:"Unit_1_5"}, {time:310, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_4"}, {time:340, unit:"Unit_1_7"}, {time:350, unit:"Unit_1_5"}, {time:260, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"}, {time:390, unit:"Unit_1_7"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_3_4"}, {time:10, unit:"Unit_3_4"}, {time:20, unit:"Unit_3_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_2_2"}, {time:60, unit:"Unit_2_2"}, {time:70, unit:"Unit_2_2"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_2_1"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:140, unit:"Unit_2_2"}, {time:150, unit:"Unit_2_2"}, {time:160, unit:"Unit_2_2"}, {time:170, unit:"Unit_2_2"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_3"}, {time:210, unit:"Unit_3_4"}, {time:220, unit:"Unit_3_4"}, {time:240, unit:"Unit_3_7"}, {time:250, unit:"Unit_1_3"}, {time:260, unit:"Unit_3_4"}, {time:270, unit:"Unit_3_4"}, {time:290, unit:"Unit_3_7"}, {time:300, unit:"Unit_3_5"}, {time:310, unit:"Unit_3_4"}, {time:320, unit:"Unit_3_4"}, {time:340, unit:"Unit_3_7"}, {time:350, unit:"Unit_1_3"}, {time:260, unit:"Unit_3_4"}, {time:370, unit:"Unit_3_4"}, {time:390, unit:"Unit_3_7"})}, {way:0, health_add:1.2, attackers:new Array({time:0, unit:"Unit_3_5"}, {time:10, unit:"Unit_2_1"}, {time:20, unit:"Unit_2_1"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_5"}, {time:60, unit:"Unit_2_2"}, {time:70, unit:"Unit_2_2"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_5"}, {time:110, unit:"Unit_3_4"}, {time:120, unit:"Unit_3_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_3"}, {time:170, unit:"Unit_3_6"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_2"}, {time:210, unit:"Unit_1_2"}, {time:220, unit:"Unit_3_6"}, {time:240, unit:"Unit_3_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_6"}, {time:20, unit:"Unit_1_4"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_6"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_5"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_5"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_5"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_4"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_4"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_5"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:1.7, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:10, unit:"Unit_1_4"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_5"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_1_3"}, {time:110, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_4"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_5"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_1_3"}, {time:210, unit:"Unit_3_5"}, {time:220, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_7"}, {time:250, unit:"Unit_3_6"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_3_6"}, {time:10, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_3"}, {time:40, unit:"Unit_3_7"}, {time:50, unit:"Unit_3_6"}, {time:60, unit:"Unit_1_3"}, {time:70, unit:"Unit_1_3"}, {time:90, unit:"Unit_3_7"}, {time:100, unit:"Unit_3_6"}, {time:110, unit:"Unit_1_3"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_3_7"}, {time:150, unit:"Unit_3_6"}, {time:160, unit:"Unit_1_3"}, {time:170, unit:"Unit_1_3"}, {time:190, unit:"Unit_3_7"}, {time:200, unit:"Unit_3_4"}, {time:210, unit:"Unit_3_4"}, {time:220, unit:"Unit_3_4"}, {time:230, unit:"Unit_3_4"}, {time:240, unit:"Unit_3_4"})}, {way:0, health_add:3, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:20, unit:"Unit_1_5"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_6"}, {time:100, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_1_5"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_1_3"}, {time:320, unit:"Unit_1_2"}, {time:360, unit:"Unit_1_5"}, {time:370, unit:"Unit_1_7"}, {time:400, unit:"Unit_1_2"}, {time:440, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_7"}, {time:480, unit:"Unit_1_2"}, {time:520, unit:"Unit_1_5"})}, {way:0, health_add:5, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_3"}, {time:40, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_3"}, {time:120, unit:"Unit_1_2"}, {time:140, unit:"Unit_1_2"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_3"}, {time:200, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_3"}, {time:320, unit:"Unit_1_3"}, {time:360, unit:"Unit_1_4"}, {time:370, unit:"Unit_1_4"}, {time:400, unit:"Unit_1_5"}, {time:440, unit:"Unit_1_5"}, {time:470, unit:"Unit_1_4"}, {time:480, unit:"Unit_1_4"}, {time:520, unit:"Unit_1_5"})}, {way:0, health_add:6, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:20, unit:"Unit_1_3"}, {time:40, unit:"Unit_1_3"}, {time:60, unit:"Unit_1_5"}, {time:80, unit:"Unit_1_5"}, {time:100, unit:"Unit_1_5"}, {time:120, unit:"Unit_1_3"}, {time:140, unit:"Unit_1_3"}, {time:160, unit:"Unit_1_3"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_5"}, {time:240, unit:"Unit_1_5"}, {time:280, unit:"Unit_1_3"}, {time:320, unit:"Unit_1_3"}, {time:360, unit:"Unit_1_3"}, {time:370, unit:"Unit_1_5"}, {time:400, unit:"Unit_1_5"}, {time:440, unit:"Unit_1_5"}, {time:470, unit:"Unit_1_3"}, {time:480, unit:"Unit_1_3"}, {time:520, unit:"Unit_1_3"})})}, {index:8, clip:"level_8", matrix_index:5, time_between_wave:(24 * 4), start_gold:400, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_6"}, {time:40, unit:"Unit_1_6"}, {time:80, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_6"}, {time:160, unit:"Unit_1_6"}, {time:200, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_6"}, {time:280, unit:"Unit_1_6"}, {time:320, unit:"Unit_1_6"}, {time:360, unit:"Unit_1_6"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_6"}, {time:40, unit:"Unit_1_6"}, {time:80, unit:"Unit_1_6"}, {time:120, unit:"Unit_1_6"}, {time:160, unit:"Unit_1_6"}, {time:200, unit:"Unit_1_6"}, {time:240, unit:"Unit_1_6"}, {time:280, unit:"Unit_1_6"}, {time:320, unit:"Unit_1_6"}, {time:360, unit:"Unit_1_5"})}, {way:0, health_add:1.5, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:40, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_1"}, {time:160, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_2"}, {time:240, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_1"}, {time:320, unit:"Unit_1_2"}, {time:360, unit:"Unit_1_2"}, {time:400, unit:"Unit_1_1"}, {time:420, unit:"Unit_1_1"}, {time:460, unit:"Unit_1_2"}, {time:500, unit:"Unit_1_2"}, {time:540, unit:"Unit_1_1"}, {time:580, unit:"Unit_1_1"})}, {way:0, health_add:1.8, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_1_1"}, {time:20, unit:"Unit_1_1"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:80, unit:"Unit_1_1"}, {time:90, unit:"Unit_1_1"}, {time:130, unit:"Unit_1_2"}, {time:140, unit:"Unit_1_1"}, {time:150, unit:"Unit_1_1"}, {time:190, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_1"}, {time:210, unit:"Unit_1_1"}, {time:250, unit:"Unit_1_2"}, {time:260, unit:"Unit_1_1"}, {time:270, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_1"})}, {way:0, health_add:2.3, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_2_1"}, {time:20, unit:"Unit_2_1"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_2_1"}, {time:80, unit:"Unit_2_1"}, {time:90, unit:"Unit_2_1"}, {time:130, unit:"Unit_1_2"}, {time:140, unit:"Unit_2_1"}, {time:150, unit:"Unit_2_1"}, {time:160, unit:"Unit_2_1"}, {time:170, unit:"Unit_2_1"}, {time:210, unit:"Unit_1_3"}, {time:250, unit:"Unit_1_3"}, {time:290, unit:"Unit_1_3"}, {time:330, unit:"Unit_1_3"}, {time:370, unit:"Unit_1_3"})}, {way:0, health_add:2.8, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:30, unit:"Unit_2_4"}, {time:40, unit:"Unit_2_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_1"}, {time:230, unit:"Unit_1_2"}, {time:240, unit:"Unit_2_1"}, {time:250, unit:"Unit_2_1"}, {time:260, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_3"})}, {way:0, health_add:2.8, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:30, unit:"Unit_2_4"}, {time:40, unit:"Unit_2_2"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_1_7"}, {time:230, unit:"Unit_1_2"}, {time:240, unit:"Unit_2_2"}, {time:250, unit:"Unit_2_2"}, {time:260, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_5"}, {time:470, unit:"Unit_1_5"})}, {way:0, health_add:3.5, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:10, unit:"Unit_1_1"}, {time:30, unit:"Unit_2_1"}, {time:40, unit:"Unit_2_1"}, {time:60, unit:"Unit_1_2"}, {time:70, unit:"Unit_1_2"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_1"}, {time:230, unit:"Unit_1_2"}, {time:240, unit:"Unit_2_1"}, {time:250, unit:"Unit_2_5"}, {time:260, unit:"Unit_2_5"}, {time:270, unit:"Unit_2_5"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_7"}, {time:430, unit:"Unit_1_7"}, {time:470, unit:"Unit_1_7"})}, {way:0, health_add:4.2, attackers:new Array({time:0, unit:"Unit_1_5"}, {time:10, unit:"Unit_1_5"}, {time:30, unit:"Unit_2_5"}, {time:40, unit:"Unit_2_5"}, {time:60, unit:"Unit_1_7"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_2_3"}, {time:100, unit:"Unit_2_3"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_1"}, {time:170, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_2"}, {time:190, unit:"Unit_2_2"}, {time:230, unit:"Unit_1_4"}, {time:240, unit:"Unit_2_4"}, {time:250, unit:"Unit_2_4"}, {time:260, unit:"Unit_2_5"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_7"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_7"}, {time:470, unit:"Unit_1_3"})}, {way:0, health_add:4.7, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:10, unit:"Unit_1_4"}, {time:30, unit:"Unit_2_4"}, {time:40, unit:"Unit_2_4"}, {time:60, unit:"Unit_1_3"}, {time:70, unit:"Unit_1_7"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_3"}, {time:120, unit:"Unit_2_3"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_1"}, {time:230, unit:"Unit_1_2"}, {time:240, unit:"Unit_2_5"}, {time:250, unit:"Unit_2_5"}, {time:260, unit:"Unit_2_5"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_7"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_7"}, {time:470, unit:"Unit_1_3"})}, {way:0, health_add:5.2, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:30, unit:"Unit_2_4"}, {time:40, unit:"Unit_2_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_2_7"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_1"}, {time:230, unit:"Unit_1_2"}, {time:240, unit:"Unit_2_7"}, {time:250, unit:"Unit_2_1"}, {time:260, unit:"Unit_2_7"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_3"})}, {way:0, health_add:5.5, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:10, unit:"Unit_1_4"}, {time:30, unit:"Unit_2_4"}, {time:40, unit:"Unit_2_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_7"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_2"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_7"}, {time:230, unit:"Unit_1_2"}, {time:240, unit:"Unit_2_1"}, {time:250, unit:"Unit_2_1"}, {time:260, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_7"}, {time:430, unit:"Unit_1_7"}, {time:470, unit:"Unit_1_7"})}, {way:0, health_add:6, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:10, unit:"Unit_1_3"}, {time:30, unit:"Unit_1_3"}, {time:40, unit:"Unit_2_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_7"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_1"}, {time:230, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:250, unit:"Unit_1_3"}, {time:260, unit:"Unit_1_3"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_7"}, {time:430, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_7"})}, {way:0, health_add:7.5, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_1_2"}, {time:30, unit:"Unit_2_1"}, {time:40, unit:"Unit_2_1"}, {time:60, unit:"Unit_1_1"}, {time:70, unit:"Unit_1_7"}, {time:90, unit:"Unit_2_2"}, {time:100, unit:"Unit_2_2"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_7"}, {time:170, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_4"}, {time:190, unit:"Unit_2_4"}, {time:230, unit:"Unit_1_5"}, {time:240, unit:"Unit_2_7"}, {time:250, unit:"Unit_2_1"}, {time:260, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_3"})}, {way:0, health_add:8, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:10, unit:"Unit_1_1"}, {time:30, unit:"Unit_2_2"}, {time:40, unit:"Unit_2_1"}, {time:60, unit:"Unit_1_3"}, {time:70, unit:"Unit_1_7"}, {time:90, unit:"Unit_2_3"}, {time:100, unit:"Unit_2_2"}, {time:110, unit:"Unit_2_2"}, {time:120, unit:"Unit_2_1"}, {time:160, unit:"Unit_1_1"}, {time:170, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_1"}, {time:190, unit:"Unit_2_1"}, {time:230, unit:"Unit_1_7"}, {time:240, unit:"Unit_2_1"}, {time:250, unit:"Unit_2_1"}, {time:260, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_7"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_3"})}, {way:0, health_add:9, attackers:new Array({time:0, unit:"Unit_1_5"}, {time:10, unit:"Unit_1_5"}, {time:30, unit:"Unit_2_4"}, {time:40, unit:"Unit_2_4"}, {time:60, unit:"Unit_1_4"}, {time:70, unit:"Unit_1_4"}, {time:90, unit:"Unit_2_4"}, {time:100, unit:"Unit_2_4"}, {time:110, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_2"}, {time:160, unit:"Unit_1_5"}, {time:170, unit:"Unit_2_1"}, {time:180, unit:"Unit_2_3"}, {time:190, unit:"Unit_2_3"}, {time:230, unit:"Unit_1_5"}, {time:240, unit:"Unit_2_1"}, {time:250, unit:"Unit_2_1"}, {time:260, unit:"Unit_2_1"}, {time:270, unit:"Unit_2_1"}, {time:310, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:390, unit:"Unit_1_3"}, {time:430, unit:"Unit_1_3"}, {time:470, unit:"Unit_1_3"})})}, {index:9, clip:"level_9", matrix_index:6, time_between_wave:(24 * 4), start_gold:200, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_1"}, {time:80, unit:"Unit_1_1"}, {time:100, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:200, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_4"})}, {way:0, health_add:0.5, attackers:new Array({time:0, unit:"Unit_1_2"}, {time:20, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_1"}, {time:90, unit:"Unit_1_2"}, {time:110, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_4"}, {time:220, unit:"Unit_1_4"}, {time:270, unit:"Unit_1_2"}, {time:290, unit:"Unit_1_1"}, {time:310, unit:"Unit_1_1"}, {time:360, unit:"Unit_1_2"}, {time:380, unit:"Unit_1_4"}, {time:400, unit:"Unit_1_4"}, {time:420, unit:"Unit_1_1"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_6"}, {time:15, unit:"Unit_1_2"}, {time:25, unit:"Unit_1_2"}, {time:50, unit:"Unit_1_6"}, {time:65, unit:"Unit_1_2"}, {time:75, unit:"Unit_1_2"}, {time:100, unit:"Unit_1_6"}, {time:115, unit:"Unit_1_2"}, {time:125, unit:"Unit_1_2"}, {time:150, unit:"Unit_1_6"}, {time:165, unit:"Unit_1_2"}, {time:175, unit:"Unit_1_2"}, {time:200, unit:"Unit_1_6"}, {time:215, unit:"Unit_1_2"}, {time:225, unit:"Unit_1_2"})}, {way:0, health_add:0.2, attackers:new Array({time:0, unit:"Unit_1_6"}, {time:15, unit:"Unit_1_2"}, {time:25, unit:"Unit_1_2"}, {time:55, unit:"Unit_1_1"}, {time:75, unit:"Unit_1_1"}, {time:100, unit:"Unit_1_6"}, {time:115, unit:"Unit_1_2"}, {time:125, unit:"Unit_1_2"}, {time:155, unit:"Unit_1_1"}, {time:175, unit:"Unit_1_1"}, {time:200, unit:"Unit_1_6"}, {time:215, unit:"Unit_1_2"}, {time:225, unit:"Unit_1_2"}, {time:0xFF, unit:"Unit_1_1"}, {time:275, unit:"Unit_1_1"}, {time:200, unit:"Unit_1_6"}, {time:215, unit:"Unit_1_2"}, {time:225, unit:"Unit_1_2"})}, {way:0, health_add:0.2, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:35, unit:"Unit_1_3"}, {time:70, unit:"Unit_1_3"}, {time:100, unit:"Unit_2_1"}, {time:115, unit:"Unit_2_2"}, {time:125, unit:"Unit_1_2"}, {time:155, unit:"Unit_1_1"}, {time:175, unit:"Unit_1_1"}, {time:200, unit:"Unit_2_1"}, {time:215, unit:"Unit_2_2"}, {time:225, unit:"Unit_1_2"}, {time:0xFF, unit:"Unit_1_1"}, {time:275, unit:"Unit_2_1"}, {time:300, unit:"Unit_1_1"}, {time:315, unit:"Unit_1_2"}, {time:325, unit:"Unit_1_2"}, {time:355, unit:"Unit_1_1"}, {time:375, unit:"Unit_2_1"}, {time:400, unit:"Unit_1_1"}, {time:415, unit:"Unit_2_2"}, {time:425, unit:"Unit_1_2"})}, {way:0, health_add:1, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:40, unit:"Unit_1_3"}, {time:80, unit:"Unit_1_5"}, {time:120, unit:"Unit_2_3"}, {time:160, unit:"Unit_2_3"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:280, unit:"Unit_2_5"}, {time:320, unit:"Unit_2_3"}, {time:360, unit:"Unit_1_3"}, {time:400, unit:"Unit_1_5"}, {time:490, unit:"Unit_1_3"})}, {way:0, health_add:2, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:40, unit:"Unit_1_3"}, {time:80, unit:"Unit_1_5"}, {time:90, unit:"Unit_1_7"}, {time:110, unit:"Unit_1_2"}, {time:120, unit:"Unit_1_2"}, {time:130, unit:"Unit_1_2"}, {time:160, unit:"Unit_2_3"}, {time:180, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_3"}, {time:240, unit:"Unit_1_3"}, {time:250, unit:"Unit_1_7"}, {time:270, unit:"Unit_1_2"}, {time:280, unit:"Unit_1_2"}, {time:290, unit:"Unit_1_2"}, {time:320, unit:"Unit_2_3"}, {time:360, unit:"Unit_1_3"}, {time:400, unit:"Unit_1_5"}, {time:490, unit:"Unit_1_3"})}, {way:0, health_add:12, attackers:new Array({time:0, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_2"}, {time:180, unit:"Unit_2_2"})}, {way:0, health_add:3, attackers:new Array({time:0, unit:"Unit_2_1"}, {time:50, unit:"Unit_2_2"}, {time:120, unit:"Unit_1_5"}, {time:170, unit:"Unit_1_7"}, {time:210, unit:"Unit_1_6"}, {time:250, unit:"Unit_2_2"}, {time:280, unit:"Unit_1_5"}, {time:300, unit:"Unit_2_1"}, {time:340, unit:"Unit_1_6"}, {time:360, unit:"Unit_1_6"}, {time:380, unit:"Unit_2_2"}, {time:420, unit:"Unit_2_6"}, {time:460, unit:"Unit_2_2"}, {time:490, unit:"Unit_1_5"}, {time:500, unit:"Unit_1_3"})}, {way:0, health_add:4, attackers:new Array({time:0, unit:"Unit_2_6"}, {time:30, unit:"Unit_2_2"}, {time:60, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_6"}, {time:110, unit:"Unit_2_1"}, {time:140, unit:"Unit_2_1"}, {time:170, unit:"Unit_2_6"}, {time:200, unit:"Unit_2_4"}, {time:230, unit:"Unit_2_4"}, {time:260, unit:"Unit_2_6"}, {time:290, unit:"Unit_2_2"}, {time:310, unit:"Unit_2_2"}, {time:340, unit:"Unit_2_6"}, {time:370, unit:"Unit_2_1"}, {time:400, unit:"Unit_2_1"}, {time:430, unit:"Unit_2_6"}, {time:460, unit:"Unit_2_6"}, {time:490, unit:"Unit_2_6"})}, {way:0, health_add:6, attackers:new Array({time:0, unit:"Unit_2_6"}, {time:30, unit:"Unit_2_2"}, {time:60, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_6"}, {time:110, unit:"Unit_2_1"}, {time:140, unit:"Unit_2_1"}, {time:170, unit:"Unit_2_6"}, {time:200, unit:"Unit_2_4"}, {time:230, unit:"Unit_2_4"}, {time:260, unit:"Unit_2_6"}, {time:290, unit:"Unit_2_2"}, {time:310, unit:"Unit_2_2"}, {time:340, unit:"Unit_2_6"}, {time:370, unit:"Unit_2_1"}, {time:400, unit:"Unit_2_1"}, {time:430, unit:"Unit_2_6"}, {time:460, unit:"Unit_2_6"}, {time:490, unit:"Unit_2_6"})}, {way:0, health_add:8, attackers:new Array({time:0, unit:"Unit_2_6"}, {time:20, unit:"Unit_2_2"}, {time:40, unit:"Unit_2_2"}, {time:90, unit:"Unit_2_6"}, {time:100, unit:"Unit_2_1"}, {time:120, unit:"Unit_2_1"}, {time:170, unit:"Unit_2_6"}, {time:190, unit:"Unit_2_4"}, {time:210, unit:"Unit_2_4"}, {time:260, unit:"Unit_2_6"}, {time:280, unit:"Unit_2_2"}, {time:300, unit:"Unit_2_2"}, {time:340, unit:"Unit_2_6"}, {time:360, unit:"Unit_2_1"}, {time:380, unit:"Unit_2_1"}, {time:430, unit:"Unit_2_3"}, {time:460, unit:"Unit_2_3"}, {time:490, unit:"Unit_2_3"})}, {way:0, health_add:25, attackers:new Array({time:100, unit:"Unit_1_6"})})}, {index:10, clip:"level_10", matrix_index:8, time_between_wave:(24 * 4), start_gold:160, start_health:100, towers:new Array("Archer_Tower", "Cannon_Tower", "Freeze_Tower", "Laser_Tower"), wave:new Array({way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_1"}, {time:80, unit:"Unit_1_1"}, {time:100, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_1"}, {time:180, unit:"Unit_1_1"}, {time:200, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_1"}, {time:300, unit:"Unit_1_1"})}, {way:0, health_add:0, attackers:new Array({time:0, unit:"Unit_1_4"}, {time:40, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_4"}, {time:140, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_4"}, {time:300, unit:"Unit_1_4"})}, {way:0, health_add:0.6, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_4"}, {time:100, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_4"}, {time:180, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_1"}, {time:240, unit:"Unit_1_4"}, {time:280, unit:"Unit_1_4"})}, {way:0, health_add:1.4, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:40, unit:"Unit_1_4"}, {time:80, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_4"}, {time:160, unit:"Unit_1_1"}, {time:200, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_1"}, {time:280, unit:"Unit_1_4"}, {time:320, unit:"Unit_1_6"})}, {way:0, health_add:1.4, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:40, unit:"Unit_10_4"}, {time:80, unit:"Unit_1_1"}, {time:120, unit:"Unit_1_6"}, {time:160, unit:"Unit_10_1"}, {time:200, unit:"Unit_1_6"}, {time:240, unit:"Unit_10_1"}, {time:280, unit:"Unit_10_4"}, {time:320, unit:"Unit_1_6"})}, {way:0, health_add:2.3, attackers:new Array({time:0, unit:"Unit_1_7"}, {time:40, unit:"Unit_10_4"}, {time:80, unit:"Unit_10_1"}, {time:120, unit:"Unit_1_6"}, {time:160, unit:"Unit_10_1"}, {time:200, unit:"Unit_1_6"}, {time:240, unit:"Unit_10_1"}, {time:280, unit:"Unit_10_4"}, {time:320, unit:"Unit_1_6"})}, {way:0, health_add:1.6, attackers:new Array({time:0, unit:"Unit_10_2"}, {time:30, unit:"Unit_10_2"}, {time:60, unit:"Unit_10_2"}, {time:90, unit:"Unit_1_6"}, {time:110, unit:"Unit_10_1"}, {time:140, unit:"Unit_10_1"}, {time:170, unit:"Unit_1_6"}, {time:200, unit:"Unit_10_4"}, {time:230, unit:"Unit_10_4"}, {time:260, unit:"Unit_1_6"}, {time:290, unit:"Unit_10_2"}, {time:310, unit:"Unit_10_2"}, {time:340, unit:"Unit_1_6"}, {time:370, unit:"Unit_10_1"}, {time:400, unit:"Unit_10_1"}, {time:430, unit:"Unit_1_6"}, {time:460, unit:"Unit_10_2"}, {time:490, unit:"Unit_1_6"})}, {way:0, health_add:1, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_4"}, {time:90, unit:"Unit_10_1"}, {time:100, unit:"Unit_10_1"}, {time:110, unit:"Unit_10_1"}, {time:140, unit:"Unit_10_2"}, {time:150, unit:"Unit_10_2"}, {time:160, unit:"Unit_10_2"}, {time:190, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_4"}, {time:210, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_6"}, {time:260, unit:"Unit_10_2"}, {time:270, unit:"Unit_10_2"}, {time:280, unit:"Unit_10_2"}, {time:300, unit:"Unit_1_6"}, {time:320, unit:"Unit_10_2"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_1_7"}, {time:380, unit:"Unit_1_5"}, {time:410, unit:"Unit_1_5"}, {time:440, unit:"Unit_1_5"})}, {way:0, health_add:1.1, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_4"}, {time:90, unit:"Unit_10_1"}, {time:100, unit:"Unit_10_1"}, {time:110, unit:"Unit_10_1"}, {time:140, unit:"Unit_10_2"}, {time:150, unit:"Unit_10_2"}, {time:160, unit:"Unit_10_2"}, {time:190, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_4"}, {time:210, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_6"}, {time:260, unit:"Unit_10_2"}, {time:270, unit:"Unit_10_2"}, {time:280, unit:"Unit_10_2"}, {time:300, unit:"Unit_1_6"}, {time:320, unit:"Unit_10_2"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_1_7"}, {time:380, unit:"Unit_1_5"}, {time:410, unit:"Unit_1_5"}, {time:440, unit:"Unit_1_5"})}, {way:0, health_add:1.6, attackers:new Array({time:0, unit:"Unit_10_2"}, {time:30, unit:"Unit_10_2"}, {time:60, unit:"Unit_10_4"}, {time:90, unit:"Unit_10_4"}, {time:100, unit:"Unit_10_4"}, {time:110, unit:"Unit_10_4"}, {time:140, unit:"Unit_10_1"}, {time:150, unit:"Unit_10_1"}, {time:160, unit:"Unit_10_1"}, {time:190, unit:"Unit_10_4"}, {time:200, unit:"Unit_10_4"}, {time:210, unit:"Unit_10_4"}, {time:240, unit:"Unit_10_7"}, {time:260, unit:"Unit_10_4"}, {time:270, unit:"Unit_10_4"}, {time:280, unit:"Unit_10_4"}, {time:300, unit:"Unit_10_7"}, {time:320, unit:"Unit_10_2"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_10_7"}, {time:380, unit:"Unit_10_7"}, {time:410, unit:"Unit_10_7"}, {time:440, unit:"Unit_10_7"})}, {way:0, health_add:1.8, attackers:new Array({time:0, unit:"Unit_10_6"}, {time:30, unit:"Unit_10_6"}, {time:60, unit:"Unit_10_6"}, {time:90, unit:"Unit_10_3"}, {time:100, unit:"Unit_10_4"}, {time:110, unit:"Unit_10_4"}, {time:140, unit:"Unit_10_5"}, {time:150, unit:"Unit_10_1"}, {time:160, unit:"Unit_10_1"}, {time:190, unit:"Unit_10_3"}, {time:200, unit:"Unit_10_4"}, {time:210, unit:"Unit_10_4"}, {time:240, unit:"Unit_1_7"}, {time:260, unit:"Unit_10_4"}, {time:270, unit:"Unit_10_4"}, {time:280, unit:"Unit_10_4"}, {time:300, unit:"Unit_10_7"}, {time:320, unit:"Unit_10_3"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_10_7"}, {time:380, unit:"Unit_10_7"}, {time:410, unit:"Unit_10_7"}, {time:440, unit:"Unit_10_7"})}, {way:0, health_add:1.8, attackers:new Array({time:0, unit:"Unit_10_6"}, {time:30, unit:"Unit_10_6"}, {time:60, unit:"Unit_10_6"}, {time:90, unit:"Unit_10_3"}, {time:100, unit:"Unit_10_4"}, {time:110, unit:"Unit_10_4"}, {time:140, unit:"Unit_10_5"}, {time:150, unit:"Unit_10_1"}, {time:160, unit:"Unit_10_1"}, {time:190, unit:"Unit_10_3"}, {time:200, unit:"Unit_10_4"}, {time:210, unit:"Unit_10_4"}, {time:240, unit:"Unit_1_7"}, {time:260, unit:"Unit_10_4"}, {time:270, unit:"Unit_10_4"}, {time:280, unit:"Unit_10_4"}, {time:300, unit:"Unit_10_7"}, {time:320, unit:"Unit_10_3"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_10_7"}, {time:380, unit:"Unit_10_7"}, {time:410, unit:"Unit_10_7"}, {time:440, unit:"Unit_10_7"})}, {way:0, health_add:5, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:50, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_3"}, {time:110, unit:"Unit_10_7"}, {time:150, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_5"}, {time:250, unit:"Unit_1_5"}, {time:260, unit:"Unit_10_7"}, {time:300, unit:"Unit_1_3"}, {time:350, unit:"Unit_1_3"}, {time:400, unit:"Unit_1_3"}, {time:410, unit:"Unit_1_7"}, {time:450, unit:"Unit_10_6"})}, {way:0, health_add:2.5, attackers:new Array({time:0, unit:"Unit_10_6"}, {time:30, unit:"Unit_10_2"}, {time:60, unit:"Unit_10_2"}, {time:90, unit:"Unit_10_2"}, {time:100, unit:"Unit_10_4"}, {time:110, unit:"Unit_10_4"}, {time:140, unit:"Unit_10_5"}, {time:150, unit:"Unit_10_1"}, {time:160, unit:"Unit_10_1"}, {time:190, unit:"Unit_10_3"}, {time:200, unit:"Unit_10_4"}, {time:210, unit:"Unit_10_4"}, {time:240, unit:"Unit_1_7"}, {time:260, unit:"Unit_10_4"}, {time:270, unit:"Unit_10_2"}, {time:280, unit:"Unit_10_2"}, {time:300, unit:"Unit_10_7"}, {time:320, unit:"Unit_10_3"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_10_7"}, {time:380, unit:"Unit_10_5"}, {time:410, unit:"Unit_10_7"}, {time:440, unit:"Unit_10_5"})}, {way:0, health_add:2.5, attackers:new Array({time:0, unit:"Unit_10_1"}, {time:20, unit:"Unit_10_2"}, {time:40, unit:"Unit_10_2"}, {time:80, unit:"Unit_10_2"}, {time:90, unit:"Unit_10_6"}, {time:100, unit:"Unit_10_6"}, {time:130, unit:"Unit_10_6"}, {time:160, unit:"Unit_10_6"}, {time:190, unit:"Unit_10_1"}, {time:200, unit:"Unit_10_2"}, {time:210, unit:"Unit_10_2"}, {time:220, unit:"Unit_10_2"}, {time:250, unit:"Unit_10_4"}, {time:260, unit:"Unit_10_2"}, {time:270, unit:"Unit_10_2"}, {time:280, unit:"Unit_10_2"}, {time:300, unit:"Unit_10_7"}, {time:320, unit:"Unit_10_2"}, {time:330, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_2"}, {time:350, unit:"Unit_10_7"}, {time:380, unit:"Unit_10_5"}, {time:410, unit:"Unit_10_7"}, {time:440, unit:"Unit_10_5"})}, {way:0, health_add:10, attackers:new Array({time:0, unit:"Unit_1_5"}, {time:50, unit:"Unit_1_5"}, {time:100, unit:"Unit_1_5"}, {time:110, unit:"Unit_10_7"}, {time:150, unit:"Unit_1_3"}, {time:200, unit:"Unit_1_3"}, {time:250, unit:"Unit_1_3"}, {time:260, unit:"Unit_10_7"}, {time:300, unit:"Unit_1_6"}, {time:350, unit:"Unit_1_6"}, {time:400, unit:"Unit_1_6"}, {time:410, unit:"Unit_1_7"}, {time:450, unit:"Unit_10_3"})}, {way:0, health_add:40, attackers:new Array({time:10, unit:"Unit_1_1"}, {time:90, unit:"Unit_1_2"}, {time:180, unit:"Unit_1_4"})}, {way:0, health_add:12, attackers:new Array({time:0, unit:"Unit_1_1"}, {time:30, unit:"Unit_1_2"}, {time:60, unit:"Unit_1_4"}, {time:90, unit:"Unit_1_1"}, {time:100, unit:"Unit_1_1"}, {time:110, unit:"Unit_1_1"}, {time:140, unit:"Unit_1_2"}, {time:150, unit:"Unit_1_2"}, {time:160, unit:"Unit_1_2"}, {time:190, unit:"Unit_1_4"}, {time:200, unit:"Unit_1_4"}, {time:210, unit:"Unit_1_4"}, {time:240, unit:"Unit_1_6"}, {time:260, unit:"Unit_1_2"}, {time:270, unit:"Unit_1_2"}, {time:280, unit:"Unit_1_2"}, {time:300, unit:"Unit_1_6"}, {time:320, unit:"Unit_1_2"}, {time:330, unit:"Unit_1_2"}, {time:340, unit:"Unit_1_2"}, {time:350, unit:"Unit_1_7"}, {time:380, unit:"Unit_1_5"}, {time:430, unit:"Unit_1_5"}, {time:480, unit:"Unit_1_5"})}, {way:0, health_add:8, attackers:new Array({time:0, unit:"Unit_10_6"}, {time:30, unit:"Unit_10_2"}, {time:60, unit:"Unit_10_2"}, {time:90, unit:"Unit_10_6"}, {time:110, unit:"Unit_10_1"}, {time:140, unit:"Unit_10_1"}, {time:170, unit:"Unit_10_6"}, {time:200, unit:"Unit_10_4"}, {time:230, unit:"Unit_10_4"}, {time:260, unit:"Unit_10_6"}, {time:290, unit:"Unit_10_2"}, {time:310, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_6"}, {time:370, unit:"Unit_10_1"}, {time:400, unit:"Unit_10_1"}, {time:430, unit:"Unit_10_6"}, {time:460, unit:"Unit_10_6"}, {time:490, unit:"Unit_10_6"})}, {way:0, health_add:10, attackers:new Array({time:0, unit:"Unit_10_6"}, {time:30, unit:"Unit_10_2"}, {time:60, unit:"Unit_10_2"}, {time:90, unit:"Unit_10_6"}, {time:110, unit:"Unit_10_1"}, {time:140, unit:"Unit_10_1"}, {time:170, unit:"Unit_10_6"}, {time:200, unit:"Unit_10_4"}, {time:230, unit:"Unit_10_4"}, {time:260, unit:"Unit_10_6"}, {time:290, unit:"Unit_10_2"}, {time:310, unit:"Unit_10_2"}, {time:340, unit:"Unit_10_6"}, {time:370, unit:"Unit_10_1"}, {time:400, unit:"Unit_10_1"}, {time:430, unit:"Unit_10_6"}, {time:460, unit:"Unit_10_6"}, {time:490, unit:"Unit_10_6"})}, {way:0, health_add:25, attackers:new Array({time:0, unit:"Unit_1_3"}, {time:100, unit:"Unit_1_5"}, {time:200, unit:"Unit_1_6"})}, {way:0, health_add:0, attackers:new Array({time:10, unit:"Boss_LvL_10"})})});
levels_matrix = new Array({matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(-1, 3, 4, 3, 4, 10, 10, 10, 10, 6, 15, 6, 15, 5)}, {matrix:new Array(0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(6, 0, 6, 3, 12, 3, 12, 5, 15, 8, 15, 11, 11, 11, 7, 7, 3, 7, 2, 6, 2, 5)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 3, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(1, 11, 4, 8, 6, 8, 8, 10, 11, 10, 16, 5, 16, 2, 11, 2, 9, 4, 6, 4, 5, 3)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 3, 0, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(18, 3, 13, 3, 13, 10, 9, 10, 9, 8, 8, 8, 7, 7, 7, 5, 8, 5, 9, 4, 9, 2, 3, 2, 3, 8, 2, 9)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(8, 13, 8, 10, 2, 10, 2, 6, 12, 6, 12, 10, 16, 10, 16, 2, 4, 2)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(18, 10, 14, 10, 14, 7, 16, 5, 16, 3, 13, 3, 12, 2, 9, 2, 9, 5, 10, 6, 10, 10, 9, 11, 7, 11, 5, 9, 3, 7, 2, 6, 2, 4, 3, 3, 5, 3)}, {matrix:new Array(0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 3, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(2, 0, 2, 3, 3, 4, 4, 5, 4, 7, 2, 7, 2, 10, 10, 10, 11, 9, 11, 7, 10, 6, 9, 5, 8, 4, 8, 2, 14, 2, 15, 3, 15, 5, 14, 6, 14, 9, 16, 11, 17, 10)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 3, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(18, 10, 7, 10, 5, 8, 3, 8, 2, 7, 2, 4, 3, 3, 6, 3, 7, 2, 12, 2, 14, 4, 16, 4, 16, 7, 12, 7, 11, 6, 10, 6)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(18, 9, 13, 9, 12, 8, 12, 5, 9, 2, 8, 2, 7, 3, 7, 9, 6, 10, 4, 10, 3, 9, 3, 6)}, {matrix:new Array(0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 1, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0), waypoints:new Array(0, 8, 2, 6, 4, 4, 6, 2, 7, 2, 9, 4, 9, 5, 7, 7, 7, 8, 9, 10, 10, 10, 12, 8, 14, 6, 15, 5, 16, 4)});
super();
checkEntitys();
}
private function checkEntitys(){
var _local1:* = 0;
while (_local1 < entitys.length) {
_local1++;
};
}
}
}//package app
Section 16
//cLevelStats (app.cLevelStats)
package app {
import flash.display.*;
import flash.events.*;
public class cLevelStats extends cAppMode {
public var button_site:SimpleButton;
public var header:MovieClip;
public var button_menu:SimpleButton;
public var button_continue:SimpleButton;
public var button_replay:SimpleButton;
private var m_buttonReplay;
private var m_buttonContinue;
private var m_buttonMenu;
private var m_buttonSite;
public function cLevelStats(){
var _local1:* = cGlobal.getLevelsNum();
var _local2:* = cGlobal.getCurrentLevelNum();
m_buttonReplay = getChildByName("button_replay");
m_buttonReplay.addEventListener(MouseEvent.CLICK, onReplay);
m_buttonReplay.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonContinue = getChildByName("button_continue");
m_buttonContinue.addEventListener(MouseEvent.CLICK, onContinue);
m_buttonContinue.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonMenu = getChildByName("button_menu");
m_buttonMenu.addEventListener(MouseEvent.CLICK, onMenu);
m_buttonMenu.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonSite = getChildByName("button_site");
m_buttonSite.addEventListener(MouseEvent.CLICK, onMoreFreeGames);
m_buttonSite.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
var _local3:* = getChildByName("header");
if (cGlobal.isWonLevel()){
m_buttonReplay.visible = false;
_local3.gotoAndStop(1);
} else {
_local3.gotoAndStop(2);
m_buttonContinue.visible = false;
m_buttonReplay.y = m_buttonContinue.y;
};
if ((_local2 + 1) >= _local1){
_local3.gotoAndStop(3);
m_buttonContinue.visible = false;
};
}
private function onReplay(_arg1:MouseEvent){
cHost.changeMode(cHost.s_eModeGame);
}
private function onContinue(_arg1:MouseEvent){
var _local2:* = cGlobal.getCurrentLevelNum();
_local2++;
cGlobal.setCurrentLevelNum(_local2);
cHost.changeMode(cHost.s_eModeGame);
}
private function onMenu(_arg1:MouseEvent){
cHost.changeMode(cHost.s_eModeMenu);
}
private function onMoreFreeGames(_arg1:MouseEvent){
cHost.openGametopCom("LevelStats", "Site");
}
}
}//package app
Section 17
//cLoadingPack (app.cLoadingPack)
package app {
import flash.display.*;
import flash.events.*;
import flash.net.*;
import flash.text.*;
public class cLoadingPack extends cAppMode {
public var loading_txt:TextField;
public var swf_name:TextField;
public var loadbar_mc:MovieClip;
private var progressBar:Sprite;
private var progressText:TextField;
public function cLoadingPack(){
printf("Loading external levels pack...");
var _local1:* = cGlobal.getLevelPackLoader();
_local1.contentLoaderInfo.addEventListener(Event.INIT, levelLoaded);
_local1.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, levelLoadingProgress);
_local1.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, levelLoadingError);
var _local2 = "levelsPack/levelsPack.swf";
_local1.load(new URLRequest(_local2));
var _local3:* = getChildByName("swf_name");
_local3.text = (("Loading ' " + _local2) + " '...");
progressBar = (getChildByName("loadbar_mc") as Sprite);
progressText = (getChildByName("loading_txt") as TextField);
}
override public function modeStart(){
}
override public function modeShutdown(){
}
public function levelLoaded(_arg1:Event){
printf("Levels pack was loaded successfully!");
cHost.changeMode(cHost.s_eModeMenu);
}
public function levelLoadingProgress(_arg1:ProgressEvent){
var _local2:* = _arg1.bytesLoaded;
var _local3:* = _arg1.bytesTotal;
var _local4:Number = Math.round(((_local2 / _local3) * 100));
progressBar.scaleX = (_local2 / _local3);
progressText.text = (_local4 + "%");
var _local5:* = (((("loading: " + Math.floor((_local2 / 0x0400))) + "/") + Math.floor((_local3 / 0x0400))) + "kb");
printf(_local5);
}
public function levelLoadingError(_arg1:IOErrorEvent){
printf(("Can't load external level pack: " + _arg1));
}
}
}//package app
Section 18
//cMenu (app.cMenu)
package app {
import flash.display.*;
import flash.events.*;
public class cMenu extends cAppMode {
public var button_site:SimpleButton;
public var button_new_game:SimpleButton;
public var button_help:SimpleButton;
public var button_sound:MovieClip;
private var m_buttonNewGame;
private var m_buttonHowToPlay;
private var m_buttonMoreFreeGames;
private var m_buttonSound;
public function cMenu(){
m_buttonNewGame = getChildByName("button_new_game");
m_buttonNewGame.addEventListener(MouseEvent.CLICK, onHowToPlay);
m_buttonNewGame.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonHowToPlay = getChildByName("button_help");
m_buttonHowToPlay.addEventListener(MouseEvent.CLICK, onHowToPlay);
m_buttonHowToPlay.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonMoreFreeGames = getChildByName("button_site");
m_buttonMoreFreeGames.addEventListener(MouseEvent.CLICK, onMoreFreeGames);
m_buttonMoreFreeGames.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
m_buttonSound = getChildByName("button_sound");
if (cHost.isSoundOn()){
m_buttonSound.gotoAndStop(1);
} else {
m_buttonSound.gotoAndStop(2);
};
m_buttonSound.addEventListener(MouseEvent.CLICK, onSound);
m_buttonSound.addEventListener(MouseEvent.MOUSE_OVER, cHost.onOverButton);
}
override public function modeStart(){
}
override public function modeShutdown(){
}
private function onNewGame(_arg1:MouseEvent){
cGlobal.setCurrentLevelNum(1);
cHost.changeMode(cHost.s_eModeGame);
}
private function onHowToPlay(_arg1:MouseEvent){
cHost.changeMode(cHost.s_eModeHelp);
}
private function onMoreFreeGames(_arg1:MouseEvent){
cHost.openGametopCom("MainMenu", "Site");
}
private function onSound(_arg1:MouseEvent){
cHost.toggleSound();
if (cHost.isSoundOn()){
m_buttonSound.gotoAndStop(1);
} else {
m_buttonSound.gotoAndStop(2);
};
}
}
}//package app
Section 19
//cModeContainer (app.cModeContainer)
package app {
import flash.display.*;
public class cModeContainer extends MovieClip {
}
}//package app
Section 20
//cPreloader (app.cPreloader)
package app {
import flash.display.*;
import Playtomic.*;
import flash.events.*;
import flash.text.*;
public class cPreloader extends MovieClip {
public var loader_gui:MovieClip;
public var myText:TextField;
public var myFormat:TextFormat;
private var progressBar:Sprite;
private var progressText:TextField;
public static const ENTRY_FRAME:Number = 3;
public static const DOCUMENT_CLASS:String = "app.cHost";
public function cPreloader(){
addFrameScript(0, frame1);
stop();
var _local1:* = getChildByName("loader_gui");
progressBar = (_local1.getChildByName("bar") as Sprite);
progressText = (_local1.getChildByName("tf") as TextField);
progressBar.scaleX = 0;
myFormat = new TextFormat();
myFormat.font = "Helvetica";
myFormat.color = 0xFFFFFF;
myFormat.size = 24;
myText = new TextField();
addChild(myText);
myText.text = "Movie is not yet loaded";
myText.autoSize = TextFieldAutoSize.LEFT;
myText.setTextFormat(myFormat);
loaderInfo.addEventListener(Event.INIT, initHandler);
loaderInfo.addEventListener(ProgressEvent.PROGRESS, progressHandler);
loaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loaderInfo.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
var _local2:* = 4428;
var _local3:* = "54bed2c1817c4775";
var _local4:* = "ad1a0144bb8d459f9c4eba15c62757";
if (cGlobal.isPlaytomic()){
Log.View(_local2, _local3, root.loaderInfo.loaderURL);
trace((((("----------PLAYTOMIC View: gameid = " + _local2) + "; guid = ") + _local3) + ";"));
};
}
private function initHandler(_arg1:Event):void{
myText.text = "";
myText.setTextFormat(myFormat);
}
private function progressHandler(_arg1:ProgressEvent):void{
myText.text = "";
myText.setTextFormat(myFormat);
var _local2:uint = _arg1.bytesLoaded;
var _local3:uint = _arg1.bytesTotal;
var _local4:Number = Math.round(((_local2 / _local3) * 100));
progressBar.scaleX = (_local2 / _local3);
progressText.text = (_local4 + "%");
}
private function completeHandler(_arg1:Event):void{
myText.text = "";
myText.setTextFormat(myFormat);
play();
addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
private function enterFrameHandler(_arg1:Event):void{
if (currentFrame >= _slot1.ENTRY_FRAME){
removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
stop();
main();
};
}
private function errorHandler(_arg1:IOErrorEvent):void{
myText.text = ("Sorry, there was an error: " + _arg1);
myText.setTextFormat(myFormat);
}
private function main():void{
var _local1:Class = (loaderInfo.applicationDomain.getDefinition(_slot1.DOCUMENT_CLASS) as Class);
var _local2:Sprite = (new (_local1) as Sprite);
_local2.name = "host";
addChild(_local2);
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownListener);
stage.addEventListener(MouseEvent.MOUSE_UP, mouseUpListener);
stage.addEventListener(MouseEvent.MOUSE_MOVE, mouseMoveListener);
}
private function keyDownListener(_arg1:KeyboardEvent){
var _local2:* = getChildByName("host");
_local2.hostKeyDown(_arg1);
}
private function keyUpListener(_arg1:KeyboardEvent){
var _local2:* = getChildByName("host");
_local2.hostKeyUp(_arg1);
}
public function mouseDownListener(_arg1:MouseEvent){
var _local2:* = getChildByName("host");
if (_local2){
_local2.hostMouseDown(_arg1);
};
}
public function mouseUpListener(_arg1:MouseEvent){
var _local2:* = getChildByName("host");
if (_local2){
_local2.hostMouseUp(_arg1);
};
}
public function mouseMoveListener(_arg1:MouseEvent){
var _local2:* = getChildByName("host");
if (_local2){
_local2.hostMouseMove(_arg1);
};
}
function frame1(){
MochiBot.track(this, "7fa24a86");
}
}
}//package app
Section 21
//cSplashEffect (app.cSplashEffect)
package app {
public class cSplashEffect extends cEntity {
private var m_needRadius:int;
public function cSplashEffect(){
setType(eSPLASH);
}
override public function update():void{
var _local1:* = 10;
var _local2:* = ((m_needRadius * 2) / _local1);
var _local3:* = getClip();
_local3.width = (_local3.width + _local2);
if (_local3.width >= (m_needRadius * 2)){
_local3.width = (m_needRadius * 2);
setNeedDelete(true);
};
_local3.height = _local3.width;
_local3.alpha = (_local3.alpha - (0.9 / _local1));
}
public function setNeedRadius(_arg1:int){
m_needRadius = _arg1;
var _local2:* = getClip();
_local2.width = (_local2.height = 0);
_local2.alpha = 1;
}
}
}//package app
Section 22
//cTower (app.cTower)
package app {
public class cTower extends cEntity {
private var m_isBuilded:Boolean;
private var m_buildTime:int;
private var m_targetArrayIndex;
private var m_targetId;
private var m_timeToFire:int;
private var m_price:int;
private var m_canAddNewBullet:Boolean;
private var m_lockTime:int;
public function cTower(){
setType(eTOWER);
m_targetArrayIndex = (m_targetId = -1);
m_canAddNewBullet = true;
m_lockTime = 0;
}
override public function init(){
m_timeToFire = 0;
m_isBuilded = false;
m_buildTime = cGlobal.getEntityDef(getEntityDefIndex()).build_time;
if (m_buildTime <= 0){
m_isBuilded = true;
return;
};
var _local1:* = getClip();
_local1.visible = false;
var _local2:* = cGlobal.generateMovieClipByStringExternalSWF(cGlobal.getEntityDef(getEntityDefIndex()).build_clip);
_local2.name = "build_clip";
addChild(_local2);
}
public function unlockSpamNewBullet():void{
m_canAddNewBullet = true;
}
public function lockSpamNewBullet():void{
m_canAddNewBullet = false;
m_lockTime = 0;
}
public function canAddNewBullet():Boolean{
return (m_canAddNewBullet);
}
override public function update():void{
if (!m_canAddNewBullet){
m_lockTime++;
if (m_lockTime > (24 * 60)){
unlockSpamNewBullet();
};
};
}
public function build(){
var _local1:*;
var _local2:*;
if (m_isBuilded){
return;
};
m_buildTime--;
if (m_buildTime <= 0){
m_isBuilded = true;
_local1 = getClip();
_local1.visible = true;
_local2 = getChildByName("build_clip");
removeChild(_local2);
};
}
public function isBuilded():Boolean{
return (m_isBuilded);
}
public function setTarget(_arg1:int, _arg2:int){
m_targetArrayIndex = _arg1;
m_targetId = _arg2;
}
public function isHaveTarget(){
if (m_targetArrayIndex < 0){
return (false);
};
return (true);
}
public function getTargetArrayIndex(){
return (m_targetArrayIndex);
}
public function getTargetId(){
return (m_targetId);
}
public function rotateGun(_arg1:int){
var _local2:* = getClip();
if (!_local2.head){
return;
};
_local2.head.rotation = _arg1;
}
public function getTimeToFire(){
return (m_timeToFire);
}
public function cooldownTimeToFire(){
m_timeToFire--;
}
public function resetTimeToFire(){
var _local1:* = cGlobal.getEntityDef(getEntityDefIndex());
m_timeToFire = _local1.fire_rate;
}
public function setPrice(_arg1:int){
m_price = _arg1;
}
public function getPrice(){
return (m_price);
}
}
}//package app
Section 23
//cTutorialMessage (app.cTutorialMessage)
package app {
import flash.display.*;
public class cTutorialMessage extends MovieClip {
private var m_clip:MovieClip;
private var m_startX:Number;
private var m_startY:Number;
private var m_sin_param:Number;
private var m_floatDirX:int;
private var m_floatDirY:int;
public function cTutorialMessage(){
m_clip = null;
this.alpha = 0;
m_startX = 0;
m_startY = 0;
m_sin_param = 0;
m_floatDirX = 0;
m_floatDirY = 1;
}
public function update():void{
this.alpha = (this.alpha + 0.07);
if (this.alpha > 1){
this.alpha = 1;
};
this.x = (m_startX + ((7 * m_floatDirX) * Math.sin(m_sin_param)));
this.y = (m_startY + ((7 * m_floatDirY) * Math.sin(m_sin_param)));
m_sin_param = (m_sin_param + 0.15);
}
public function setPos(){
m_startX = this.x;
m_startY = this.y;
}
public function setDir(_arg1:int, _arg2:int){
m_floatDirX = _arg1;
m_floatDirY = _arg2;
}
}
}//package app
Section 24
//Link (Playtomic.Link)
package Playtomic {
import flash.net.*;
public final class Link {
private static var Clicks:Array = new Array();
public static function Open(_arg1:String, _arg2:String, _arg3:String):Boolean{
var result:Boolean;
var url = _arg1;
var name = _arg2;
var group = _arg3;
var unique:int;
var bunique:int;
var total:int;
var btotal:int;
var fail:int;
var bfail:int;
var key:String = ((url + ".") + name);
var baseurl:String = url;
baseurl = baseurl.replace("http://", "");
if (baseurl.indexOf("/") > -1){
baseurl = baseurl.substring(0, baseurl.indexOf("/"));
};
if (baseurl.indexOf("?") > -1){
baseurl = baseurl.substring(0, baseurl.indexOf("?"));
};
baseurl = (("http://" + baseurl) + "/");
var baseurlname:String = baseurl;
if (baseurlname.indexOf("//") > -1){
baseurlname = baseurlname.substring((baseurlname.indexOf("//") + 2));
};
baseurlname = baseurlname.replace("www.", "");
if (baseurlname.indexOf("/") > -1){
baseurlname = baseurlname.substring(0, baseurlname.indexOf("/"));
};
try {
navigateToURL(new URLRequest(url));
if (Clicks.indexOf(key) > -1){
total = 1;
} else {
total = 1;
unique = 1;
Clicks.push(key);
};
if (Clicks.indexOf(baseurlname) > -1){
btotal = 1;
} else {
btotal = 1;
bunique = 1;
Clicks.push(baseurlname);
};
result = true;
} catch(err) {
fail = 1;
bfail = 1;
result = false;
};
Log.Link(baseurl, baseurlname.toLowerCase(), "DomainTotals", bunique, btotal, bfail);
Log.Link(url, name, group, unique, total, fail);
Log.ForceSend();
return (result);
}
}
}//package Playtomic
Section 25
//Log (Playtomic.Log)
package Playtomic {
import flash.events.*;
import flash.net.*;
import flash.utils.*;
import flash.system.*;
import flash.external.*;
public final class Log {
private static const PingF:Timer = new Timer(60000);
private static const PingR:Timer = new Timer(30000);
public static var Enabled:Boolean = false;
public static var Queue:Boolean = true;
public static var SWFID:int = 0;
public static var GUID:String = "";
public static var SourceUrl:String;
public static var BaseUrl:String;
public static var Cookie:SharedObject;
public static var Request:LogRequest;
private static var FirstPing:Boolean = true;
private static var Pings:int = 0;
private static var Plays:int = 0;
private static var HighestGoal:int = 0;
private static var Frozen:Boolean = false;
private static var FrozenQueue:Array = new Array();
private static var Customs:Array = new Array();
private static var LevelCounters:Array = new Array();
private static var LevelAverages:Array = new Array();
private static var LevelRangeds:Array = new Array();
public static function View(_arg1:int=0, _arg2:String="", _arg3:String=""):void{
if (SWFID > 0){
return;
};
SWFID = _arg1;
GUID = _arg2;
Enabled = true;
if ((((SWFID == 0)) || ((GUID == "")))){
Enabled = false;
return;
};
if (((((!((_arg3.indexOf("http://") == 0))) && (!((Security.sandboxType == "localWithNetwork"))))) && (!((Security.sandboxType == "localTrusted"))))){
Enabled = false;
return;
};
SourceUrl = GetUrl(_arg3);
if ((((((SourceUrl == null)) || ((SourceUrl == "")))) || ((SourceUrl.indexOf("https://") == 0)))){
Enabled = false;
return;
};
Security.allowDomain((("http://g" + Log.GUID) + ".api.playtomic.com/"));
Security.allowInsecureDomain((("http://g" + Log.GUID) + ".api.playtomic.com/"));
Security.loadPolicyFile((("http://g" + Log.GUID) + ".api.playtomic.com/crossdomain.xml"));
Request = LogRequest.Create();
Cookie = SharedObject.getLocal("playtomic");
var _local4:int = GetCookie("views");
Send(("v/" + (_local4 + 1)), true);
PingF.addEventListener(TimerEvent.TIMER, PingServer);
PingF.start();
}
public static function IncreaseViews():void{
var _local1:int = GetCookie("views");
_local1++;
SaveCookie("views", _local1);
}
public static function IncreasePlays():void{
Plays++;
}
public static function Play():void{
if (!Enabled){
return;
};
LevelCounters = new Array();
LevelAverages = new Array();
LevelRangeds = new Array();
Send(("p/" + (Plays + 1)), true);
}
private static function PingServer(... _args):void{
if (!Enabled){
return;
};
Pings++;
Send(((("t/" + (FirstPing) ? "y" : "n") + "/") + Pings), true);
if (FirstPing){
PingF.stop();
PingR.addEventListener(TimerEvent.TIMER, PingServer);
PingR.start();
FirstPing = false;
};
}
public static function CustomMetric(_arg1:String, _arg2:String=null, _arg3:Boolean=false):void{
if (!Enabled){
return;
};
if (_arg2 == null){
_arg2 = "";
};
if (_arg3){
if (Customs.indexOf(_arg1) > -1){
return;
};
Customs.push(_arg1);
};
Send(((("c/" + Clean(_arg1)) + "/") + Clean(_arg2)));
}
public static function LevelCounterMetric(_arg1:String, _arg2, _arg3:Boolean=false):void{
if (!Enabled){
return;
};
if (_arg3){
if (LevelCounters.indexOf(_arg1) > -1){
return;
};
LevelCounters.push(_arg1);
};
Send(((("lc/" + Clean(_arg1)) + "/") + Clean(_arg2)));
}
public static function LevelRangedMetric(_arg1:String, _arg2, _arg3:int, _arg4:Boolean=false):void{
if (!Enabled){
return;
};
if (_arg4){
if (LevelRangeds.indexOf(_arg1) > -1){
return;
};
LevelRangeds.push(_arg1);
};
Send(((((("lr/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3));
}
public static function LevelAverageMetric(_arg1:String, _arg2, _arg3:int, _arg4:Boolean=false):void{
if (!Enabled){
return;
};
if (_arg4){
if (LevelAverages.indexOf(_arg1) > -1){
return;
};
LevelAverages.push(_arg1);
};
Send(((((("la/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3));
}
public static function Link(_arg1:String, _arg2:String, _arg3:String, _arg4:int, _arg5:int, _arg6:int):void{
if (!Enabled){
return;
};
Send(((((((((((("l/" + Clean(_arg2)) + "/") + Clean(_arg3)) + "/") + Clean(_arg1)) + "/") + _arg4) + "/") + _arg5) + "/") + _arg6));
}
public static function Freeze():void{
Frozen = true;
}
public static function UnFreeze():void{
Frozen = false;
Request.MassQueue(FrozenQueue);
}
public static function ForceSend():void{
if (!Enabled){
return;
};
Request.Send();
Request = LogRequest.Create();
if (FrozenQueue.length > 0){
Request.MassQueue(FrozenQueue);
};
}
private static function Send(_arg1:String, _arg2:Boolean=false):void{
if (Frozen){
FrozenQueue.push(_arg1);
return;
};
Request.Queue(_arg1);
if (((((Request.Ready) || (_arg2))) || (!(Queue)))){
Request.Send();
Request = LogRequest.Create();
};
}
private static function Clean(_arg1:String):String{
while (_arg1.indexOf("/") > -1) {
_arg1 = _arg1.replace("/", "\\");
};
while (_arg1.indexOf("~") > -1) {
_arg1 = _arg1.replace("~", "-");
};
return (escape(_arg1));
}
private static function GetCookie(_arg1:String):int{
if (Cookie.data[_arg1] == undefined){
return (0);
};
return (int(Cookie.data[_arg1]));
}
private static function SaveCookie(_arg1:String, _arg2:int):void{
var _local3:SharedObject = SharedObject.getLocal("swfstats");
_local3.data[_arg1] = _arg2.toString();
_local3.flush();
}
private static function GetUrl(_arg1:String):String{
var url:String;
var defaulturl = _arg1;
if (ExternalInterface.available){
try {
url = String(ExternalInterface.call("window.location.href.toString"));
} catch(s:Error) {
url = defaulturl;
};
} else {
if ((((defaulturl.indexOf("http://") == 0)) || ((defaulturl.indexOf("https://") == 0)))){
url = defaulturl;
};
};
if ((((((url == null)) || ((url == "")))) || ((url == "null")))){
if ((((Security.sandboxType == "localWithNetwork")) || ((Security.sandboxType == "localTrusted")))){
url = "http://local-testing/";
} else {
url = null;
};
};
return (escape(url));
}
}
}//package Playtomic
Section 26
//LogRequest (Playtomic.LogRequest)
package Playtomic {
import flash.events.*;
import flash.net.*;
public final class LogRequest {
private var Sender:URLLoader;
private var Target:URLRequest;
private var Data:String;// = ""
private var BaseUrl:String;
public var Ready:Boolean;// = false
private static var Failed:int = 0;
private static var Pool:Array = new Array();
public function LogRequest(){
this.Sender = new URLLoader();
this.Sender.addEventListener(Event.COMPLETE, this.Complete, false, 1, false);
this.Sender.addEventListener(IOErrorEvent.IO_ERROR, this.IOErrorHandler, false, 0, true);
this.Sender.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.StatusChange, false, 0, true);
this.Sender.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.SecurityErrorHandler, false, 0, true);
this.Target = new URLRequest();
this.BaseUrl = ((("http://g" + Log.GUID) + ".api.playtomic.com/tracker/q.aspx?swfid=") + Log.SWFID);
}
public function MassQueue(_arg1:Array):void{
var _local3:LogRequest;
if (Failed > 3){
return;
};
var _local2:int = (_arg1.length - 1);
while (_local2 > -1) {
this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1[_local2]));
_arg1.splice(_local2, 1);
if (this.Data.length > 300){
_local3 = Create();
_local3.MassQueue(_arg1);
this.Ready = true;
this.Send();
return;
};
_local2--;
};
Log.Request = this;
}
public function Queue(_arg1:String):void{
if (Failed > 3){
return;
};
this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1));
if (this.Data.length > 300){
this.Ready = true;
};
}
public function Send():void{
this.Target.url = (((((((this.BaseUrl + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z");
this.Sender.load(this.Target);
}
private function Complete(_arg1:Event=null):void{
if ((((this.Data.indexOf("v/") == 0)) || ((this.Data.indexOf("~v/") > -1)))){
Log.IncreaseViews();
};
if ((((this.Data.indexOf("p/") == 0)) || ((this.Data.indexOf("~p/") > -1)))){
Log.IncreasePlays();
};
Pool.push(this);
}
private function IOErrorHandler(_arg1:IOErrorEvent):void{
Failed++;
}
private function SecurityErrorHandler(_arg1:SecurityErrorEvent):void{
}
private function StatusChange(_arg1:HTTPStatusEvent):void{
}
public static function Create():LogRequest{
var _local1:LogRequest = ((Pool.length > 0)) ? (Pool.pop() as LogRequest) : new (LogRequest);
_local1.Data = "";
_local1.Ready = false;
return (_local1);
}
}
}//package Playtomic
Section 27
//butSell_47 (TowerDefence_fla.butSell_47)
package TowerDefence_fla {
import flash.display.*;
import flash.text.*;
public dynamic class butSell_47 extends MovieClip {
public var tf:TextField;
public function butSell_47(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package TowerDefence_fla
Section 28
//butUpgr_48 (TowerDefence_fla.butUpgr_48)
package TowerDefence_fla {
import flash.display.*;
import flash.text.*;
public dynamic class butUpgr_48 extends MovieClip {
public var tf:TextField;
public var locked:MovieClip;
public function butUpgr_48(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package TowerDefence_fla
Section 29
//Grg_Die_tmp_224 (TowerDefence_fla.Grg_Die_tmp_224)
package TowerDefence_fla {
import flash.display.*;
public dynamic class Grg_Die_tmp_224 extends MovieClip {
public function Grg_Die_tmp_224(){
addFrameScript(39, frame40);
}
function frame40(){
stop();
}
}
}//package TowerDefence_fla
Section 30
//Knight_Die_tmp_217 (TowerDefence_fla.Knight_Die_tmp_217)
package TowerDefence_fla {
import flash.display.*;
public dynamic class Knight_Die_tmp_217 extends MovieClip {
public function Knight_Die_tmp_217(){
addFrameScript(62, frame63);
}
function frame63(){
stop();
}
}
}//package TowerDefence_fla
Section 31
//Orc01_Die_tmp_228 (TowerDefence_fla.Orc01_Die_tmp_228)
package TowerDefence_fla {
import flash.display.*;
public dynamic class Orc01_Die_tmp_228 extends MovieClip {
public function Orc01_Die_tmp_228(){
addFrameScript(20, frame21);
}
function frame21(){
stop();
}
}
}//package TowerDefence_fla
Section 32
//skel_chunk1_move_240 (TowerDefence_fla.skel_chunk1_move_240)
package TowerDefence_fla {
import flash.display.*;
public dynamic class skel_chunk1_move_240 extends MovieClip {
public function skel_chunk1_move_240(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
}
}
}//package TowerDefence_fla
Section 33
//skel_chunk2_move_238 (TowerDefence_fla.skel_chunk2_move_238)
package TowerDefence_fla {
import flash.display.*;
public dynamic class skel_chunk2_move_238 extends MovieClip {
public function skel_chunk2_move_238(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
}
}
}//package TowerDefence_fla
Section 34
//skel_chunk3_move_236 (TowerDefence_fla.skel_chunk3_move_236)
package TowerDefence_fla {
import flash.display.*;
public dynamic class skel_chunk3_move_236 extends MovieClip {
public function skel_chunk3_move_236(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
}
}
}//package TowerDefence_fla
Section 35
//SkeletalMage_Die_tmp_246 (TowerDefence_fla.SkeletalMage_Die_tmp_246)
package TowerDefence_fla {
import flash.display.*;
public dynamic class SkeletalMage_Die_tmp_246 extends MovieClip {
public function SkeletalMage_Die_tmp_246(){
addFrameScript(31, frame32);
}
function frame32(){
stop();
}
}
}//package TowerDefence_fla
Section 36
//Timeline_210 (TowerDefence_fla.Timeline_210)
package TowerDefence_fla {
import flash.display.*;
public dynamic class Timeline_210 extends MovieClip {
public function Timeline_210(){
addFrameScript(30, frame31);
}
function frame31(){
stop();
}
}
}//package TowerDefence_fla
Section 37
//tmp_cloud_212 (TowerDefence_fla.tmp_cloud_212)
package TowerDefence_fla {
import flash.display.*;
public dynamic class tmp_cloud_212 extends MovieClip {
public function tmp_cloud_212(){
addFrameScript(14, frame15);
}
function frame15(){
stop();
}
}
}//package TowerDefence_fla
Section 38
//tmp_cloud_fire_232 (TowerDefence_fla.tmp_cloud_fire_232)
package TowerDefence_fla {
import flash.display.*;
public dynamic class tmp_cloud_fire_232 extends MovieClip {
public function tmp_cloud_fire_232(){
addFrameScript(14, frame15);
}
function frame15(){
stop();
}
}
}//package TowerDefence_fla
Section 39
//tmp_cloud_fire_move_231 (TowerDefence_fla.tmp_cloud_fire_move_231)
package TowerDefence_fla {
import flash.display.*;
public dynamic class tmp_cloud_fire_move_231 extends MovieClip {
public function tmp_cloud_fire_move_231(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
}
}
}//package TowerDefence_fla
Section 40
//tmp_cloud_move_211 (TowerDefence_fla.tmp_cloud_move_211)
package TowerDefence_fla {
import flash.display.*;
public dynamic class tmp_cloud_move_211 extends MovieClip {
public function tmp_cloud_move_211(){
addFrameScript(24, frame25);
}
function frame25(){
stop();
}
}
}//package TowerDefence_fla
Section 41
//tmp_fire_flash_230 (TowerDefence_fla.tmp_fire_flash_230)
package TowerDefence_fla {
import flash.display.*;
public dynamic class tmp_fire_flash_230 extends MovieClip {
public function tmp_fire_flash_230(){
addFrameScript(14, frame15);
}
function frame15(){
stop();
}
}
}//package TowerDefence_fla
Section 42
//bullet_1 (bullet_1)
package {
import flash.display.*;
public dynamic class bullet_1 extends MovieClip {
}
}//package
Section 43
//bullet_1a (bullet_1a)
package {
import flash.display.*;
public dynamic class bullet_1a extends MovieClip {
}
}//package
Section 44
//bullet_1b (bullet_1b)
package {
import flash.display.*;
public dynamic class bullet_1b extends MovieClip {
}
}//package
Section 45
//bullet_2 (bullet_2)
package {
import flash.display.*;
public dynamic class bullet_2 extends MovieClip {
}
}//package
Section 46
//bullet_2a (bullet_2a)
package {
import flash.display.*;
public dynamic class bullet_2a extends MovieClip {
}
}//package
Section 47
//bullet_2b (bullet_2b)
package {
import flash.display.*;
public dynamic class bullet_2b extends MovieClip {
}
}//package
Section 48
//bullet_3 (bullet_3)
package {
import flash.display.*;
public dynamic class bullet_3 extends MovieClip {
}
}//package
Section 49
//bullet_3a (bullet_3a)
package {
import flash.display.*;
public dynamic class bullet_3a extends MovieClip {
}
}//package
Section 50
//bullet_3b (bullet_3b)
package {
import flash.display.*;
public dynamic class bullet_3b extends MovieClip {
}
}//package
Section 51
//castle (castle)
package {
import flash.display.*;
public dynamic class castle extends MovieClip {
}
}//package
Section 52
//castleHealthBar (castleHealthBar)
package {
import flash.display.*;
public dynamic class castleHealthBar extends MovieClip {
public var bar:MovieClip;
}
}//package
Section 53
//cell_disabled (cell_disabled)
package {
import flash.display.*;
public dynamic class cell_disabled extends MovieClip {
}
}//package
Section 54
//cGameGUI (cGameGUI)
package {
import flash.display.*;
import flash.text.*;
public dynamic class cGameGUI extends MovieClip {
public var wave_tf:TextField;
public var next_wave_message:MovieClip;
public var button_site:SimpleButton;
public var tower_icons:MovieClip;
public var button_win:SimpleButton;
public var debug:TextField;
public var tower_build:SimpleButton;
public var gold_tf:TextField;
public var tower_image:MovieClip;
public var tower_selected:MovieClip;
public var button_replay:SimpleButton;
}
}//package
Section 55
//explode (explode)
package {
import flash.display.*;
public dynamic class explode extends MovieClip {
public function explode(){
addFrameScript(21, frame22);
}
function frame22(){
stop();
}
}
}//package
Section 56
//exploRadius (exploRadius)
package {
import flash.display.*;
public dynamic class exploRadius extends MovieClip {
}
}//package
Section 57
//Explosion (Explosion)
package {
import flash.display.*;
public dynamic class Explosion extends MovieClip {
public function Explosion(){
addFrameScript(29, frame30);
}
function frame30(){
stop();
}
}
}//package
Section 58
//fire_radius (fire_radius)
package {
import flash.display.*;
public dynamic class fire_radius extends MovieClip {
}
}//package
Section 59
//frost_nova (frost_nova)
package {
import flash.display.*;
public dynamic class frost_nova extends MovieClip {
}
}//package
Section 60
//Goblin (Goblin)
package {
import flash.display.*;
public dynamic class Goblin extends MovieClip {
}
}//package
Section 61
//Grg (Grg)
package {
import flash.display.*;
public dynamic class Grg extends MovieClip {
}
}//package
Section 62
//Grg_Boss (Grg_Boss)
package {
import flash.display.*;
public dynamic class Grg_Boss extends MovieClip {
}
}//package
Section 63
//Grg_Die (Grg_Die)
package {
import flash.display.*;
public dynamic class Grg_Die extends MovieClip {
}
}//package
Section 64
//health_bar (health_bar)
package {
import flash.display.*;
public dynamic class health_bar extends MovieClip {
public var bar:MovieClip;
}
}//package
Section 65
//Knight (Knight)
package {
import flash.display.*;
public dynamic class Knight extends MovieClip {
}
}//package
Section 66
//Knight_Boss (Knight_Boss)
package {
import flash.display.*;
public dynamic class Knight_Boss extends MovieClip {
}
}//package
Section 67
//Knight_Die (Knight_Die)
package {
import flash.display.*;
public dynamic class Knight_Die extends MovieClip {
}
}//package
Section 68
//level_1 (level_1)
package {
import flash.display.*;
public dynamic class level_1 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 69
//level_10 (level_10)
package {
import flash.display.*;
public dynamic class level_10 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 70
//level_2 (level_2)
package {
import flash.display.*;
public dynamic class level_2 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 71
//level_3 (level_3)
package {
import flash.display.*;
public dynamic class level_3 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 72
//level_4 (level_4)
package {
import flash.display.*;
public dynamic class level_4 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 73
//level_5 (level_5)
package {
import flash.display.*;
public dynamic class level_5 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 74
//level_6 (level_6)
package {
import flash.display.*;
public dynamic class level_6 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 75
//level_7 (level_7)
package {
import flash.display.*;
public dynamic class level_7 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 76
//level_8 (level_8)
package {
import flash.display.*;
public dynamic class level_8 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 77
//level_9 (level_9)
package {
import flash.display.*;
public dynamic class level_9 extends MovieClip {
public var background:MovieClip;
public var road:MovieClip;
}
}//package
Section 78
//MochiBot (MochiBot)
package {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public dynamic class MochiBot extends Sprite {
public static function track(_arg1:Sprite, _arg2:String):MochiBot{
if (Security.sandboxType == "localWithFile"){
return (null);
};
var _local3:MochiBot = new (MochiBot);
_arg1.addChild(_local3);
Security.allowDomain("*");
Security.allowInsecureDomain("*");
var _local4 = "http://core.mochibot.com/my/core.swf";
var _local5:URLVariables = new URLVariables();
_local5["sb"] = Security.sandboxType;
_local5["v"] = Capabilities.version;
_local5["swfid"] = _arg2;
_local5["mv"] = "8";
_local5["fv"] = "9";
var _local6:String = _local3.root.loaderInfo.loaderURL;
if (_local6.indexOf("http") == 0){
_local5["url"] = _local6;
} else {
_local5["url"] = "local";
};
var _local7:URLRequest = new URLRequest(_local4);
_local7.contentType = "application/x-www-form-urlencoded";
_local7.method = URLRequestMethod.POST;
_local7.data = _local5;
var _local8:Loader = new Loader();
_local3.addChild(_local8);
_local8.load(_local7);
return (_local3);
}
}
}//package
Section 79
//Orc01 (Orc01)
package {
import flash.display.*;
public dynamic class Orc01 extends MovieClip {
}
}//package
Section 80
//Orc01_Die (Orc01_Die)
package {
import flash.display.*;
public dynamic class Orc01_Die extends MovieClip {
}
}//package
Section 81
//particle (particle)
package {
import flash.display.*;
public dynamic class particle extends MovieClip {
}
}//package
Section 82
//poison_nova (poison_nova)
package {
import flash.display.*;
public dynamic class poison_nova extends MovieClip {
}
}//package
Section 83
//road_cell (road_cell)
package {
import flash.display.*;
public dynamic class road_cell extends MovieClip {
}
}//package
Section 84
//select_frame (select_frame)
package {
import flash.display.*;
public dynamic class select_frame extends MovieClip {
}
}//package
Section 85
//Skeletal (Skeletal)
package {
import flash.display.*;
public dynamic class Skeletal extends MovieClip {
}
}//package
Section 86
//Skeletal_die (Skeletal_die)
package {
import flash.display.*;
public dynamic class Skeletal_die extends MovieClip {
}
}//package
Section 87
//SkeletalMage (SkeletalMage)
package {
import flash.display.*;
public dynamic class SkeletalMage extends MovieClip {
}
}//package
Section 88
//SkeletalMage_Boss (SkeletalMage_Boss)
package {
import flash.display.*;
public dynamic class SkeletalMage_Boss extends MovieClip {
}
}//package
Section 89
//SkeletalMage_Die (SkeletalMage_Die)
package {
import flash.display.*;
public dynamic class SkeletalMage_Die extends MovieClip {
}
}//package
Section 90
//SkeletalWarrior (SkeletalWarrior)
package {
import flash.display.*;
public dynamic class SkeletalWarrior extends MovieClip {
}
}//package
Section 91
//sndBuildTower (sndBuildTower)
package {
import flash.media.*;
public dynamic class sndBuildTower extends Sound {
}
}//package
Section 92
//sndButton (sndButton)
package {
import flash.media.*;
public dynamic class sndButton extends Sound {
}
}//package
Section 93
//sndEnemyAttack (sndEnemyAttack)
package {
import flash.media.*;
public dynamic class sndEnemyAttack extends Sound {
}
}//package
Section 94
//sndEnemyDie01 (sndEnemyDie01)
package {
import flash.media.*;
public dynamic class sndEnemyDie01 extends Sound {
}
}//package
Section 95
//sndEnemyDie02 (sndEnemyDie02)
package {
import flash.media.*;
public dynamic class sndEnemyDie02 extends Sound {
}
}//package
Section 96
//sndEnemyDie03 (sndEnemyDie03)
package {
import flash.media.*;
public dynamic class sndEnemyDie03 extends Sound {
}
}//package
Section 97
//sndEnemyDie04 (sndEnemyDie04)
package {
import flash.media.*;
public dynamic class sndEnemyDie04 extends Sound {
}
}//package
Section 98
//sndEnemyDie05 (sndEnemyDie05)
package {
import flash.media.*;
public dynamic class sndEnemyDie05 extends Sound {
}
}//package
Section 99
//sndEnemyDie06 (sndEnemyDie06)
package {
import flash.media.*;
public dynamic class sndEnemyDie06 extends Sound {
}
}//package
Section 100
//sndEnemyDie07 (sndEnemyDie07)
package {
import flash.media.*;
public dynamic class sndEnemyDie07 extends Sound {
}
}//package
Section 101
//sndLevelCompleted (sndLevelCompleted)
package {
import flash.media.*;
public dynamic class sndLevelCompleted extends Sound {
}
}//package
Section 102
//sndLevelFailed (sndLevelFailed)
package {
import flash.media.*;
public dynamic class sndLevelFailed extends Sound {
}
}//package
Section 103
//sndMusic (sndMusic)
package {
import flash.media.*;
public dynamic class sndMusic extends Sound {
}
}//package
Section 104
//sndPig (sndPig)
package {
import flash.media.*;
public dynamic class sndPig extends Sound {
}
}//package
Section 105
//sndSelectTower (sndSelectTower)
package {
import flash.media.*;
public dynamic class sndSelectTower extends Sound {
}
}//package
Section 106
//sndSellTower (sndSellTower)
package {
import flash.media.*;
public dynamic class sndSellTower extends Sound {
}
}//package
Section 107
//sndShootArcher (sndShootArcher)
package {
import flash.media.*;
public dynamic class sndShootArcher extends Sound {
}
}//package
Section 108
//sndShootCannon (sndShootCannon)
package {
import flash.media.*;
public dynamic class sndShootCannon extends Sound {
}
}//package
Section 109
//sndShootFrost (sndShootFrost)
package {
import flash.media.*;
public dynamic class sndShootFrost extends Sound {
}
}//package
Section 110
//sndShootLazer (sndShootLazer)
package {
import flash.media.*;
public dynamic class sndShootLazer extends Sound {
}
}//package
Section 111
//stop_build (stop_build)
package {
import flash.display.*;
public dynamic class stop_build extends MovieClip {
}
}//package
Section 112
//test (test)
package {
import flash.display.*;
public dynamic class test extends MovieClip {
}
}//package
Section 113
//test_level_1 (test_level_1)
package {
import flash.display.*;
public dynamic class test_level_1 extends MovieClip {
public var background:MovieClip;
public var way0:MovieClip;
public var cant_build:MovieClip;
}
}//package
Section 114
//test_level_10 (test_level_10)
package {
import flash.display.*;
public dynamic class test_level_10 extends MovieClip {
}
}//package
Section 115
//test_level_2 (test_level_2)
package {
import flash.display.*;
public dynamic class test_level_2 extends MovieClip {
public var castle:MovieClip;
public var background:MovieClip;
public var way0:MovieClip;
public var cant_build:MovieClip;
}
}//package
Section 116
//test_level_3 (test_level_3)
package {
import flash.display.*;
public dynamic class test_level_3 extends MovieClip {
public var castle:MovieClip;
public var background:MovieClip;
public var way0:MovieClip;
public var way1:MovieClip;
public var cant_build:MovieClip;
}
}//package
Section 117
//test_level_4 (test_level_4)
package {
import flash.display.*;
public dynamic class test_level_4 extends MovieClip {
public var castle:MovieClip;
public var background:MovieClip;
public var way0:MovieClip;
public var cant_build:MovieClip;
}
}//package
Section 118
//test_level_5 (test_level_5)
package {
import flash.display.*;
public dynamic class test_level_5 extends MovieClip {
public var castle:MovieClip;
public var background:MovieClip;
public var way0:MovieClip;
public var way1:MovieClip;
public var cant_build:MovieClip;
}
}//package
Section 119
//test_level_6 (test_level_6)
package {
import flash.display.*;
public dynamic class test_level_6 extends MovieClip {
public var castle:MovieClip;
public var background:MovieClip;
public var way0:MovieClip;
public var cant_build:MovieClip;
}
}//package
Section 120
//test_level_7 (test_level_7)
package {
import flash.display.*;
public dynamic class test_level_7 extends MovieClip {
}
}//package
Section 121
//test_level_8 (test_level_8)
package {
import flash.display.*;
public dynamic class test_level_8 extends MovieClip {
}
}//package
Section 122
//test_level_9 (test_level_9)
package {
import flash.display.*;
public dynamic class test_level_9 extends MovieClip {
}
}//package
Section 123
//text_bar (text_bar)
package {
import flash.display.*;
import flash.text.*;
public dynamic class text_bar extends MovieClip {
public var tf:TextField;
}
}//package
Section 124
//Tower_1 (Tower_1)
package {
import flash.display.*;
public dynamic class Tower_1 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 125
//Tower_1_Icon (Tower_1_Icon)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Tower_1_Icon extends MovieClip {
public var tf:TextField;
public var locked:MovieClip;
public function Tower_1_Icon(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 126
//Tower_1_II (Tower_1_II)
package {
import flash.display.*;
public dynamic class Tower_1_II extends MovieClip {
public var head:MovieClip;
}
}//package
Section 127
//Tower_1_III (Tower_1_III)
package {
import flash.display.*;
public dynamic class Tower_1_III extends MovieClip {
public var head:MovieClip;
}
}//package
Section 128
//Tower_2 (Tower_2)
package {
import flash.display.*;
public dynamic class Tower_2 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 129
//Tower_2_Icon (Tower_2_Icon)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Tower_2_Icon extends MovieClip {
public var tf:TextField;
public var locked:MovieClip;
public function Tower_2_Icon(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 130
//Tower_2_II (Tower_2_II)
package {
import flash.display.*;
public dynamic class Tower_2_II extends MovieClip {
public var head:MovieClip;
}
}//package
Section 131
//Tower_2_III (Tower_2_III)
package {
import flash.display.*;
public dynamic class Tower_2_III extends MovieClip {
public var head:MovieClip;
}
}//package
Section 132
//Tower_3 (Tower_3)
package {
import flash.display.*;
public dynamic class Tower_3 extends MovieClip {
}
}//package
Section 133
//Tower_3_Icon (Tower_3_Icon)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Tower_3_Icon extends MovieClip {
public var tf:TextField;
public var locked:MovieClip;
public function Tower_3_Icon(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 134
//Tower_3_II (Tower_3_II)
package {
import flash.display.*;
public dynamic class Tower_3_II extends MovieClip {
}
}//package
Section 135
//Tower_3_III (Tower_3_III)
package {
import flash.display.*;
public dynamic class Tower_3_III extends MovieClip {
}
}//package
Section 136
//Tower_4 (Tower_4)
package {
import flash.display.*;
public dynamic class Tower_4 extends MovieClip {
public var head:MovieClip;
}
}//package
Section 137
//Tower_4_Icon (Tower_4_Icon)
package {
import flash.display.*;
import flash.text.*;
public dynamic class Tower_4_Icon extends MovieClip {
public var tf:TextField;
public var locked:MovieClip;
public function Tower_4_Icon(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 138
//Tower_4_II (Tower_4_II)
package {
import flash.display.*;
public dynamic class Tower_4_II extends MovieClip {
public var head:MovieClip;
}
}//package
Section 139
//Tower_4_III (Tower_4_III)
package {
import flash.display.*;
public dynamic class Tower_4_III extends MovieClip {
public var head:MovieClip;
}
}//package
Section 140
//Tower_Build (Tower_Build)
package {
import flash.display.*;
public dynamic class Tower_Build extends MovieClip {
}
}//package
Section 141
//tutorial_01 (tutorial_01)
package {
import flash.display.*;
public dynamic class tutorial_01 extends MovieClip {
}
}//package
Section 142
//tutorial_02 (tutorial_02)
package {
import flash.display.*;
public dynamic class tutorial_02 extends MovieClip {
}
}//package
Section 143
//tutorial_03 (tutorial_03)
package {
import flash.display.*;
public dynamic class tutorial_03 extends MovieClip {
}
}//package
Section 144
//tutorial_03a (tutorial_03a)
package {
import flash.display.*;
public dynamic class tutorial_03a extends MovieClip {
}
}//package
Section 145
//tutorial_03b (tutorial_03b)
package {
import flash.display.*;
public dynamic class tutorial_03b extends MovieClip {
}
}//package
Section 146
//Unit_1 (Unit_1)
package {
import flash.display.*;
public dynamic class Unit_1 extends MovieClip {
}
}//package
Section 147
//Unit_2 (Unit_2)
package {
import flash.display.*;
public dynamic class Unit_2 extends MovieClip {
}
}//package
Section 148
//Unit_3 (Unit_3)
package {
import flash.display.*;
public dynamic class Unit_3 extends MovieClip {
}
}//package
Section 149
//Unit_poison_effect (Unit_poison_effect)
package {
import flash.display.*;
public dynamic class Unit_poison_effect extends MovieClip {
}
}//package
Section 150
//Unit_slow_effect (Unit_slow_effect)
package {
import flash.display.*;
public dynamic class Unit_slow_effect extends MovieClip {
}
}//package