Section 1
//DisplayableGameObject (com.greyhound.base.DisplayableGameObject)
package com.greyhound.base {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.ui.decorators.*;
public class DisplayableGameObject extends GameObject implements IToolTipProvider {
private var currentTile:Tile;
private var rotateGraphic:Boolean;
private var rotationSprite:Sprite;
private var graphic:GameObjectSprite;
private var childGraphic:DisplayObject;
private var displayObjectProvider:IDisplayObjectProvider;
private var uniqueNumber:int;
private static var uniqueCounter:int;
public function DisplayableGameObject(_arg1:IDisplayObjectProvider){
uniqueNumber = uniqueCounter++;
graphic = new GameObjectSprite(this);
currentTile = null;
rotateGraphic = false;
this.displayObjectProvider = _arg1;
}
public function hasDecorator(_arg1:int):Boolean{
var _local3:DisplayObject;
var _local2:int;
while (_local2 < graphic.numChildren) {
_local3 = graphic.getChildAt(_local2);
if ((_local3 is DecoratorDisplayObject)){
if ((_local3 as DecoratorDisplayObject).getDecoratorID() == _arg1){
return (true);
};
};
_local2++;
};
return (false);
}
public function setScreenLocation(_arg1:Point):void{
graphic.x = _arg1.x;
graphic.y = _arg1.y;
var _local2:Tile = super.getTile();
if (_local2 != currentTile){
if (currentTile != null){
currentTile.removeDisplayable(this);
if ((this is IPathfindingEffecting)){
currentTile.removePathfindingEffecting((this as IPathfindingEffecting));
};
};
_local2.addDisplayable(this);
currentTile = _local2;
if ((this is IPathfindingEffecting)){
_local2.addPathfindingEffecting((this as IPathfindingEffecting));
};
notifyTileChanged();
};
firePositionChanged();
}
final public function createDisplayObject():DisplayObject{
return (displayObjectProvider.createDisplayObject(this));
}
public function getDebugName():String{
return (((this + ":") + uniqueNumber));
}
override protected function notifyLeftEnvironment(_arg1:GameObject, _arg2:GameObject):void{
super.notifyLeftEnvironment(_arg1, _arg2);
if ((_arg2 is World)){
(_arg2 as DisplayableGameObject).graphic.removeChild(graphic);
};
if (currentTile != null){
currentTile.removeDisplayable(this);
if ((this is IPathfindingEffecting)){
currentTile.removePathfindingEffecting((this as IPathfindingEffecting));
};
currentTile = null;
};
}
public function setRotateGraphic(_arg1:Boolean):void{
rotateGraphic = _arg1;
}
public function removeDecorator(_arg1:int):void{
var _local3:DisplayObject;
var _local5:Object;
var _local2:Array = new Array();
var _local4:int;
while (_local4 < graphic.numChildren) {
_local3 = graphic.getChildAt(_local4);
if ((_local3 is DecoratorDisplayObject)){
if ((_local3 as DecoratorDisplayObject).getDecoratorID() == _arg1){
_local2.push(_local3);
};
};
_local4++;
};
for each (_local5 in _local2) {
_local3 = (_local5 as DisplayObject);
if (_local3.parent == graphic){
graphic.removeChild(_local3);
};
};
}
public function addDecorator(_arg1:int):void{
var _local2:IDecorator = DecoratorFactory.createDecorator(_arg1);
var _local3:DisplayObject = new DecoratorDisplayObject(_local2);
_local3.x = childGraphic.x;
_local3.y = childGraphic.y;
graphic.addChild(_local3);
}
public function setFacing(_arg1:Number):void{
if (rotateGraphic){
rotationSprite.rotation = _arg1;
};
}
protected function notifyTileChanged():void{
}
override protected function notifyEnteredNewEnvironment(_arg1:GameObject):void{
super.notifyEnteredNewEnvironment(_arg1);
if (childGraphic == null){
childGraphic = createDisplayObject();
if (rotateGraphic){
rotationSprite = new Sprite();
rotationSprite.addChild(childGraphic);
graphic.addChild(rotationSprite);
} else {
graphic.addChild(childGraphic);
};
childGraphic.y = (childGraphic.height * -0.5);
childGraphic.x = (childGraphic.width * -0.5);
};
if ((getEnvironment() is World)){
(getEnvironment() as DisplayableGameObject).graphic.addChild(graphic);
};
}
override public function getTile():Tile{
if (currentTile == null){
if ((getEnvironment() is World)){
trace("Something in the world had no current tile");
} else {
return (getEnvironment().getTile());
};
};
return (currentTile);
}
public function adjustChildSize(_arg1:Event):void{
if (childGraphic != null){
childGraphic.y = (childGraphic.height * -0.5);
childGraphic.x = (childGraphic.width * -0.5);
};
(_arg1.target as DisplayObject).removeEventListener(Event.COMPLETE, adjustChildSize);
}
public function handleDoubleClick():void{
}
protected function getRootGraphic():GameObjectSprite{
return (graphic);
}
public function getToolTip():String{
return ("The tooltip was not set correctly");
}
public function getScreenLocation():Point{
if ((getEnvironment() is World)){
return (new Point(graphic.x, graphic.y));
};
return (getTile().getScreenLocation());
}
protected function getGraphic():DisplayObject{
return (childGraphic);
}
}
}//package com.greyhound.base
Section 2
//GameObject (com.greyhound.base.GameObject)
package com.greyhound.base {
import com.greyhound.world.*;
public class GameObject implements IChangeable {
private var world:World;
private var environment:GameObject;
private var duration:int;
private var destroyed:Boolean;
private var pendingHeartbeatSpeed:int;
private var heartbeatSpeed:int;
private var heartbeatSuspended:Boolean;
private var inventory:Array;
private var heartbeatCounter:int;
private var changeListeners:Array;
private var inventoryChangeListeners:Array;
public function GameObject(){
inventory = new Array();
pendingHeartbeatSpeed = -1;
heartbeatSuspended = false;
world = null;
inventoryChangeListeners = new Array();
changeListeners = new Array();
duration = -1;
}
protected function notifyLeftEnvironment(_arg1:GameObject, _arg2:GameObject):void{
}
public function addChangeListener(_arg1:IChangeListener):void{
changeListeners.push(_arg1);
}
protected function fireChange():void{
var _local1:Array;
var _local2:Object;
if (!destroyed){
_local1 = changeListeners.slice();
for each (_local2 in _local1) {
(_local2 as IChangeListener).notifyChanged(this);
};
} else {
trace("Warning fire change on destroyed object");
};
}
public function isDestroyed():Boolean{
return (destroyed);
}
public function setDuration(_arg1:int):void{
this.duration = _arg1;
}
protected function heartBeat(_arg1:int):void{
}
protected function notifyObjectLeft(_arg1:GameObject, _arg2:GameObject):void{
}
public function addInventoryChangeListener(_arg1:IInventoryChangeListener):void{
inventoryChangeListeners.push(_arg1);
}
public function setHeartBeatSuspended(_arg1:Boolean):void{
heartbeatSuspended = _arg1;
}
protected function notifyObjectEnteredEnvironment(_arg1:GameObject, _arg2:GameObject):void{
}
public function getInventory():Array{
return (inventory.slice());
}
final public function worldHeartBeat(_arg1:int):void{
if (((!(heartbeatSuspended)) && ((heartbeatSpeed > 0)))){
heartbeatCounter = (heartbeatCounter - _arg1);
while ((((heartbeatCounter <= 0)) && (!(destroyed)))) {
heartbeatCounter = (heartbeatCounter + heartbeatSpeed);
heartBeat(heartbeatSpeed);
};
};
if (duration > 0){
duration = (duration - _arg1);
if ((((duration <= 0)) && (!(destroyed)))){
moveTo(null);
};
};
}
public function moveTo(_arg1:GameObject):void{
var _local3:Object;
var _local4:Array;
var _local5:Object;
var _local2:GameObject = environment;
if (((!((environment == null))) && ((_arg1 == environment)))){
trace("Tried to move something where it already was");
return;
};
if (_arg1 == null){
if (destroyed){
trace("Tried to destroy something twice");
};
for each (_local3 in inventory) {
_local3.moveTo(null);
};
if (heartbeatSpeed != 0){
if (world != null){
world.removeHeartBeat(this);
};
};
if (environment != null){
environment.removeGameObject(this, null);
};
destroyed = true;
notifyDestroyed();
_local4 = changeListeners.slice();
for each (_local5 in _local4) {
(_local5 as IChangeListener).notifyChangeableDestroyed(this);
};
changeListeners = null;
} else {
if (environment != null){
environment.removeGameObject(this, _arg1);
};
_arg1.addGameObject(this, _local2);
if ((_arg1 is World)){
notifyEnteredWorld((_arg1 as World));
};
};
}
protected function setHeartbeatSpeed(_arg1:int):void{
if (getWorld() == null){
pendingHeartbeatSpeed = _arg1;
} else {
if (heartbeatSpeed == 0){
if (_arg1 != 0){
getWorld().addHeartBeat(this);
heartbeatSpeed = Math.max(25, _arg1);
};
} else {
if (_arg1 == 0){
getWorld().removeHeartBeat(this);
heartbeatSpeed = 0;
} else {
heartbeatSpeed = Math.max(25, _arg1);
};
};
};
}
protected function firePositionChanged():void{
var _local1:Object;
for each (_local1 in changeListeners) {
(_local1 as IChangeListener).notifyPositionChanged(this);
};
}
public function removeChangeListener(_arg1:IChangeListener):void{
changeListeners.splice(changeListeners.indexOf(_arg1), 1);
}
public function getTile():Tile{
var _local1:GameObject = this;
while (((!((_local1.environment == null))) && (!((_local1.environment is World))))) {
_local1 = _local1.environment;
};
return (_local1.getWorld().getTileAt((_local1 as DisplayableGameObject).getScreenLocation()));
}
protected function makeWorld():void{
if ((this is World)){
world = (this as World);
} else {
trace("Tired to make world something that wasn't a world");
};
}
public function hasDuration():Boolean{
return (!((duration == -1)));
}
protected function notifyDestroyed():void{
}
private function addGameObject(_arg1:GameObject, _arg2:GameObject):void{
var _local3:Object;
var _local5:Object;
inventory.push(_arg1);
_arg1.environment = this;
if ((this is World)){
_arg1.world = (this as World);
};
notifyObjectEntered(_arg1, _arg2);
_arg1.notifyEnteredNewEnvironment(_arg2);
for each (_local3 in inventory) {
if (_local3 != _arg1){
_local3.notifyObjectEnteredEnvironment(_arg1, _arg2);
};
};
if (((!((this is World))) && (!((world == null))))){
_arg1.notifyEnteredWorld(world);
};
var _local4:Array = inventoryChangeListeners.slice();
for each (_local5 in _local4) {
(_local5 as IInventoryChangeListener).objectAdded(_arg1);
};
}
protected function notifyEnteredWorld(_arg1:World):void{
var _local2:Object;
this.world = _arg1;
for each (_local2 in inventory) {
(_local2 as GameObject).notifyEnteredWorld(_arg1);
};
if (pendingHeartbeatSpeed != -1){
setHeartbeatSpeed(pendingHeartbeatSpeed);
pendingHeartbeatSpeed = -1;
};
}
public function getEnvironment():GameObject{
return (environment);
}
protected function notifyEnteredNewEnvironment(_arg1:GameObject):void{
}
public function removeInventoryChangeListener(_arg1:IInventoryChangeListener):void{
inventoryChangeListeners.splice(inventoryChangeListeners.indexOf(_arg1), 1);
}
public function getTimeToNextHeartBeat():int{
return (Math.max(0, (heartbeatSpeed - heartbeatCounter)));
}
public function getWorld():World{
return (world);
}
private function removeGameObject(_arg1:GameObject, _arg2:GameObject):void{
var _local4:Array;
var _local5:Object;
var _local3:int = inventory.indexOf(_arg1);
if (_local3 != -1){
inventory.splice(_local3, 1);
_arg1.environment = null;
_arg1.world = null;
notifyObjectLeft(_arg1, _arg2);
_arg1.notifyLeftEnvironment(_arg2, this);
_local4 = inventoryChangeListeners.slice();
for each (_local5 in _local4) {
(_local5 as IInventoryChangeListener).objectRemoved(_arg1);
};
} else {
trace("Tried to remove something that wasnt in inventory");
};
}
protected function notifyObjectEntered(_arg1:GameObject, _arg2:GameObject):void{
}
}
}//package com.greyhound.base
Section 3
//IChangeable (com.greyhound.base.IChangeable)
package com.greyhound.base {
public interface IChangeable {
function removeChangeListener(_arg1:IChangeListener):void;
function addChangeListener(_arg1:IChangeListener):void;
}
}//package com.greyhound.base
Section 4
//IChangeListener (com.greyhound.base.IChangeListener)
package com.greyhound.base {
public interface IChangeListener {
function notifyPositionChanged(_arg1:IChangeable):void;
function notifyChanged(_arg1:IChangeable):void;
function notifyChangeableDestroyed(_arg1:IChangeable):void;
}
}//package com.greyhound.base
Section 5
//IInventoryChangeListener (com.greyhound.base.IInventoryChangeListener)
package com.greyhound.base {
public interface IInventoryChangeListener {
function objectRemoved(_arg1:GameObject):void;
function objectAdded(_arg1:GameObject):void;
}
}//package com.greyhound.base
Section 6
//APILoader (com.greyhound.common.kongregate.APILoader)
package com.greyhound.common.kongregate {
import flash.events.*;
import com.greyhound.common.*;
import flash.display.*;
import flash.net.*;
public class APILoader extends Sprite implements ILeaveOnStage {
public static var Kongregate:Object;
public function loadAPI():void{
var _local1:Object = LoaderInfo(root.loaderInfo).parameters;
var _local2:String = ((_local1.api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf"));
trace(("API path: " + _local2));
var _local3:URLRequest = new URLRequest(_local2);
var _local4:Loader = new Loader();
_local4.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
_local4.load(_local3);
this.addChild(_local4);
}
private function loadComplete(_arg1:Event):void{
Kongregate = _arg1.target.content;
Kongregate.services.connect();
trace(("\n" + Kongregate.services));
trace(("\n" + Kongregate.user));
trace(("\n" + Kongregate.scores));
trace(("\n" + Kongregate.stats));
}
public static function submitScore(_arg1:Number, _arg2:String=null):void{
Kongregate.scores.submit(_arg1, _arg2);
}
public static function submitStat(_arg1:String, _arg2:Number):void{
Kongregate.stats.submit(_arg1, _arg2);
}
}
}//package com.greyhound.common.kongregate
Section 7
//AdLoader (com.greyhound.common.ui.AdLoader)
package com.greyhound.common.ui {
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class AdLoader {
private static var cpmstarLoader:Loader;
public static function LoadAd(_arg1:int, _arg2:int):DisplayObject{
Security.allowDomain("server.cpmstar.com");
var _local3 = "http://server.cpmstar.com/adviewas3.swf";
cpmstarLoader = new Loader();
cpmstarLoader.load(new URLRequest(((((_local3 + "?poolid=") + _arg1) + "&subpoolid=") + _arg2)));
return (cpmstarLoader);
}
}
}//package com.greyhound.common.ui
Section 8
//Floater (com.greyhound.common.ui.Floater)
package com.greyhound.common.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import flash.utils.*;
import flash.text.*;
public class Floater extends Sprite {
private var duration:int;
private var timer:Timer;
private var floatSpeed:int;
public function Floater(_arg1:Stage, _arg2:int, _arg3:int, _arg4:DisplayObject=null, _arg5:int=40, _arg6:int=4000){
timer = new Timer(_arg5);
timer.addEventListener(TimerEvent.TIMER, tick);
this.floatSpeed = _arg5;
this.duration = _arg6;
this.x = Math.max(0, _arg2);
this.y = Math.max(0, _arg3);
_arg1.addChild(this);
if (_arg4 != null){
addChild(_arg4);
};
if ((width + _arg2) > _arg1.stageWidth){
_arg2 = (_arg1.stageWidth - width);
};
if ((height + _arg3) > _arg1.stageHeight){
_arg3 = (_arg1.stageHeight - height);
};
timer.start();
}
private function tick(_arg1:Event):void{
y--;
duration = (duration - floatSpeed);
if (duration <= 0){
timer.stop();
if (parent != null){
parent.removeChild(this);
};
};
}
public static function floatText(_arg1:DisplayObject, _arg2:String, _arg3:int=0, _arg4:int=0, _arg5:uint=0xFFFFFF, _arg6:int=12):void{
var _local7:TextField = TextFieldFactory.createText(_arg2, _arg5, _arg6);
var _local8:Sprite = new Sprite();
_local8.addChild(_local7);
float(_arg1, _local8, _arg3, _arg4);
}
public static function floatTextAt(_arg1:Point, _arg2:Stage, _arg3:String, _arg4:uint=0xFFFFFF, _arg5:int=12):void{
var _local6:TextField = TextFieldFactory.createText(_arg3, _arg4, _arg5);
var _local7:Sprite = new Sprite();
_local7.addChild(_local6);
new Floater(_arg2, _arg1.x, _arg1.y).addChild(_local7);
}
public static function float(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:int=0, _arg4:int=0):void{
var _local5:Rectangle = _arg1.getBounds(_arg1.stage);
new Floater(_arg1.stage, (_local5.x + _arg3), (_local5.y + _arg4)).addChild(_arg2);
}
}
}//package com.greyhound.common.ui
Section 9
//ILeaveOnStage (com.greyhound.common.ILeaveOnStage)
package com.greyhound.common {
public interface ILeaveOnStage {
}
}//package com.greyhound.common
Section 10
//LeaveOnStageContainer (com.greyhound.common.LeaveOnStageContainer)
package com.greyhound.common {
import flash.display.*;
public class LeaveOnStageContainer extends Sprite implements ILeaveOnStage {
}
}//package com.greyhound.common
Section 11
//MochiBot (com.greyhound.common.MochiBot)
package com.greyhound.common {
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 com.greyhound.common
Section 12
//BonusManager (com.greyhound.equipment.BonusManager)
package com.greyhound.equipment {
import com.greyhound.*;
public class BonusManager {
private var itemQualityModifier:Number;
private var bonuses:Array;
private var equipment:Equipment;
private static const STRENGTH_BONUS:int = 0;
private static const BASE_RANGED_RESISTANCE_BONUS:Number = 0.3;
public static const EPIC:int = 4;
private static const STATS_ON_NORMAL:int = 1;
private static const MELEE_RESISTANCE_BONUS:int = 3;
public static const MAGIC:int = 2;
private static const BASE_MAX_HP:Number = 100;
private static const BONUS_ARRAY_SIZE:int = (HASTE_BONUS + 1);
private static const BASE_MAGIC_RESISTANCE_BONUS:Number = 0.3;
public static const LEGENDARY:int = 5;
private static const BASE_MAGIC:Number = 5;
private static const MAX_HP_BONUS:int = 7;
private static const STATS_ON_EPIC:int = 4;
private static const RARE_ITEM_MODIFIER:Number = 1.2;
public static const RARE:int = 3;
private static const NORMAL_ITEM_MODIFIER:Number = 1;
private static const BASE_STRENGTH_BONUS:Number = 1;
private static const HASTE_BONUS:int = 8;
private static const DEXTERITY_BONUS:int = 1;
private static const BASE_MELEE_RESISTANCE_BONUS:Number = 0.3;
private static const BASE_DEXTERITY_BONUS:Number = 1;
private static const STATS_ON_RARE:int = 3;
private static const BASE_RANGED_RESISTANCE:Number = 3;
private static const EPIC_ITEM_MODIFIER:Number = 1.3;
private static const MAGIC_BONUS:int = 2;
private static const MAGIC_ITEM_MODIFIER:Number = 1.1;
public static const ARTIFACT:int = 6;
private static const BASE_MELEE_RESISTANCE:Number = 3;
private static const ARTIFACT_ITEM_MODIFIER:Number = 1.5;
private static const BASE_MAX_HP_BONUS:Number = 20;
private static const BASE_MAGIC_RESISTANCE:Number = 3;
private static const LEGENDARY_ITEM_MODIFIER:Number = 1.4;
private static const BASE_DEXTERITY:Number = 5;
private static const BASE_MAGIC_BONUS:Number = 1;
public static const NORMAL:int = 1;
private static const BASE_HASTE_BONUS:Number = 0.3;
private static const MAGIC_RESISTANCE_BONUS:int = 5;
private static const STATS_ON_MAGIC:int = 2;
private static const SPEED_BONUS:int = 6;
private static const BASE_STRENGTH:Number = 5;
private static const RANGED_RESISTANCE_BONUS:int = 4;
private static const STATS_ON_ARTIFACT:int = 6;
private static const BASE_SPEED_BONUS:Number = 0.0002;
private static const STATS_ON_LEGENDARY:int = 5;
private static const BASE_HASTE:Number = 3;
private static const BASE_SPEED:Number = 0.0006;
public function BonusManager(_arg1:Equipment){
var _local2:int;
var _local5:int;
super();
this.equipment = _arg1;
bonuses = new Array(BONUS_ARRAY_SIZE);
switch (_arg1.getItemQuality()){
case NORMAL:
itemQualityModifier = NORMAL_ITEM_MODIFIER;
break;
case MAGIC:
itemQualityModifier = MAGIC_ITEM_MODIFIER;
break;
case RARE:
itemQualityModifier = RARE_ITEM_MODIFIER;
break;
case EPIC:
itemQualityModifier = EPIC_ITEM_MODIFIER;
break;
case LEGENDARY:
itemQualityModifier = LEGENDARY_ITEM_MODIFIER;
break;
case ARTIFACT:
itemQualityModifier = ARTIFACT_ITEM_MODIFIER;
break;
default:
trace(("Unknown item quality:" + _arg1.getItemQuality()));
itemQualityModifier = 1;
break;
};
switch (_arg1.getItemQuality()){
case NORMAL:
_local2 = STATS_ON_NORMAL;
break;
case MAGIC:
_local2 = STATS_ON_MAGIC;
break;
case RARE:
_local2 = STATS_ON_RARE;
break;
case EPIC:
_local2 = STATS_ON_EPIC;
break;
case LEGENDARY:
_local2 = STATS_ON_LEGENDARY;
break;
case ARTIFACT:
_local2 = STATS_ON_ARTIFACT;
break;
default:
trace(("unknown item quality:" + _arg1.getItemQuality()));
};
var _local3:Array = new Array();
var _local4:int;
while (_local4 < BONUS_ARRAY_SIZE) {
_local3.push(_local4);
_local4++;
};
_local4 = 0;
while ((((_local4 < _local2)) && ((_local3.length > 0)))) {
_local5 = (Math.random() * _local3.length);
bonuses[_local3[_local5]] = true;
_local3.splice(_local5, 1);
_local4++;
};
}
public function getMeleeResistanceBonus():Number{
if ((bonuses[MELEE_RESISTANCE_BONUS] as Boolean)){
return ((BASE_MELEE_RESISTANCE + ((BASE_MELEE_RESISTANCE_BONUS * itemQualityModifier) * equipment.getItemLevel())));
};
return (0);
}
public function getRangedResistanceBonus():Number{
if ((bonuses[RANGED_RESISTANCE_BONUS] as Boolean)){
return ((BASE_RANGED_RESISTANCE + ((BASE_RANGED_RESISTANCE_BONUS * itemQualityModifier) * equipment.getItemLevel())));
};
return (0);
}
public function getHasteBonus():int{
if ((bonuses[HASTE_BONUS] as Boolean)){
return (Math.round((BASE_HASTE + ((BASE_HASTE_BONUS * itemQualityModifier) * equipment.getItemLevel()))));
};
return (0);
}
public function getSpeedBonus():Number{
if ((bonuses[SPEED_BONUS] as Boolean)){
return ((BASE_SPEED + ((BASE_SPEED_BONUS * itemQualityModifier) * equipment.getItemLevel())));
};
return (0);
}
public function getStrengthBonus():int{
if ((bonuses[STRENGTH_BONUS] as Boolean)){
return (Math.round((BASE_STRENGTH + ((BASE_STRENGTH_BONUS * itemQualityModifier) * equipment.getItemLevel()))));
};
return (0);
}
public function getMaxHpBonus():int{
if ((bonuses[MAX_HP_BONUS] as Boolean)){
return (Math.round((BASE_MAX_HP + ((BASE_MAX_HP_BONUS * itemQualityModifier) * equipment.getItemLevel()))));
};
return (0);
}
public function getDexterityBonus():int{
if ((bonuses[DEXTERITY_BONUS] as Boolean)){
return (Math.round((BASE_DEXTERITY + ((BASE_DEXTERITY_BONUS * itemQualityModifier) * equipment.getItemLevel()))));
};
return (0);
}
public function getMagicResistanceBonus():Number{
if ((bonuses[MAGIC_RESISTANCE_BONUS] as Boolean)){
return ((BASE_MAGIC_RESISTANCE + ((BASE_MAGIC_RESISTANCE_BONUS * itemQualityModifier) * equipment.getItemLevel())));
};
return (0);
}
public function getMagicBonus():int{
if ((bonuses[MAGIC_BONUS] as Boolean)){
return (Math.round((BASE_MAGIC + ((BASE_MAGIC_BONUS * itemQualityModifier) * equipment.getItemLevel()))));
};
return (0);
}
public function bonusesMatch(_arg1:BonusManager):Boolean{
var _local2:int;
while (_local2 < bonuses.length) {
if (bonuses[_local2] != _arg1.bonuses[_local2]){
return (false);
};
_local2++;
};
return (true);
}
public function getDescription():String{
var _local1 = "";
var _local2:Number = getStrengthBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + _local2) + " strength\n"));
};
_local2 = getDexterityBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + _local2) + " dexterity\n"));
};
_local2 = getMagicBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + _local2) + " magic\n"));
};
_local2 = getSpeedBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + Tools.round((_local2 * MyPreloader.FRAMERATE), 2)) + " speed(Pixels per second)\n"));
};
_local2 = getMeleeResistanceBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + Tools.round(_local2, 2)) + " melee Resistance\n"));
};
_local2 = getRangedResistanceBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + Tools.round(_local2, 2)) + " ranged resistance\n"));
};
_local2 = getMagicResistanceBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + Tools.round(_local2, 2)) + " magic resistance\n"));
};
_local2 = getMaxHpBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + _local2) + " max hp\n"));
};
_local2 = getHasteBonus();
if (_local2 != 0){
_local1 = (_local1 + (("+ " + _local2) + "% haste\n"));
};
return (_local1);
}
}
}//package com.greyhound.equipment
Section 13
//Equipment (com.greyhound.equipment.Equipment)
package com.greyhound.equipment {
import flash.display.*;
import com.greyhound.base.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.common.kongregate.*;
public class Equipment extends GameObject {
private var itemQualityModifier:Number;
private var name:String;
private var itemQuality:int;
private var bonusManager:BonusManager;
private var itemLevel:int;
private var slot:String;
public static const WEAPON_SLOT:String = "Weapon";
public static const GLOVES_SLOT:String = "Gloves";
public static const SLOT_TYPES:int = 9;
public static const PANTS_SLOT:String = "Pants";
public static const TORSO_SLOT:String = "Torso";
public static const AMULET_SLOT:String = "Amulet";
public static const RING_SLOT:String = "Ring";
public static const HELMET_SLOT:String = "Helmet";
public static const BOOTS_SLOT:String = "Boots";
public static const OFFHAND_SLOT:String = "Offhand";
public function Equipment(_arg1:int, _arg2:int, _arg3:String="PICK_RANDOM", _arg4:String="PICK_RANDOM"){
if (_arg4 == "PICK_RANDOM"){
this.slot = EquipmentNameGenerator.getRandomSlot();
} else {
this.slot = _arg4;
};
if (_arg3 == "PICK_RANDOM"){
this.name = EquipmentNameGenerator.getRandomName(this.slot);
} else {
this.name = _arg3;
};
this.itemQuality = _arg1;
this.itemLevel = _arg2;
bonusManager = new BonusManager(this);
if ((((_arg1 == BonusManager.ARTIFACT)) && (MyPreloader.isKongregate()))){
APILoader.submitStat(KongregateStatistics.ARTIFACTS_COLLECTED, 1);
};
}
public function getName():String{
return (name);
}
public function getBonusManager():BonusManager{
return (bonusManager);
}
public function getEquipmentDisplayObject():DisplayObject{
if (slot == HELMET_SLOT){
return (new ArtLoader.HelmetIMG());
};
if (slot == WEAPON_SLOT){
return (new ArtLoader.WeaponIMG());
};
if (slot == OFFHAND_SLOT){
return (new ArtLoader.OffHandIMG());
};
if (slot == AMULET_SLOT){
return (new ArtLoader.AmuletIMG());
};
if (slot == RING_SLOT){
return (new ArtLoader.RingIMG());
};
if (slot == BOOTS_SLOT){
return (new ArtLoader.BootsIMG());
};
if (slot == GLOVES_SLOT){
return (new ArtLoader.GlovesIMG());
};
if (slot == PANTS_SLOT){
return (new ArtLoader.PantsIMG());
};
if (slot == TORSO_SLOT){
return (new ArtLoader.TorsoIMG());
};
trace(("Unexpected slot:" + slot));
return (null);
}
public function getDescription():String{
var _local1:String;
if (itemQuality == BonusManager.NORMAL){
return (((name + "\n") + bonusManager.getDescription()));
};
switch (itemQuality){
case BonusManager.MAGIC:
_local1 = "Magical";
break;
case BonusManager.RARE:
_local1 = "Rare";
break;
case BonusManager.EPIC:
_local1 = "Epic";
break;
case BonusManager.LEGENDARY:
_local1 = "Legendary";
break;
case BonusManager.ARTIFACT:
_local1 = "Artifact";
break;
default:
trace("Need a new item quality string in getDescription");
_local1 = "Borked";
};
return (((((_local1 + " ") + name) + "\n") + bonusManager.getDescription()));
}
public function getDisplayObject():DisplayObject{
var _local1:DisplayObject;
switch (itemQuality){
case BonusManager.NORMAL:
_local1 = new ArtLoader.GreyEquipmentBKGIMG();
break;
case BonusManager.MAGIC:
_local1 = new ArtLoader.GreenEquipmentBKGIMG();
break;
case BonusManager.RARE:
_local1 = new ArtLoader.BlueEquipmentBKGIMG();
break;
case BonusManager.EPIC:
_local1 = new ArtLoader.PurpleEquipmentBKGIMG();
break;
case BonusManager.LEGENDARY:
_local1 = new ArtLoader.OrangeEquipmentBKGIMG();
break;
case BonusManager.ARTIFACT:
_local1 = new ArtLoader.RedEquipmentBKGIMG();
break;
default:
trace(("unknown item quality:" + itemQuality));
};
var _local2:Sprite = new Sprite();
var _local3:DisplayObject = getEquipmentDisplayObject();
_local1.width = _local3.width;
_local1.height = _local3.height;
_local2.addChild(_local1);
_local2.addChild(_local3);
_local2.doubleClickEnabled = true;
return (_local2);
}
public function getSlot():String{
return (slot);
}
public function isBetterThen(_arg1:Equipment):Boolean{
if (_arg1.bonusManager.bonusesMatch(bonusManager)){
return ((itemLevel > _arg1.itemLevel));
};
var _local2:Number = (_arg1.getItemLevel() * _arg1.getItemQuality());
var _local3:Number = (getItemLevel() * getItemQuality());
return ((_local3 > (_local2 * 1.3)));
}
public function getItemLevel():int{
return (itemLevel);
}
public function getItemQuality():int{
return (itemQuality);
}
}
}//package com.greyhound.equipment
Section 14
//EquipmentNameGenerator (com.greyhound.equipment.EquipmentNameGenerator)
package com.greyhound.equipment {
public class EquipmentNameGenerator {
public static function getRandomName(_arg1:String):String{
if (_arg1 == Equipment.HELMET_SLOT){
return ("Helmet");
};
if (_arg1 == Equipment.WEAPON_SLOT){
return ("Weapon");
};
if (_arg1 == Equipment.OFFHAND_SLOT){
return ("Offhand");
};
if (_arg1 == Equipment.PANTS_SLOT){
return ("Pants");
};
if (_arg1 == Equipment.RING_SLOT){
return ("Ring");
};
if (_arg1 == Equipment.AMULET_SLOT){
return ("Amulet");
};
if (_arg1 == Equipment.GLOVES_SLOT){
return ("Gloves");
};
if (_arg1 == Equipment.BOOTS_SLOT){
return ("Boots");
};
if (_arg1 == Equipment.TORSO_SLOT){
return ("Torso");
};
trace(("need random name for slot:" + _arg1));
return ("Unkown");
}
public static function getRandomSlot():String{
switch (int((Math.random() * Equipment.SLOT_TYPES))){
case 0:
return (Equipment.HELMET_SLOT);
case 1:
return (Equipment.WEAPON_SLOT);
case 2:
return (Equipment.OFFHAND_SLOT);
case 3:
return (Equipment.PANTS_SLOT);
case 4:
return (Equipment.RING_SLOT);
case 5:
return (Equipment.AMULET_SLOT);
case 6:
return (Equipment.GLOVES_SLOT);
case 7:
return (Equipment.BOOTS_SLOT);
case 8:
return (Equipment.TORSO_SLOT);
default:
trace("Need new equipment slot in getRandomSlot");
return (Equipment.WEAPON_SLOT);
};
}
}
}//package com.greyhound.equipment
Section 15
//AttackAction (com.greyhound.living.actions.AttackAction)
package com.greyhound.living.actions {
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.effects.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class AttackAction extends LivingAction {
private var targets:Array;
private var effectProviders:Array;
private var targetApprover:IDisplayableApprover;
public static const DEFAULT_MELEE_RANGE:int = 15;
public function AttackAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
targetApprover = null;
effectProviders = new Array();
}
protected function getActionRange():int{
return (DEFAULT_MELEE_RANGE);
}
protected function applyEffects(_arg1:Array):void{
var _local2:Object;
var _local3:IEffect;
for each (_local2 in effectProviders) {
_local3 = (_local2 as IEffectProvider).createEffect((_arg1[0] as Living));
if (_local3 != null){
if (!(_arg1[0] as Living).isDead()){
(_arg1[0] as Living).applyEffect(_local3);
};
};
};
}
public function addEffectProvider(_arg1:IEffectProvider):void{
effectProviders.push(_arg1);
}
protected function createDamage():Damage{
trace("createDamage was not overridden");
return (new Damage(getBaseDamage(getLiving(), Damage.MELEE), Damage.MELEE, this));
}
protected function getTargets():Array{
return (targets);
}
protected function canHitFlying():Boolean{
return (false);
}
protected function deliverDamage(_arg1:Damage, _arg2:Array):void{
_arg2[0].takeDamage(_arg1);
}
override public function shouldPerform():Boolean{
var _local1:Point;
_local1 = getLiving().getScreenLocation();
targets = Util.getAllLivingsInRange(getActionRange(), getLiving().getWorld(), _local1, getTargetApprover());
return ((targets.length > 0));
}
override protected function performAction():int{
var _local1:Damage = createDamage();
deliverDamage(_local1, targets);
applyEffects(targets);
return (getCooldown());
}
public function setTargetApprover(_arg1:IDisplayableApprover):void{
targetApprover = _arg1;
}
protected function getTargetApprover():IDisplayableApprover{
if (targetApprover == null){
return (new EnemyTargetApprover(getLiving().getTeam(), ((canHitFlying()) || (getLiving().isFlying()))));
};
return (targetApprover);
}
protected function getEffectProviders():Array{
return (effectProviders);
}
override public function getDisplayString():String{
return ((((((super.getDisplayString() + "(D=") + createDamage().getAmount(null)) + " R=") + getActionRange()) + ")"));
}
public static function getBaseDamage(_arg1:Living, _arg2:int):int{
var _local3:Number = 0;
switch (_arg2){
case Damage.MELEE:
_local3 = _arg1.getStatManager().getStrength();
break;
case Damage.RANGED:
_local3 = _arg1.getStatManager().getDexterity();
break;
case Damage.MAGICAL:
_local3 = _arg1.getStatManager().getMagic();
break;
default:
trace((("Unknown damage type:" + _arg2) in getBaseDamage));
};
return (Math.max(1, _local3));
}
}
}//package com.greyhound.living.actions
Section 16
//ConfigurableAttackAction (com.greyhound.living.actions.ConfigurableAttackAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class ConfigurableAttackAction extends AttackAction {
private var type:int;
private var damageScalar:Number;
private var range:int;
public function ConfigurableAttackAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living, _arg6:int, _arg7:Number=1, _arg8:int=15){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
this.damageScalar = _arg7;
this.range = _arg8;
this.type = _arg6;
}
protected function getType():int{
return (type);
}
override protected function createDamage():Damage{
return (new Damage((getBaseDamage(getLiving(), getType()) * damageScalar), getType(), this));
}
override protected function getActionRange():int{
return (range);
}
}
}//package com.greyhound.living.actions
Section 17
//ConfigurableRangedAttackAction (com.greyhound.living.actions.ConfigurableRangedAttackAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class ConfigurableRangedAttackAction extends RangedAttackAction {
private var type:int;
private var damageScalar:Number;
private var range:int;
public function ConfigurableRangedAttackAction(_arg1:IDisplayObjectProvider, _arg2:IDisplayObjectProvider, _arg3:Class, _arg4:Object, _arg5:int, _arg6:int, _arg7:String, _arg8:Living, _arg9:int, _arg10:int, _arg11:Number=1){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
this.damageScalar = _arg11;
this.range = _arg10;
this.type = _arg9;
}
override protected function createDamage():Damage{
return (new Damage((getBaseDamage(getLiving(), type) * damageScalar), type, this));
}
override protected function getActionRange():int{
return (range);
}
}
}//package com.greyhound.living.actions
Section 18
//FixedDamageAttackAction (com.greyhound.living.actions.FixedDamageAttackAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class FixedDamageAttackAction extends ConfigurableAttackAction {
private var fixedAmount:int;
public function FixedDamageAttackAction(_arg1:int, _arg2:IDisplayObjectProvider, _arg3:int, _arg4:int, _arg5:String, _arg6:Living, _arg7:int, _arg8:Number=1, _arg9:int=15){
super(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9);
this.fixedAmount = _arg1;
}
override protected function createDamage():Damage{
return (new Damage(fixedAmount, getType(), this));
}
}
}//package com.greyhound.living.actions
Section 19
//HealAction (com.greyhound.living.actions.HealAction)
package com.greyhound.living.actions {
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class HealAction extends LivingAction {
private var targets:Array;
private var range:int;
private var targetApprover:IDisplayableApprover;
private var amount:int;
private var maxTargets:int;
public function HealAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living, _arg6:int, _arg7:int, _arg8:int=1, _arg9:IDisplayableApprover=null){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
this.amount = _arg6;
this.range = _arg7;
this.maxTargets = _arg8;
if (_arg9 == null){
this.targetApprover = new FriendTargetApprover(_arg5.getTeam());
} else {
this.targetApprover = _arg9;
};
}
private function sortTargets(_arg1:Object, _arg2:Object):int{
return ((_arg1 as HealingSortWrapper).compareTo((_arg2 as HealingSortWrapper)));
}
override public function shouldPerform():Boolean{
var _local3:Object;
var _local1:Point = getLiving().getScreenLocation();
targets = Util.getAllLivingsInRange(range, getLiving().getWorld(), _local1, targetApprover);
var _local2:Boolean;
for each (_local3 in targets) {
if ((_local3 as Living).getHp() < (_local3 as Living).getStatManager().getMaxHp()){
_local2 = true;
break;
};
};
return (_local2);
}
override protected function performAction():int{
var _local1:Array = new Array(targets.length);
var _local2:int;
while (_local2 < targets.length) {
_local1[_local2] = new HealingSortWrapper((targets[_local2] as Living));
_local2++;
};
_local1.sort(sortTargets);
_local2 = 0;
while ((((_local2 < _local1.length)) && ((_local2 < maxTargets)))) {
(_local1[_local2] as HealingSortWrapper).getLiving().healAmount(amount);
_local2++;
};
return (getCooldown());
}
override public function getDisplayString():String{
return ((((((super.getDisplayString() + "(H=") + amount) + " R=") + range) + ")"));
}
}
}//package com.greyhound.living.actions
import com.greyhound.living.*;
class HealingSortWrapper {
private var living:Living;
private var hpLoss:int;
private function HealingSortWrapper(_arg1:Living){
hpLoss = (_arg1.getStatManager().getMaxHp() - _arg1.getHp());
this.living = _arg1;
}
public function compareTo(_arg1:HealingSortWrapper):int{
if (hpLoss < _arg1.hpLoss){
return (1);
};
if (hpLoss == _arg1.hpLoss){
return (0);
};
return (-1);
}
public function getLiving():Living{
return (living);
}
}
Section 20
//IActionPerformedListener (com.greyhound.living.actions.IActionPerformedListener)
package com.greyhound.living.actions {
public interface IActionPerformedListener {
function actionPerformed(_arg1:LivingAction):void;
}
}//package com.greyhound.living.actions
Section 21
//InstantDamageAction (com.greyhound.living.actions.InstantDamageAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class InstantDamageAction extends LivingAction {
private var amount:int;
private var type:int;
public function InstantDamageAction(_arg1:Living, _arg2:int, _arg3:int){
super(new DisplayObjectProvider(ArtLoader.MissingGraphicIMG), 0, 0, "INSTANT", _arg1);
this.amount = _arg2;
this.type = _arg3;
}
public function deliverDamage(_arg1:Living):int{
var _local2:Damage = new Damage(amount, type, this);
return (_arg1.takeDamage(_local2));
}
}
}//package com.greyhound.living.actions
Section 22
//LivingAction (com.greyhound.living.actions.LivingAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class LivingAction implements IDamageSource {
private var name:String;
private var randomWeight:int;
private var actionDisplayObjectProvider:IDisplayObjectProvider;
private var actionResetTime:int;
private var living:Living;
private var cooldown:int;
private var actionPerformedListeners:Array;
public function LivingAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living){
this.actionDisplayObjectProvider = _arg1;
this.randomWeight = _arg2;
this.cooldown = _arg3;
this.name = _arg4;
this.living = _arg5;
actionResetTime = 0;
}
public function getName():String{
return (name);
}
final public function invokeAction():int{
var _local2:Object;
living.getActionManager().actionInvoked(this);
var _local1:int = performAction();
if (actionPerformedListeners != null){
for each (_local2 in actionPerformedListeners) {
(_local2 as IActionPerformedListener).actionPerformed(this);
};
};
return (_local1);
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
if (!getLiving().isDestroyed()){
getLiving().notifyDamageDealt(_arg1, _arg2, _arg3, _arg4);
};
}
public function getRandomWeight():int{
return (randomWeight);
}
public function getTeam():int{
return (getLiving().getTeam());
}
public function addActionPerformedListener(_arg1:IActionPerformedListener):void{
if (actionPerformedListeners == null){
actionPerformedListeners = new Array();
};
actionPerformedListeners.push(_arg1);
}
public function getLiving():Living{
return (living);
}
protected function getCooldown():int{
return (cooldown);
}
public function setActionResetTime(_arg1:int):void{
actionResetTime = _arg1;
}
public function getActionDisplayObjectProvider():IDisplayObjectProvider{
return (actionDisplayObjectProvider);
}
public function shouldPerform():Boolean{
trace(("Action did not have an implementation of shouldPerform:" + this));
return (false);
}
public function getActionResetTime():int{
return (actionResetTime);
}
protected function performAction():int{
trace(("Action did not have an implementation:" + this));
return (0);
}
public function getDisplayString():String{
return (name);
}
}
}//package com.greyhound.living.actions
Section 23
//MultiTargetAttackAction (com.greyhound.living.actions.MultiTargetAttackAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class MultiTargetAttackAction extends ConfigurableAttackAction {
private var numberOfTargets:int;
public function MultiTargetAttackAction(_arg1:int, _arg2:IDisplayObjectProvider, _arg3:int, _arg4:int, _arg5:String, _arg6:Living, _arg7:int, _arg8:Number=1, _arg9:int=15){
super(_arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9);
this.numberOfTargets = _arg1;
}
override protected function deliverDamage(_arg1:Damage, _arg2:Array):void{
var _local3:int;
while ((((((_local3 < numberOfTargets)) || ((numberOfTargets == -1)))) && ((_local3 < _arg2.length)))) {
_arg2[_local3].takeDamage(_arg1);
_local3++;
};
}
}
}//package com.greyhound.living.actions
Section 24
//NameOnlyAction (com.greyhound.living.actions.NameOnlyAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
public class NameOnlyAction extends LivingAction {
public function NameOnlyAction(_arg1:String, _arg2:Living){
super(null, 0, 0, _arg1, _arg2);
}
}
}//package com.greyhound.living.actions
Section 25
//PlaceObjectAction (com.greyhound.living.actions.PlaceObjectAction)
package com.greyhound.living.actions {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class PlaceObjectAction extends LivingAction {
private var targets:Array;
private var objectDisplayObjectProvider:IDisplayObjectProvider;
private var targetApprover:IDisplayableApprover;
private var objectArguments:Object;
private var objectClass:Class;
private var range:int;
public function PlaceObjectAction(_arg1:IDisplayObjectProvider, _arg2:IDisplayObjectProvider, _arg3:int, _arg4:int, _arg5:String, _arg6:Living, _arg7:Class, _arg8:Object, _arg9:int, _arg10:IDisplayableApprover){
super(_arg1, _arg3, _arg4, _arg5, _arg6);
this.objectClass = _arg7;
this.range = _arg9;
this.targetApprover = _arg10;
this.objectArguments = _arg8;
this.objectDisplayObjectProvider = _arg2;
}
protected function getTargetApprover():IDisplayableApprover{
return (targetApprover);
}
override public function shouldPerform():Boolean{
var _local1:Point = getLiving().getScreenLocation();
targets = Util.getAllLivingsInRange(range, getLiving().getWorld(), _local1, getTargetApprover());
return ((targets.length > 0));
}
override public function getDisplayString():String{
return ((((super.getDisplayString() + "(R=") + range) + ")"));
}
protected function getTargets():Array{
return (targets);
}
override protected function performAction():int{
var _local1:Living = getLiving();
var _local2:Point = (targets[0] as Living).getScreenLocation();
var _local3:DisplayableGameObject = (new objectClass(objectDisplayObjectProvider, objectArguments) as DisplayableGameObject);
_local1.getWorld().addDisplayableAt(_local3, _local2);
return (getCooldown());
}
}
}//package com.greyhound.living.actions
Section 26
//RangedAttackAction (com.greyhound.living.actions.RangedAttackAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.things.projectiles.*;
public class RangedAttackAction extends AttackAction {
private var projectileDisplayObjectProvider:IDisplayObjectProvider;
private var numberOfProjectiles:int;
private var ProjectileClass:Class;
private var projectileData:Object;
public function RangedAttackAction(_arg1:IDisplayObjectProvider, _arg2:IDisplayObjectProvider, _arg3:Class, _arg4:Object, _arg5:int, _arg6:int, _arg7:String, _arg8:Living){
super(_arg1, _arg5, _arg6, _arg7, _arg8);
this.ProjectileClass = _arg3;
this.projectileDisplayObjectProvider = _arg2;
this.projectileData = _arg4;
numberOfProjectiles = 1;
}
protected function createProjectile(_arg1:Living, _arg2:Damage):Projectile{
return ((new ProjectileClass(projectileDisplayObjectProvider, _arg1, _arg2, getEffectProviders(), projectileData) as Projectile));
}
public function setNumberOfProjectiles(_arg1:int):void{
numberOfProjectiles = _arg1;
}
override protected function canHitFlying():Boolean{
return (true);
}
override protected function deliverDamage(_arg1:Damage, _arg2:Array):void{
var _local4:Projectile;
var _local3:int;
while ((((_local3 < numberOfProjectiles)) && ((_local3 < _arg2.length)))) {
_local4 = createProjectile(getTargets()[_local3], _arg1);
getTargets()[_local3].getWorld().addDisplayableAt(_local4, getLiving().getScreenLocation());
_local3++;
};
}
}
}//package com.greyhound.living.actions
Section 27
//ReflectAction (com.greyhound.living.actions.ReflectAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class ReflectAction extends LivingAction {
private var originalDamage:Damage;
private var amount:int;
private var type:int;
public function ReflectAction(_arg1:Living, _arg2:int, _arg3:int, _arg4:Damage){
super(new DisplayObjectProvider(ArtLoader.MissingGraphicIMG), 0, 0, "REFLECTION", _arg1);
if (_arg4.isReflected()){
trace("Tried to reflect already reflected damage. Should have checked before hand");
};
originalDamage = _arg4;
this.amount = _arg2;
this.type = _arg3;
}
public function reflect():int{
var _local1:Damage = new Damage(amount, type, this);
_local1.setReflected();
return ((originalDamage.getSource() as LivingAction).getLiving().takeDamage(_local1));
}
}
}//package com.greyhound.living.actions
Section 28
//StunAction (com.greyhound.living.actions.StunAction)
package com.greyhound.living.actions {
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.things.approvers.*;
public class StunAction extends LivingAction {
private var stunLength:int;
private var targets:Array;
private var stunRange:int;
private var maxTargets:int;
public function StunAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living, _arg6:int, _arg7:int=1, _arg8:int=30){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
this.stunLength = _arg6;
this.stunRange = _arg8;
this.maxTargets = _arg7;
}
protected function getTargetApprover():IDisplayableApprover{
return (new EnemyTargetApprover(getLiving().getTeam(), getLiving().isFlying()));
}
override public function shouldPerform():Boolean{
var _local1:Point = getLiving().getScreenLocation();
targets = Util.getAllLivingsInRange(stunRange, getLiving().getWorld(), _local1, getTargetApprover());
return ((targets.length > 0));
}
override protected function performAction():int{
var _local1:int;
while ((((_local1 < targets.length)) && ((((_local1 < maxTargets)) || ((_local1 == -1)))))) {
(targets[_local1] as Living).stun(stunLength);
_local1++;
};
return (getCooldown());
}
override public function getDisplayString():String{
return ((((((super.getDisplayString() + "(L=") + Tools.round((stunLength / 1000), 1)) + " R=") + stunRange) + ")"));
}
}
}//package com.greyhound.living.actions
Section 29
//SummonAction (com.greyhound.living.actions.SummonAction)
package com.greyhound.living.actions {
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
public class SummonAction extends LivingAction {
private var patrolRadius:int;
private var LivingClass:Class;
private var spawnModifier:ISpawnModifier;
private var duration:int;
private var customizer:ISpawnModifier;
private var spawnCount:int;
public function SummonAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living, _arg6:Class, _arg7:ISpawnModifier=null, _arg8:int=10000, _arg9:int=1, _arg10:int=100){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
this.LivingClass = _arg6;
this.customizer = _arg7;
this.spawnCount = _arg9;
this.duration = _arg8;
this.patrolRadius = _arg10;
}
override protected function performAction():int{
var _local2:Living;
var _local3:Point;
var _local1:int;
while (_local1 < spawnCount) {
_local2 = new LivingClass();
_local2.setDuration(duration);
_local2.setTeam(getLiving().getTeam());
_local3 = getLiving().getScreenLocation();
getLiving().getWorld().addDisplayableAt(_local2, _local3);
if ((_local2 is AILiving)){
(_local2 as AILiving).setAITask(new GuardTask((_local2 as AILiving), getLiving(), 10, patrolRadius));
};
_local2.setLevel(1);
if (customizer != null){
customizer.modifyLiving(_local2);
};
_local1++;
};
return (getCooldown());
}
override public function shouldPerform():Boolean{
return (true);
}
}
}//package com.greyhound.living.actions
Section 30
//VampireAttackAction (com.greyhound.living.actions.VampireAttackAction)
package com.greyhound.living.actions {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.monsters.*;
public class VampireAttackAction extends ConfigurableAttackAction {
public function VampireAttackAction(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:int, _arg4:String, _arg5:Living, _arg6:int, _arg7:Number=1, _arg8:int=15){
super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
}
override protected function performAction():int{
(getLiving() as Vampire).land();
return (super.performAction());
}
}
}//package com.greyhound.living.actions
Section 31
//AILiving (com.greyhound.living.ai.AILiving)
package com.greyhound.living.ai {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class AILiving extends Living {
private var movementController:IMovementController;
private var aiCounter:int;
private var aiTask:IAITask;
private var aiSpeed:int;
public function AILiving(_arg1:IDisplayObjectProvider, _arg2:String){
super(_arg1, _arg2);
aiSpeed = 500;
aiCounter = aiSpeed;
}
protected function getMovementController():IMovementController{
return (movementController);
}
public function getAITask():IAITask{
return (aiTask);
}
override protected function heartBeat(_arg1:int):void{
if (aiTask != null){
aiCounter = (aiCounter - _arg1);
if (aiCounter <= 0){
movementController = null;
aiTask.performTask();
aiCounter = (aiCounter + aiSpeed);
};
};
super.heartBeat(_arg1);
}
public function setMovementController(_arg1:IMovementController):void{
this.movementController = _arg1;
}
public function setAITask(_arg1:IAITask):void{
if (aiTask != null){
aiTask.stopTask();
};
aiTask = _arg1;
movementController = null;
}
override protected function notifyDestroyed():void{
super.notifyDestroyed();
if (aiTask != null){
aiTask.stopTask();
aiTask = null;
};
}
override protected function decideMovementDirection():int{
var _local1:GameObject;
var _local2:Tile;
var _local3:Tile;
var _local4:Point;
if (movementController != null){
_local1 = movementController.getObjectToEnter();
if (((!((_local1 == null))) && ((_local1.getWorld() == null)))){
return (-1);
};
_local2 = getTile();
if (((!((_local1 == null))) && ((_local1.getTile() == _local2)))){
if (getEnvironment() != _local1){
moveTo(_local1);
};
return (-1);
} else {
if (!(getEnvironment() is World)){
getWorld().addDisplayableAt(this, _local2.getScreenLocation());
};
_local3 = movementController.chooseDestinationTile();
if (_local3 == null){
return (-1);
};
_local4 = getScreenLocation();
return (Util.getDirection(_local4, _local3.getScreenLocation()));
};
//unresolved jump
};
return (-1);
}
}
}//package com.greyhound.living.ai
Section 32
//AITask (com.greyhound.living.ai.AITask)
package com.greyhound.living.ai {
import flash.errors.*;
public class AITask implements IAITask {
protected var living:AILiving;
private var nextTask:IAITask;
public function AITask(_arg1:AILiving){
this.living = _arg1;
}
protected function perform():void{
throw (new IllegalOperationError("Must implement this function"));
}
final public function performTask():void{
if (isTaskComplete()){
if (nextTask != null){
nextTask.performTask();
};
} else {
perform();
if (nextTask != null){
nextTask.performTask();
};
};
}
final public function stopTask():void{
notifyTaskStopped();
if (nextTask != null){
nextTask.stopTask();
};
}
public function isTaskComplete():Boolean{
throw (new IllegalOperationError("Must implement this function"));
}
final public function appendTask(_arg1:IAITask):void{
if (nextTask == null){
nextTask = _arg1;
} else {
nextTask.appendTask(_arg1);
};
}
public function debugStop():Boolean{
return (false);
}
protected function notifyTaskStopped():void{
}
final protected function clearSubTasks():void{
if (nextTask != null){
nextTask.stopTask();
nextTask = null;
};
}
}
}//package com.greyhound.living.ai
Section 33
//DigAITask (com.greyhound.living.ai.DigAITask)
package com.greyhound.living.ai {
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.ui.decorators.*;
import com.greyhound.things.*;
import com.greyhound.*;
public class DigAITask extends AITask implements IChangeListener {
private var stayTask:StayTask;
private var diggable:IDiggable;
public function DigAITask(_arg1:IDigger){
super((_arg1 as AILiving));
}
override protected function perform():void{
if ((((stayTask == null)) || (!((diggable as DisplayableGameObject).hasDecorator(DecoratorFactory.DIG_DECORATOR))))){
clearSubTasks();
stayTask = null;
diggable = findDiggable();
if (diggable != null){
diggable.addChangeListener(this);
stayTask = new StayTask(living, (diggable as DisplayableGameObject).getTile(), true, 5);
(living as IDigger).setDigTarget(diggable, stayTask);
appendTask(stayTask);
};
};
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function getDistanceSquaredFromDiggable():Number{
if (diggable == null){
trace((living.getDebugName() + " distance from diggable had a null diggable"));
return (999999999999);
};
return (Tools.distanceSquared(living.getScreenLocation(), (diggable as DisplayableGameObject).getScreenLocation()));
}
override protected function notifyTaskStopped():void{
if (diggable != null){
diggable.removeChangeListener(this);
(diggable as DisplayableGameObject).getWorld().getDiggingVariabels().releaseDiggable(diggable);
diggable = null;
};
}
override public function isTaskComplete():Boolean{
return (false);
}
public function notifyChanged(_arg1:IChangeable):void{
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
notifyClaimLost();
}
public function notifyClaimLost():void{
if (diggable != null){
diggable.removeChangeListener(this);
diggable = null;
} else {
trace("diggable was null when we got its destroy notification");
};
(living as IDigger).setDigTarget(null, null);
stayTask = null;
}
private function findDiggable():IDiggable{
var _local1:IDiggable = living.getWorld().getDiggingVariabels().claimClosestDiggableTo(living.getScreenLocation(), this);
return (_local1);
}
}
}//package com.greyhound.living.ai
Section 34
//FollowTask (com.greyhound.living.ai.FollowTask)
package com.greyhound.living.ai {
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
public class FollowTask extends GotoTask implements IChangeListener {
private var target:Living;
public function FollowTask(_arg1:AILiving, _arg2:Living, _arg3:Number){
super(_arg1, _arg2.getTile(), false, _arg3);
this.target = _arg2;
_arg2.addChangeListener(this);
}
override protected function perform():void{
if (getDestinationTile() != target.getTile()){
setDestinationTile(target.getTile());
};
super.perform();
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
target = null;
}
public function getTarget():Living{
if (((!((target == null))) && (target.isDead()))){
target.removeChangeListener(this);
target = null;
};
return (target);
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function notifyChanged(_arg1:IChangeable):void{
}
override public function getObjectToEnter():GameObject{
if (target == null){
return (null);
};
if (!(target.getEnvironment() is World)){
return (target.getEnvironment());
};
return (null);
}
override public function isTaskComplete():Boolean{
if (((((!((target == null))) && (target.isDead()))) || (((((!((target == null))) && (!((target.getTeam() == living.getTeam()))))) && (!((target.getEnvironment() is World))))))){
target.removeChangeListener(this);
target = null;
};
return ((target == null));
}
override protected function notifyTaskStopped():void{
if (target != null){
target.removeChangeListener(this);
target = null;
};
}
}
}//package com.greyhound.living.ai
Section 35
//GotoTask (com.greyhound.living.ai.GotoTask)
package com.greyhound.living.ai {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.*;
public class GotoTask extends AITask implements IMovementController, ITileProvider {
private var pathStopTile:Tile;
private var destinationTile:Tile;
private var lastTile:Tile;
protected var path:Array;
private var pathPosition:int;// = 0
private var pathExclusive:Boolean;
private var distanceNeededSquared:Number;
public function GotoTask(_arg1:AILiving, _arg2:Tile, _arg3:Boolean, _arg4:Number){
super(_arg1);
this.destinationTile = _arg2;
pathStopTile = destinationTile;
this.pathExclusive = _arg3;
this.distanceNeededSquared = (_arg4 * _arg4);
path = null;
}
override public function isTaskComplete():Boolean{
return ((Tools.distanceSquared(pathStopTile.getScreenLocation(), living.getScreenLocation()) <= distanceNeededSquared));
}
public function chooseDestinationTile():Tile{
var _local1:Tile = living.getTile();
if (_local1 == pathStopTile){
lastTile = _local1;
return (pathStopTile);
};
var _local2:Tile = (path[pathPosition] as Tile);
if (_local1 == _local2){
pathPosition++;
lastTile = _local1;
return (_local2);
};
if (_local1 != lastTile){
generatePath();
return (_local1);
};
return (_local2);
}
protected function setDestinationTile(_arg1:Tile):void{
if (destinationTile != _arg1){
destinationTile = _arg1;
pathStopTile = _arg1;
generatePath();
};
}
override protected function perform():void{
if (path == null){
generatePath();
};
living.setMovementController(this);
}
public function getDestinationTile():Tile{
return (destinationTile);
}
public function getObjectToEnter():GameObject{
return (null);
}
public function provideTile():Tile{
return (pathStopTile);
}
private function generatePath():void{
var _local2:Array;
var _local3:int;
var _local1:AStar = new AStar(living.getWorld(), false, pathExclusive);
lastTile = living.getTile();
if (lastTile == null){
lastTile = living.getTile();
if (lastTile == null){
trace("Still had no tile in goto task");
path = new Array();
return;
};
};
if (_local1.generatePath(new Point(lastTile.getX(), lastTile.getY()), new Point(destinationTile.getX(), destinationTile.getY()), living)){
_local2 = _local1.getPath();
path = new Array(_local2.length);
_local3 = 0;
while (_local3 < _local2.length) {
path[_local3] = living.getWorld().getTileAtMapLocation((_local2[_local3] as Point).x, (_local2[_local3] as Point).y);
_local3++;
};
pathPosition = 0;
if (path.length > 0){
pathStopTile = path[(path.length - 1)];
} else {
pathStopTile = lastTile;
};
} else {
trace(((((((("goto task for living:" + living) + " could not find its way from:") + lastTile.getX()) + ",") + lastTile.getY()) + " to ") + destinationTile.getX()), destinationTile.getY());
path = new Array();
};
}
}
}//package com.greyhound.living.ai
Section 36
//GuardTask (com.greyhound.living.ai.GuardTask)
package com.greyhound.living.ai {
import flash.geom.*;
import com.greyhound.living.*;
public class GuardTask extends FollowTask implements IPatrolRadiusProvider {
private var wanderAwayDistance:Number;
public function GuardTask(_arg1:AILiving, _arg2:Living, _arg3:Number, _arg4:Number){
super(_arg1, _arg2, _arg3);
this.wanderAwayDistance = _arg4;
appendTask(new HuntTask(_arg1, this));
}
public function getPatrolRadius():int{
return (wanderAwayDistance);
}
public function isDestroyed():Boolean{
if (getTarget() == null){
return (true);
};
return (getTarget().isDestroyed());
}
public function getPatrolOrigin():Point{
var _local1:Living = getTarget();
if (_local1 != null){
return (_local1.getScreenLocation());
};
return (null);
}
override protected function notifyTaskStopped():void{
clearSubTasks();
}
}
}//package com.greyhound.living.ai
Section 37
//HuntTask (com.greyhound.living.ai.HuntTask)
package com.greyhound.living.ai {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.living.classes.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.things.approvers.*;
public class HuntTask extends AITask {
private var huntFlying:Boolean;
private var patrolRadiusProvider:IPatrolRadiusProvider;
private var followTaskClass:Class;
private var followTask:FollowTask;
public function HuntTask(_arg1:AILiving, _arg2:IPatrolRadiusProvider){
super(_arg1);
this.patrolRadiusProvider = _arg2;
this.huntFlying = huntFlying;
followTaskClass = FollowTask;
}
public function setFollowTaskClass(_arg1:Class):void{
followTaskClass = _arg1;
}
override protected function perform():void{
var _local1:Living;
var _local2:Living;
var _local3:Number;
var _local4:Point;
var _local5:Number;
if ((((followTask == null)) || (followTask.isTaskComplete()))){
clearSubTasks();
followTask = null;
_local1 = acquireTarget();
if (_local1 != null){
followTarget(_local1);
};
} else {
_local2 = followTask.getTarget();
if (((!((_local2 == null))) && (!(patrolRadiusProvider.isDestroyed())))){
_local3 = patrolRadiusProvider.getPatrolRadius();
_local3 = (_local3 * _local3);
_local4 = patrolRadiusProvider.getPatrolOrigin();
if (_local4 != null){
_local5 = Tools.distanceSquared(_local2.getScreenLocation(), patrolRadiusProvider.getPatrolOrigin());
if (_local5 > _local3){
followTarget(null);
} else {
_local1 = acquireTarget();
if (((!((_local1 == null))) && (!((_local1 == _local2))))){
if (Point.distance(_local1.getScreenLocation(), patrolRadiusProvider.getPatrolOrigin()) < (Math.sqrt(_local5) * 0.5)){
followTarget(_local1);
};
};
};
};
};
};
}
private function followTarget(_arg1:Living):void{
clearSubTasks();
followTask = null;
if (_arg1 != null){
followTask = new followTaskClass(living, _arg1, 5);
appendTask(followTask);
};
}
protected function acquireTarget():Living{
var _local2:Array;
var _local3:AStar;
var _local4:Tile;
var _local5:Tile;
if (patrolRadiusProvider.isDestroyed()){
return (null);
};
var _local1:Point = patrolRadiusProvider.getPatrolOrigin();
if (((!((_local1 == null))) && ((patrolRadiusProvider.getPatrolRadius() > 0)))){
_local2 = Util.getAllLivingsInRange(patrolRadiusProvider.getPatrolRadius(), living.getWorld(), _local1, new EnemyTargetApprover(living.getTeam(), (living.getLivingClass() is IFlyerHunter)));
if (living.needsPathToHunt()){
while (_local2.length > 0) {
_local3 = new AStar(living.getWorld(), false, false);
_local4 = living.getTile();
_local5 = (_local2[0] as Living).getTile();
if (!_local3.generatePath(new Point(_local4.getX(), _local4.getY()), new Point(_local5.getX(), _local5.getY()), living)){
_local2.splice(0, 1);
} else {
break;
};
};
};
if (_local2.length > 0){
return (_local2[0]);
};
};
return (null);
}
override public function isTaskComplete():Boolean{
return (false);
}
}
}//package com.greyhound.living.ai
Section 38
//IAITask (com.greyhound.living.ai.IAITask)
package com.greyhound.living.ai {
public interface IAITask {
function debugStop():Boolean;
function performTask():void;
function stopTask():void;
function isTaskComplete():Boolean;
function appendTask(_arg1:IAITask):void;
}
}//package com.greyhound.living.ai
Section 39
//IMovementController (com.greyhound.living.ai.IMovementController)
package com.greyhound.living.ai {
import com.greyhound.base.*;
import com.greyhound.world.*;
public interface IMovementController {
function getObjectToEnter():GameObject;
function chooseDestinationTile():Tile;
}
}//package com.greyhound.living.ai
Section 40
//IPatrolRadiusProvider (com.greyhound.living.ai.IPatrolRadiusProvider)
package com.greyhound.living.ai {
import flash.geom.*;
public interface IPatrolRadiusProvider {
function getPatrolOrigin():Point;
function getPatrolRadius():int;
function isDestroyed():Boolean;
}
}//package com.greyhound.living.ai
Section 41
//PatrolRadiusProvider (com.greyhound.living.ai.PatrolRadiusProvider)
package com.greyhound.living.ai {
import flash.geom.*;
public class PatrolRadiusProvider implements IPatrolRadiusProvider {
private var point:Point;
private var radius:int;
public function PatrolRadiusProvider(_arg1:Point, _arg2:int){
this.point = _arg1;
this.radius = _arg2;
}
public function getPatrolOrigin():Point{
return (point);
}
public function getPatrolRadius():int{
return (radius);
}
public function isDestroyed():Boolean{
return (false);
}
}
}//package com.greyhound.living.ai
Section 42
//ReachGoalTask (com.greyhound.living.ai.ReachGoalTask)
package com.greyhound.living.ai {
public class ReachGoalTask extends AITask {
private var gotoTask:GotoTask;
public function ReachGoalTask(_arg1:AILiving){
super(_arg1);
gotoTask = new GotoTask(_arg1, _arg1.getWorld().getGoalTile(), false, 5);
appendTask(gotoTask);
}
override protected function perform():void{
if (gotoTask.isTaskComplete()){
clearSubTasks();
living.getWorld().livingReachedGoal(living);
};
}
override public function isTaskComplete():Boolean{
return (false);
}
}
}//package com.greyhound.living.ai
Section 43
//StayInObjectTask (com.greyhound.living.ai.StayInObjectTask)
package com.greyhound.living.ai {
import com.greyhound.base.*;
public class StayInObjectTask extends GotoTask implements IChangeListener {
private var gameObject:GameObject;
public function StayInObjectTask(_arg1:AILiving, _arg2:GameObject){
super(_arg1, _arg2.getTile(), false, 5);
this.gameObject = _arg2;
_arg2.addChangeListener(this);
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
gameObject = null;
}
override public function isTaskComplete():Boolean{
return ((gameObject == null));
}
public function notifyChanged(_arg1:IChangeable):void{
}
override public function getObjectToEnter():GameObject{
return (gameObject);
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
override protected function notifyTaskStopped():void{
super.notifyTaskStopped();
if (gameObject != null){
gameObject.removeChangeListener(this);
};
}
}
}//package com.greyhound.living.ai
Section 44
//StayTask (com.greyhound.living.ai.StayTask)
package com.greyhound.living.ai {
import com.greyhound.world.*;
public class StayTask extends GotoTask {
public function StayTask(_arg1:AILiving, _arg2:Tile, _arg3:Boolean, _arg4:Number){
super(_arg1, _arg2, _arg3, _arg4);
}
override public function isTaskComplete():Boolean{
return (false);
}
}
}//package com.greyhound.living.ai
Section 45
//VampireFollowTask (com.greyhound.living.ai.VampireFollowTask)
package com.greyhound.living.ai {
import com.greyhound.world.*;
import com.greyhound.living.*;
public class VampireFollowTask extends FollowTask {
public function VampireFollowTask(_arg1:AILiving, _arg2:Living, _arg3:Number){
super(_arg1, _arg2, _arg3);
}
public function shouldFly():Boolean{
return (((!(living.isFlying())) && ((getTarget() == null))));
}
override protected function perform():void{
if (getTarget() != null){
super.perform();
} else {
living.setMovementController(this);
};
}
override public function isTaskComplete():Boolean{
return (((living.isFlying()) && (super.isTaskComplete())));
}
override public function chooseDestinationTile():Tile{
if (getTarget() == null){
return (null);
};
return (super.chooseDestinationTile());
}
}
}//package com.greyhound.living.ai
Section 46
//Avatar (com.greyhound.living.avatars.Avatar)
package com.greyhound.living.avatars {
import flash.display.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.*;
import com.greyhound.living.classes.avatars.*;
import com.greyhound.talents.avatar.*;
import com.greyhound.things.treasure.*;
import com.greyhound.common.kongregate.*;
public class Avatar extends Living {
private var experience:Number;
private var hitPointRegenCounter:int;
private var movementControl:KeyboardMovementControl;
private var goldRegenCounter:int;
public static var REGEN_SPEED:int = 5000;
public function Avatar(_arg1:IDisplayObjectProvider, _arg2:String){
super(_arg1, _arg2);
experience = 0;
movementControl = new KeyboardMovementControl();
hitPointRegenCounter = 0;
setReverseCooldown(2000);
}
public function getExperience():Number{
return (experience);
}
public function setInitialLevel(_arg1:int):void{
experience = ExperienceCalculator.getExperienceForLevel(_arg1);
setLevel(_arg1);
}
override protected function heartBeat(_arg1:int):void{
var _local3:Number;
super.heartBeat(_arg1);
hitPointRegenCounter = (hitPointRegenCounter - _arg1);
while ((((hitPointRegenCounter <= 0)) && (isOutOfCombat()))) {
hitPointRegenCounter = (hitPointRegenCounter + REGEN_SPEED);
_local3 = (getLivingClass() as IAvatarClass).getPercentHpRegen();
if (SavedData.hasTalenPoint(KeepOnGoing)){
_local3 = (_local3 + KeepOnGoing.REGEN_PERCENT_BONUS);
};
healAmount((_local3 * getStatManager().getMaxHp()));
};
var _local2:DisplayObjectContainer = getRootGraphic().parent;
_local2.setChildIndex(getRootGraphic(), (_local2.numChildren - 1));
}
override protected function notifyTileChanged():void{
var _local1:Object;
super.notifyTileChanged();
for each (_local1 in getTile().getDisplayableGameObjects()) {
if ((_local1 is ITreasure)){
(_local1 as ITreasure).claim(this);
};
};
}
public function getMovementControl():KeyboardMovementControl{
return (movementControl);
}
override protected function decideMovementDirection():int{
return (movementControl.getMoveDirection());
}
override protected function die(_arg1:Damage=null):Boolean{
var _local2:int = (15000 + (getLevel() * 3000));
var _local3:Number = 0;
if (SavedData.hasTalenPoint(BackInBlack)){
_local3 = (_local3 + BackInBlack.RESPAWN_SPEED_SCALOR_BONUS);
};
getWorld().moveToHoldingArea(this, (15000 + (getLevel() * 3000)), respawn);
return (true);
}
public function notifyLivingKilled(_arg1:int):void{
if (!isDead()){
addExperience((1 + (_arg1 / 4)));
};
}
protected function addExperience(_arg1:Number):void{
var _local2:Number = 1;
if (SavedData.hasTalenPoint(WatchAndLearn)){
_local2 = (_local2 + WatchAndLearn.EXPERIENCE_SCALOR_BONUS);
};
_arg1 = (_arg1 * _local2);
experience = (experience + _arg1);
if (experience >= ExperienceCalculator.getExperienceForLevel((getLevel() + 1))){
setLevel((getLevel() + 1));
if (MyPreloader.isKongregate()){
APILoader.submitStat((SavedData.getAvatarTypeName() + KongregateStatistics.AVATAR_LEVEL_SUFFIX), getLevel());
};
} else {
fireChange();
};
}
private function respawn(_arg1:GameObject):void{
var _local2:Tile = getWorld().getGoalTile();
getWorld().addDisplayableAt(this, _local2.getScreenLocation());
heal();
setDead(false);
}
override public function getDisplayText():String{
return (((((super.getDisplayText() + "\nExperience ") + int(experience)) + "/") + int(ExperienceCalculator.getExperienceForLevel((getLevel() + 1)))));
}
public function getChooseAvatarToolTip():String{
return ("Avatar needs getChooseAvatarToolTip implementation");
}
}
}//package com.greyhound.living.avatars
Section 47
//ChaosRanger (com.greyhound.living.avatars.ChaosRanger)
package com.greyhound.living.avatars {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.avatars.*;
public class ChaosRanger extends Avatar implements ISpawnModifier {
public function ChaosRanger(){
super(new LivingDisplayObjectProvider(ArtLoader.ChaosRangerIMG), "Chaos Ranger");
setLivingClass(new ChaosRangerClass(this));
}
public function modifyLiving(_arg1:Living):void{
if (getLevel() >= ChaosRangerClass.TRAINER_LEVEL){
_arg1.getStatManager().addInnateDexterityBonus(getLevel());
_arg1.getStatManager().addInnateStrengthBonus(getLevel());
_arg1.getStatManager().addInnateMagicBonus(getLevel());
};
}
override public function getChooseAvatarToolTip():String{
return ("Ranged fighter, moderate defenses. His unique trap is the swarm trap and his unique building is the dragon roost.");
}
}
}//package com.greyhound.living.avatars
Section 48
//DeathKnight (com.greyhound.living.avatars.DeathKnight)
package com.greyhound.living.avatars {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.avatars.*;
public class DeathKnight extends Avatar {
public function DeathKnight(){
super(new LivingDisplayObjectProvider(ArtLoader.DeathKnightIMG), "Death Knight");
setLivingClass(new DeathKnightClass(this));
setEthereal(true);
}
override public function getChooseAvatarToolTip():String{
return ("A defensive avatar. Though he has no ranged attack, he is ethereal and can pass through walls. His unique trap is the deathtrap and his unique building is the hydra nest.");
}
}
}//package com.greyhound.living.avatars
Section 49
//EvilWizard (com.greyhound.living.avatars.EvilWizard)
package com.greyhound.living.avatars {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.avatars.*;
public class EvilWizard extends Avatar {
public function EvilWizard(){
super(new LivingDisplayObjectProvider(ArtLoader.EvilWizardIMG), "Evil Wizard");
setLivingClass(new EvilWizardClass(this));
}
override public function getChooseAvatarToolTip():String{
return ("The evil wizard needs to avoid melee combat or he will die quickly. From a distance he can hurl massive amounts of destruction. His special building is the demon pit and his special trap is the grave trap.");
}
}
}//package com.greyhound.living.avatars
Section 50
//ExperienceCalculator (com.greyhound.living.avatars.ExperienceCalculator)
package com.greyhound.living.avatars {
public class ExperienceCalculator {
private static var values:Array;
private static var BASE_XP:Number = 18;
private static var PRE_CALCULATE_SIZE:int = 20;
private static var EXPONENT:Number = 1.05;
public static function getExperienceForLevel(_arg1:int):int{
var _local2:int;
if (values == null){
values = new Array(PRE_CALCULATE_SIZE);
values[0] = BASE_XP;
_local2 = 1;
while (_local2 < PRE_CALCULATE_SIZE) {
values[_local2] = (BASE_XP + (values[(_local2 - 1)] * 1.4));
_local2++;
};
};
if (_arg1 <= 1){
return (0);
};
_arg1 = (_arg1 - 2);
if (values.length > _arg1){
return (values[_arg1]);
};
_local2 = values.length;
while (_local2 <= _arg1) {
values.push(Math.pow(values[(values.length - 1)], EXPONENT));
_local2++;
};
return (int(values[_arg1]));
}
}
}//package com.greyhound.living.avatars
Section 51
//KeyboardMovementControl (com.greyhound.living.avatars.KeyboardMovementControl)
package com.greyhound.living.avatars {
import com.greyhound.tools.*;
public class KeyboardMovementControl {
private var south:Boolean;
private var north:Boolean;
private var east:Boolean;
private var west:Boolean;
public static const NO_MOVE:int = -1;
public function clearMoveDirection(_arg1:int):void{
switch (_arg1){
case Util.NORTH:
if (north){
north = false;
};
break;
case Util.EAST:
if (east){
east = false;
};
break;
case Util.SOUTH:
if (south){
south = false;
};
break;
case Util.WEST:
if (west){
west = false;
};
break;
default:
trace(("Unknown direction in clearMoveDirection:" + _arg1));
};
}
public function getMoveDirection():int{
if (east){
if (north){
return (Util.NORTHEAST);
};
if (south){
return (Util.SOUTHEAST);
};
return (Util.EAST);
//unresolved jump
};
if (west){
if (north){
return (Util.NORTHWEST);
};
if (south){
return (Util.SOUTHWEST);
};
return (Util.WEST);
//unresolved jump
};
if (north){
return (Util.NORTH);
};
if (south){
return (Util.SOUTH);
};
return (-1);
}
public function setMoveDirection(_arg1:int):void{
switch (_arg1){
case Util.NORTH:
if (!north){
north = true;
};
south = false;
break;
case Util.EAST:
if (!east){
east = true;
};
west = false;
break;
case Util.SOUTH:
if (!south){
south = true;
};
north = false;
break;
case Util.WEST:
if (!west){
west = true;
};
east = false;
break;
default:
trace(("Unknown direction in clearMoveDirection:" + _arg1));
};
}
}
}//package com.greyhound.living.avatars
Section 52
//AvatarClass (com.greyhound.living.classes.avatars.AvatarClass)
package com.greyhound.living.classes.avatars {
import com.greyhound.living.*;
import com.greyhound.living.classes.*;
import com.greyhound.talents.avatar.*;
import flash.errors.*;
public class AvatarClass extends LivingClass implements IAvatarClass {
private static const AVATAR_RUN_SPEED_SCALOR:Number = 1.2;
public function AvatarClass(_arg1:Living){
super(_arg1);
}
public function getClassTraps():Array{
throw (new IllegalOperationError(("Missing override in class:" + this)));
}
public function getPercentHpRegen():Number{
throw (new IllegalOperationError(("Missing override in class:" + this)));
}
override public function getBaseSpeed():Number{
return ((super.getBaseSpeed() * AVATAR_RUN_SPEED_SCALOR));
}
override public function getStatLevelBoost():int{
return ((super.getStatLevelBoost() + 5));
}
public function getTalentStrengthPerLevel():int{
var _local1:int;
if (SavedData.hasTalenPoint(StrongerBetterFaster)){
_local1 = (_local1 + StrongerBetterFaster.STRENGTH_BONUS_PER_LEVEL);
};
if (SavedData.hasTalenPoint(StrongererBettererFasterer)){
_local1 = (_local1 + StrongererBettererFasterer.STRENGTH_BONUS_PER_LEVEL);
};
if (SavedData.hasTalenPoint(StrongestBestFastest)){
_local1 = (_local1 + StrongestBestFastest.STRENGTH_BONUS_PER_LEVEL);
};
return (_local1);
}
public function getClassBuildings():Array{
throw (new IllegalOperationError(("Missing override in class:" + this)));
}
public function getTalentDexterityPerLevel():int{
var _local1:int;
if (SavedData.hasTalenPoint(StrongerBetterFaster)){
_local1 = (_local1 + StrongerBetterFaster.DEXTERITY_BONUS_PER_LEVEL);
};
if (SavedData.hasTalenPoint(StrongererBettererFasterer)){
_local1 = (_local1 + StrongererBettererFasterer.DEXTERITY_BONUS_PER_LEVEL);
};
if (SavedData.hasTalenPoint(StrongestBestFastest)){
_local1 = (_local1 + StrongestBestFastest.DEXTERITY_BONUS_PER_LEVEL);
};
return (_local1);
}
public function getTalentMagicPerLevel():int{
var _local1:int;
if (SavedData.hasTalenPoint(StrongerBetterFaster)){
_local1 = (_local1 + StrongerBetterFaster.MAGIC_BONUS_PER_LEVEL);
};
if (SavedData.hasTalenPoint(StrongererBettererFasterer)){
_local1 = (_local1 + StrongererBettererFasterer.MAGIC_BONUS_PER_LEVEL);
};
if (SavedData.hasTalenPoint(StrongestBestFastest)){
_local1 = (_local1 + StrongestBestFastest.MAGIC_BONUS_PER_LEVEL);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.avatars
Section 53
//ChaosRangerClass (com.greyhound.living.classes.avatars.ChaosRangerClass)
package com.greyhound.living.classes.avatars {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.things.buildings.lairs.*;
import com.greyhound.things.traps.*;
public class ChaosRangerClass extends AvatarClass {
public static const TRAINER_LEVEL:int = 4;
public function ChaosRangerClass(_arg1:Living){
super(_arg1);
}
override public function getStrengthPerLevel():int{
var _local1:int = (2 + getTalentStrengthPerLevel());
return (_local1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (40);
}
override public function getPercentHpRegen():Number{
return (0.03);
}
override public function getClassBuildings():Array{
return ([new WyrmLair()]);
}
override public function getClassTraps():Array{
return ([new SummonSwarmTrap()]);
}
override public function getHpPerLevel():int{
return (40);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (30);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (50);
}
override public function getDexterityPerLevel():int{
var _local1:int = (6 + getTalentDexterityPerLevel());
return (_local1);
}
override public function getMagicPerLevel():int{
var _local1:int = (1 + getTalentMagicPerLevel());
return (_local1);
}
override public function getActions():Array{
var _local2:String;
var _local3:Number;
var _local1:Array = new Array();
if (getLiving().getLevel() >= 8){
_local3 = 0.75;
} else {
_local3 = 1;
};
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), Projectile, new Object(), 10, 2000, _local2, getLiving(), Damage.RANGED, 80, _local3));
if (getLiving().getLevel() >= 4){
_local1.push(new NameOnlyAction("Trainer", getLiving()));
};
if (getLiving().getLevel() >= 8){
(_local1[0] as ConfigurableRangedAttackAction).setNumberOfProjectiles(2);
_local1.push(new NameOnlyAction("Dual Shot", getLiving()));
};
if (getLiving().getLevel() >= 12){
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), Projectile, new Object(), 1, 2000, "Critical Strike", getLiving(), Damage.RANGED, 120, 2));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.avatars
Section 54
//DeathKnightClass (com.greyhound.living.classes.avatars.DeathKnightClass)
package com.greyhound.living.classes.avatars {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.things.buildings.lairs.*;
import com.greyhound.things.traps.*;
public class DeathKnightClass extends AvatarClass implements IAvatarClass {
public static const BASH_STUN_LENGTH:int = 10000;
public static const RANGED_RESISTANCE:Number = 40;
public static const BASH_RESET_TIME:int = 20000;
public static const TOWER_SHIELD_RESISTANCE:int = 20;
public static const LAY_ON_HANDS_RESET_TIME:int = 40000;
public function DeathKnightClass(_arg1:Living){
super(_arg1);
}
override public function getStrengthPerLevel():int{
var _local1:int = (8 + getTalentStrengthPerLevel());
return (_local1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (40);
}
override public function getPercentHpRegen():Number{
return (0.1);
}
override public function getClassBuildings():Array{
return ([new HydraLair()]);
}
override public function getClassTraps():Array{
return ([new DeathTrap()]);
}
override public function getHpPerLevel():int{
return (70);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (45);
}
override public function getRangedResistancePercent(_arg1:int):Number{
if (getLiving().getLevel() >= 12){
return ((RANGED_RESISTANCE + TOWER_SHIELD_RESISTANCE));
};
return (RANGED_RESISTANCE);
}
override public function getDexterityPerLevel():int{
var _local1:int = (3 + getTalentDexterityPerLevel());
return (_local1);
}
override public function getMagicPerLevel():int{
var _local1:int = (1 + getTalentMagicPerLevel());
return (_local1);
}
override public function getActions():Array{
var _local2:StunAction;
var _local3:FixedDamageAttackAction;
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE));
if (getLiving().getLevel() >= 4){
_local2 = new StunAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Bash", getLiving(), BASH_STUN_LENGTH, -1);
_local2.setActionResetTime(BASH_RESET_TIME);
_local1.push(_local2);
};
if (getLiving().getLevel() >= 8){
_local1.push(new NameOnlyAction("Tower Shield", getLiving()));
};
if (getLiving().getLevel() >= 12){
_local3 = new FixedDamageAttackAction(getLiving().getStatManager().getMaxHp(), new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Lay on Hands", getLiving(), Damage.MAGICAL);
_local3.setActionResetTime(LAY_ON_HANDS_RESET_TIME);
_local1.push(_local3);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.avatars
Section 55
//EvilWizardClass (com.greyhound.living.classes.avatars.EvilWizardClass)
package com.greyhound.living.classes.avatars {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
import com.greyhound.things.buildings.lairs.*;
import com.greyhound.things.traps.*;
import com.greyhound.living.monsters.*;
import com.greyhound.things.approvers.*;
public class EvilWizardClass extends AvatarClass implements IAvatarClass {
public function EvilWizardClass(_arg1:Living){
super(_arg1);
}
override public function getStrengthPerLevel():int{
var _local1:int = (2 + getTalentStrengthPerLevel());
return (_local1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (50);
}
override public function getPercentHpRegen():Number{
return (0.025);
}
override public function getClassBuildings():Array{
return ([new DemonLair()]);
}
override public function getClassTraps():Array{
return ([new GraveTrap()]);
}
override public function getHpPerLevel():int{
return (35);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (20);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (40);
}
override public function getDexterityPerLevel():int{
var _local1:int = (2 + getTalentDexterityPerLevel());
return (_local1);
}
override public function getMagicPerLevel():int{
var _local1:int = (5 + getTalentMagicPerLevel());
return (_local1);
}
override public function getActions():Array{
var _local2:ConfigurableRangedAttackAction;
var _local3:SummonAction;
var _local4:PlaceObjectAction;
var _local1:Array = new Array();
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), new DisplayObjectProvider(ArtLoader.LightningIMG), Projectile, new Object(), 1, 2000, "Lightning", getLiving(), Damage.MAGICAL, 80));
if (getLiving().getLevel() >= 4){
_local2 = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), new DisplayObjectProvider(ArtLoader.LightningIMG), BouncingDamageProjectile, {bounceRange:50, bounces:4, scalorOnBounce:0.66}, 1, 2000, "Chain Lightning", getLiving(), Damage.MAGICAL, 100, 2);
_local2.setActionResetTime(10000);
_local1.push(_local2);
};
if (getLiving().getLevel() >= 8){
_local3 = new SummonAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), 1, 4000, "Gate", getLiving(), Demon, new LevelSetSpawnModifier(Math.max(1, (getLiving().getLevel() * 0.5))), 20000);
_local3.setActionResetTime(60000);
_local1.push(_local3);
};
if (getLiving().getLevel() >= 12){
_local4 = new PlaceObjectAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), new DisplayObjectProvider(ArtLoader.PoisonCloudIMG), 1, 3000, "Poison Cloud", getLiving(), DamageEmitter, {damagePerSecond:(getLiving().getStatManager().getMagic() * 0.5), duration:6000, team:getLiving().getTeam(), radius:50, name:"Poison Cloud"}, 80, new EnemyTargetApprover(getLiving().getTeam(), false));
_local4.setActionResetTime(35000);
_local1.push(_local4);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.avatars
Section 56
//IAvatarClass (com.greyhound.living.classes.avatars.IAvatarClass)
package com.greyhound.living.classes.avatars {
import com.greyhound.living.classes.*;
public interface IAvatarClass extends ILivingClass {
function getClassTraps():Array;
function getClassBuildings():Array;
function getPercentHpRegen():Number;
}
}//package com.greyhound.living.classes.avatars
Section 57
//MasterLichClass (com.greyhound.living.classes.creep.MasterLichClass)
package com.greyhound.living.classes.creep {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
import com.greyhound.living.monsters.*;
public class MasterLichClass extends LivingClass implements IFlyerHunter {
public function MasterLichClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (5);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (35);
}
override public function getHpPerLevel():int{
return (15);
}
override public function getStrengthPerLevel():int{
return (4);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (30);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (30);
}
override public function getActions():Array{
var _local3:Class;
var _local1:Array = new Array();
var _local2:Number = 1;
_local2 = (_local2 + FanTheCloud.RADIUS_SCALOR_BONUS);
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.SkullIMG), AreaEffectProjectile, {radius:(40 * _local2)}, 30, 2000, "Decay", getLiving(), Damage.MAGICAL, 70));
if (getLiving().getLevel() >= 8){
_local3 = Ghost;
_local1.push(new SummonAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), 1, 5000, "Summoning", getLiving(), _local3, new LevelSetSpawnModifier(Math.max(1, (getLiving().getLevel() * 0.5)))));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.creep
Section 58
//ChampionClass (com.greyhound.living.classes.heroes.ChampionClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.living.heroes.*;
public class ChampionClass extends LivingClass {
public function ChampionClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (20);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (65);
}
override public function getHpPerLevel():int{
return (800);
}
override public function getStrengthPerLevel():int{
return (20);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (65);
}
override public function getDexterityPerLevel():int{
return (20);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (65);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 2, 2000, "Melee", getLiving(), Damage.MELEE));
var _local2:ConfigurableRangedAttackAction = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.FireballIMG), AreaEffectProjectile, {radius:80}, 1, 2000, "Meteor", getLiving(), Damage.MAGICAL, 60, 3);
_local2.setActionResetTime(30000);
_local1.push(_local2);
var _local3:ConfigurableRangedAttackAction = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), PercentHealthProjectile, {percentHealth:2, maxDamage:-1}, 1, 2000, "Deadly Shot", getLiving(), Damage.RANGED, 120, 0);
_local3.setActionResetTime(10000);
_local1.push(_local3);
var _local4:HealAction = new HealAction(new DisplayObjectProvider(ArtLoader.HealActionIMG), 1, 2000, "Cure Wounds(1)", getLiving(), (getLiving().getStatManager().getMagic() * 2), 50, 1);
_local4.setActionResetTime(20000);
_local1.push(_local4);
var _local5:SummonAction = new SummonAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), 1, 1000, "Summon Bears", getLiving(), Bear, new LevelSetSpawnModifier(Math.max(1, (getLiving().getLevel() * 0.7))), 15000, Math.max(1, ((getLiving().getLevel() - 5) / 5)));
_local5.setActionResetTime(15000);
_local1.push(_local5);
var _local6:MultiTargetAttackAction = new MultiTargetAttackAction((getLiving().getLevel() / 4), new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Whirlwind", getLiving(), Damage.MELEE);
_local6.setActionResetTime(5000);
_local1.push(_local6);
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 59
//ClericClass (com.greyhound.living.classes.heroes.ClericClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class ClericClass extends LivingClass {
public function ClericClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (4);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (25);
}
override public function getStrengthPerLevel():int{
return (3);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (20);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (20);
}
override public function getActions():Array{
var _local3:int;
var _local4:DisplayObjectProvider;
var _local5:LivingAction;
var _local6:ConfigurableAttackAction;
var _local1:Array = new Array();
var _local2:int = getLiving().getLevel();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 10, 2000, "Melee", getLiving(), Damage.MELEE));
if (_local2 >= 5){
_local3 = (getLiving().getLevel() / 3);
_local4 = new DisplayObjectProvider(ArtLoader.HealActionIMG);
_local5 = new HealAction(_local4, 1, 6000, (("Cure Wounds(" + _local3) + ")"), getLiving(), (getLiving().getStatManager().getMagic() * 2), 50, _local3);
_local1.push(_local5);
};
if (_local2 >= 15){
_local6 = new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 3, 2000, "Turning", getLiving(), Damage.MAGICAL, 2, 60);
_local6.setTargetApprover(new UndeadEnemyTargetApprover(getLiving().getTeam(), true));
_local1.push(_local6);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 60
//DruidClass (com.greyhound.living.classes.heroes.DruidClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.living.heroes.*;
public class DruidClass extends LivingClass {
public function DruidClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (6);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (20);
}
override public function getHpPerLevel():int{
return (24);
}
override public function getStrengthPerLevel():int{
return (2);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (75);
}
override public function getDexterityPerLevel():int{
return (3);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (15);
}
override public function getActions():Array{
var _local2:SummonAction;
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 2, 2000, "Staff Strike", getLiving(), Damage.MAGICAL));
if (getLiving().getLevel() >= 14){
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), new DisplayObjectProvider(ArtLoader.SwarmIMG), Projectile, new Object(), 1, 2000, "Insect Swarm", getLiving(), Damage.MAGICAL, 80));
};
if (getLiving().getLevel() >= 25){
_local2 = new SummonAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), 10, 1000, "Summon Bears", getLiving(), Bear, new LevelSetSpawnModifier(Math.max(1, (getLiving().getLevel() * 0.7))), 15000, Math.max(1, ((getLiving().getLevel() - 5) / 5)));
_local2.setActionResetTime(30000);
_local1.push(_local2);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 61
//DwarfClass (com.greyhound.living.classes.heroes.DwarfClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class DwarfClass extends LivingClass {
public function DwarfClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (40);
}
override public function getStrengthPerLevel():int{
return (4);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (35);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (35);
}
override public function getActions():Array{
var _local2:MultiTargetAttackAction;
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 6, 2000, "Melee", getLiving(), Damage.MELEE));
if (getLiving().getLevel() >= 9){
_local2 = new MultiTargetAttackAction((getLiving().getLevel() / 3), new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 10, 2000, "Whirlwind", getLiving(), Damage.MELEE);
_local2.setActionResetTime(6000);
_local1.push(_local2);
};
if (getLiving().getLevel() >= 20){
_local1.push(new StunAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Stun", getLiving(), 4000));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 62
//ElfClass (com.greyhound.living.classes.heroes.ElfClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class ElfClass extends LivingClass {
public function ElfClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (20);
}
override public function getStrengthPerLevel():int{
return (2);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (10);
}
override public function getDexterityPerLevel():int{
return (8);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (10);
}
override public function getActions():Array{
var _local2:ConfigurableRangedAttackAction;
var _local1:Array = new Array();
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), Projectile, new Object(), 6, 2000, "Bow", getLiving(), Damage.RANGED, 80));
if (getLiving().getLevel() >= 15){
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), Projectile, new Object(), 1, 500, "Quick Shot", getLiving(), Damage.RANGED, 80));
};
if (getLiving().getLevel() >= 25){
_local2 = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), PercentHealthProjectile, {percentHealth:2, maxDamage:-1}, 1, 2000, "Deadly Shot", getLiving(), Damage.RANGED, 120, 0);
_local2.setActionResetTime(120000);
_local1.push(_local2);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 63
//PaladinClass (com.greyhound.living.classes.heroes.PaladinClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class PaladinClass extends LivingClass implements IActionPerformedListener {
private var hasLaidOnHands:Boolean;
public function PaladinClass(_arg1:Living){
super(_arg1);
hasLaidOnHands = false;
}
override public function getStrengthPerLevel():int{
return (12);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (45);
}
public function actionPerformed(_arg1:LivingAction):void{
hasLaidOnHands = true;
}
override public function getHpPerLevel():int{
return (150);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (60);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (60);
}
override public function getDexterityPerLevel():int{
return (4);
}
override public function getMagicPerLevel():int{
return (18);
}
override public function getActions():Array{
var _local3:DisplayObjectProvider;
var _local4:LivingAction;
var _local5:ConfigurableAttackAction;
var _local1:Array = new Array();
var _local2:int = getLiving().getLevel();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 10, 2000, "Melee", getLiving(), Damage.MELEE));
_local1.push(new MultiTargetAttackAction(-1, new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 3, 2000, "Round Swipe", getLiving(), Damage.MELEE));
if (_local2 >= 10){
if (((!(hasLaidOnHands)) && ((getLiving().getHp() < (getLiving().getStatManager().getMaxHp() / 3))))){
_local3 = new DisplayObjectProvider(ArtLoader.HealActionIMG);
_local4 = new HealAction(_local3, 1, 6000, "Lay on Hands", getLiving(), getLiving().getStatManager().getMaxHp(), 50, 1);
_local4.addActionPerformedListener(this);
return ([_local4]);
};
_local1.push(new NameOnlyAction("Lay On Hands", getLiving()));
};
if (_local2 >= 15){
_local5 = new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 3, 2000, "Turning", getLiving(), Damage.MAGICAL, 1.5, 60);
_local5.setTargetApprover(new UndeadEnemyTargetApprover(getLiving().getTeam(), true));
_local1.push(_local5);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 64
//RogueClass (com.greyhound.living.classes.heroes.RogueClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.effects.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class RogueClass extends LivingClass implements IEffectProvider {
public function RogueClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (35);
}
override public function getStrengthPerLevel():int{
return (6);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (50);
}
public function createEffect(_arg1:Living):IEffect{
return (new RoguePoisonEffect(getLiving().getLevel(), getLiving().getTeam()));
}
override public function getDexterityPerLevel():int{
return (8);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (25);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE));
if (getLiving().getLevel() >= 15){
(_local1[0] as ConfigurableAttackAction).addEffectProvider(this);
_local1.push(new NameOnlyAction("Poisoned Blade", getLiving()));
};
if (getLiving().getLevel() >= 20){
_local1.push(new NameOnlyAction("Thief's Luck", getLiving()));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 65
//ValkyrieClass (com.greyhound.living.classes.heroes.ValkyrieClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class ValkyrieClass extends LivingClass {
public function ValkyrieClass(_arg1:Living){
super(_arg1);
}
override public function getBaseSpeed():Number{
if (getLiving().getLevel() >= 15){
return ((super.getBaseSpeed() * 1.5));
};
return (super.getBaseSpeed());
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (20);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (5);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (15);
}
override public function getDexterityPerLevel():int{
return (4);
}
override public function getStrengthPerLevel():int{
return (4);
}
override public function getMagicPerLevel():int{
return (6);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MAGICAL));
if (getLiving().getLevel() >= 15){
_local1.push(new NameOnlyAction("Rapid Flight", getLiving()));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 66
//WizardClass (com.greyhound.living.classes.heroes.WizardClass)
package com.greyhound.living.classes.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
import com.greyhound.things.approvers.*;
public class WizardClass extends LivingClass {
public function WizardClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (6);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (30);
}
override public function getHpPerLevel():int{
return (10);
}
override public function getStrengthPerLevel():int{
return (1);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (10);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (10);
}
override public function getActions():Array{
var _local2:ConfigurableRangedAttackAction;
var _local1:Array = new Array();
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.FireballIMG), AreaEffectProjectile, {radius:40}, 1, 2000, "Fireball", getLiving(), Damage.MAGICAL, 70));
if (getLiving().getLevel() >= 15){
_local1.push(new PlaceObjectAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.FireWallIMG), 1, 3000, "Fire Wall", getLiving(), DamageEmitter, {damagePerSecond:(getLiving().getStatManager().getMagic() * 0.5), duration:6000, team:getLiving().getTeam(), radius:20, name:"Fire Wall"}, 80, new EnemyTargetApprover(getLiving().getTeam(), false)));
};
if (getLiving().getLevel() >= 25){
_local2 = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.FireballIMG), AreaEffectProjectile, {radius:80}, 1, 2000, "Meteor", getLiving(), Damage.MAGICAL, 70, 3);
_local2.setActionResetTime(30000);
_local1.push(_local2);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.heroes
Section 67
//BearClass (com.greyhound.living.classes.monsters.BearClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class BearClass extends LivingClass {
public function BearClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (22);
}
override public function getStrengthPerLevel():int{
return (5);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (15);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (15);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Claw", getLiving(), Damage.MELEE));
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 68
//CentaurClass (com.greyhound.living.classes.monsters.CentaurClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
public class CentaurClass extends LivingClass implements IFlyerHunter {
public static const CENTAUR_RANGE:int = 80;
public function CentaurClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (35);
}
override public function getHpPerLevel():int{
return (14);
}
override public function getStrengthPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (10);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (10);
}
override public function getStatLevelBoost():int{
return ((super.getStatLevelBoost() + 1));
}
override public function getDexterityPerLevel():int{
return (7);
}
override public function getActions():Array{
var _local2:String;
var _local4:int;
var _local1:Array = new Array(1);
if (getLiving().getLevel() >= 13){
_local2 = "Multishot";
} else {
_local2 = "Shortbow";
};
var _local3:Number = 1;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(FasterReload)))){
_local3 = (_local3 + FasterReload.ATTACK_SPEED_SCALOR_BONUS);
};
_local1[0] = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.ArrowIMG), Projectile, new Object(), 1, (2000 * _local3), _local2, getLiving(), Damage.RANGED, CENTAUR_RANGE);
if (getLiving().getLevel() >= 5){
_local4 = 2;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(MoreArrows)))){
_local4 = (_local4 + MoreArrows.BOUNS_ARROWS);
};
(_local1[0] as ConfigurableRangedAttackAction).setNumberOfProjectiles(_local4);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 69
//DemonClass (com.greyhound.living.classes.monsters.DemonClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
public class DemonClass extends LivingClass implements IFlyerHunter {
public static const DEMON_RANGE:int = 70;
public static const SOUL_STEAL_NAME:String = "Soul Steal";
public function DemonClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (14);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (50);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.FireballIMG), Projectile, new Object(), 6, 2000, "Flamestrike", getLiving(), Damage.MAGICAL, DEMON_RANGE));
if (getLiving().getLevel() >= 10){
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.SoulStealIMG), PercentHealthProjectile, {percentHealth:0.15, maxDamage:getLiving().getStatManager().getMaxHp()}, 1, 2000, SOUL_STEAL_NAME, getLiving(), Damage.MAGICAL, DEMON_RANGE, 0));
};
return (_local1);
}
override public function getStrengthPerLevel():int{
return (4);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (15);
}
override public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
super.notifyDamageDealt(_arg1, _arg2, _arg3, _arg4);
if ((_arg2.getSource() as LivingAction).getName() == SOUL_STEAL_NAME){
};
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(EyeFromAnEye)))){
getLiving().healAmount((_arg1 * EyeFromAnEye.TANSFER_SCALOR));
};
}
override public function getDexterityPerLevel():int{
return (12);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (15);
}
}
}//package com.greyhound.living.classes.monsters
Section 70
//DracoLichClass (com.greyhound.living.classes.monsters.DracoLichClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class DracoLichClass extends LivingClass {
public function DracoLichClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (12);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (50);
}
override public function getHpPerLevel():int{
return (40);
}
override public function getStrengthPerLevel():int{
return (12);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (30);
}
override public function getDexterityPerLevel():int{
return (4);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (30);
}
override public function getActions():Array{
var _local1:Array = new Array(2);
_local1[0] = new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 6, 2000, "Melee", getLiving(), Damage.MELEE);
_local1[1] = new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.SkullIMG), Projectile, new Object(), 1, 2000, "Deathgaze", getLiving(), Damage.MAGICAL, 80);
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 71
//ElementalClass (com.greyhound.living.classes.monsters.ElementalClass)
package com.greyhound.living.classes.monsters {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.ai.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.talents.melee.*;
import com.greyhound.living.monsters.*;
public class ElementalClass extends LivingClass {
public function ElementalClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (8);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (40);
}
override public function getHpPerLevel():int{
var _local1 = 70;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(Big)))){
_local1 = (_local1 + Big.HP_BONUS);
};
return (_local1);
}
override public function getStrengthPerLevel():int{
return (7);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (40);
}
override public function notifyDamageTaken(_arg1:int, _arg2:Damage):void{
var _local3:int;
var _local4:int;
var _local5:ElementalShard;
var _local6:Tile;
var _local7:Point;
var _local8:StayTask;
var _local9:int;
var _local10:ReflectAction;
super.notifyDamageTaken(_arg1, _arg2);
if ((((getLiving().getLevel() >= 9)) && ((getLiving().getHp() <= _arg1)))){
_local3 = (Tools.random(2) + 1);
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(Fragmentation)))){
_local3 = (_local3 + Fragmentation.BONUS_SHARDS);
};
_local4 = 0;
while (_local4 < _local3) {
_local5 = new ElementalShard();
_local6 = getLiving().getTile();
if (_local6 != null){
_local7 = Util.randomlyOffset(_local6.getScreenLocation(), 10);
_local5.setLevel((getLiving().getLevel() * 0.34));
_local5.setTeam(getLiving().getTeam());
_local5.setDuration(15000);
getLiving().getWorld().addDisplayableAt(_local5, _local7);
_local8 = new StayTask(_local5, _local6, false, 10);
_local8.appendTask(new HuntTask(_local5, new PatrolRadiusProvider(_local7, 100)));
_local5.setAITask(_local8);
} else {
trace("Shard had no tile to spawn in");
};
_local4++;
};
};
if (((((!(_arg2.isReflected())) && (!((getLiving().getTeam() == Living.PLAYER_TEAM))))) || (SavedData.hasTalenPoint(RazorSharp)))){
if ((_arg2.getSource() is LivingAction)){
_local9 = (getLiving().getLevel() * RazorSharp.DAMAGE_PER_LEVEL);
_local10 = new ReflectAction(getLiving(), _local9, Damage.MELEE, _arg2);
_local10.reflect();
};
};
}
override public function getDexterityPerLevel():int{
return (4);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (40);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE));
if (getLiving().getLevel() >= 10){
_local1.push(new NameOnlyAction("Shatter", getLiving()));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 72
//GhostClass (com.greyhound.living.classes.monsters.GhostClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class GhostClass extends LivingClass {
public function GhostClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (12);
}
override public function getHpPerLevel():int{
return (16);
}
override public function getStrengthPerLevel():int{
return (2);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (18);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (18);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE));
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 73
//GoblinClass (com.greyhound.living.classes.monsters.GoblinClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.melee.*;
public class GoblinClass extends LivingClass {
public function GoblinClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (5);
}
override public function getHpPerLevel():int{
return (25);
}
override public function getStatLevelBoost():int{
return ((super.getStatLevelBoost() + 1));
}
override public function getStrengthPerLevel():int{
return (2);
}
override public function getRangedResistancePercent(_arg1:int):Number{
var _local2 = 35;
if (getLiving().getLevel() >= 6){
_local2 = (_local2 + 15);
};
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(StrongerGoblinShields)))){
_local2 = (_local2 + StrongerGoblinShields.RANGED_RESISTANCE_PERCENT_BONUS);
};
return (_local2);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (35);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE));
if (getLiving().getLevel() >= 4){
_local1.push(new NameOnlyAction("Iron Shield", getLiving()));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 74
//HydraClass (com.greyhound.living.classes.monsters.HydraClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.effects.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
import com.greyhound.talents.melee.*;
public class HydraClass extends LivingClass implements IEffectProvider {
public function HydraClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (6);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (25);
}
override public function getHpPerLevel():int{
return (100);
}
override public function getStrengthPerLevel():int{
return (10);
}
override public function getRangedResistancePercent(_arg1:int):Number{
var _local2:Number = 50;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(ThickScales)))){
_local2 = (_local2 + ThickScales.MELEE_AND_RANGED_RESISTANCE_PERCENT_BONUS);
};
return (_local2);
}
public function createEffect(_arg1:Living):IEffect{
return (new HydraPoisonEffect(getLiving().getLevel(), getLiving().getTeam()));
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
var _local2:Number = 50;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(ThickScales)))){
_local2 = (_local2 + ThickScales.MELEE_AND_RANGED_RESISTANCE_PERCENT_BONUS);
};
return (_local2);
}
override public function getActions():Array{
var _local1:Array = new Array(1);
var _local2:int = Math.max(Math.min(5, (getLiving().getLevel() - 7)), 1);
_local1[0] = new MultiTargetAttackAction(_local2, new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, (("Bite(" + _local2) + ")"), getLiving(), Damage.MELEE);
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(AcidForBreath)))){
(_local1[0] as MultiTargetAttackAction).addEffectProvider(this);
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 75
//LichClass (com.greyhound.living.classes.monsters.LichClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
import com.greyhound.living.monsters.*;
public class LichClass extends LivingClass implements IFlyerHunter {
public static const LICH_RANGE:int = 70;
public function LichClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
var _local1 = 5;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(MasterOfMagic)))){
_local1 = (_local1 + MasterOfMagic.BONUS_MAGIC_PER_LEVEL);
};
return (_local1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (35);
}
override public function getHpPerLevel():int{
return (5);
}
override public function getStrengthPerLevel():int{
return (4);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (10);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (10);
}
override public function getActions():Array{
var _local3:Class;
var _local1:Array = new Array();
var _local2:Number = 1;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(MasterOfMagic)))){
_local2 = (_local2 + FanTheCloud.RADIUS_SCALOR_BONUS);
};
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.SkullIMG), AreaEffectProjectile, {radius:(40 * _local2)}, 30, 2000, "Decay", getLiving(), Damage.MAGICAL, LICH_RANGE));
if (getLiving().getLevel() >= 8){
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(EtherealMinions)))){
_local3 = Ghost;
} else {
_local3 = Skeleton;
};
_local1.push(new SummonAction(new DisplayObjectProvider(ArtLoader.MagicActionIMG), 1, 5000, "Summoning", getLiving(), _local3, new LevelSetSpawnModifier(Math.max(1, (getLiving().getLevel() * 0.5)))));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 76
//ManticoreClass (com.greyhound.living.classes.monsters.ManticoreClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.effects.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
public class ManticoreClass extends LivingClass implements IFlyerHunter, IEffectProvider {
public function ManticoreClass(_arg1:Living){
super(_arg1);
}
override public function getBaseSpeed():Number{
var _local1:Number = 1;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(SwiftWings)))){
_local1 = (_local1 + SwiftWings.SPEED_SCALOR_BONUS);
};
return ((0.03 * _local1));
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (70);
}
override public function getMagicPerLevel():int{
return (2);
}
override public function getHpPerLevel():int{
return (30);
}
override public function getStrengthPerLevel():int{
return (8);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (5);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (0);
}
public function createEffect(_arg1:Living):IEffect{
return (new ManticorePoisonEffect(getLiving().getLevel(), getLiving().getTeam()));
}
override public function getDexterityPerLevel():int{
return (3);
}
override public function getActions():Array{
var _local1:ConfigurableAttackAction = new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Dive", getLiving(), Damage.MELEE);
if (getLiving().getLevel() >= 8){
_local1.addEffectProvider(this);
};
return ([_local1]);
}
}
}//package com.greyhound.living.classes.monsters
Section 77
//MinotaurClass (com.greyhound.living.classes.monsters.MinotaurClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.melee.*;
public class MinotaurClass extends LivingClass {
public function MinotaurClass(_arg1:Living){
super(_arg1);
}
override public function getBaseSpeed():Number{
var _local1:Number = 1;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(RunningOfTheBulls)))){
_local1 = (_local1 + RunningOfTheBulls.SPEED_SCALOR_BONUS);
};
return ((super.getBaseSpeed() * _local1));
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
var _local1 = 50;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(RunningOfTheBulls)))){
_local1 = (_local1 + WhereIsTheBeef.EXTRA_HP_PER_LEVEL);
};
return (_local1);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (35);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (45);
}
override public function getDexterityPerLevel():int{
return (3);
}
override public function getStrengthPerLevel():int{
return (7);
}
override public function getMagicPerLevel():int{
return (2);
}
override public function getActions():Array{
var _local1:int;
if (getLiving().getLevel() >= 5){
_local1 = 2;
return ([new MultiTargetAttackAction(_local1, new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Cleave", getLiving(), Damage.MELEE)]);
};
return ([new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE)]);
}
}
}//package com.greyhound.living.classes.monsters
Section 78
//PeonClass (com.greyhound.living.classes.monsters.PeonClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.living.classes.*;
public class PeonClass extends LivingClass {
public function PeonClass(_arg1:Living){
super(_arg1);
}
override public function getBaseSpeed():Number{
return (0.02);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (0);
}
override public function getHpPerLevel():int{
return (4);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (0);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (0);
}
override public function getDexterityPerLevel():int{
return (1);
}
override public function getStrengthPerLevel():int{
return (1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getActions():Array{
return (null);
}
}
}//package com.greyhound.living.classes.monsters
Section 79
//SkeletonClass (com.greyhound.living.classes.monsters.SkeletonClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class SkeletonClass extends LivingClass {
public function SkeletonClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (15);
}
override public function getHpPerLevel():int{
return (16);
}
override public function getStrengthPerLevel():int{
return (1);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (15);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (15);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Melee", getLiving(), Damage.MELEE));
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 80
//SwarmClass (com.greyhound.living.classes.monsters.SwarmClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.living.classes.*;
public class SwarmClass extends LivingClass {
public function SwarmClass(_arg1:Living){
super(_arg1);
}
override public function getMagicPerLevel():int{
return (1);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (5);
}
override public function getHpPerLevel():int{
return (30);
}
override public function getStrengthPerLevel():int{
return (1);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (65);
}
override public function getDexterityPerLevel():int{
return (3);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (65);
}
override public function getActions():Array{
return (new Array());
}
}
}//package com.greyhound.living.classes.monsters
Section 81
//VampireClass (com.greyhound.living.classes.monsters.VampireClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.talents.melee.*;
public class VampireClass extends LivingClass {
private var detonated:Boolean;
public static const DETONATE_RANGE:Number = 50;
public function VampireClass(_arg1:Living){
super(_arg1);
detonated = false;
_arg1.setNeedPathToHunt(false);
}
override public function getBaseSpeed():Number{
return (0.025);
}
override public function notifyDamageTaken(_arg1:int, _arg2:Damage):void{
var _local3:InstantDamageAction;
var _local4:Array;
var _local5:int;
var _local6:Object;
super.notifyDamageTaken(_arg1, _arg2);
if (((((!(detonated)) && ((getLiving().getLevel() >= 16)))) && ((getLiving().getHp() < _arg1)))){
detonated = true;
_local3 = new InstantDamageAction(getLiving(), (getLiving().getStatManager().getStrength() * 2), Damage.MAGICAL);
_local4 = Util.getAllLivingsInRange(DETONATE_RANGE, getLiving().getWorld(), getLiving().getScreenLocation());
_local5 = 0;
for each (_local6 in _local4) {
if ((_local6 as Living).getTeam() != getLiving().getTeam()){
_local5 = (_local5 + _local3.deliverDamage((_local6 as Living)));
};
};
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(FromDeathComesLife)))){
for each (_local6 in _local4) {
if (((((_local6 as Living).getTeam() == getLiving().getTeam())) && (!((_local6 == getLiving()))))){
(_local6 as Living).healAmount(_local5);
};
};
};
};
}
override public function getHpPerLevel():int{
return (35);
}
override public function getMagicPerLevel():int{
return (7);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (35);
}
override public function getRangedResistancePercent(_arg1:int):Number{
if (getLiving().isFlying()){
return (70);
};
return (35);
}
override public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
super.notifyDamageDealt(_arg1, _arg2, _arg3, _arg4);
var _local5:Number = 0.33;
if (((!((getLiving().getTeam() == Living.PLAYER_TEAM))) || (SavedData.hasTalenPoint(Sucky)))){
_local5 = (_local5 + Sucky.DRAIN_SCALOR_BONUS);
};
getLiving().healAmount((_arg1 * _local5));
}
override public function getDexterityPerLevel():int{
return (3);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (25);
}
override public function getStrengthPerLevel():int{
return (6);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new VampireAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), 1, 2000, "Drain", getLiving(), Damage.MELEE));
if (getLiving().getLevel() >= 16){
_local1.push(new NameOnlyAction("Detonate", getLiving()));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 82
//WyrmClass (com.greyhound.living.classes.monsters.WyrmClass)
package com.greyhound.living.classes.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class WyrmClass extends LivingClass implements IFlyerHunter {
public static const WYRM_RANGE:int = 70;
public function WyrmClass(_arg1:Living){
super(_arg1);
_arg1.setNeedPathToHunt(false);
}
override public function getMagicPerLevel():int{
return (12);
}
override public function getMagicResistancePercent(_arg1:int):Number{
return (40);
}
override public function getHpPerLevel():int{
return (70);
}
override public function getStrengthPerLevel():int{
return (6);
}
override public function getRangedResistancePercent(_arg1:int):Number{
return (20);
}
override public function getDexterityPerLevel():int{
return (2);
}
override public function getMeleeResistancePercent(_arg1:int):Number{
return (20);
}
override public function getActions():Array{
var _local1:Array = new Array();
_local1.push(new ConfigurableRangedAttackAction(new DisplayObjectProvider(ArtLoader.MeleeAttackIMG), new DisplayObjectProvider(ArtLoader.AcidBreathIMG), Projectile, new Object(), 1, 2000, "Breath", getLiving(), Damage.MAGICAL, WYRM_RANGE));
if (getLiving().getLevel() >= 10){
_local1.push(new NameOnlyAction("Magic Immunity", getLiving()));
};
return (_local1);
}
}
}//package com.greyhound.living.classes.monsters
Section 83
//IFlyerHunter (com.greyhound.living.classes.IFlyerHunter)
package com.greyhound.living.classes {
public interface IFlyerHunter {
}
}//package com.greyhound.living.classes
Section 84
//ILivingClass (com.greyhound.living.classes.ILivingClass)
package com.greyhound.living.classes {
import com.greyhound.living.*;
public interface ILivingClass extends IDamageDealtListener {
function getBaseSpeed():Number;
function getHpPerLevel():int;
function getActions():Array;
function getStatLevelBoost():int;
function getMagicPerLevel():int;
function getMeleeResistancePercent(_arg1:int):Number;
function notifyDamageTaken(_arg1:int, _arg2:Damage):void;
function getMagicResistancePercent(_arg1:int):Number;
function getRangedResistancePercent(_arg1:int):Number;
function getDexterityPerLevel():int;
function getStrengthPerLevel():int;
}
}//package com.greyhound.living.classes
Section 85
//LivingClass (com.greyhound.living.classes.LivingClass)
package com.greyhound.living.classes {
import com.greyhound.living.*;
public class LivingClass implements ILivingClass {
private var living:Living;
public function LivingClass(_arg1:Living){
this.living = _arg1;
}
public function getBaseSpeed():Number{
return (0.02);
}
public function getHpPerLevel():int{
return (0);
}
public function getMagicPerLevel():int{
return (0);
}
public function getActions():Array{
return (new Array());
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
}
public function getMagicResistancePercent(_arg1:int):Number{
return (0);
}
public function getRangedResistancePercent(_arg1:int):Number{
return (0);
}
public function getDexterityPerLevel():int{
return (0);
}
public function notifyDamageTaken(_arg1:int, _arg2:Damage):void{
}
protected function getLiving():Living{
return (living);
}
public function getStrengthPerLevel():int{
return (0);
}
public function getMeleeResistancePercent(_arg1:int):Number{
return (0);
}
public function getStatLevelBoost():int{
return (5);
}
}
}//package com.greyhound.living.classes
Section 86
//EnemyChaosRanger (com.greyhound.living.creep.EnemyChaosRanger)
package com.greyhound.living.creep {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.avatars.*;
public class EnemyChaosRanger extends AILiving {
public function EnemyChaosRanger(){
super(new LivingDisplayObjectProvider(ArtLoader.ChaosRangerIMG), "Chaos Ranger");
setLivingClass(new ChaosRangerClass(this));
}
}
}//package com.greyhound.living.creep
Section 87
//EnemyDeathKnight (com.greyhound.living.creep.EnemyDeathKnight)
package com.greyhound.living.creep {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.avatars.*;
public class EnemyDeathKnight extends AILiving {
public function EnemyDeathKnight(){
super(new LivingDisplayObjectProvider(ArtLoader.DeathKnightIMG), "Death Knight");
setLivingClass(new DeathKnightClass(this));
}
}
}//package com.greyhound.living.creep
Section 88
//EnemyEvilWizard (com.greyhound.living.creep.EnemyEvilWizard)
package com.greyhound.living.creep {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.avatars.*;
public class EnemyEvilWizard extends AILiving {
public function EnemyEvilWizard(){
super(new LivingDisplayObjectProvider(ArtLoader.EvilWizardIMG), "Evil Wizard");
setLivingClass(new EvilWizardClass(this));
}
}
}//package com.greyhound.living.creep
Section 89
//MasterLich (com.greyhound.living.creep.MasterLich)
package com.greyhound.living.creep {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.creep.*;
public class MasterLich extends AILiving {
public function MasterLich(){
super(new LivingDisplayObjectProvider(ArtLoader.LichIMG), "Master Lich");
setLivingClass(new MasterLichClass(this));
}
}
}//package com.greyhound.living.creep
Section 90
//DamageEffect (com.greyhound.living.effects.DamageEffect)
package com.greyhound.living.effects {
import com.greyhound.base.*;
import com.greyhound.living.*;
public class DamageEffect extends OverTimeEffect implements IDamageSource {
private var team:int;
private var damage:Damage;
public function DamageEffect(_arg1:int, _arg2:String, _arg3:int, _arg4:int, _arg5:int){
super(_arg1, _arg2, 2000);
damage = new Damage(_arg3, _arg4, this);
this.team = _arg5;
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
}
public function getTeam():int{
return (team);
}
override public function canReplace(_arg1:IEffect):Boolean{
return ((damage.getAmount(null) > (_arg1 as DamageEffect).damage.getAmount(null)));
}
override protected function tick():void{
var _local1:GameObject = getEnvironment();
if ((_local1 is Living)){
(_local1 as Living).takeDamage(damage);
};
}
}
}//package com.greyhound.living.effects
Section 91
//HydraPoisonEffect (com.greyhound.living.effects.HydraPoisonEffect)
package com.greyhound.living.effects {
import com.greyhound.talents.ranged.*;
public class HydraPoisonEffect extends PoisonEffect {
public function HydraPoisonEffect(_arg1:int, _arg2:int){
super(AcidForBreath.DAMAGE_LENGTH, "Hydra Acid", (_arg1 * AcidForBreath.DAMAGE_PER_SECOND_PER_LEVEL), _arg2);
}
}
}//package com.greyhound.living.effects
Section 92
//IEffect (com.greyhound.living.effects.IEffect)
package com.greyhound.living.effects {
public interface IEffect {
function getEffectIdentifier():String;
function canReplace(_arg1:IEffect):Boolean;
}
}//package com.greyhound.living.effects
Section 93
//IEffectProvider (com.greyhound.living.effects.IEffectProvider)
package com.greyhound.living.effects {
import com.greyhound.living.*;
public interface IEffectProvider {
function createEffect(_arg1:Living):IEffect;
}
}//package com.greyhound.living.effects
Section 94
//ManticorePoisonEffect (com.greyhound.living.effects.ManticorePoisonEffect)
package com.greyhound.living.effects {
import com.greyhound.talents.ranged.*;
public class ManticorePoisonEffect extends PoisonEffect {
private static const DAMAGE_PER_SECOND_PER_LEVEL:Number = 1.5;
public function ManticorePoisonEffect(_arg1:int, _arg2:int){
super(getDuration(), "Manticore Poison", (_arg1 * DAMAGE_PER_SECOND_PER_LEVEL), _arg2);
}
public static function getDuration():int{
var _local1 = 8000;
if (SavedData.hasTalenPoint(PotentVenom)){
_local1 = (_local1 + PotentVenom.DURATION_BONUS);
};
return (_local1);
}
}
}//package com.greyhound.living.effects
Section 95
//OverTimeEffect (com.greyhound.living.effects.OverTimeEffect)
package com.greyhound.living.effects {
import com.greyhound.base.*;
public class OverTimeEffect extends GameObject implements IEffect {
private var tickInterval:int;
private var length:int;
private var identifier:String;
private var tickCounter:int;
public function OverTimeEffect(_arg1:int, _arg2:String, _arg3:int=500){
this.length = _arg1;
setHeartbeatSpeed(500);
tickCounter = _arg3;
this.tickInterval = _arg3;
this.identifier = _arg2;
}
override protected function heartBeat(_arg1:int):void{
super.heartBeat(_arg1);
length = (length - _arg1);
tickCounter = (tickCounter - _arg1);
while (tickCounter <= 0) {
tickCounter = (tickCounter + tickInterval);
tick();
};
if (((!(isDestroyed())) && ((length <= 0)))){
moveTo(null);
};
}
public function canReplace(_arg1:IEffect):Boolean{
trace(("canReplace not overriden in " + this));
return (false);
}
public function getEffectIdentifier():String{
return (identifier);
}
protected function tick():void{
trace(("tick not overriden in " + this));
}
}
}//package com.greyhound.living.effects
Section 96
//PoisonEffect (com.greyhound.living.effects.PoisonEffect)
package com.greyhound.living.effects {
import com.greyhound.living.*;
public class PoisonEffect extends DamageEffect implements IPercentBarColorModifier {
public function PoisonEffect(_arg1:int, _arg2:String, _arg3:int, _arg4:int){
super(_arg1, _arg2, _arg3, Damage.MAGICAL, _arg4);
}
public function getBarColor():int{
return (0xCC00);
}
}
}//package com.greyhound.living.effects
Section 97
//RoguePoisonEffect (com.greyhound.living.effects.RoguePoisonEffect)
package com.greyhound.living.effects {
public class RoguePoisonEffect extends PoisonEffect {
public function RoguePoisonEffect(_arg1:int, _arg2:int){
super(8000, "Deadly Poison", (_arg1 * 1.5), _arg2);
}
}
}//package com.greyhound.living.effects
Section 98
//Bear (com.greyhound.living.heroes.Bear)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Bear extends AILiving {
public function Bear(){
super(new LivingDisplayObjectProvider(ArtLoader.BearIMG), "Bear(GKM)");
setLivingClass(new BearClass(this));
}
}
}//package com.greyhound.living.heroes
Section 99
//Champion (com.greyhound.living.heroes.Champion)
package com.greyhound.living.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Champion extends AILiving implements ITrapImmune {
public function Champion(){
super(new LivingDisplayObjectProvider(ArtLoader.ChampionIMG), "Champion");
setLivingClass(new ChampionClass(this));
setDamageHandler(new ImmunitiesDamageHandler([Damage.TRAP]));
}
override public function getDisplayText():String{
return ((super.getDisplayText() + " If this hero reaches your home tile the game will be lost."));
}
override protected function createLootTable():ILootTable{
return (new GoldOnlyLootTable(30));
}
}
}//package com.greyhound.living.heroes
Section 100
//Cleric (com.greyhound.living.heroes.Cleric)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Cleric extends AILiving {
public function Cleric(){
super(new LivingDisplayObjectProvider(ArtLoader.ClericHeroIMG), "Cleric");
setLivingClass(new ClericClass(this));
}
}
}//package com.greyhound.living.heroes
Section 101
//Druid (com.greyhound.living.heroes.Druid)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Druid extends AILiving {
public function Druid(){
super(new LivingDisplayObjectProvider(ArtLoader.DruidHeroIMG), "Druid");
setLivingClass(new DruidClass(this));
setStackingLimit(3);
}
}
}//package com.greyhound.living.heroes
Section 102
//Dwarf (com.greyhound.living.heroes.Dwarf)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Dwarf extends AILiving {
public function Dwarf(){
super(new LivingDisplayObjectProvider(ArtLoader.DwarfHeroIMG), "Dwarf");
setLivingClass(new DwarfClass(this));
}
}
}//package com.greyhound.living.heroes
Section 103
//Elf (com.greyhound.living.heroes.Elf)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Elf extends AILiving {
public function Elf(){
super(new LivingDisplayObjectProvider(ArtLoader.ElfHeroIMG), "Elf");
setLivingClass(new ElfClass(this));
setStackingLimit(3);
}
}
}//package com.greyhound.living.heroes
Section 104
//Paladin (com.greyhound.living.heroes.Paladin)
package com.greyhound.living.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Paladin extends AILiving implements ITrapImmune {
public function Paladin(){
super(new LivingDisplayObjectProvider(ArtLoader.PaldinHeroIMG), "Paladin");
setLivingClass(new PaladinClass(this));
setDamageHandler(new ImmunitiesDamageHandler([Damage.TRAP]));
}
override protected function createLootTable():ILootTable{
return (new DefaultLootTable(1, 1, 20));
}
}
}//package com.greyhound.living.heroes
Section 105
//Rogue (com.greyhound.living.heroes.Rogue)
package com.greyhound.living.heroes {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Rogue extends AILiving implements ITrapImmune {
public function Rogue(){
super(new LivingDisplayObjectProvider(ArtLoader.RogueHeroIMG), "Rogue");
setLivingClass(new RogueClass(this));
setDamageHandler(new ImmunitiesDamageHandler([Damage.TRAP]));
}
override public function setLevel(_arg1:int):void{
super.setLevel(_arg1);
if (_arg1 >= 20){
setDamageHandler(new RogueDamageHandler());
};
}
}
}//package com.greyhound.living.heroes
Section 106
//Valkyrie (com.greyhound.living.heroes.Valkyrie)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Valkyrie extends AILiving {
public function Valkyrie(){
super(new LivingDisplayObjectProvider(ArtLoader.ValkyrieHeroIMG), "Valkyrie");
setLivingClass(new ValkyrieClass(this));
setFlying(true);
}
}
}//package com.greyhound.living.heroes
Section 107
//Wizard (com.greyhound.living.heroes.Wizard)
package com.greyhound.living.heroes {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.heroes.*;
public class Wizard extends AILiving {
public function Wizard(){
super(new LivingDisplayObjectProvider(ArtLoader.WizardHeroIMG), "Wizard");
setLivingClass(new WizardClass(this));
setStackingLimit(3);
}
}
}//package com.greyhound.living.heroes
Section 108
//Centaur (com.greyhound.living.monsters.Centaur)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Centaur extends AILiving {
public function Centaur(){
super(new LivingDisplayObjectProvider(ArtLoader.CentaurIMG), "Centaur");
setLivingClass(new CentaurClass(this));
setStackingLimit(3);
}
}
}//package com.greyhound.living.monsters
Section 109
//Demon (com.greyhound.living.monsters.Demon)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Demon extends AILiving {
public function Demon(){
super(new LivingDisplayObjectProvider(ArtLoader.DemonIMG), "Demon");
setLivingClass(new DemonClass(this));
setStackingLimit(3);
}
}
}//package com.greyhound.living.monsters
Section 110
//DracoLich (com.greyhound.living.monsters.DracoLich)
package com.greyhound.living.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.races.*;
import com.greyhound.living.classes.monsters.*;
public class DracoLich extends AILiving implements IUndead {
public function DracoLich(){
super(new LivingDisplayObjectProvider(ArtLoader.DracoLichIMG), "Dracolich");
setLivingClass(new DracoLichClass(this));
}
override public function setLevel(_arg1:int):void{
super.setLevel(_arg1);
if (_arg1 >= 5){
setDamageHandler(new ImmunitiesDamageHandler([Damage.MAGICAL]));
};
}
}
}//package com.greyhound.living.monsters
Section 111
//Elemental (com.greyhound.living.monsters.Elemental)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Elemental extends AILiving {
public function Elemental(){
super(new LivingDisplayObjectProvider(ArtLoader.ElementalIMG), "Elemental");
setLivingClass(new ElementalClass(this));
}
}
}//package com.greyhound.living.monsters
Section 112
//ElementalShard (com.greyhound.living.monsters.ElementalShard)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class ElementalShard extends AILiving {
public function ElementalShard(){
super(new LivingDisplayObjectProvider(ArtLoader.ElementalIMG, 0.5), "Elemental");
setLivingClass(new ElementalClass(this));
}
}
}//package com.greyhound.living.monsters
Section 113
//Ghost (com.greyhound.living.monsters.Ghost)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.races.*;
import com.greyhound.living.classes.monsters.*;
public class Ghost extends AILiving implements IUndead {
public function Ghost(){
super(new LivingDisplayObjectProvider(ArtLoader.GhostIMG), "Ghost");
setLivingClass(new GhostClass(this));
setEthereal(true);
}
}
}//package com.greyhound.living.monsters
Section 114
//Goblin (com.greyhound.living.monsters.Goblin)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Goblin extends AILiving {
public function Goblin(){
super(new LivingDisplayObjectProvider(ArtLoader.GoblinIMG), "Goblin");
setLivingClass(new GoblinClass(this));
}
}
}//package com.greyhound.living.monsters
Section 115
//Hydra (com.greyhound.living.monsters.Hydra)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Hydra extends AILiving {
public function Hydra(){
super(new LivingDisplayObjectProvider(ArtLoader.HydraIMG), "Hydra");
setLivingClass(new HydraClass(this));
}
}
}//package com.greyhound.living.monsters
Section 116
//Lich (com.greyhound.living.monsters.Lich)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.races.*;
import com.greyhound.living.classes.monsters.*;
public class Lich extends AILiving implements IUndead {
public function Lich(){
super(new LivingDisplayObjectProvider(ArtLoader.LichIMG), "Lich");
setLivingClass(new LichClass(this));
setStackingLimit(3);
}
}
}//package com.greyhound.living.monsters
Section 117
//Manticore (com.greyhound.living.monsters.Manticore)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Manticore extends AILiving {
public function Manticore(){
super(new LivingDisplayObjectProvider(ArtLoader.ManticoreIMG), "Manticore");
setLivingClass(new ManticoreClass(this));
setFlying(true);
}
}
}//package com.greyhound.living.monsters
Section 118
//Minotaur (com.greyhound.living.monsters.Minotaur)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Minotaur extends AILiving {
public function Minotaur(){
super(new LivingDisplayObjectProvider(ArtLoader.MinotaurIMG), "Minotaur");
setLivingClass(new MinotaurClass(this));
}
}
}//package com.greyhound.living.monsters
Section 119
//Skeleton (com.greyhound.living.monsters.Skeleton)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.races.*;
import com.greyhound.living.classes.monsters.*;
public class Skeleton extends AILiving implements IUndead {
public function Skeleton(){
super(new LivingDisplayObjectProvider(ArtLoader.SkeletonIMG), "Skeleton");
setLivingClass(new SkeletonClass(this));
}
}
}//package com.greyhound.living.monsters
Section 120
//Swarm (com.greyhound.living.monsters.Swarm)
package com.greyhound.living.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.talents.traps.*;
import com.greyhound.living.classes.monsters.*;
public class Swarm extends AILiving {
public function Swarm(){
super(new LivingDisplayObjectProvider(ArtLoader.SwarmIMG), "Swarm");
setLivingClass(new SwarmClass(this));
if (SavedData.hasTalenPoint(ThickEnoughToWalkOn)){
setDamageHandler(new ImmunitiesDamageHandler([Damage.MAGICAL, Damage.MELEE, Damage.RANGED]));
};
}
}
}//package com.greyhound.living.monsters
Section 121
//Vampire (com.greyhound.living.monsters.Vampire)
package com.greyhound.living.monsters {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.races.*;
import com.greyhound.living.classes.monsters.*;
public class Vampire extends AILiving implements IUndead {
public function Vampire(){
super(new LivingDisplayObjectProvider(ArtLoader.VampireIMG), "Vampire");
setLivingClass(new VampireClass(this));
setFlying(true);
}
public function land():void{
setFlying(false);
}
override protected function heartBeat(_arg1:int):void{
super.heartBeat(_arg1);
if ((((getMovementController() is VampireFollowTask)) && ((getMovementController() as VampireFollowTask).shouldFly()))){
setFlying(true);
};
}
}
}//package com.greyhound.living.monsters
Section 122
//Wyrm (com.greyhound.living.monsters.Wyrm)
package com.greyhound.living.monsters {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.classes.monsters.*;
public class Wyrm extends AILiving {
public function Wyrm(){
super(new LivingDisplayObjectProvider(ArtLoader.WyrmIMG), "Wyrm");
setLivingClass(new WyrmClass(this));
setStackingLimit(3);
}
override public function setLevel(_arg1:int):void{
super.setLevel(_arg1);
if (getLevel() >= 10){
setDamageHandler(new ImmunitiesDamageHandler([Damage.MAGICAL]));
};
}
}
}//package com.greyhound.living.monsters
Section 123
//IUndead (com.greyhound.living.races.IUndead)
package com.greyhound.living.races {
public interface IUndead {
}
}//package com.greyhound.living.races
Section 124
//ActionManager (com.greyhound.living.ActionManager)
package com.greyhound.living {
import flash.utils.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
public class ActionManager {
private var actionCooldowns:Dictionary;
private var living:Living;
public function ActionManager(_arg1:Living){
this.living = _arg1;
actionCooldowns = new Dictionary();
}
public function actionInvoked(_arg1:LivingAction):void{
var _local3:String;
var _local2:int = _arg1.getActionResetTime();
if (_local2 > 0){
_local3 = _arg1.getName();
if (actionCooldowns[_local3] === undefined){
actionCooldowns[_local3] = _local2;
} else {
actionCooldowns[_local3] = (actionCooldowns[_local3] + _local2);
};
};
}
public function createAction():LivingAction{
var _local3:Object;
var _local5:String;
var _local6:LivingAction;
var _local1:Array = living.getLivingClass().getActions();
if ((((_local1 == null)) || ((_local1.length == 0)))){
return (null);
};
var _local2:Array = new Array();
for each (_local3 in _local1) {
if (!(_local3 is NameOnlyAction)){
_local5 = (_local3 as LivingAction).getName();
if (((((((_local3 as LivingAction).getActionResetTime() == 0)) || ((actionCooldowns[_local5] === undefined)))) || ((actionCooldowns[_local5] <= 0)))){
_local2.push(_local3);
};
};
};
if (_local2.length == 0){
return (null);
};
if (_local2.length == 1){
return (_local2[0]);
};
var _local4:WeightedRandomArray = new WeightedRandomArray();
for each (_local3 in _local2) {
_local6 = (_local3 as LivingAction);
_local4.addElement(_local6.getRandomWeight(), _local6);
};
return ((_local4.getRandomElement() as LivingAction));
}
public function passTime(_arg1:int):void{
var _local2:Object;
for (_local2 in actionCooldowns) {
actionCooldowns[_local2] = Math.max(0, (actionCooldowns[_local2] - _arg1));
};
}
}
}//package com.greyhound.living
Section 125
//Damage (com.greyhound.living.Damage)
package com.greyhound.living {
public class Damage {
private var damageDealtListeners:Array;
private var targetBasedDamageModifiers:Array;
private var amount:int;
private var type:int;
private var source:IDamageSource;
private var reflected:Boolean;
public static const MELEE:int = 1;
public static const RANGED:int = 2;
public static const TRAP:int = 4;
public static const MAGICAL:int = 3;
public function Damage(_arg1:int, _arg2:int, _arg3:IDamageSource){
this.amount = _arg1;
this.type = _arg2;
switch (_arg2){
case MELEE:
case RANGED:
case MAGICAL:
break;
case TRAP:
break;
default:
trace(("Unkown damage type:" + _arg2));
};
damageDealtListeners = new Array();
this.source = _arg3;
targetBasedDamageModifiers = new Array();
reflected = false;
}
public function setReflected():void{
reflected = true;
}
public function getType():int{
return (type);
}
public function addDamageDealtListener(_arg1:IDamageDealtListener):void{
damageDealtListeners.push(_arg1);
}
public function copyAndScale(_arg1:Number, _arg2:IDamageSource):Damage{
var _local3:Damage = new Damage((amount * _arg1), type, _arg2);
_local3.damageDealtListeners = damageDealtListeners.slice();
_local3.targetBasedDamageModifiers = targetBasedDamageModifiers.slice();
return (_local3);
}
public function removeDamageDealtListener(_arg1:IDamageDealtListener):void{
damageDealtListeners.splice(damageDealtListeners.indexOf(_arg1), 1);
}
public function getAmount(_arg1:Living):int{
var _local3:Object;
if (_arg1 == null){
return (amount);
};
var _local2:Number = 1;
for each (_local3 in targetBasedDamageModifiers) {
_local2 = (_local2 + (_local3 as ITargetBasedDamageModifier).getDamageScalar(_arg1));
};
return (int((amount * _local2)));
}
public function removeTargetBasedDamageModifiers(_arg1:ITargetBasedDamageModifier):void{
targetBasedDamageModifiers.splice(damageDealtListeners.indexOf(_arg1), 1);
}
public function getSource():IDamageSource{
return (source);
}
public function isReflected():Boolean{
return (reflected);
}
public function notifyDamageDealt(_arg1:int, _arg2:Living, _arg3:Boolean):void{
var _local4:Object;
for each (_local4 in damageDealtListeners) {
(_local4 as IDamageDealtListener).notifyDamageDealt(_arg1, this, _arg2, _arg3);
};
if (source != null){
source.notifyDamageDealt(_arg1, this, _arg2, _arg3);
};
}
public function addTargetBasedDamageModifiers(_arg1:ITargetBasedDamageModifier):void{
targetBasedDamageModifiers.push(_arg1);
}
}
}//package com.greyhound.living
Section 126
//DefaultDamageHandler (com.greyhound.living.DefaultDamageHandler)
package com.greyhound.living {
public class DefaultDamageHandler implements IDamageHandler {
public function isImmuneTo(_arg1:int):Boolean{
return (false);
}
public function takeDamage(_arg1:Damage, _arg2:Living):int{
switch (_arg1.getType()){
case Damage.MELEE:
return ((_arg1.getAmount(_arg2) * _arg2.getMeleeResistanceModifier()));
case Damage.RANGED:
return ((_arg1.getAmount(_arg2) * _arg2.getRangedResistanceModifier()));
case Damage.MAGICAL:
return ((_arg1.getAmount(_arg2) * _arg2.getMagicResistanceModifier()));
case Damage.TRAP:
return (_arg1.getAmount(_arg2));
default:
trace(("unknown damage type in takeDamage:" + _arg1.getType()));
};
return (_arg1.getAmount(_arg2));
}
}
}//package com.greyhound.living
Section 127
//DefaultLootTable (com.greyhound.living.DefaultLootTable)
package com.greyhound.living {
import com.greyhound.equipment.*;
import com.greyhound.talents.avatar.*;
public class DefaultLootTable implements ILootTable {
private var dropChance:Number;
private var drops:int;
private var qualityBonus:int;
public function DefaultLootTable(_arg1:int=1, _arg2:Number=0.025, _arg3:int=0){
this.dropChance = _arg2;
this.drops = _arg1;
this.qualityBonus = _arg3;
}
public function generateLoot(_arg1:int):Array{
var _local6:Number;
var _local7:int;
var _local8:int;
var _local2:Array = new Array();
var _local3:int = drops;
var _local4:Number = 0;
if (SavedData.hasTalenPoint(MoreItems)){
_local4 = (_local4 + MoreItems.DROP_CHANCE_SCALOR_BONUS);
if (Math.random() < MoreItems.DROP_CHANCE_SCALOR_BONUS){
_local3++;
};
};
var _local5:int;
while (_local5 < _local3) {
_local6 = Math.random();
if (_local6 < (dropChance + _local4)){
_local7 = _arg1;
_local6 = (Math.random() * 100);
_local8 = (Math.random() * 100);
_local8 = (_local8 + qualityBonus);
if (_local8 < 60){
_local8 = BonusManager.NORMAL;
} else {
if (_local8 < 80){
_local8 = BonusManager.MAGIC;
} else {
if (_local8 < 90){
_local8 = BonusManager.RARE;
} else {
if (_local8 <= 97){
_local8 = BonusManager.EPIC;
} else {
_local8 = BonusManager.LEGENDARY;
};
};
};
};
if (SavedData.hasTalenPoint(BetterItems)){
_local8++;
};
_local2.push(new Equipment(_local8, _local7));
};
_local5++;
};
return (_local2);
}
public function getGold(_arg1:int):int{
return ((2 + (_arg1 * 0.5)));
}
}
}//package com.greyhound.living
Section 128
//GoldOnlyLootTable (com.greyhound.living.GoldOnlyLootTable)
package com.greyhound.living {
public class GoldOnlyLootTable implements ILootTable {
private var levelScalor:Number;
public function GoldOnlyLootTable(_arg1:Number=0.5){
this.levelScalor = _arg1;
}
public function generateLoot(_arg1:int):Array{
return (new Array());
}
public function getGold(_arg1:int):int{
return ((2 + (_arg1 * levelScalor)));
}
}
}//package com.greyhound.living
Section 129
//IDamageDealtListener (com.greyhound.living.IDamageDealtListener)
package com.greyhound.living {
public interface IDamageDealtListener {
function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void;
}
}//package com.greyhound.living
Section 130
//IDamageHandler (com.greyhound.living.IDamageHandler)
package com.greyhound.living {
public interface IDamageHandler {
function isImmuneTo(_arg1:int):Boolean;
function takeDamage(_arg1:Damage, _arg2:Living):int;
}
}//package com.greyhound.living
Section 131
//IDamageSource (com.greyhound.living.IDamageSource)
package com.greyhound.living {
public interface IDamageSource extends IDamageDealtListener {
function getTeam():int;
}
}//package com.greyhound.living
Section 132
//IDigger (com.greyhound.living.IDigger)
package com.greyhound.living {
import com.greyhound.world.*;
import com.greyhound.things.*;
public interface IDigger {
function setDigTarget(_arg1:IDiggable, _arg2:ITileProvider):void;
}
}//package com.greyhound.living
Section 133
//ILootTable (com.greyhound.living.ILootTable)
package com.greyhound.living {
public interface ILootTable {
function generateLoot(_arg1:int):Array;
function getGold(_arg1:int):int;
}
}//package com.greyhound.living
Section 134
//ImmunitiesDamageHandler (com.greyhound.living.ImmunitiesDamageHandler)
package com.greyhound.living {
public class ImmunitiesDamageHandler extends DefaultDamageHandler {
private var immunities:Array;
public function ImmunitiesDamageHandler(_arg1:Array){
this.immunities = _arg1;
}
override public function isImmuneTo(_arg1:int):Boolean{
return (!((immunities.indexOf(_arg1) == -1)));
}
override public function takeDamage(_arg1:Damage, _arg2:Living):int{
if (immunities.indexOf(_arg1.getType()) != -1){
return (0);
};
return (super.takeDamage(_arg1, _arg2));
}
}
}//package com.greyhound.living
Section 135
//IPercentBarColorModifier (com.greyhound.living.IPercentBarColorModifier)
package com.greyhound.living {
public interface IPercentBarColorModifier {
function getBarColor():int;
}
}//package com.greyhound.living
Section 136
//ISpawnModifier (com.greyhound.living.ISpawnModifier)
package com.greyhound.living {
public interface ISpawnModifier {
function modifyLiving(_arg1:Living):void;
}
}//package com.greyhound.living
Section 137
//ITargetBasedDamageModifier (com.greyhound.living.ITargetBasedDamageModifier)
package com.greyhound.living {
public interface ITargetBasedDamageModifier {
function getDamageScalar(_arg1:Living):Number;
}
}//package com.greyhound.living
Section 138
//ITrapImmune (com.greyhound.living.ITrapImmune)
package com.greyhound.living {
public interface ITrapImmune {
}
}//package com.greyhound.living
Section 139
//LevelSetSpawnModifier (com.greyhound.living.LevelSetSpawnModifier)
package com.greyhound.living {
public class LevelSetSpawnModifier implements ISpawnModifier {
private var level:int;
public function LevelSetSpawnModifier(_arg1:int){
this.level = _arg1;
}
public function modifyLiving(_arg1:Living):void{
_arg1.setLevel(level);
}
}
}//package com.greyhound.living
Section 140
//Living (com.greyhound.living.Living)
package com.greyhound.living {
import flash.display.*;
import com.greyhound.ui.controlpanel.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.effects.*;
import com.greyhound.equipment.*;
import com.greyhound.living.classes.*;
import com.greyhound.things.projectiles.*;
import flash.utils.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import com.greyhound.things.buildings.*;
import com.greyhound.ui.floaters.*;
import com.greyhound.*;
import com.greyhound.common.kongregate.*;
public class Living extends DisplayableGameObject implements ISelectionDisplayProvider, IPercentBarProvider, IDamageDealtListener {
private var lootTable:ILootTable;
private var hp:int;
private var timeOutOfCombat:int;
private var equipLocations:Dictionary;
private var automanageEquipment:Boolean;
private var actionPollCounter:int;
private var actionPollSpeed:int;
protected var livingClass:ILivingClass;
private var team:int;
private var dead:Boolean;
private var needPathToHunt:Boolean;
private var reverseCooldown:int;
private var stackingLimit:int;
private var level:int;
private var ethereal:Boolean;
private var name:String;
private var flying:Boolean;
private var actionManager:ActionManager;
private var timeSinceLastAction:int;
private var nextActionSkipWait:Boolean;
private var statManager:StatManager;
private var actionCooldown:int;
protected var damageHandler:IDamageHandler;
private var damageDealtListeners:Array;
public static const OUT_OF_COMBAT_TIME:int = 5000;
public static const ENEMY_TEAM:int = 2;
public static const NO_REVERSE_COOLDOWN:int = -1;
public static const CREEP_TEAM:int = 3;
public static const PLAYER_TEAM:int = 1;
public function Living(_arg1:IDisplayObjectProvider, _arg2:String){
super(_arg1);
setHeartbeatSpeed(50);
actionManager = new ActionManager(this);
hp = 1;
damageHandler = new DefaultDamageHandler();
this.name = _arg2;
dead = false;
equipLocations = new Dictionary();
statManager = new StatManager(this, equipLocations, fireStatsChanged);
flying = false;
actionPollSpeed = 200;
actionPollCounter = actionPollSpeed;
nextActionSkipWait = false;
stackingLimit = -1;
needPathToHunt = true;
damageDealtListeners = new Array();
automanageEquipment = true;
reverseCooldown = -1;
}
public function getName():String{
return (name);
}
public function removeDamageDealtListener(_arg1:IDamageDealtListener):void{
damageDealtListeners.splice(damageDealtListeners.indexOf(_arg1), 1);
}
public function toggleAutoManageEquipment():void{
automanageEquipment = !(automanageEquipment);
fireChange();
}
protected function decideMovementDirection():int{
return (-1);
}
public function getLivingClass():ILivingClass{
return (livingClass);
}
protected function setEthereal(_arg1:Boolean):void{
ethereal = _arg1;
fireChange();
}
override protected function notifyTileChanged():void{
var _local1:Object;
var _local2:Building;
super.notifyTileChanged();
if (canDestroyBuildings()){
for each (_local1 in getTile().getDisplayableGameObjects()) {
if ((_local1 is Building)){
_local2 = (_local1 as Building);
if (((!((_local2.getTeam() == team))) && (_local2.canBeDestroyed()))){
_local2.moveTo(null);
};
};
};
};
}
override protected function heartBeat(_arg1:int):void{
var _local2:LivingAction;
var _local3:IDisplayObjectProvider;
var _local4:DisplayObject;
var _local5:int;
var _local6:Point;
var _local7:Tile;
var _local8:Boolean;
var _local9:int;
var _local10:Object;
super.heartBeat(_arg1);
timeOutOfCombat = (timeOutOfCombat + _arg1);
actionManager.passTime(_arg1);
if (actionCooldown > 0){
actionCooldown = (actionCooldown - _arg1);
if (actionCooldown <= 0){
(getGraphic() as Animateable).resumeIdle();
nextActionSkipWait = true;
};
} else {
actionPollCounter = (actionPollCounter - _arg1);
if (((((!((reverseCooldown == NO_REVERSE_COOLDOWN))) && ((timeSinceLastAction >= reverseCooldown)))) || ((((reverseCooldown == NO_REVERSE_COOLDOWN)) && ((((actionPollCounter <= 0)) || (nextActionSkipWait))))))){
if (reverseCooldown != NO_REVERSE_COOLDOWN){
(getGraphic() as Animateable).resumeIdle();
};
nextActionSkipWait = false;
actionPollCounter = actionPollSpeed;
_local2 = actionManager.createAction();
if (((!((_local2 == null))) && (_local2.shouldPerform()))){
if (!(getEnvironment() is World)){
getWorld().addDisplayableAt(this, Util.randomlyOffset(getTile().getScreenLocation(), 5));
};
actionCooldown = _local2.invokeAction();
if (reverseCooldown != NO_REVERSE_COOLDOWN){
actionCooldown = 0;
timeSinceLastAction = (timeSinceLastAction - ((reverseCooldown * (100 - statManager.getHastePercent())) / 100));
} else {
actionCooldown = (actionCooldown * ((100 - statManager.getHastePercent()) / 100));
};
_local3 = _local2.getActionDisplayObjectProvider();
if (_local3 != null){
_local4 = getGraphic();
(_local4 as Animateable).startAction(_local3.createDisplayObject(this));
};
};
};
if ((((actionCooldown <= 0)) || (!((reverseCooldown == NO_REVERSE_COOLDOWN))))){
_local5 = decideMovementDirection();
if (_local5 != -1){
_local6 = Util.modifyByDirection(getScreenLocation(), _local5, (getStatManager().getSpeed() * _arg1));
_local7 = getWorld().getTileAt(_local6);
if (_local7 != null){
if (_local7 != getTile()){
_local8 = false;
_local9 = 0;
if (_local7.blocksMovement(this)){
_local8 = true;
};
for each (_local10 in _local7.getDisplayableGameObjects()) {
if (stackingLimit != -1){
if ((((((((_local10 is Living)) && (!((_local10 as Living).isFlying())))) && (!((_local10 as Living).isEthereal())))) && (!((_local10 as Living).hasDuration())))){
_local9++;
if (_local9 >= stackingLimit){
_local8 = true;
break;
};
};
};
};
if (!_local8){
setScreenLocation(_local6);
};
} else {
setScreenLocation(_local6);
};
};
} else {
timeSinceLastAction = Math.min((timeSinceLastAction + _arg1), reverseCooldown);
};
};
};
}
public function notifyProjectileFizzile(_arg1:Projectile):void{
if (reverseCooldown == NO_REVERSE_COOLDOWN){
actionCooldown = 0;
};
}
public function equip(_arg1:Equipment):void{
equipLocations[_arg1.getSlot()] = _arg1;
hp = Math.min(hp, statManager.getMaxHp());
fireChange();
}
override protected function notifyObjectLeft(_arg1:GameObject, _arg2:GameObject):void{
var _local3:String;
super.notifyObjectLeft(_arg1, _arg2);
if ((_arg1 is Equipment)){
_local3 = (_arg1 as Equipment).getSlot();
if (equipLocations[_local3] == _arg1){
equipLocations[_local3] = null;
};
fireChange();
} else {
if ((_arg1 is IEffect)){
fireChange();
};
};
}
public function unequip(_arg1:Equipment):void{
if (equipLocations[_arg1.getSlot()] == _arg1){
equipLocations[_arg1.getSlot()] = null;
hp = Math.min(hp, statManager.getMaxHp());
fireChange();
} else {
trace("Tried to unequip something that was not equippped");
};
}
protected function setStackingLimit(_arg1:int):void{
stackingLimit = _arg1;
}
public function setLevel(_arg1:int):void{
level = _arg1;
heal();
}
public function getAllUnequipped():Array{
var _local2:Object;
var _local1:Array = new Array();
for each (_local2 in getInventory()) {
if ((((_local2 is Equipment)) && (!((equipLocations[(_local2 as Equipment).getSlot()] == _local2))))){
_local1.push(_local2);
};
};
return (_local1);
}
public function takeLethalDamage(_arg1:IDamageSource=null):void{
if (!dead){
timeOutOfCombat = 0;
hp = 0;
fireChange();
if (hp <= 0){
dead = die(null);
};
};
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
var _local5:Object;
timeOutOfCombat = 0;
livingClass.notifyDamageDealt(_arg1, _arg2, _arg3, _arg4);
for each (_local5 in damageDealtListeners) {
(_local5 as IDamageDealtListener).notifyDamageDealt(_arg1, _arg2, _arg3, _arg4);
};
}
public function isFlying():Boolean{
return (flying);
}
public function canDestroyBuildings():Boolean{
return (!(flying));
}
public function healAmount(_arg1:int):void{
var _local2:int = statManager.getMaxHp();
if (hp < _local2){
hp = Math.min((hp + _arg1), _local2);
fireChange();
};
}
public function getDisplayControls():IRefreshable{
return (new LivingStatPanel(this));
}
public function addLootTable():void{
lootTable = createLootTable();
}
protected function createLootTable():ILootTable{
return (new DefaultLootTable());
}
public function fireStatsChanged():void{
hp = Math.min(hp, statManager.getMaxHp());
fireChange();
}
override protected function notifyObjectEntered(_arg1:GameObject, _arg2:GameObject):void{
var _local3:Equipment;
var _local4:Equipment;
super.notifyObjectEntered(_arg1, _arg2);
if ((_arg1 is Equipment)){
_local3 = (_arg1 as Equipment);
_local4 = getEquipmentInSlot(_local3.getSlot());
if (_local4 != null){
if (((automanageEquipment) && (_local3.isBetterThen(_local4)))){
equip(_local3);
};
} else {
equip(_local3);
};
fireChange();
} else {
if ((_arg1 is IEffect)){
fireChange();
};
};
}
public function getAllEquipped():Array{
var _local2:Object;
var _local1:Array = new Array();
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1.push(_local2);
};
};
return (_local1);
}
public function setNeedPathToHunt(_arg1:Boolean):void{
needPathToHunt = _arg1;
}
protected function die(_arg1:Damage=null):Boolean{
notifyDied(_arg1);
moveTo(null);
return (true);
}
public function getStatManager():StatManager{
return (statManager);
}
public function getMagicResistanceModifier():Number{
return (((100 - statManager.getMagicResistancePercent()) / 100));
}
protected function setLivingClass(_arg1:ILivingClass):void{
livingClass = _arg1;
setLevel(1);
}
public function getMeleeResistanceModifier():Number{
return (((100 - statManager.getMeleeResistancePercent()) / 100));
}
protected function setFlying(_arg1:Boolean):void{
flying = _arg1;
fireChange();
}
protected function getTimeSinceLastAction():int{
return (timeSinceLastAction);
}
public function isOutOfCombat():Boolean{
return ((timeOutOfCombat >= OUT_OF_COMBAT_TIME));
}
protected function setDamageHandler(_arg1:IDamageHandler):void{
damageHandler = _arg1;
}
public function applyEffect(_arg1:IEffect):Boolean{
var _local2:Object;
for each (_local2 in getInventory()) {
if ((((_local2 is IEffect)) && (((_local2 as IEffect).getEffectIdentifier() == _arg1.getEffectIdentifier())))){
if (!_arg1.canReplace((_local2 as IEffect))){
return (false);
};
(_local2 as GameObject).moveTo(null);
break;
};
};
(_arg1 as GameObject).moveTo(this);
fireChange();
return (true);
}
public function isImmuneTo(_arg1:int):Boolean{
return (damageHandler.isImmuneTo(_arg1));
}
protected function setReverseCooldown(_arg1:int):void{
reverseCooldown = _arg1;
timeSinceLastAction = _arg1;
}
public function isDead():Boolean{
return (dead);
}
public function getBarPercent():Number{
var _local1:Number = statManager.getMaxHp();
return ((hp / _local1));
}
public function needsPathToHunt():Boolean{
return (needPathToHunt);
}
public function getEquipmentInSlot(_arg1:String):Equipment{
if (equipLocations[_arg1] === undefined){
return (null);
};
return (equipLocations[_arg1]);
}
public function stun(_arg1:int):void{
actionCooldown = (actionCooldown + _arg1);
}
public function getRangedResistanceModifier():Number{
return (((100 - statManager.getRangedResistancePercent()) / 100));
}
public function getLevel():int{
return (level);
}
public function isAutoManagingEquipment():Boolean{
return (automanageEquipment);
}
public function isEthereal():Boolean{
return (ethereal);
}
public function takeDamage(_arg1:Damage):int{
if (dead){
return (0);
};
timeOutOfCombat = 0;
var _local2:int = damageHandler.takeDamage(_arg1, this);
if (_local2 > 0){
getLivingClass().notifyDamageTaken(_local2, _arg1);
_arg1.notifyDamageDealt(_local2, this, (_local2 >= hp));
hp = (hp - _local2);
fireChange();
if (hp <= 0){
dead = die(_arg1);
};
};
return (_local2);
}
public function getDisplayText():String{
var _local4:Object;
var _local1 = "";
var _local2:Array = livingClass.getActions();
if (_local2 != null){
for each (_local4 in _local2) {
if (_local1.length > 0){
_local1 = (_local1 + "\n");
};
_local1 = (_local1 + (_local4 as LivingAction).getDisplayString());
};
};
if (_local1.length == 0){
_local1 = "None";
};
var _local3 = "";
for each (_local4 in getInventory()) {
if ((_local4 is IEffect)){
_local3 = (_local3 + (" " + (_local4 as IEffect).getEffectIdentifier()));
};
};
return ((((((((((name + " level ") + getLevel()) + " HP: ") + hp) + "/") + statManager.getMaxHp()) + " Actions:\n") + _local1) + _local3));
}
protected function notifyDied(_arg1:Damage=null):void{
var _local2:Point;
var _local3:Floater;
var _local4:World;
var _local5:int;
var _local6:Array;
var _local7:int;
var _local8:Object;
var _local9:Equipment;
if ((((team == Living.ENEMY_TEAM)) && (MyPreloader.isKongregate()))){
APILoader.submitStat(KongregateStatistics.HEROES_KILLED, 1);
};
if (lootTable != null){
_local2 = getScreenLocation();
_local4 = getWorld();
_local5 = lootTable.getGold(getLevel());
if (_local5 > 0){
_local4.getVault().addGold(_local5);
GoldFloater.showGoldFloaterOn(_local5, this);
};
_local6 = lootTable.generateLoot(getLevel());
if (((!((_local6 == null))) && ((_local6.length > 0)))){
_local7 = 0;
for each (_local8 in _local6) {
_local9 = (_local8 as Equipment);
_local3 = new Floater(_local4.getStage(), _local2.x, ((_local2.y - 10) - _local7), new Icon(_local9.getDisplayObject()));
_local7 = (_local7 + _local3.height);
new ToolTip("This is an item, go to the items tab to see it!", _local3, null, null, 0);
_local9.moveTo(_local4.getAvatar());
};
};
if (getTeam() != Living.PLAYER_TEAM){
_local4.getAvatar().notifyLivingKilled(getLevel());
};
};
}
public function setTeam(_arg1:int):void{
this.team = _arg1;
}
public function getActionManager():ActionManager{
return (actionManager);
}
public function getTeam():int{
return (team);
}
public function addDamageDealtListener(_arg1:IDamageDealtListener):void{
damageDealtListeners.push(_arg1);
}
protected function heal():void{
hp = statManager.getMaxHp();
fireChange();
}
protected function setDead(_arg1:Boolean):void{
dead = _arg1;
}
public function getHp():int{
return (hp);
}
}
}//package com.greyhound.living
Section 141
//Peon (com.greyhound.living.Peon)
package com.greyhound.living {
import com.greyhound.world.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
import com.greyhound.ui.floaters.*;
import com.greyhound.*;
import com.greyhound.living.classes.monsters.*;
import com.greyhound.common.kongregate.*;
public class Peon extends AILiving implements IDigger {
private var digTarget:IDiggable;
private var standInTileProvider:ITileProvider;
private var timeSpentDigging:int;
public function Peon(){
super(new LivingDisplayObjectProvider(ArtLoader.PeonIMG), "Peon");
setLivingClass(new PeonClass(this));
timeSpentDigging = 0;
}
public function setDigTarget(_arg1:IDiggable, _arg2:ITileProvider):void{
this.digTarget = _arg1;
this.standInTileProvider = _arg2;
timeSpentDigging = 0;
}
override protected function heartBeat(_arg1:int):void{
var _local2:int;
super.heartBeat(_arg1);
if (((((((!((standInTileProvider == null))) && ((getTile() == standInTileProvider.provideTile())))) && (!((digTarget == null))))) && ((getEnvironment() is World)))){
timeSpentDigging = (timeSpentDigging + _arg1);
if (timeSpentDigging >= digTarget.getDigLength()){
_local2 = digTarget.getDigValue();
getWorld().getVault().addGold(_local2);
if (_local2 > 0){
GoldFloater.showGoldFloaterOn(_local2, this);
if (MyPreloader.isKongregate()){
APILoader.submitStat(KongregateStatistics.GOLD_DUG, _local2);
};
};
digTarget.performDig(this);
};
};
}
}
}//package com.greyhound.living
Section 142
//RogueDamageHandler (com.greyhound.living.RogueDamageHandler)
package com.greyhound.living {
public class RogueDamageHandler extends ImmunitiesDamageHandler {
private var thiefsLuckCounter:int;
public function RogueDamageHandler(){
super([Damage.TRAP]);
thiefsLuckCounter = 4;
}
override public function takeDamage(_arg1:Damage, _arg2:Living):int{
var _local3:int = super.takeDamage(_arg1, _arg2);
if ((((_local3 > _arg2.getHp())) && ((thiefsLuckCounter > 0)))){
thiefsLuckCounter--;
return (0);
};
return (_local3);
}
}
}//package com.greyhound.living
Section 143
//StatManager (com.greyhound.living.StatManager)
package com.greyhound.living {
import com.greyhound.equipment.*;
import flash.utils.*;
public class StatManager {
private var innateSpeedBonus:Number;
private var fireChange:Function;
private var equipLocations:Dictionary;
private var innateStrengthBonus:int;
private var innateRangedResistanceBonus:Number;
private var innateMagicBonus:int;
private var innateMaxHpBonus:int;
private var innateHasteBonus:Number;
private var innateMagicResistanceBonus:Number;
private var innateDexterityBonus:int;
private var living:Living;
private var innateMeleeResistanceBonus:Number;
public static const MAX_HASTE:Number = 80;
public static const MAX_RESISTANCE:Number = 80;
public static const MAX_SPEED:Number = 0.1;
public function StatManager(_arg1:Living, _arg2:Dictionary, _arg3:Function){
this.living = _arg1;
this.equipLocations = _arg2;
this.fireChange = _arg3;
innateStrengthBonus = 0;
innateDexterityBonus = 0;
innateMagicBonus = 0;
innateSpeedBonus = 0;
innateMeleeResistanceBonus = 0;
innateRangedResistanceBonus = 0;
innateMagicResistanceBonus = 0;
innateMaxHpBonus = 0;
innateMaxHpBonus = 0;
innateHasteBonus = 0;
}
public function addInnateSpeedBonus(_arg1:Number):void{
innateSpeedBonus = (innateSpeedBonus + _arg1);
fireChange();
}
public function getMagic():int{
var _local2:Object;
var _local1:int = ((living.getLivingClass().getStatLevelBoost() + living.getLevel()) * living.getLivingClass().getMagicPerLevel());
_local1 = (_local1 + innateMagicBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getMagicBonus());
};
};
return (Math.max(1, _local1));
}
public function getMeleeResistancePercent():Number{
var _local2:Object;
var _local1:Number = living.getLivingClass().getMeleeResistancePercent(living.getLevel());
_local1 = (_local1 + innateMeleeResistanceBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getMeleeResistanceBonus());
};
};
return (Math.min(MAX_RESISTANCE, _local1));
}
public function getSpeed():Number{
var _local2:Object;
var _local1:Number = living.getLivingClass().getBaseSpeed();
_local1 = (_local1 + innateSpeedBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getSpeedBonus());
};
};
return (Math.min(Math.max(0.0001, _local1), MAX_SPEED));
}
public function addInnateMaxHpBonus(_arg1:int):void{
innateMaxHpBonus = (innateMaxHpBonus + _arg1);
fireChange();
}
public function getRangedResistancePercent():Number{
var _local2:Object;
var _local1:Number = living.getLivingClass().getRangedResistancePercent(living.getLevel());
_local1 = (_local1 + innateRangedResistanceBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getRangedResistanceBonus());
};
};
return (Math.min(MAX_RESISTANCE, _local1));
}
public function addInnateDexterityBonus(_arg1:int):void{
innateDexterityBonus = (innateDexterityBonus + _arg1);
fireChange();
}
public function getDexterity():int{
var _local2:Object;
var _local1:int = ((living.getLivingClass().getStatLevelBoost() + living.getLevel()) * living.getLivingClass().getDexterityPerLevel());
_local1 = (_local1 + innateDexterityBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getDexterityBonus());
};
};
return (Math.max(1, _local1));
}
public function addInnateMagicBonus(_arg1:int):void{
innateMagicBonus = (innateMagicBonus + _arg1);
fireChange();
}
public function getMagicResistancePercent():Number{
var _local2:Object;
var _local1:Number = living.getLivingClass().getMagicResistancePercent(living.getLevel());
_local1 = (_local1 + innateMagicResistanceBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getMagicResistanceBonus());
};
};
return (Math.min(MAX_RESISTANCE, _local1));
}
public function getMaxHp():int{
var _local2:Object;
var _local1:int = ((living.getLivingClass().getHpPerLevel() * (living.getLivingClass().getStatLevelBoost() + living.getLevel())) + getStrength());
_local1 = (_local1 + innateMaxHpBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getMaxHpBonus());
};
};
return (Math.max(1, _local1));
}
public function getHastePercent():Number{
var _local2:Object;
var _local1:Number = StatManager.getDexterityHasteBonus(getDexterity());
_local1 = (_local1 + innateHasteBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getHasteBonus());
};
};
return (Math.min(MAX_HASTE, _local1));
}
public function addInnateMagicResistanceBonus(_arg1:Number):void{
innateMagicResistanceBonus = (innateMagicResistanceBonus + _arg1);
fireChange();
}
public function addInnateStrengthBonus(_arg1:int):void{
innateStrengthBonus = (innateStrengthBonus + _arg1);
fireChange();
}
public function addInnateRangedResistanceBonus(_arg1:Number):void{
innateRangedResistanceBonus = (innateRangedResistanceBonus + _arg1);
fireChange();
}
public function getStrength():int{
var _local2:Object;
var _local1:int = ((living.getLivingClass().getStatLevelBoost() + living.getLevel()) * living.getLivingClass().getStrengthPerLevel());
_local1 = (_local1 + innateStrengthBonus);
for each (_local2 in equipLocations) {
if (_local2 != null){
_local1 = (_local1 + (_local2 as Equipment).getBonusManager().getStrengthBonus());
};
};
return (Math.max(1, _local1));
}
public function addInnateMeleeResistanceBonus(_arg1:Number):void{
innateMeleeResistanceBonus = (innateMeleeResistanceBonus + _arg1);
fireChange();
}
public function addInnateHasteBonus(_arg1:int):void{
innateHasteBonus = (innateHasteBonus + _arg1);
fireChange();
}
public static function getDexterityHasteBonus(_arg1:int):Number{
var _local2:Number = 0;
var _local3:Number = 40;
var _local4:Number = 100;
var _local5:Number = 0.016;
var _local6:Number = 0.001;
var _local7:Number = _arg1;
var _local8:Number = (_local2 + (_local3 / Math.pow((1 + (_local6 * Math.pow(Math.E, (-(_local5) * (_local7 - _local4))))), (1 / _local6))));
return (_local8);
}
}
}//package com.greyhound.living
Section 144
//Alchemy (com.greyhound.talents.avatar.Alchemy)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class Alchemy extends Talent {
public static const GOLD_GENERATION_PER_LEVEL:Number = 3;
public function Alchemy(){
addPreReq(KeepOnGoing);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.AlchemyIMG());
}
override public function getButtonToolTip():String{
return ((("Alchemy allows your hero to generate gold. They create " + GOLD_GENERATION_PER_LEVEL) + " gold per avatar level every round that is a multiple of the number of enemy spawn points."));
}
}
}//package com.greyhound.talents.avatar
Section 145
//BackInBlack (com.greyhound.talents.avatar.BackInBlack)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class BackInBlack extends Talent {
public static const RESPAWN_SPEED_SCALOR_BONUS:Number = 0.5;
public function BackInBlack(){
addPreReq(StrongestBestFastest);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.BackInBlackIMG());
}
override public function getButtonToolTip():String{
return ((("Back In Black makes your avatar respawn " + (100 * RESPAWN_SPEED_SCALOR_BONUS)) + "% faster."));
}
}
}//package com.greyhound.talents.avatar
Section 146
//BetterItems (com.greyhound.talents.avatar.BetterItems)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class BetterItems extends Talent {
public function BetterItems(){
addPreReq(MoreItems);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.BetterItemsIMG());
}
override public function getButtonToolTip():String{
return ("Better Items increases the drop quality of everything you get. For example grey items will always be green. Legendary items are now Artifacts.");
}
}
}//package com.greyhound.talents.avatar
Section 147
//KeepOnGoing (com.greyhound.talents.avatar.KeepOnGoing)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class KeepOnGoing extends Talent {
public static const REGEN_PERCENT_BONUS:Number = 0.5;
public function KeepOnGoing(){
addPreReq(WatchAndLearn);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.KeepOnGoingIMG());
}
override public function getButtonToolTip():String{
return ((("Keep On Going allows the avatar to regenerate " + (100 * REGEN_PERCENT_BONUS)) + "% of their maximum hitpoints in addition to regular avatar regeneration rates."));
}
}
}//package com.greyhound.talents.avatar
Section 148
//MoreItems (com.greyhound.talents.avatar.MoreItems)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class MoreItems extends Talent {
public static const DROP_CHANCE_SCALOR_BONUS:Number = 0.025;
public function MoreItems(){
addPreReq(StrongererBettererFasterer);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.MoreItemsIMG());
}
override public function getButtonToolTip():String{
return ((("More Items increases the drop rate of enemies by " + (100 * DROP_CHANCE_SCALOR_BONUS)) + "%."));
}
}
}//package com.greyhound.talents.avatar
Section 149
//StrongerBetterFaster (com.greyhound.talents.avatar.StrongerBetterFaster)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class StrongerBetterFaster extends Talent {
public static const MAGIC_BONUS_PER_LEVEL:int = 1;
public static const STRENGTH_BONUS_PER_LEVEL:int = 1;
public static const DEXTERITY_BONUS_PER_LEVEL:int = 1;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.StrongerBetterFasterIMG());
}
override public function getButtonToolTip():String{
return ((((((("Stronger Better Faster adds " + STRENGTH_BONUS_PER_LEVEL) + " strength, ") + DEXTERITY_BONUS_PER_LEVEL) + " dexterity and ") + MAGIC_BONUS_PER_LEVEL) + " magic per level."));
}
}
}//package com.greyhound.talents.avatar
Section 150
//StrongererBettererFasterer (com.greyhound.talents.avatar.StrongererBettererFasterer)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class StrongererBettererFasterer extends Talent {
public static const MAGIC_BONUS_PER_LEVEL:int = 1;
public static const STRENGTH_BONUS_PER_LEVEL:int = 1;
public static const DEXTERITY_BONUS_PER_LEVEL:int = 1;
public function StrongererBettererFasterer(){
addPreReq(StrongerBetterFaster);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.StrongererBettererFastererIMG());
}
override public function getButtonToolTip():String{
return ((((((("Strongerer Betterer Fasterer adds " + STRENGTH_BONUS_PER_LEVEL) + " strength, ") + DEXTERITY_BONUS_PER_LEVEL) + " dexterity and ") + MAGIC_BONUS_PER_LEVEL) + " magic per level."));
}
}
}//package com.greyhound.talents.avatar
Section 151
//StrongestBestFastest (com.greyhound.talents.avatar.StrongestBestFastest)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class StrongestBestFastest extends Talent {
public static const MAGIC_BONUS_PER_LEVEL:int = 1;
public static const STRENGTH_BONUS_PER_LEVEL:int = 1;
public static const DEXTERITY_BONUS_PER_LEVEL:int = 1;
public function StrongestBestFastest(){
addPreReq(StrongererBettererFasterer);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.StrongestBestFastestIMG());
}
override public function getButtonToolTip():String{
return ((((((("Strongest Best Fastest adds " + STRENGTH_BONUS_PER_LEVEL) + " strength, ") + DEXTERITY_BONUS_PER_LEVEL) + " dexterity and ") + MAGIC_BONUS_PER_LEVEL) + " magic per level(by this point your avatar should be a killing machine, make sure you use it)."));
}
}
}//package com.greyhound.talents.avatar
Section 152
//WatchAndLearn (com.greyhound.talents.avatar.WatchAndLearn)
package com.greyhound.talents.avatar {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class WatchAndLearn extends Talent {
public static const EXPERIENCE_SCALOR_BONUS:Number = 0.01;
public function WatchAndLearn(){
addPreReq(StrongerBetterFaster);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.WatchAndLearnIMG());
}
override public function getButtonToolTip():String{
return ("Watch And Learn increases your avatars xp gains by 5%(experience is tracked as a decimal number).");
}
}
}//package com.greyhound.talents.avatar
Section 153
//Big (com.greyhound.talents.melee.Big)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class Big extends Talent {
public static const HP_BONUS:int = 15;
public function Big(){
addPreReq(FromDeathComesLife);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.BigIMG());
}
override public function getButtonToolTip():String{
return ((("BIG! makes elementals, well.. bigger. They have " + HP_BONUS) + " more hitpoints per level."));
}
}
}//package com.greyhound.talents.melee
Section 154
//Fragmentation (com.greyhound.talents.melee.Fragmentation)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class Fragmentation extends Talent {
public static const BONUS_SHARDS:int = 1;
public function Fragmentation(){
addPreReq(SafetyInNumbers);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.FragmentationIMG());
}
override public function getButtonToolTip():String{
return ((("Fragmentation increases the number of shards that split of dieing elementals by " + BONUS_SHARDS) + "."));
}
}
}//package com.greyhound.talents.melee
Section 155
//FromDeathComesLife (com.greyhound.talents.melee.FromDeathComesLife)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class FromDeathComesLife extends Talent {
public function FromDeathComesLife(){
addPreReq(Sucky);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.FromDeathComesLifeIMG());
}
override public function getButtonToolTip():String{
return ("From Death Comes Life heals all nearby friendly targets an amount of health equal to the damage dealt by vampire detonations. Each target gets the full amount.");
}
}
}//package com.greyhound.talents.melee
Section 156
//RazorSharp (com.greyhound.talents.melee.RazorSharp)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class RazorSharp extends Talent {
public static const DAMAGE_PER_LEVEL:int = 2;
public function RazorSharp(){
addPreReq(RunningOfTheBulls);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.RazorSharpIMG());
}
override public function getButtonToolTip():String{
return ((("Razor Sharp makes the outer layer of elementals bristle like a porcupine. Any enemy striking an elemental will take damage equal to the elemental's level times " + DAMAGE_PER_LEVEL) + "."));
}
}
}//package com.greyhound.talents.melee
Section 157
//RunningOfTheBulls (com.greyhound.talents.melee.RunningOfTheBulls)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class RunningOfTheBulls extends Talent {
public static const SPEED_SCALOR_BONUS:Number = 0.4;
public function RunningOfTheBulls(){
addPreReq(WhereIsTheBeef);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.RunningOfTheBullsIMG());
}
override public function getButtonToolTip():String{
return ((("Running Of The Bulls increases minotaurs movement speed by " + int((SPEED_SCALOR_BONUS * 100))) + "%."));
}
}
}//package com.greyhound.talents.melee
Section 158
//SafetyInNumbers (com.greyhound.talents.melee.SafetyInNumbers)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class SafetyInNumbers extends Talent {
public static const BONUS_POPULATION:int = 1;
public function SafetyInNumbers(){
addPreReq(StrongerGoblinShields);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.SafetyInNumbersIMG());
}
override public function getButtonToolTip():String{
return ((("Safety In Numbers increases the population limit of goblin hovels by " + BONUS_POPULATION) + "."));
}
}
}//package com.greyhound.talents.melee
Section 159
//StrongerGoblinShields (com.greyhound.talents.melee.StrongerGoblinShields)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class StrongerGoblinShields extends Talent {
public static const RANGED_RESISTANCE_PERCENT_BONUS:Number = 10;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.StrongerGoblinShieldsIMG());
}
override public function getButtonToolTip():String{
return ((("Stronger Goblin Shields gives each goblin a " + RANGED_RESISTANCE_PERCENT_BONUS) + "% reduction in damage from ranged attacks."));
}
}
}//package com.greyhound.talents.melee
Section 160
//Sucky (com.greyhound.talents.melee.Sucky)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class Sucky extends Talent {
public static const DRAIN_SCALOR_BONUS:Number = 0.15;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.SuckyIMG());
}
override public function getButtonToolTip():String{
return ((("Sucky gives vampires an additional " + (DRAIN_SCALOR_BONUS * 100)) + "% health drain."));
}
}
}//package com.greyhound.talents.melee
Section 161
//ThickScales (com.greyhound.talents.melee.ThickScales)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class ThickScales extends Talent {
public static const MELEE_AND_RANGED_RESISTANCE_PERCENT_BONUS:Number = 20;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.ThickScalesIMG());
}
override public function isRestricted():Boolean{
return (true);
}
override public function getButtonToolTip():String{
return ((("Thick Scales(DEATH KNIGHT ONLY) gives hydras an amazing " + MELEE_AND_RANGED_RESISTANCE_PERCENT_BONUS) + " percent bonus to both melee and ranged resistance. This makes them the true kings of defense."));
}
override public function meetsPrereqs(_arg1:Array):Boolean{
return (((((((checkBothTalentSources(Fragmentation, _arg1)) || (checkBothTalentSources(RazorSharp, _arg1)))) || (checkBothTalentSources(Big, _arg1)))) && ((SavedData.getAvatarType() == GameSave.DEATH_KNIGHT))));
}
}
}//package com.greyhound.talents.melee
Section 162
//WhereIsTheBeef (com.greyhound.talents.melee.WhereIsTheBeef)
package com.greyhound.talents.melee {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class WhereIsTheBeef extends Talent {
public static const EXTRA_HP_PER_LEVEL:int = 15;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.WhereIsTheBeefIMG());
}
override public function getButtonToolTip():String{
return ((("Where is the beef makes minotaurs more beefy. They get " + EXTRA_HP_PER_LEVEL) + " extra hit points per level."));
}
}
}//package com.greyhound.talents.melee
Section 163
//AcidForBreath (com.greyhound.talents.ranged.AcidForBreath)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
import com.greyhound.*;
public class AcidForBreath extends Talent {
public static const DAMAGE_PER_SECOND_PER_LEVEL:Number = 2;
public static const DAMAGE_LENGTH:int = 6000;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.AcidForBreathIMG());
}
override public function isRestricted():Boolean{
return (true);
}
override public function getButtonToolTip():String{
return ((((("Acid For Breath(CHAOS RANGER ONLY) makes Wyrm breath so toxic, it burns the skin of its victims for " + DAMAGE_PER_SECOND_PER_LEVEL) + " per second per level of the hydra. The effect lasts ") + Tools.round((DAMAGE_LENGTH / 1000), 1)) + " seconds."));
}
override public function meetsPrereqs(_arg1:Array):Boolean{
return (((((checkBothTalentSources(AnimalHusbandry, _arg1)) || (checkBothTalentSources(PackHunting, _arg1)))) && ((SavedData.getAvatarType() == GameSave.CHAOS_RANGER))));
}
}
}//package com.greyhound.talents.ranged
Section 164
//AnimalHusbandry (com.greyhound.talents.ranged.AnimalHusbandry)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class AnimalHusbandry extends Talent {
public static const RESPAWN_SCALOR_BONUS:Number = 0.3;
public function AnimalHusbandry(){
addPreReq(MoreArrows);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.AnimalHusbandryIMG());
}
override public function getButtonToolTip():String{
return ("Animal Husbandry improves centaur spawn speed by 30%. This is usefull when lairs are taking enemy fire and you need to get replacements in place quickly.");
}
}
}//package com.greyhound.talents.ranged
Section 165
//EtherealMinions (com.greyhound.talents.ranged.EtherealMinions)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class EtherealMinions extends Talent {
public function EtherealMinions(){
addPreReq(FanTheCloud);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.EtherealMinionsIMG());
}
override public function getButtonToolTip():String{
return ("Ethereal Minions allows liches to summon ghosts instead of skeletons. Ghosts can pass through walls and this allows lich lairs to be placed in a larger variety of locations and still be able to take advantage of their summons.");
}
}
}//package com.greyhound.talents.ranged
Section 166
//EyeFromAnEye (com.greyhound.talents.ranged.EyeFromAnEye)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class EyeFromAnEye extends Talent {
public static const TANSFER_SCALOR:Number = 0.25;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.EyeFromAnEyeIMG());
}
override public function isRestricted():Boolean{
return (true);
}
override public function getButtonToolTip():String{
return ((("Eye From An Eye(EVIL WIZARD ONLY) causes the demons soul steal attack to transfer " + (100 * TANSFER_SCALOR)) + "% of damage dealt to the demon's hit points."));
}
override public function meetsPrereqs(_arg1:Array):Boolean{
return (((((checkBothTalentSources(AnimalHusbandry, _arg1)) || (checkBothTalentSources(PackHunting, _arg1)))) && ((SavedData.getAvatarType() == GameSave.EVIL_WIZARD))));
}
}
}//package com.greyhound.talents.ranged
Section 167
//FanTheCloud (com.greyhound.talents.ranged.FanTheCloud)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class FanTheCloud extends Talent {
public static const RADIUS_SCALOR_BONUS:Number = 0.2;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.FanTheCloudIMG());
}
override public function getButtonToolTip():String{
return ((("Fan The Cloud spreads out the deadly cloud of death that liches spew at their enemies increasing its radius by " + (100 * RADIUS_SCALOR_BONUS)) + "%."));
}
}
}//package com.greyhound.talents.ranged
Section 168
//FasterReload (com.greyhound.talents.ranged.FasterReload)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class FasterReload extends Talent {
public static const ATTACK_SPEED_SCALOR_BONUS:Number = 0.2;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.FasterReloadIMG());
}
override public function getButtonToolTip():String{
return ((("Faster Reload reduces centaur reload time allowing them to fire " + (100 * ATTACK_SPEED_SCALOR_BONUS)) + "% faster."));
}
}
}//package com.greyhound.talents.ranged
Section 169
//MasterOfMagic (com.greyhound.talents.ranged.MasterOfMagic)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class MasterOfMagic extends Talent {
public static const BONUS_MAGIC_PER_LEVEL:int = 1;
public function MasterOfMagic(){
addPreReq(FanTheCloud);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.MasterOfMagicIMG());
}
override public function getButtonToolTip():String{
return ((("Master Of Magic increases liches magic per level by " + BONUS_MAGIC_PER_LEVEL) + "."));
}
}
}//package com.greyhound.talents.ranged
Section 170
//MoreArrows (com.greyhound.talents.ranged.MoreArrows)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class MoreArrows extends Talent {
public static const BOUNS_ARROWS:int = 1;
public function MoreArrows(){
addPreReq(FasterReload);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.MoreArrowsIMG());
}
override public function getButtonToolTip():String{
return ((("More Arrows adds " + BOUNS_ARROWS) + " to the number of arrows centaur get on their multishot attack."));
}
}
}//package com.greyhound.talents.ranged
Section 171
//PackHunting (com.greyhound.talents.ranged.PackHunting)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class PackHunting extends Talent {
public static const BONUS_POPULATION:int = 1;
public function PackHunting(){
addPreReq(PotentVenom);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.PackHuntingIMG());
}
override public function getButtonToolTip():String{
return ((("Pack Hunting increases the manticore roost nest size by " + BONUS_POPULATION) + "."));
}
}
}//package com.greyhound.talents.ranged
Section 172
//PotentVenom (com.greyhound.talents.ranged.PotentVenom)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
import com.greyhound.*;
public class PotentVenom extends Talent {
public static const DURATION_BONUS:int = 3000;
public function PotentVenom(){
addPreReq(SwiftWings);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.PotentVenomIMG());
}
override public function getButtonToolTip():String{
return ((("Potent Venom increases the duration of manticore poison by " + Tools.round((DURATION_BONUS / 1000), 1)) + " seconds."));
}
}
}//package com.greyhound.talents.ranged
Section 173
//SwiftWings (com.greyhound.talents.ranged.SwiftWings)
package com.greyhound.talents.ranged {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class SwiftWings extends Talent {
public static const SPEED_SCALOR_BONUS:Number = 0.2;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.SwiftWingsIMG());
}
override public function getButtonToolTip():String{
return ((("Swift Wings increases manticore flight speed by " + (SPEED_SCALOR_BONUS * 100)) + "%."));
}
}
}//package com.greyhound.talents.ranged
Section 174
//BeyondTheGrave (com.greyhound.talents.traps.BeyondTheGrave)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class BeyondTheGrave extends Talent {
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.BeyondTheGraveIMG());
}
override public function getButtonToolTip():String{
return ("Beyond The Grave eliminates the time limit imposed on dracoliches(dracoliches are summoned by the grave trap).");
}
override public function meetsPrereqs(_arg1:Array):Boolean{
return (((((((checkBothTalentSources(ExtraSpikeTraps, _arg1)) || (checkBothTalentSources(BottomlessPit, _arg1)))) || (checkBothTalentSources(PingPong, _arg1)))) && ((SavedData.getAvatarType() == GameSave.EVIL_WIZARD))));
}
}
}//package com.greyhound.talents.traps
Section 175
//BottomlessPit (com.greyhound.talents.traps.BottomlessPit)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class BottomlessPit extends Talent {
public static const SPEED_PENALTY:Number = 0.01;
public function BottomlessPit(){
addPreReq(EvenDeeperPits);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.BottomlessPitsIMG());
}
override public function getButtonToolTip():String{
return ((("Bottomless pits aren't really bottomless, but they do drop their prey so far that they suffer permanent damage to their legs(or leg equivelents). Victim speed is reduced by " + SPEED_PENALTY) + "."));
}
}
}//package com.greyhound.talents.traps
Section 176
//DeathComesSwiftly (com.greyhound.talents.traps.DeathComesSwiftly)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class DeathComesSwiftly extends Talent {
public static const TRAP_RESET_SCALOR_BONUS:Number = 0.3;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.DeathComesSwiftlyIMG());
}
override public function getButtonToolTip():String{
return ((("Death Comes Swiftly reduces the reset time of your deathtraps by " + (TRAP_RESET_SCALOR_BONUS * 100)) + "%."));
}
override public function meetsPrereqs(_arg1:Array):Boolean{
return (((((((checkBothTalentSources(FastGears, _arg1)) || (checkBothTalentSources(BottomlessPit, _arg1)))) || (checkBothTalentSources(PingPong, _arg1)))) && ((SavedData.getAvatarType() == GameSave.DEATH_KNIGHT))));
}
}
}//package com.greyhound.talents.traps
Section 177
//DeeperPits (com.greyhound.talents.traps.DeeperPits)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
import com.greyhound.*;
public class DeeperPits extends Talent {
public static const STUN_LENGTH_BONUS:int = 2000;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.DeeperPitsIMG());
}
override public function getButtonToolTip():String{
return ((("Deeper Pits increases the stun length by " + Tools.round((STUN_LENGTH_BONUS / 1000), 1)) + " seconds."));
}
}
}//package com.greyhound.talents.traps
Section 178
//EvenDeeperPits (com.greyhound.talents.traps.EvenDeeperPits)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
import com.greyhound.*;
public class EvenDeeperPits extends Talent {
public static const STUN_LENGTH_BONUS:int = 4000;
public function EvenDeeperPits(){
addPreReq(DeeperPits);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.EvenDeeperPitsIMG());
}
override public function getButtonToolTip():String{
return ((("Even Deeper Pits adds another " + Tools.round((STUN_LENGTH_BONUS / 1000), 1)) + " seconds to the stun length of pit traps."));
}
}
}//package com.greyhound.talents.traps
Section 179
//ExtraSpikeTraps (com.greyhound.talents.traps.ExtraSpikeTraps)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class ExtraSpikeTraps extends Talent {
public static const EXTRA_TRAPS:int = 2;
public function ExtraSpikeTraps(){
addPreReq(SharperSpikes);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.ExtraSpikeTrapsIMG());
}
override public function getButtonToolTip():String{
return ((("Extra Spike increases the number of spike traps you can place by " + EXTRA_TRAPS) + "."));
}
}
}//package com.greyhound.talents.traps
Section 180
//FastGears (com.greyhound.talents.traps.FastGears)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class FastGears extends Talent {
public static const TRAP_RESET_SCALOR_BONUS:Number = 0.25;
public function FastGears(){
addPreReq(ExtraSpikeTraps);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.FastGearsIMG());
}
override public function getButtonToolTip():String{
return ("Fast Gears reduces spike trap reset time by 25%.");
}
}
}//package com.greyhound.talents.traps
Section 181
//HeavierRock (com.greyhound.talents.traps.HeavierRock)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class HeavierRock extends Talent {
public static const BOULDER_DAMAGE_SCALOR_BONUS:Number = 0.05;
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.HeavierRockIMG());
}
override public function getButtonToolTip():String{
return ((("Heavier Rock increases the boulder's damage by " + (BOULDER_DAMAGE_SCALOR_BONUS * 100)) + "%."));
}
}
}//package com.greyhound.talents.traps
Section 182
//MaimTrapMastery (com.greyhound.talents.traps.MaimTrapMastery)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class MaimTrapMastery extends Talent {
public static const EXTRA_TRAPS:int = 1;
public function MaimTrapMastery(){
addPreReq(FastGears);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.MaimTrapMasteryIMG());
}
override public function getButtonToolTip():String{
return ((("Maim Trap Mastery allows you to place an additional " + EXTRA_TRAPS) + " maim traps."));
}
}
}//package com.greyhound.talents.traps
Section 183
//PingPong (com.greyhound.talents.traps.PingPong)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class PingPong extends Talent {
public function PingPong(){
addPreReq(WideLoad);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.PingPongIMG());
}
override public function getButtonToolTip():String{
return ("Ping Pong causes your boulder to bounce once before being destroyed. Placement is everything.");
}
}
}//package com.greyhound.talents.traps
Section 184
//SharperSpikes (com.greyhound.talents.traps.SharperSpikes)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class SharperSpikes extends Talent {
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.SharperSpikesIMG());
}
override public function getButtonToolTip():String{
return ("Sharper Spikes increases spike trap damage by 10%.");
}
}
}//package com.greyhound.talents.traps
Section 185
//ThickEnoughToWalkOn (com.greyhound.talents.traps.ThickEnoughToWalkOn)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class ThickEnoughToWalkOn extends Talent {
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.ThickEnoughToWalkOnIMG());
}
override public function isRestricted():Boolean{
return (true);
}
override public function getButtonToolTip():String{
return ("Thick Enough To Walk On makes your swarm traps release so many insects that the swarm can never be defeated. Only its time limit will end the mayham.");
}
override public function meetsPrereqs(_arg1:Array):Boolean{
return (((((((checkBothTalentSources(ExtraSpikeTraps, _arg1)) || (checkBothTalentSources(BottomlessPit, _arg1)))) || (checkBothTalentSources(PingPong, _arg1)))) && ((SavedData.getAvatarType() == GameSave.CHAOS_RANGER))));
}
}
}//package com.greyhound.talents.traps
Section 186
//WideLoad (com.greyhound.talents.traps.WideLoad)
package com.greyhound.talents.traps {
import flash.display.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
public class WideLoad extends Talent {
public static const RADIUS_SCALOR_BONUS:Number = 0.5;
public function WideLoad(){
addPreReq(HeavierRock);
}
override public function getButtonDisplayObject():DisplayObject{
return (new ArtLoader.WideLoadIMG());
}
override public function getButtonToolTip():String{
return ((("Wide load increases the radius of the boulder by " + (RADIUS_SCALOR_BONUS * 100)) + "%."));
}
}
}//package com.greyhound.talents.traps
Section 187
//ITalent (com.greyhound.talents.ITalent)
package com.greyhound.talents {
import com.greyhound.ui.*;
public interface ITalent extends IButtonProvider {
function meetsPrereqs(_arg1:Array):Boolean;
function isRestricted():Boolean;
}
}//package com.greyhound.talents
Section 188
//Talent (com.greyhound.talents.Talent)
package com.greyhound.talents {
import flash.display.*;
public class Talent implements ITalent {
private var preReqs:Array;
public function Talent(){
preReqs = new Array();
}
public function getButtonToolTip():String{
return (null);
}
public function meetsPrereqs(_arg1:Array):Boolean{
var _local2:Object;
for each (_local2 in preReqs) {
if (!checkBothTalentSources((_local2 as Class), _arg1)){
return (false);
};
};
return (true);
}
public function getButtonDisplayObject():DisplayObject{
return (null);
}
protected function addPreReq(_arg1:Class):void{
preReqs.push(_arg1);
}
public function isRestricted():Boolean{
return (false);
}
protected static function checkBothTalentSources(_arg1:Class, _arg2:Array):Boolean{
return (((SavedData.hasTalenPoint(_arg1)) || (!((_arg2.indexOf(_arg1) == -1)))));
}
}
}//package com.greyhound.talents
Section 189
//EnemyTargetApprover (com.greyhound.things.approvers.EnemyTargetApprover)
package com.greyhound.things.approvers {
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.tools.*;
public class EnemyTargetApprover extends LivingTargetApprover implements IDisplayableApprover {
private var canHitFlying:Boolean;
private var myTeam:int;
public function EnemyTargetApprover(_arg1:int, _arg2:Boolean){
this.myTeam = _arg1;
this.canHitFlying = _arg2;
}
override public function approve(_arg1:DisplayableGameObject):Boolean{
var _local2:Living;
if (super.approve(_arg1)){
_local2 = (_arg1 as Living);
return (((!((_local2.getTeam() == myTeam))) && (((!(_local2.isFlying())) || (canHitFlying)))));
};
return (false);
}
}
}//package com.greyhound.things.approvers
Section 190
//FriendTargetApprover (com.greyhound.things.approvers.FriendTargetApprover)
package com.greyhound.things.approvers {
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.tools.*;
public class FriendTargetApprover extends LivingTargetApprover implements IDisplayableApprover {
private var myTeam:int;
public function FriendTargetApprover(_arg1:int){
this.myTeam = _arg1;
}
override public function approve(_arg1:DisplayableGameObject):Boolean{
var _local2:Living;
if (super.approve(_arg1)){
_local2 = (_arg1 as Living);
return ((_local2.getTeam() == myTeam));
};
return (false);
}
}
}//package com.greyhound.things.approvers
Section 191
//LivingTargetApprover (com.greyhound.things.approvers.LivingTargetApprover)
package com.greyhound.things.approvers {
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.tools.*;
public class LivingTargetApprover implements IDisplayableApprover {
public function approve(_arg1:DisplayableGameObject):Boolean{
return ((_arg1 is Living));
}
}
}//package com.greyhound.things.approvers
Section 192
//UndeadEnemyTargetApprover (com.greyhound.things.approvers.UndeadEnemyTargetApprover)
package com.greyhound.things.approvers {
import com.greyhound.base.*;
import com.greyhound.tools.*;
import com.greyhound.living.races.*;
public class UndeadEnemyTargetApprover extends EnemyTargetApprover implements IDisplayableApprover {
private var myTeam:int;
public function UndeadEnemyTargetApprover(_arg1:int, _arg2:Boolean){
super(_arg1, _arg2);
}
override public function approve(_arg1:DisplayableGameObject):Boolean{
return (((super.approve(_arg1)) && ((_arg1 is IUndead))));
}
}
}//package com.greyhound.things.approvers
Section 193
//CentaurLair (com.greyhound.things.buildings.lairs.CentaurLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.talents.ranged.*;
import com.greyhound.living.monsters.*;
import com.greyhound.living.classes.monsters.*;
public class CentaurLair extends Lair {
public static const CENTAUR_RESPAWN_SPEED:int = 35000;
public function CentaurLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.CentaurLairIMG), 15, "Centaurs", 1, CENTAUR_RESPAWN_SPEED, 1, 0, CentaurClass.CENTAUR_RANGE);
if (SavedData.hasTalenPoint(AnimalHusbandry)){
setRespawnSpeed(Tools.scaleNegatively(CENTAUR_RESPAWN_SPEED, AnimalHusbandry.RESPAWN_SCALOR_BONUS));
};
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Centaurs fire arrows at their enemies. Put them in the back row."));
}
override protected function spawnMonster():AILiving{
return (new Centaur());
}
}
}//package com.greyhound.things.buildings.lairs
Section 194
//DemonLair (com.greyhound.things.buildings.lairs.DemonLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
import com.greyhound.living.classes.monsters.*;
public class DemonLair extends Lair {
public function DemonLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.DemonLairIMG), 100, "Demon Pit", 8, 15000, 1, 0, DemonClass.DEMON_RANGE);
setXpScalor(0.5);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Demons are powerful long range fighters."));
}
override protected function spawnMonster():AILiving{
return (new Demon());
}
}
}//package com.greyhound.things.buildings.lairs
Section 195
//ElementalLair (com.greyhound.things.buildings.lairs.ElementalLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
public class ElementalLair extends Lair {
public function ElementalLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.ElementalLairIMG), 80, "Elementals", 7, 14000, 1, 55, 0);
setXpScalor(1.25);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Elementals are big, tough, juggernauts."));
}
override protected function spawnMonster():AILiving{
return (new Elemental());
}
}
}//package com.greyhound.things.buildings.lairs
Section 196
//GoblinLair (com.greyhound.things.buildings.lairs.GoblinLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.talents.melee.*;
import com.greyhound.living.monsters.*;
public class GoblinLair extends Lair {
public function GoblinLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.GoblinLairIMG), 13, "Goblins", 1, 8000, 2, 55, 0);
if (SavedData.hasTalenPoint(SafetyInNumbers)){
setMaximumPopulation((3 + SafetyInNumbers.BONUS_POPULATION));
};
setXpScalor(1.8);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Goblins are weaker but make up for it in numbers."));
}
override protected function spawnMonster():AILiving{
return (new Goblin());
}
}
}//package com.greyhound.things.buildings.lairs
Section 197
//HydraLair (com.greyhound.things.buildings.lairs.HydraLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
public class HydraLair extends Lair {
public function HydraLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.HydraLairIMG), 100, "Hydras", 8, 15000, 1, 55, 0);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Hydra's are one of the most effective defensive units in the game."));
}
override protected function spawnMonster():AILiving{
return (new Hydra());
}
}
}//package com.greyhound.things.buildings.lairs
Section 198
//Lair (com.greyhound.things.buildings.lairs.Lair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import com.greyhound.things.buildings.*;
import com.greyhound.*;
import com.greyhound.common.kongregate.*;
public class Lair extends Building implements IDamageDealtListener, ISpawnProvider, IPatrolRadiusProvider, IPercentBarProvider {
private var lairAttackRange:int;
private var levelRequirement:int;
private var spawnManager:SpawnManager;
private var xpScalor:Number;
private var maximumPatrolRadius:int;
private var upgradeLevel:int;
private var xp:Number;
private var patrolRadius:int;
public function Lair(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:String, _arg4:int, _arg5:int, _arg6:int, _arg7:int, _arg8:int){
super(_arg1, _arg2, _arg3);
spawnManager = new SpawnManager(_arg5, _arg6, this);
spawnManager.moveTo(this);
upgradeLevel = _arg4;
this.levelRequirement = _arg4;
xpScalor = 1;
xp = getXpForLevel(upgradeLevel);
if (_arg7 == 0){
maximumPatrolRadius = 0;
} else {
maximumPatrolRadius = (World.TILE_DIMENSION * 6);
};
this.patrolRadius = Math.min(_arg7, maximumPatrolRadius);
this.lairAttackRange = _arg8;
}
public function setPatrolRadius(_arg1:int):void{
if (patrolRadius != _arg1){
patrolRadius = _arg1;
fireChange();
};
}
public function setRespawnSpeed(_arg1:Number):void{
spawnManager.setRespawnSpeed(_arg1);
}
public function spawnLiving():Living{
var _local1:AILiving = spawnMonster();
_local1.setLevel(upgradeLevel);
_local1.addDamageDealtListener(this);
setupAI(_local1);
return (_local1);
}
public function hasPatrol():Boolean{
return (!((maximumPatrolRadius == 0)));
}
public function getPatrolOrigin():Point{
return (getScreenLocation());
}
public function getLevelRequirement():int{
return (levelRequirement);
}
override public function getButtonToolTip():String{
return ((((super.getButtonToolTip() + " Requires avatar level ") + levelRequirement) + "."));
}
override public function canBuy(_arg1:World):Boolean{
return ((_arg1.getAvatar().getLevel() >= levelRequirement));
}
override public function canBeDestroyed():Boolean{
return ((spawnManager.getCreatures().length == 0));
}
public function getBarPercent():Number{
return ((Number(spawnManager.getPopulation()) / spawnManager.getMaxPopulation()));
}
public function getMaximumPatrolRadius():int{
return (maximumPatrolRadius);
}
public function notifyCreatureReturnedHome(_arg1:Living):void{
if (_arg1.getLevel() < upgradeLevel){
_arg1.setLevel(upgradeLevel);
};
fireChange();
}
protected function setXpScalor(_arg1:Number):void{
xpScalor = _arg1;
}
public function getWaitingArea():GameObject{
return (spawnManager);
}
public function notifyCreatureKilled():void{
var _local1:Object;
if (!isDestroyed()){
if (spawnManager.getPopulation() == 0){
for each (_local1 in getTile().getDisplayableGameObjects()) {
if ((((((_local1 is Living)) && (!(((_local1 as Living).getTeam() == getTeam()))))) && ((_local1 as Living).canDestroyBuildings()))){
if (getEnvironment() != null){
moveTo(null);
};
};
};
};
if (getEnvironment() != null){
fireChange();
};
};
}
public function setMaximumPopulation(_arg1:int):void{
spawnManager.setMaxPopulation(_arg1);
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
var _local7:Number;
var _local5:int = (_arg1 * xpScalor);
var _local6:Number = (Number(_arg3.getLevel()) / Number(getUpgradeLevel()));
switch (SavedData.getDifficulty()){
case GameSave.EASY:
_local7 = 5;
break;
case GameSave.MEDIUM:
_local7 = 4;
break;
case GameSave.HARD:
_local7 = 3;
break;
default:
trace("Unknown difficulty level");
};
_local6 = Math.max(0.75, Math.min(_local7, (_local6 * _local6)));
_local5 = (_local5 * _local6);
xp = (xp + _local5);
if (xp >= getXpForLevel((upgradeLevel + 1))){
upgradeLevel++;
if (MyPreloader.isKongregate()){
APILoader.submitStat((getName() + KongregateStatistics.LAIR_NAME_SUFFIX), upgradeLevel);
};
};
fireChange();
}
public function getUpgradeLevel():int{
return (upgradeLevel);
}
override protected function notifyDestroyed():void{
var _local1:Object;
for each (_local1 in spawnManager.getCreatures()) {
(_local1 as Living).removeDamageDealtListener(this);
};
}
public function notifySpawned():void{
fireChange();
}
override public function getDisplayText():String{
return (((super.getDisplayText() + "Lv: ") + upgradeLevel));
}
public function spawnNow():void{
spawnManager.spawnNow();
}
public function getCreatureAttackRange():int{
return (lairAttackRange);
}
override public function getDisplayControls():IRefreshable{
return (new LairPanel(this));
}
protected function setupAI(_arg1:AILiving):void{
var _local2:IAITask = new StayInObjectTask(_arg1, spawnManager);
_local2.appendTask(new HuntTask(_arg1, this));
_arg1.setAITask(_local2);
}
protected function spawnMonster():AILiving{
trace((("Lair :" + this) + " did not override spawnMonster"));
return (null);
}
override public function canBuildAt(_arg1:Tile, _arg2:World):String{
var _local3:String = super.canBuildAt(_arg1, _arg2);
if (_local3 == null){
if (levelRequirement > _arg2.getAvatar().getLevel()){
return ("You are not high enough level to build that building.");
};
return (null);
//unresolved jump
};
return (_local3);
}
public function getPatrolRadius():int{
return (patrolRadius);
}
public function getUpgradePercent():Number{
var _local1:Number = getXpForLevel(upgradeLevel);
return (((xp - _local1) / (getXpForLevel((upgradeLevel + 1)) - _local1)));
}
public static function getXpForLevel(_arg1:int):int{
return ((Math.pow((_arg1 - 1), 1.5) * 400));
}
}
}//package com.greyhound.things.buildings.lairs
Section 199
//LichLair (com.greyhound.things.buildings.lairs.LichLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
import com.greyhound.living.classes.monsters.*;
public class LichLair extends Lair {
public function LichLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.LichLairIMG), 65, "Liches", 6, 12000, 1, 0, LichClass.LICH_RANGE);
setXpScalor(0.5);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Liches hurl long range clouds of death which cause area effect destruction."));
}
override protected function spawnMonster():AILiving{
return (new Lich());
}
}
}//package com.greyhound.things.buildings.lairs
Section 200
//ManticoreLair (com.greyhound.things.buildings.lairs.ManticoreLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.talents.ranged.*;
import com.greyhound.living.monsters.*;
public class ManticoreLair extends Lair {
public function ManticoreLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.ManticoreLairIMG), 35, "Manticores", 4, 30000, 1, 100, 0);
if (SavedData.hasTalenPoint(PackHunting)){
setMaximumPopulation((1 + PackHunting.BONUS_POPULATION));
};
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Manticores are flying units. Flying units cannot be hit by melee units. Watch out for ranged units!."));
}
override protected function spawnMonster():AILiving{
return (new Manticore());
}
}
}//package com.greyhound.things.buildings.lairs
Section 201
//MinotaurLair (com.greyhound.things.buildings.lairs.MinotaurLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
public class MinotaurLair extends Lair {
public function MinotaurLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.MinotaurLairIMG), 25, "Minotaurs", 3, 8000, 1, 55, 0);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Minotaurs are stronger melee units."));
}
override protected function spawnMonster():AILiving{
return (new Minotaur());
}
}
}//package com.greyhound.things.buildings.lairs
Section 202
//VampireLair (com.greyhound.things.buildings.lairs.VampireLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
public class VampireLair extends Lair {
public function VampireLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.VampireLairIMG), 45, "Vampires", 5, 13000, 1, 75, 0);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Vampires are flying units, though they can only attack while landed. They drain health from enemies."));
}
override protected function setupAI(_arg1:AILiving):void{
var _local2:IAITask = new StayInObjectTask(_arg1, getWaitingArea());
var _local3:HuntTask = new HuntTask(_arg1, this);
_local3.setFollowTaskClass(VampireFollowTask);
_local2.appendTask(_local3);
_arg1.setAITask(_local2);
}
override protected function spawnMonster():AILiving{
return (new Vampire());
}
}
}//package com.greyhound.things.buildings.lairs
Section 203
//WyrmLair (com.greyhound.things.buildings.lairs.WyrmLair)
package com.greyhound.things.buildings.lairs {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
import com.greyhound.living.classes.monsters.*;
public class WyrmLair extends Lair {
public function WyrmLair(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.WyrmLairIMG), 100, "Wyrms", 8, 15000, 1, 0, WyrmClass.WYRM_RANGE);
setXpScalor(0.5);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Wyrms are giant landbound dragons that spew breath attacks at their foes."));
}
override protected function spawnMonster():AILiving{
return (new Wyrm());
}
}
}//package com.greyhound.things.buildings.lairs
Section 204
//Academy (com.greyhound.things.buildings.Academy)
package com.greyhound.things.buildings {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class Academy extends Building implements ISpawnModifier {
public static const LEVEL_MODIFIER:int = 4;
public function Academy(){
super(new DisplayObjectProvider(ArtLoader.AcademyIMG), 50, "Academy");
}
override public function getButtonToolTip():String{
return ((((super.getButtonToolTip() + " The academy increase the magic of any creatures built in all adjacent (including diagonal) lairs by ") + LEVEL_MODIFIER) + " per level of the creature. Creatures with magic as their highest stat will benefit from this the most."));
}
public function modifyLiving(_arg1:Living):void{
_arg1.getStatManager().addInnateMagicBonus((LEVEL_MODIFIER * _arg1.getLevel()));
}
}
}//package com.greyhound.things.buildings
Section 205
//Altar (com.greyhound.things.buildings.Altar)
package com.greyhound.things.buildings {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class Altar extends Building implements ISpawnModifier {
public function Altar(){
super(new DisplayObjectProvider(ArtLoader.AltarIMG), 0, "Altar");
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " The altar increases many of the stats of creatures built in all adjacent (including diagonal) lairs."));
}
public function modifyLiving(_arg1:Living):void{
_arg1.getStatManager().addInnateStrengthBonus((2 * _arg1.getLevel()));
_arg1.getStatManager().addInnateDexterityBonus((2 * _arg1.getLevel()));
_arg1.getStatManager().addInnateMagicBonus((2 * _arg1.getLevel()));
_arg1.getStatManager().addInnateMaxHpBonus((2 * _arg1.getLevel()));
_arg1.getStatManager().addInnateMeleeResistanceBonus(2);
_arg1.getStatManager().addInnateRangedResistanceBonus(2);
_arg1.getStatManager().addInnateMagicResistanceBonus(2);
}
}
}//package com.greyhound.things.buildings
Section 206
//Blacksmith (com.greyhound.things.buildings.Blacksmith)
package com.greyhound.things.buildings {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class Blacksmith extends Building implements ISpawnModifier {
public function Blacksmith(){
super(new DisplayObjectProvider(ArtLoader.BlacksmithIMG), 0, "Blacksmith");
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " The blacksmith increases the armor of any creatures built in all adjacent (including diagonal) lairs."));
}
public function modifyLiving(_arg1:Living):void{
_arg1.getStatManager().addInnateMeleeResistanceBonus(10);
_arg1.getStatManager().addInnateRangedResistanceBonus(10);
}
}
}//package com.greyhound.things.buildings
Section 207
//Building (com.greyhound.things.buildings.Building)
package com.greyhound.things.buildings {
import flash.display.*;
import com.greyhound.ui.controlpanel.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.things.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
public class Building extends DisplayableGameObject implements ISelectionDisplayProvider, IBuyable, IButtonProvider {
private var name:String;
private var cost:int;
private var team:int;
private var sellValue:int;
public function Building(_arg1:IDisplayObjectProvider, _arg2:int, _arg3:String){
super(_arg1);
this.cost = _arg2;
this.name = _arg3;
sellValue = (_arg2 * 0.5);
this.team = team;
}
public function getName():String{
return (name);
}
public function getCost():int{
return (cost);
}
public function built():void{
}
public function getSellValue():int{
return (sellValue);
}
public function canBuildAt(_arg1:Tile, _arg2:World):String{
return (null);
}
public function sell():int{
if (sellValue > 0){
getWorld().getVault().addGold(sellValue);
moveTo(null);
return (sellValue);
};
return (0);
}
public function getTeam():int{
return (team);
}
public function getDisplayText():String{
var _local1:String;
if (sellValue <= 0){
_local1 = "Unsellable.";
} else {
_local1 = (("Sell Value: " + getSellValue()) + " gold.");
};
return ((getButtonToolTip() + _local1));
}
public function getDisplayControls():IRefreshable{
return (new CompositeSprite([new RefreshingText(this, 160), new SellButton(this)]));
}
public function canBuy(_arg1:World):Boolean{
return (true);
}
public function setTeam(_arg1:int):void{
this.team = _arg1;
}
public function getButtonDisplayObject():DisplayObject{
return (createDisplayObject());
}
public function getButtonToolTip():String{
return ((((name + " cost: ") + getCost()) + "."));
}
public function canBeDestroyed():Boolean{
return (true);
}
}
}//package com.greyhound.things.buildings
Section 208
//GoldVault (com.greyhound.things.buildings.GoldVault)
package com.greyhound.things.buildings {
import com.greyhound.world.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class GoldVault extends Building {
public function GoldVault(){
super(new DisplayObjectProvider(ArtLoader.GoldVaultIMG), 100, "Gold Vault");
}
private function isAdjacentToHomeBase(_arg1:Tile, _arg2:World):Boolean{
if ((((Math.abs((_arg2.getGoalTile().getX() - _arg1.getX())) <= 1)) && ((Math.abs((_arg2.getGoalTile().getY() - _arg1.getY())) <= 1)))){
return (true);
};
return (false);
}
override public function canBuildAt(_arg1:Tile, _arg2:World):String{
var _local3:String = super.canBuildAt(_arg1, _arg2);
if (_local3 == null){
if (!isAdjacentToHomeBase(_arg1, _arg2)){
return ("Gold Vaults can only be build next to your home tile.");
};
return (null);
//unresolved jump
};
return (_local3);
}
override public function sell():int{
getWorld().getVault().removeGoldVault();
return (super.sell());
}
override public function getButtonToolTip():String{
return ((((super.getButtonToolTip() + " Gold vaults provide a ") + (Vault.INTEREST_PER_VAULT * 100)) + "% interest rate bonus. Vaults must be built next to your home tile."));
}
override public function built():void{
super.built();
getWorld().getVault().addGoldVault();
}
}
}//package com.greyhound.things.buildings
Section 209
//Gym (com.greyhound.things.buildings.Gym)
package com.greyhound.things.buildings {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class Gym extends Building implements ISpawnModifier {
public static const LEVEL_MODIFIER:int = 4;
public function Gym(){
super(new DisplayObjectProvider(ArtLoader.GymIMG), 50, "Gym");
}
override public function getButtonToolTip():String{
return ((((super.getButtonToolTip() + " The gym increase the strength of any creatures built in all adjacent (including diagonal) lairs by ") + LEVEL_MODIFIER) + " per level of the creature. Creatures with strength as their highest stat will benefit from this the most."));
}
public function modifyLiving(_arg1:Living):void{
_arg1.getStatManager().addInnateStrengthBonus((LEVEL_MODIFIER * _arg1.getLevel()));
}
}
}//package com.greyhound.things.buildings
Section 210
//HomeBase (com.greyhound.things.buildings.HomeBase)
package com.greyhound.things.buildings {
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.ai.*;
import com.greyhound.tools.*;
public class HomeBase extends Building implements ISpawnModifier, ISpawnProvider, IPercentBarProvider {
private var spawnManager:SpawnManager;
public function HomeBase(){
super(new PercentBarShowingDisplayObjectProvider(ArtLoader.GoalIMG), -1, "Base");
spawnManager = new SpawnManager(10000, 4, this);
spawnManager.moveTo(this);
spawnManager.spawnNow();
spawnManager.spawnNow();
spawnManager.spawnNow();
}
override public function getDisplayControls():IRefreshable{
var _local1:DisplayableInventoryList = new DisplayableInventoryList(spawnManager);
_local1.width = 180;
_local1.height = 70;
return (new CompositeSprite([new RefreshingText(this, 200), _local1], false));
}
public function modifyLiving(_arg1:Living):void{
_arg1.getStatManager().addInnateMeleeResistanceBonus(4);
_arg1.getStatManager().addInnateRangedResistanceBonus(4);
}
override public function canBeDestroyed():Boolean{
return (false);
}
public function getBarPercent():Number{
return ((Number(spawnManager.getPopulation()) / spawnManager.getMaxPopulation()));
}
public function getWaitingArea():GameObject{
return (spawnManager);
}
public function spawnLiving():Living{
var _local1:Peon = new Peon();
var _local2:IAITask = new StayInObjectTask(_local1, spawnManager);
_local2.appendTask(new DigAITask(_local1));
_local1.setAITask(_local2);
return (_local1);
}
public function notifyCreatureKilled():void{
fireChange();
}
public function notifySpawned():void{
fireChange();
}
public function notifyCreatureReturnedHome(_arg1:Living):void{
fireChange();
}
override public function getDisplayText():String{
return ("Protect this location at all costs. All your gems are stored here. Your peons will also spawn from this location.");
}
}
}//package com.greyhound.things.buildings
Section 211
//ISpawnProvider (com.greyhound.things.buildings.ISpawnProvider)
package com.greyhound.things.buildings {
import com.greyhound.base.*;
import com.greyhound.living.*;
public interface ISpawnProvider {
function notifySpawned():void;
function getTeam():int;
function spawnLiving():Living;
function notifyCreatureKilled():void;
function notifyCreatureReturnedHome(_arg1:Living):void;
function getWaitingArea():GameObject;
}
}//package com.greyhound.things.buildings
Section 212
//SpawnManager (com.greyhound.things.buildings.SpawnManager)
package com.greyhound.things.buildings {
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.tools.*;
public class SpawnManager extends GameObject implements IChangeListener {
private var respawnSpeed:int;
private var spawnProvider:ISpawnProvider;
private var maxPopulation:int;
private var creatures:Array;
private var respawnCounter:int;
private var healCounter:int;
private var healSpeed:int;
public function SpawnManager(_arg1:int, _arg2:int, _arg3:ISpawnProvider){
setHeartbeatSpeed(500);
creatures = new Array();
this.respawnSpeed = _arg1;
this.maxPopulation = _arg2;
respawnCounter = 0;
this.spawnProvider = _arg3;
healSpeed = 1000;
healCounter = healSpeed;
}
public function setRespawnSpeed(_arg1:int):void{
respawnSpeed = _arg1;
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function getPopulation():int{
return (creatures.length);
}
public function setMaxPopulation(_arg1:int):void{
if (maxPopulation < _arg1){
maxPopulation = _arg1;
} else {
if (maxPopulation > _arg1){
trace("Dont' support decrease of max pop yet");
};
};
}
override protected function notifyDestroyed():void{
var _local1:Object;
super.notifyDestroyed();
for each (_local1 in creatures) {
(_local1 as Living).removeChangeListener(this);
(_local1 as Living).moveTo(null);
};
}
public function spawnNow():void{
respawnCounter = (respawnCounter - respawnSpeed);
}
override protected function heartBeat(_arg1:int):void{
var obj:Object;
var liv:Living;
var timePassed = _arg1;
super.heartBeat(timePassed);
healCounter = (healCounter - timePassed);
if (healCounter <= 0){
healCounter = (healCounter + healSpeed);
for each (obj in getInventory()) {
if ((obj is Living)){
liv = (obj as Living);
liv.healAmount((liv.getStatManager().getMaxHp() * 0.1));
};
};
};
if (creatures.length < maxPopulation){
respawnCounter = (respawnCounter - timePassed);
if (respawnCounter <= 0){
respawnCounter = (respawnCounter + respawnSpeed);
liv = spawnProvider.spawnLiving();
if (liv != null){
liv.setTeam(spawnProvider.getTeam());
liv.addChangeListener(this);
creatures.push(liv);
Util.itterateOnSurroundingTiles(getWorld(), getTile(), function (_arg1:Tile):void{
for each (obj in _arg1.getDisplayableGameObjects()) {
if ((obj is ISpawnModifier)){
(obj as ISpawnModifier).modifyLiving(liv);
};
};
});
liv.moveTo(this);
spawnProvider.notifySpawned();
};
};
};
}
public function getCreatures():Array{
return (creatures.slice());
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
var _local2:int = creatures.indexOf(_arg1);
if (_local2 != -1){
creatures.splice(_local2, 1);
} else {
trace("Creature died but couldn't find it in creatures array");
};
spawnProvider.notifyCreatureKilled();
}
public function getMaxPopulation():int{
return (maxPopulation);
}
public function notifyChanged(_arg1:IChangeable):void{
}
override protected function notifyObjectEntered(_arg1:GameObject, _arg2:GameObject):void{
if (creatures.indexOf(_arg1) != -1){
spawnProvider.notifyCreatureReturnedHome((_arg1 as Living));
};
}
}
}//package com.greyhound.things.buildings
Section 213
//Track (com.greyhound.things.buildings.Track)
package com.greyhound.things.buildings {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class Track extends Building implements ISpawnModifier {
public static const LEVEL_MODIFIER:int = 4;
public function Track(){
super(new DisplayObjectProvider(ArtLoader.TrackIMG), 50, "Track");
}
override public function getButtonToolTip():String{
return ((((super.getButtonToolTip() + " The track increase the dexterity of any creatures built in all adjacent (including diagonal) lairs by ") + LEVEL_MODIFIER) + " per level of the creature. Creatures with dexterity as their highest stat will benefit from this the most."));
}
public function modifyLiving(_arg1:Living):void{
_arg1.getStatManager().addInnateDexterityBonus((LEVEL_MODIFIER * _arg1.getLevel()));
}
}
}//package com.greyhound.things.buildings
Section 214
//CopperVein (com.greyhound.things.obstacles.CopperVein)
package com.greyhound.things.obstacles {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class CopperVein extends Vein {
public function CopperVein(){
super(new DisplayObjectProvider(ArtLoader.CopperVeinIMG), "Copper", 15);
}
}
}//package com.greyhound.things.obstacles
Section 215
//Door (com.greyhound.things.obstacles.Door)
package com.greyhound.things.obstacles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
public class Door extends NormalObstacle implements IPathfindingEffecting, IDiggable {
private var locked:Boolean;
public function Door(){
super(new DisplayObjectProvider(ArtLoader.DoorIMG));
locked = false;
}
override public function getDisplayText():String{
if (locked){
return ("This door is locked. You will have to have peons dig it out to get past.");
};
return ("This door unlocked. Your troops can walk through it!");
}
public function performDig(_arg1:Living):void{
moveTo(null);
}
public function getDigValue():int{
return (0);
}
public function getDigLength():int{
return (7000);
}
override public function blocksMovement(_arg1:Object):Boolean{
if (locked){
return (true);
};
return (false);
}
public function setLocked(_arg1:Boolean):void{
locked = _arg1;
}
}
}//package com.greyhound.things.obstacles
Section 216
//GoldVein (com.greyhound.things.obstacles.GoldVein)
package com.greyhound.things.obstacles {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class GoldVein extends Vein {
public function GoldVein(){
super(new DisplayObjectProvider(ArtLoader.GoldVeinIMG), "Gold", 50);
}
}
}//package com.greyhound.things.obstacles
Section 217
//House (com.greyhound.things.obstacles.House)
package com.greyhound.things.obstacles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
public class House extends NormalObstacle implements IDiggable {
public function House(){
super(getRandomHouseProvider());
}
override public function getDisplayText():String{
return ("This house belongs to some poor townsfolk. You can dig it up just like dirt, but it may take longer.");
}
public function getDigLength():int{
return (10000);
}
public function performDig(_arg1:Living):void{
moveTo(null);
}
public function getDigValue():int{
return (3);
}
public static function getRandomHouseProvider():IDisplayObjectProvider{
var _local1:int = (Math.random() * 4);
switch (_local1){
case 0:
return (new DisplayObjectProvider(ArtLoader.House1IMG));
case 1:
return (new DisplayObjectProvider(ArtLoader.House2IMG));
case 2:
return (new DisplayObjectProvider(ArtLoader.House3IMG));
case 3:
return (new DisplayObjectProvider(ArtLoader.House4IMG));
default:
trace("unexpected house number from random");
return (null);
};
}
}
}//package com.greyhound.things.obstacles
Section 218
//NormalObstacle (com.greyhound.things.obstacles.NormalObstacle)
package com.greyhound.things.obstacles {
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import flash.errors.*;
public class NormalObstacle extends DisplayableGameObject implements IPathfindingEffecting, ISelectionDisplayProvider {
public function NormalObstacle(_arg1:IDisplayObjectProvider){
super(_arg1);
}
public function getDisplayText():String{
throw (new IllegalOperationError("Did not override getDisplayText in normal obstacle"));
}
public function getDisplayControls():IRefreshable{
return (new RefreshingText(this, 200));
}
public function blocksMovement(_arg1:Object):Boolean{
var _local2:Living;
if ((_arg1 is Living)){
_local2 = (_arg1 as Living);
if (((_local2.isFlying()) || (_local2.isEthereal()))){
return (false);
};
};
return (true);
}
}
}//package com.greyhound.things.obstacles
Section 219
//PlatinumVein (com.greyhound.things.obstacles.PlatinumVein)
package com.greyhound.things.obstacles {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
public class PlatinumVein extends Vein {
public function PlatinumVein(){
super(new DisplayObjectProvider(ArtLoader.PlatinumVeinIMG), "Platinum", 100);
}
}
}//package com.greyhound.things.obstacles
Section 220
//Rock (com.greyhound.things.obstacles.Rock)
package com.greyhound.things.obstacles {
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.tools.*;
public class Rock extends NormalObstacle implements IPathfindingEffecting {
public function Rock(){
super(new DisplayObjectProvider(ArtLoader.RockIMG));
}
override public function getDisplayText():String{
return ("Solid rock. No way through it. You will have to find a way around it.");
}
override public function blocksMovement(_arg1:Object):Boolean{
return (true);
}
}
}//package com.greyhound.things.obstacles
Section 221
//Wall (com.greyhound.things.obstacles.Wall)
package com.greyhound.things.obstacles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
public class Wall extends NormalObstacle implements IDiggable {
public function Wall(){
super(new DisplayObjectProvider(ArtLoader.WallIMG));
}
override public function getDisplayText():String{
return ("This is a wall. It blocks the heroes, but you can dig it out to make space for buildings if you need to.");
}
public function getDigLength():int{
return (5000);
}
public function getDigValue():int{
return (0);
}
public function performDig(_arg1:Living):void{
moveTo(null);
}
}
}//package com.greyhound.things.obstacles
Section 222
//Vein (com.greyhound.things.obstacles.Vein)
package com.greyhound.things.obstacles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.things.*;
public class Vein extends NormalObstacle implements IDiggable {
private var name:String;
private var value:int;
public function Vein(_arg1:DisplayObjectProvider, _arg2:String, _arg3:int){
super(_arg1);
this.name = _arg2;
this.value = _arg3;
}
public function getDigValue():int{
return (value);
}
public function performDig(_arg1:Living):void{
moveTo(null);
}
public function getDigLength():int{
return (5000);
}
override public function getDisplayText():String{
return ((((("This a " + name) + " vein. If you dig it out you will earn ") + value) + " gold."));
}
}
}//package com.greyhound.things.obstacles
Section 223
//AreaEffectProjectile (com.greyhound.things.projectiles.AreaEffectProjectile)
package com.greyhound.things.projectiles {
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class AreaEffectProjectile extends Projectile {
private var radius:int;
public function AreaEffectProjectile(_arg1:IDisplayObjectProvider, _arg2:Living, _arg3:Damage, _arg4:Array, _arg5:Object){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
this.radius = (_arg5.radius as Number);
}
override protected function impact():void{
var _local4:Object;
var _local1:Living = getTarget();
var _local2:World = _local1.getWorld();
var _local3:Array = Util.getAllLivingsInRange(radius, _local2, _local1.getScreenLocation(), new EnemyTargetApprover(getDamage().getSource().getTeam(), true));
for each (_local4 in _local3) {
(_local4 as Living).takeDamage(getDamage());
applyEffects((_local4 as Living));
};
moveTo(null);
}
}
}//package com.greyhound.things.projectiles
Section 224
//BouncingDamageProjectile (com.greyhound.things.projectiles.BouncingDamageProjectile)
package com.greyhound.things.projectiles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class BouncingDamageProjectile extends BouncingProjectile {
private var scalorOnBounce:Number;
public function BouncingDamageProjectile(_arg1:IDisplayObjectProvider, _arg2:Living, _arg3:Damage, _arg4:Array, _arg5:Object){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
scalorOnBounce = _arg5.scalorOnBounce;
}
override protected function notifyBounced():void{
super.notifyBounced();
setDamage(getDamage().copyAndScale(scalorOnBounce, getDamage().getSource()));
}
}
}//package com.greyhound.things.projectiles
Section 225
//BouncingProjectile (com.greyhound.things.projectiles.BouncingProjectile)
package com.greyhound.things.projectiles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class BouncingProjectile extends Projectile {
private var bounceRange:int;
private var bounces:int;
private var usedTargets:Array;
public function BouncingProjectile(_arg1:IDisplayObjectProvider, _arg2:Living, _arg3:Damage, _arg4:Array, _arg5:Object){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
usedTargets = new Array();
this.bounceRange = _arg5.bounceRange;
this.bounces = _arg5.bounces;
}
protected function notifyBounced():void{
}
override protected function impact():void{
var _local2:Array;
var _local3:Living;
var _local4:Object;
var _local1:Damage = getDamage();
getTarget().takeDamage(_local1);
applyEffects(getTarget());
bounces--;
if (bounces > 0){
usedTargets.push(getTarget());
_local2 = Util.getAllLivingsInRange(bounceRange, getWorld(), getScreenLocation(), new EnemyTargetApprover(_local1.getSource().getTeam(), true));
for each (_local4 in _local2) {
if (usedTargets.indexOf(_local4) == -1){
_local3 = (_local4 as Living);
break;
};
};
if (_local3 == null){
moveTo(null);
} else {
setTarget(_local3);
notifyBounced();
};
} else {
moveTo(null);
};
}
}
}//package com.greyhound.things.projectiles
Section 226
//PercentHealthProjectile (com.greyhound.things.projectiles.PercentHealthProjectile)
package com.greyhound.things.projectiles {
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
public class PercentHealthProjectile extends Projectile {
private var percentHealth:Number;
private var maxDamage:int;
public function PercentHealthProjectile(_arg1:IDisplayObjectProvider, _arg2:Living, _arg3:Damage, _arg4:Array, _arg5:Object){
super(_arg1, _arg2, _arg3, _arg4, _arg5);
this.percentHealth = (_arg5.percentHealth as Number);
this.maxDamage = (_arg5.maxDamage as int);
}
override protected function impact():void{
var _local1:Living = getTarget();
var _local2:int = (_local1.getHp() * percentHealth);
if (maxDamage != -1){
_local2 = Math.min(maxDamage, _local2);
};
_local2 = (_local2 + getDamage().getAmount(_local1));
var _local3:Damage = new Damage(_local2, getDamage().getType(), getDamage().getSource());
_local1.takeDamage(_local3);
applyEffects(_local1);
moveTo(null);
}
}
}//package com.greyhound.things.projectiles
Section 227
//Projectile (com.greyhound.things.projectiles.Projectile)
package com.greyhound.things.projectiles {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.living.effects.*;
import com.greyhound.living.actions.*;
import com.greyhound.tools.*;
import com.greyhound.*;
public class Projectile extends DisplayableGameObject {
private var speed:Number;
private var xMove:Number;
private var yMove:Number;
private var damage:Damage;
private var target:Living;
private var effectProviders:Array;
public function Projectile(_arg1:IDisplayObjectProvider, _arg2:Living, _arg3:Damage, _arg4:Array, _arg5:Object){
super(_arg1);
setHeartbeatSpeed(50);
speed = 0.1;
this.target = _arg2;
this.damage = _arg3;
setRotateGraphic(true);
this.effectProviders = _arg4;
}
protected function setDamage(_arg1:Damage):void{
this.damage = _arg1;
}
protected function setSpeed(_arg1:Number):void{
this.speed = _arg1;
}
protected function impact():void{
target.takeDamage(damage);
applyEffects(target);
moveTo(null);
}
protected function setTarget(_arg1:Living):void{
this.target = _arg1;
}
protected function getDamage():Damage{
return (damage);
}
protected function getTarget():Living{
return (target);
}
protected function applyEffects(_arg1:Living):void{
var _local2:Object;
var _local3:IEffect;
for each (_local2 in effectProviders) {
_local3 = (_local2 as IEffectProvider).createEffect(_arg1);
if (_local3 != null){
_arg1.applyEffect(_local3);
};
};
}
override protected function heartBeat(_arg1:int):void{
var _local2:Number;
var _local3:Point;
var _local4:Point;
var _local5:Number;
var _local6:TargetingData;
if (((((target.isDead()) || (target.isDestroyed()))) || (!((target.getEnvironment() is World))))){
fizzile();
} else {
_local2 = (speed * _arg1);
_local3 = getScreenLocation();
_local4 = target.getScreenLocation();
_local5 = Tools.distanceSquared(_local3, _local4);
if (_local5 <= (_local2 * _local2)){
impact();
} else {
_local6 = Util.calculateTargetingData(_local3, _local4);
xMove = (_local2 * _local6.getXModifier());
yMove = (_local2 * _local6.getYModifier());
setFacing(_local6.getAngleInDegrees());
setScreenLocation(new Point((_local3.x + xMove), (_local3.y + yMove)));
};
};
}
protected function fizzile():void{
var _local1:Living;
moveTo(null);
if (((!((damage.getSource() == null))) && ((damage.getSource() is LivingAction)))){
_local1 = (damage.getSource() as LivingAction).getLiving();
if (((!(_local1.isDestroyed())) && (!(_local1.isDead())))){
_local1.notifyProjectileFizzile(this);
};
};
}
}
}//package com.greyhound.things.projectiles
Section 228
//Boulder (com.greyhound.things.traps.Boulder)
package com.greyhound.things.traps {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.talents.traps.*;
import com.greyhound.things.approvers.*;
public class Boulder extends DisplayableGameObject implements IDamageSource {
private var xMove:Number;
private var hitTargetsArray:Array;
private var bounces:int;
private var yMove:Number;
private var team:int;
public static const SPEED:Number = 0.04;
public function Boulder(_arg1:Number, _arg2:Number, _arg3:int){
super(getDisplayObjectProvider());
this.team = _arg3;
setHeartbeatSpeed(50);
hitTargetsArray = new Array();
this.xMove = (_arg1 * SPEED);
this.yMove = (_arg2 * SPEED);
bounces = 0;
}
override protected function heartBeat(_arg1:int):void{
var _local4:Object;
var _local5:Point;
var _local6:Tile;
var _local7:Point;
var _local8:Tile;
var _local9:Boolean;
var _local10:Boolean;
var _local11:Tile;
var _local12:Tile;
super.heartBeat(_arg1);
var _local2:Array = Util.getAllLivingsInRange(getBoulderRadius(), getWorld(), getScreenLocation(), new EnemyTargetApprover(getTeam(), false));
var _local3:Number = 0.2;
if (SavedData.hasTalenPoint(HeavierRock)){
_local3 = (_local3 + HeavierRock.BOULDER_DAMAGE_SCALOR_BONUS);
};
for each (_local4 in _local2) {
if (_local4 != this){
if (hitTargetsArray.indexOf(_local4) == -1){
hitTargetsArray.push(_local4);
(_local4 as Living).takeDamage(new Damage(((_local4 as Living).getStatManager().getMaxHp() * _local3), Damage.TRAP, this));
};
};
};
_local5 = getScreenLocation();
_local6 = getTile();
_local7 = new Point((_local5.x + (xMove * _arg1)), (_local5.y + (yMove * _arg1)));
_local8 = getWorld().getTileAt(_local7);
if (_local8 != null){
if (((!((_local8 == _local6))) && (_local8.blocksMovement(this)))){
if (((!(SavedData.hasTalenPoint(PingPong))) || ((bounces == 1)))){
moveTo(null);
} else {
bounces++;
_local9 = false;
_local10 = false;
if (_local8.getX() != _local6.getX()){
_local11 = getWorld().getTileAtMapLocation(_local8.getX(), _local6.getY());
_local9 = _local11.blocksMovement(this);
};
if (_local8.getY() != _local6.getY()){
_local12 = getWorld().getTileAtMapLocation(_local6.getX(), _local8.getY());
_local10 = _local12.blocksMovement(this);
};
if (((!(_local9)) && (!(_local10)))){
_local9 = true;
_local10 = true;
};
if (_local9){
xMove = (xMove * -1);
};
if (_local10){
yMove = (yMove * -1);
};
};
} else {
setScreenLocation(_local7);
};
} else {
moveTo(null);
};
}
private function getBoulderRadius():Number{
var _local1:Number = 10;
var _local2:Number = 1;
if (SavedData.hasTalenPoint(WideLoad)){
_local2 = (_local2 + WideLoad.RADIUS_SCALOR_BONUS);
};
_local1 = (_local1 * _local2);
return (_local1);
}
public function getTeam():int{
return (team);
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
}
private function getDisplayObjectProvider():DisplayObjectProvider{
var _local1:Number = 1;
if (SavedData.hasTalenPoint(WideLoad)){
_local1 = (_local1 + WideLoad.RADIUS_SCALOR_BONUS);
};
return (new DisplayObjectProvider(ArtLoader.BoulderTrapIMG, _local1));
}
}
}//package com.greyhound.things.traps
Section 229
//BoulderTrap (com.greyhound.things.traps.BoulderTrap)
package com.greyhound.things.traps {
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.things.approvers.*;
public class BoulderTrap extends Trap {
public function BoulderTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.BoulderTrapIMG), "Boulder Trap", 50, 18000, new EnemyTargetApprover(Living.PLAYER_TEAM, false), 5);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " When this trap is triggered, a large boulder will roll towards the target and continue until it impacts an obstacle."));
}
override public function getMaximumTraps():int{
return (2);
}
override protected function triggerTrap(_arg1:Array):void{
var _local5:Boulder;
var _local2:Point = (_arg1[0] as Living).getScreenLocation();
var _local3:Point = getScreenLocation();
var _local4:TargetingData = Util.calculateTargetingData(_local3, _local2);
if ((((_local4.getXModifier() == 0)) && ((_local4.getYModifier() == 0)))){
_local5 = new Boulder(1, 0, getTeam());
} else {
_local5 = new Boulder(_local4.getXModifier(), _local4.getYModifier(), getTeam());
};
getWorld().addDisplayableAt(_local5, getScreenLocation());
}
}
}//package com.greyhound.things.traps
Section 230
//DeathTrap (com.greyhound.things.traps.DeathTrap)
package com.greyhound.things.traps {
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.talents.traps.*;
import com.greyhound.things.approvers.*;
public class DeathTrap extends Trap {
public function DeathTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.DeathTrapIMG), "Deathtrap", 100, getResetTime(), new EnemyTargetApprover(Living.PLAYER_TEAM, true), 9);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Death comes swiftly for almost all who trigger this trap. Works on flying creatures."));
}
override public function getMaximumTraps():int{
return (1);
}
override protected function triggerTrap(_arg1:Array):void{
var _local2:Object;
var _local3:Living;
var _local4:Damage;
for each (_local2 in _arg1) {
if ((_local2 is Living)){
_local3 = (_local2 as Living);
_local4 = new Damage(_local3.getStatManager().getMaxHp(), Damage.TRAP, this);
(_local2 as Living).takeDamage(_local4);
};
};
}
private function getResetTime():int{
var _local1:Number = 0;
if (SavedData.hasTalenPoint(DeathComesSwiftly)){
_local1 = (_local1 + DeathComesSwiftly.TRAP_RESET_SCALOR_BONUS);
};
return (Tools.scaleNegatively(30000, _local1));
}
}
}//package com.greyhound.things.traps
Section 231
//GraveTrap (com.greyhound.things.traps.GraveTrap)
package com.greyhound.things.traps {
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.talents.traps.*;
import com.greyhound.living.monsters.*;
import com.greyhound.things.approvers.*;
public class GraveTrap extends Trap {
public function GraveTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.GraveTrapIMG), "Gravetrap", 100, 60000, new EnemyTargetApprover(Living.PLAYER_TEAM, true), 9);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " A powerful undead creature is bound to this tombstone. Works on flying creatures."));
}
override public function getMaximumTraps():int{
return (1);
}
override protected function triggerTrap(_arg1:Array):void{
var _local2:DracoLich = new DracoLich();
if (!SavedData.hasTalenPoint(BeyondTheGrave)){
_local2.setDuration(10000);
};
getWorld().addDisplayableAt(_local2, getScreenLocation());
_local2.setLevel(((_arg1[0] as Living).getLevel() * 2));
_local2.setTeam(getTeam());
}
}
}//package com.greyhound.things.traps
Section 232
//MaimTrap (com.greyhound.things.traps.MaimTrap)
package com.greyhound.things.traps {
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.talents.traps.*;
import com.greyhound.things.approvers.*;
public class MaimTrap extends Trap {
public function MaimTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.MaimTrapIMG), "Maim trap", 70, 10000, new EnemyTargetApprover(Living.PLAYER_TEAM, false), 7);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " The one who is unfortunate enough to trigger this trap will be left with a serious limp."));
}
override public function getMaximumTraps():int{
var _local1 = 1;
if (SavedData.hasTalenPoint(MaimTrapMastery)){
_local1 = (_local1 + MaimTrapMastery.EXTRA_TRAPS);
};
return (_local1);
}
override protected function triggerTrap(_arg1:Array):void{
var _local2:Object;
var _local3:Living;
for each (_local2 in _arg1) {
if ((_local2 is Living)){
_local3 = (_local2 as Living);
if (!_local3.isImmuneTo(Damage.TRAP)){
_local3.getStatManager().addInnateDexterityBonus((_local3.getStatManager().getDexterity() * -0.6));
_local3.getStatManager().addInnateStrengthBonus((_local3.getStatManager().getStrength() * -0.6));
_local3.getStatManager().addInnateMagicBonus((_local3.getStatManager().getMagic() * -0.6));
_local3.getStatManager().addInnateSpeedBonus((_local3.getStatManager().getSpeed() * -0.6));
};
};
};
}
}
}//package com.greyhound.things.traps
Section 233
//PitTrap (com.greyhound.things.traps.PitTrap)
package com.greyhound.things.traps {
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.talents.traps.*;
import com.greyhound.things.approvers.*;
public class PitTrap extends Trap {
public static const STUN_LENGTH:int = 4000;
public static const DEATH_CHANCE:Number = 0.05;
public function PitTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.PitTrapIMG), "Pit Trap", 25, 9000, new EnemyTargetApprover(Living.PLAYER_TEAM, false), 3);
}
override public function getButtonToolTip():String{
return ((((((super.getButtonToolTip() + " The pit trap slides open and will temporarily incapacitate any foes who were standing on it for ") + Tools.round((STUN_LENGTH / 1000), 1)) + " seconds. There is a ") + (100 * DEATH_CHANCE)) + "% chance that they will not survive the fall."));
}
override public function getMaximumTraps():int{
return (3);
}
override protected function triggerTrap(_arg1:Array):void{
var _local4:Object;
var _local2:int = STUN_LENGTH;
if (SavedData.hasTalenPoint(DeeperPits)){
_local2 = (_local2 + DeeperPits.STUN_LENGTH_BONUS);
};
if (SavedData.hasTalenPoint(EvenDeeperPits)){
_local2 = (_local2 + EvenDeeperPits.STUN_LENGTH_BONUS);
};
var _local3:Boolean = SavedData.hasTalenPoint(BottomlessPit);
for each (_local4 in _arg1) {
if (Math.random() < DEATH_CHANCE){
(_local4 as Living).moveTo(null);
} else {
(_local4 as Living).stun(_local2);
if (_local3){
(_local4 as Living).getStatManager().addInnateSpeedBonus(BottomlessPit.SPEED_PENALTY);
};
};
};
}
}
}//package com.greyhound.things.traps
Section 234
//SpikeTrap (com.greyhound.things.traps.SpikeTrap)
package com.greyhound.things.traps {
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.*;
import com.greyhound.talents.traps.*;
import com.greyhound.things.approvers.*;
public class SpikeTrap extends Trap {
public static const DAMAGE_PERCENT:Number = 0.3;
public function SpikeTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.SpikeTrapIMG), "Spike Trap", 15, getResetTime(), new EnemyTargetApprover(Living.PLAYER_TEAM, false), 1);
}
override public function getButtonToolTip():String{
return ((((super.getButtonToolTip() + " Any enemy who wanders over it is instantly impaled for ") + (DAMAGE_PERCENT * 100)) + "% of their maximum health."));
}
override public function getMaximumTraps():int{
var _local1 = 4;
if (SavedData.hasTalenPoint(ExtraSpikeTraps)){
_local1 = (_local1 + ExtraSpikeTraps.EXTRA_TRAPS);
};
return (_local1);
}
override protected function triggerTrap(_arg1:Array):void{
var _local2:Number = DAMAGE_PERCENT;
if (SavedData.hasTalenPoint(SharperSpikes)){
_local2 = (_local2 + 0.1);
};
var _local3:Living = ((_arg1[0] as Living) as Living);
var _local4:Damage = new Damage((_local3.getStatManager().getMaxHp() * _local2), Damage.TRAP, this);
_local3.takeDamage(_local4);
}
private function getResetTime():int{
var _local1:Number = 0;
if (SavedData.hasTalenPoint(FastGears)){
_local1 = (_local1 + FastGears.TRAP_RESET_SCALOR_BONUS);
};
return (Tools.scaleNegatively(6000, _local1));
}
}
}//package com.greyhound.things.traps
Section 235
//SummonSwarmTrap (com.greyhound.things.traps.SummonSwarmTrap)
package com.greyhound.things.traps {
import com.greyhound.living.*;
import com.greyhound.tools.*;
import com.greyhound.living.monsters.*;
import com.greyhound.things.approvers.*;
public class SummonSwarmTrap extends Trap {
public function SummonSwarmTrap(){
super(new TrapDisplayObjectProvider(ArtLoader.SummonSwarmpTrapIMG), "Swarm Trap", 100, 60000, new EnemyTargetApprover(Living.PLAYER_TEAM, true), 9);
}
override public function getButtonToolTip():String{
return ((super.getButtonToolTip() + " Swarms of insects will fly out and confound their targets for a long period of time. Works on flying creatures."));
}
override public function getMaximumTraps():int{
return (1);
}
override protected function triggerTrap(_arg1:Array):void{
var _local2:Swarm = new Swarm();
_local2.setDuration(20000);
getWorld().addDisplayableAt(_local2, getScreenLocation());
_local2.setLevel(((_arg1[0] as Living).getLevel() * 5));
}
}
}//package com.greyhound.things.traps
Section 236
//Trap (com.greyhound.things.traps.Trap)
package com.greyhound.things.traps {
import flash.display.*;
import com.greyhound.ui.controlpanel.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import flash.utils.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
public class Trap extends DisplayableGameObject implements ISelectionDisplayProvider, IPercentBarProvider, IDamageSource, IBuyable, IButtonProvider {
private var trapTargetApprover:IDisplayableApprover;
private var name:String;
private var levelRequirement:int;
private var sellValue:int;
private var reseting:Boolean;
private var trapResetSpeed:int;
private var cost:int;
private var team:int;
private var counter:int;
private static const TARGET_ACQUIRE_SPEED:int = 200;
public function Trap(_arg1:IDisplayObjectProvider, _arg2:String, _arg3:int, _arg4:int, _arg5:IDisplayableApprover, _arg6:int){
super(_arg1);
this.cost = _arg3;
this.name = _arg2;
this.levelRequirement = _arg6;
setHeartbeatSpeed(TARGET_ACQUIRE_SPEED);
this.trapResetSpeed = _arg4;
this.trapTargetApprover = _arg5;
reseting = true;
counter = _arg4;
sellValue = (_arg3 * 0.25);
}
public function getName():String{
return (name);
}
protected function triggerTrap(_arg1:Array):void{
}
public function getSellValue():int{
return (sellValue);
}
public function built():void{
}
public function getLevelRequirement():int{
return (levelRequirement);
}
public function getButtonToolTip():String{
return ((((((((name + " Required Avatar Level: ") + levelRequirement) + " cost: ") + cost) + ". You can have ") + getMaximumTraps()) + " of this trap type deployed at one time."));
}
public function getMaximumTraps():int{
trace(("Didn't override getMaximumTraps in " + this));
return (0);
}
public function canBuy(_arg1:World):Boolean{
var _local4:GameObject;
var _local2:int;
var _local3:String = getQualifiedClassName(this);
for each (_local4 in _arg1.getInventory()) {
if (getQualifiedClassName(_local4) == _local3){
_local2++;
};
};
if (_local2 >= getMaximumTraps()){
return (false);
};
return ((_arg1.getAvatar().getLevel() >= levelRequirement));
}
override protected function heartBeat(_arg1:int):void{
var _local2:Array;
var _local3:Array;
var _local4:Boolean;
var _local5:Object;
super.heartBeat(_arg1);
counter = (counter - _arg1);
if (reseting){
if (counter <= 0){
counter = (counter + TARGET_ACQUIRE_SPEED);
reseting = false;
};
fireChange();
};
if (((!(reseting)) && ((counter <= 0)))){
_local2 = getTile().getDisplayableGameObjects();
_local3 = new Array();
_local4 = false;
for each (_local5 in _local2) {
if (trapTargetApprover.approve((_local5 as DisplayableGameObject))){
_local4 = true;
if (((!(((_local5 as Living).getTeam() == Living.CREEP_TEAM))) && (!((_local5 is ITrapImmune))))){
_local3.push(_local5);
};
};
};
if (_local4){
reseting = true;
counter = trapResetSpeed;
};
if (_local3.length > 0){
triggerTrap(_local3);
};
};
}
public function getBarPercent():Number{
if (reseting){
return (((trapResetSpeed - counter) / trapResetSpeed));
};
return (1);
}
public function getCost():int{
return (cost);
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
}
public function sell():int{
var _local1:World;
if (sellValue > 0){
_local1 = getWorld();
_local1.getVault().addGold(sellValue);
moveTo(null);
_local1.updateBuildButtons();
return (sellValue);
};
return (0);
}
public function getTeam():int{
return (team);
}
public function canBuildAt(_arg1:Tile, _arg2:World):String{
return (null);
}
public function getButtonDisplayObject():DisplayObject{
return (createDisplayObject());
}
protected function createTrapDisplayObject():DisplayObject{
trace(("Trap missing createTrapDisplayObject:" + this));
return (new ArtLoader.MissingGraphicIMG());
}
public function getDisplayText():String{
return ((((name + " sell value: ") + sellValue) + "."));
}
public function getDisplayControls():IRefreshable{
return (new CompositeSprite([new RefreshingText(this, 160), new SellButton(this)]));
}
public function setTeam(_arg1:int):void{
this.team = _arg1;
}
}
}//package com.greyhound.things.traps
Section 237
//TrapDisplayObjectProvider (com.greyhound.things.traps.TrapDisplayObjectProvider)
package com.greyhound.things.traps {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.ui.displayobjectproviders.*;
public class TrapDisplayObjectProvider extends DisplayObjectProvider {
public function TrapDisplayObjectProvider(_arg1:Class){
super(_arg1);
}
override public function createDisplayObject(_arg1:DisplayableGameObject):DisplayObject{
var _local2:DisplayObject = super.createDisplayObject(_arg1);
var _local3:PercentBar = new PercentBar((_arg1 as IPercentBarProvider), _local2.width, 0xFFFF00);
_local3.x = 0;
_local3.y = -(_local3.height);
var _local4:Sprite = new Sprite();
_local4.addChild(_local2);
_local4.addChild(_local3);
return (_local4);
}
}
}//package com.greyhound.things.traps
Section 238
//ITreasure (com.greyhound.things.treasure.ITreasure)
package com.greyhound.things.treasure {
import com.greyhound.living.*;
public interface ITreasure {
function claim(_arg1:Living):void;
}
}//package com.greyhound.things.treasure
Section 239
//TreasureChest (com.greyhound.things.treasure.TreasureChest)
package com.greyhound.things.treasure {
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.equipment.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import com.greyhound.ui.floaters.*;
public class TreasureChest extends DisplayableGameObject implements ITreasure, IDiggable, ISelectionDisplayProvider {
private var level:int;
private var lootTable:ILootTable;
private var gold:int;
public function TreasureChest(_arg1:int, _arg2:int, _arg3:int=0, _arg4:int=0){
super(new DisplayObjectProvider(ArtLoader.ChestIMG));
lootTable = new DefaultLootTable(_arg2, 1, _arg3);
this.level = _arg1;
this.gold = _arg4;
}
public function performDig(_arg1:Living):void{
claim(_arg1);
}
public function getDisplayControls():IRefreshable{
return (new RefreshingText(this));
}
public function getDigValue():int{
return (0);
}
public function getDisplayText():String{
return ("This is a treasure chest. You can claim it by getting your avatar to touch it, or having a peons dig it.");
}
public function getDigLength():int{
return (20);
}
public function claim(_arg1:Living):void{
var _local5:int;
var _local6:Object;
var _local7:Equipment;
var _local8:Floater;
var _local2:Avatar = getWorld().getAvatar();
if (gold > 0){
GoldFloater.showGoldFloaterOn(gold, _local2);
getWorld().getVault().addGold(gold);
};
var _local3:Array = lootTable.generateLoot(level);
var _local4:Point = getScreenLocation();
if (_local3 != null){
_local5 = 0;
for each (_local6 in _local3) {
_local7 = (_local6 as Equipment);
_local8 = new Floater(getWorld().getStage(), _local4.x, ((_local4.y - 10) - _local5), new Icon(_local7.getDisplayObject()));
_local5 = (_local5 + _local8.height);
new ToolTip("To equip this item go to the inventory tab.", _local8);
_local7.moveTo(getWorld().getAvatar());
};
};
moveTo(null);
}
}
}//package com.greyhound.things.treasure
Section 240
//DamageEmitter (com.greyhound.things.DamageEmitter)
package com.greyhound.things {
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import com.greyhound.tools.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import com.greyhound.things.approvers.*;
public class DamageEmitter extends DisplayableGameObject implements IDamageSource, ISelectionDisplayProvider {
private var name:String;
private var damage:Damage;
private var radius:int;
private var team:int;
public function DamageEmitter(_arg1:DisplayObjectProvider, _arg2:Object){
super(_arg1);
var _local3:int = (_arg2.damagePerSecond as Number);
setDuration((_arg2.duration as int));
radius = (_arg2.radius as int);
team = (_arg2.team as int);
name = (_arg2.name as String);
damage = new Damage(_local3, Damage.MAGICAL, this);
setHeartbeatSpeed(1000);
}
public function getDisplayText():String{
return (((((name + " Damage Per Second: ") + damage.getAmount(null)) + " Radius: ") + radius));
}
public function getDisplayControls():IRefreshable{
return (new RefreshingText(this, 160));
}
public function notifyDamageDealt(_arg1:int, _arg2:Damage, _arg3:Living, _arg4:Boolean):void{
}
public function getTeam():int{
return (team);
}
override protected function heartBeat(_arg1:int):void{
var _local3:Object;
super.heartBeat(_arg1);
var _local2:Array = Util.getAllLivingsInRange(radius, getWorld(), getScreenLocation(), new EnemyTargetApprover(team, false));
for each (_local3 in _local2) {
(_local3 as Living).takeDamage(damage);
};
}
}
}//package com.greyhound.things
Section 241
//Detonation (com.greyhound.things.Detonation)
package com.greyhound.things {
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.living.*;
import flash.utils.*;
import com.greyhound.*;
import com.greyhound.ui.effects.*;
public class Detonation extends DisplayableGameObject {
private var size:Number;
private var maxSize:int;
private var targets:Dictionary;
public function Detonation(_arg1:Number){
super(new DetonationGraphic());
getRootGraphic().setSelectable(false);
size = 0;
this.maxSize = _arg1;
setHeartbeatSpeed(MyPreloader.FRAMERATE);
}
override protected function heartBeat(_arg1:int):void{
var _local2:Living;
var _local4:Number;
var _local5:Point;
var _local6:Boolean;
var _local7:Number;
super.heartBeat(_arg1);
if (targets == null){
targets = new Dictionary();
_local4 = (maxSize * maxSize);
_local5 = getScreenLocation();
_local6 = false;
for each (_local2 in getWorld().getLivings()) {
if (_local2.getTeam() == Living.PLAYER_TEAM){
if ((((_local2 is Avatar)) || ((_local2 is Peon)))){
} else {
_local7 = Tools.distanceSquared(_local5, _local2.getScreenLocation());
if (_local7 <= _local4){
targets[_local2] = Math.sqrt(_local7);
_local6 = true;
};
};
};
};
if (!_local6){
moveTo(null);
targets = null;
return;
};
};
size = (size + (_arg1 / 15));
var _local3:Array = Tools.getKeys(targets);
for each (_local2 in _local3) {
if (((_local2.isDestroyed()) || ((targets[_local2] <= size)))){
delete targets[_local2];
if (!_local2.isDestroyed()){
_local2.takeLethalDamage();
};
};
};
if (size >= maxSize){
moveTo(null);
targets = null;
} else {
(getGraphic() as DetonationGraphic).setExplosionSize(size, maxSize);
};
}
}
}//package com.greyhound.things
Section 242
//IBuyable (com.greyhound.things.IBuyable)
package com.greyhound.things {
import com.greyhound.world.*;
public interface IBuyable {
function getName():String;
function sell():int;
function getCost():int;
function canBuy(_arg1:World):Boolean;
function canBuildAt(_arg1:Tile, _arg2:World):String;
function built():void;
function setTeam(_arg1:int):void;
}
}//package com.greyhound.things
Section 243
//IDiggable (com.greyhound.things.IDiggable)
package com.greyhound.things {
import com.greyhound.base.*;
import com.greyhound.living.*;
public interface IDiggable extends IChangeable {
function performDig(_arg1:Living):void;
function getDigLength():int;
function getDigValue():int;
}
}//package com.greyhound.things
Section 244
//AStar (com.greyhound.tools.pathfinding.AStar)
package com.greyhound.tools.pathfinding {
import flash.geom.*;
public class AStar {
private var targetNode:Node;
private var openList:Array;
private var finish:Point;
private var pathableMap:IPathableMap;
private var allowDiagonal:Boolean;
private var start:Point;
private var exclusive:Boolean;
private var closedList:Array;
private var userObject:Object;
public function AStar(_arg1:IPathableMap, _arg2:Boolean=false, _arg3:Boolean=false){
this.pathableMap = _arg1;
this.exclusive = _arg3;
this.allowDiagonal = _arg2;
}
private function addToClosedList(_arg1:Node):void{
closedList.push(_arg1);
}
private function isOnClosedList(_arg1:Point):Boolean{
var _local2:Object;
for each (_local2 in closedList) {
if ((_local2 as Node).point.equals(_arg1)){
return (true);
};
};
return (false);
}
public function getPath():Array{
var _local1:Array = new Array();
var _local2:Node = targetNode.parent;
while (((!((_local2 == null))) && (((!(exclusive)) || (!((_local2.parent == null))))))) {
_local1.push(_local2.point);
_local2 = _local2.parent;
};
return (_local1);
}
private function findLowestCostOnOpenList(_arg1:Node, _arg2:Point):Node{
var _local5:Object;
var _local6:Node;
var _local3:Node;
var _local4:Boolean;
if (_arg1 != null){
_local4 = ((_arg1.point.y - _arg2.y) > (_arg1.point.x - _arg2.x));
};
for each (_local5 in openList) {
if (_local3 == null){
_local3 = (_local5 as Node);
} else {
_local6 = (_local5 as Node);
if (_local6.f < _local3.f){
_local3 = _local6;
} else {
if (_local6.f == _local3.f){
if (_local4){
if ((_local6.point.y - _arg2.y) > (_local3.point.y - _arg2.y)){
_local3 = _local6;
};
} else {
if ((_local6.point.x - _arg2.x) > (_local3.point.x - _arg2.x)){
_local3 = _local6;
};
};
};
};
};
};
return (_local3);
}
private function processPoint(_arg1:Node, _arg2:int, _arg3:int, _arg4:Boolean):void{
var _local6:Node;
var _local7:int;
var _local5:Point = new Point((_arg1.point.x + _arg2), (_arg1.point.y + _arg3));
if (pointIsPossible(_local5)){
_local6 = findInOpenList(_local5);
_local7 = ((_arg1.g + (_arg4) ? 14 : 10) + pathableMap.getPathingCostOfTile(_local5.x, _local5.y, userObject));
if (_local6 == null){
_local6 = new Node(_local5);
openList.push(_local6);
_local6.parent = _arg1;
_local6.g = _local7;
_local6.h = generateH(_local5);
_local6.f = (_local6.g + _local6.h);
} else {
if (_local6.g > _local7){
_local6.parent = _arg1;
_local6.g = _local7;
_local6.f = (_local6.g + _local6.h);
};
};
};
}
private function addToOpenList(_arg1:Node):void{
openList.push(_arg1);
}
private function pointIsPossible(_arg1:Point):Boolean{
if (!pathableMap.isPathLocationValid(_arg1.x, _arg1.y, userObject)){
return (false);
};
return (!(isOnClosedList(_arg1)));
}
private function generateH(_arg1:Point):int{
var _local2:Point = _arg1.subtract(finish);
return (((Math.abs(_local2.x) * 10) + (Math.abs(_local2.y) * 10)));
}
private function findInOpenList(_arg1:Point):Node{
var _local2:Object;
for each (_local2 in openList) {
if ((_local2 as Node).point.equals(_arg1)){
return ((_local2 as Node));
};
};
return (null);
}
private function removeFromOpenList(_arg1:Node):void{
var _local2:int = openList.indexOf(_arg1);
if (_local2 != -1){
openList.splice(_local2, 1);
} else {
trace("Didnt find node on open list");
};
}
public function generatePath(_arg1:Point, _arg2:Point, _arg3:Object):Boolean{
var _local4:Node;
var _local5:Boolean;
var _local6:Boolean;
var _local7:Boolean;
var _local8:Boolean;
if (((!(exclusive)) && (!(pathableMap.isPathLocationValid(_arg2.x, _arg2.y, _arg3))))){
return (false);
};
this.start = _arg2;
this.finish = _arg1;
this.userObject = _arg3;
openList = new Array();
closedList = new Array();
addToOpenList(new Node(start));
while (openList.length > 0) {
_local4 = findLowestCostOnOpenList(_local4, finish);
processPoint(_local4, 0, -1, false);
processPoint(_local4, 0, 1, false);
processPoint(_local4, -1, 0, false);
processPoint(_local4, 1, 0, false);
if (allowDiagonal){
_local5 = pathableMap.isPathLocationValid(_local4.point.x, (_local4.point.y - 1), _arg3);
_local6 = pathableMap.isPathLocationValid((_local4.point.x + 1), _local4.point.y, _arg3);
_local7 = pathableMap.isPathLocationValid(_local4.point.x, (_local4.point.y + 1), _arg3);
_local8 = pathableMap.isPathLocationValid((_local4.point.x - 1), _local4.point.y, _arg3);
if (((_local5) || (_local6))){
processPoint(_local4, 1, -1, true);
};
if (((_local7) || (_local6))){
processPoint(_local4, 1, 1, true);
};
if (((_local5) || (_local8))){
processPoint(_local4, -1, -1, true);
};
if (((_local7) || (_local8))){
processPoint(_local4, -1, 1, true);
};
};
removeFromOpenList(_local4);
addToClosedList(_local4);
if (_local4.point.equals(finish)){
targetNode = _local4;
return (true);
};
};
return (false);
}
}
}//package com.greyhound.tools.pathfinding
Section 245
//IPathableMap (com.greyhound.tools.pathfinding.IPathableMap)
package com.greyhound.tools.pathfinding {
public interface IPathableMap {
function isPathLocationValid(_arg1:int, _arg2:int, _arg3:Object):Boolean;
function getPathingCostOfTile(_arg1:int, _arg2:int, _arg3:Object):Number;
function getPathLocation(_arg1:int, _arg2:int):Object;
}
}//package com.greyhound.tools.pathfinding
Section 246
//IPathfindingEffecting (com.greyhound.tools.pathfinding.IPathfindingEffecting)
package com.greyhound.tools.pathfinding {
public interface IPathfindingEffecting {
function blocksMovement(_arg1:Object):Boolean;
}
}//package com.greyhound.tools.pathfinding
Section 247
//Node (com.greyhound.tools.pathfinding.Node)
package com.greyhound.tools.pathfinding {
import flash.geom.*;
public class Node {
public var f:Number;
public var g:Number;
public var h:Number;
public var parent:Node;
public var point:Point;
public function Node(_arg1:Point){
this.point = _arg1;
parent = null;
f = 0;
g = 0;
h = 0;
}
}
}//package com.greyhound.tools.pathfinding
Section 248
//ArtLoader (com.greyhound.tools.ArtLoader)
package com.greyhound.tools {
import flash.display.*;
import flash.geom.*;
public class ArtLoader {
public static const AltarIMG:Class = ArtLoader_AltarIMG;
public static const DeathKnightIMG:Class = ArtLoader_DeathKnightIMG;
public static const AcidForBreathIMG:Class = ArtLoader_AcidForBreathIMG;
public static const MasterOfMagicIMG:Class = ArtLoader_MasterOfMagicIMG;
public static const WyrmLairIMG:Class = ArtLoader_WyrmLairIMG;
public static const SmallButtonIMG:Class = ArtLoader_SmallButtonIMG;
public static const ChooseMapIMG:Class = ArtLoader_ChooseMapIMG;
public static const StrongestBestFastestIMG:Class = ArtLoader_StrongestBestFastestIMG;
public static const NotAllowedIMG:Class = ArtLoader_NotAllowedIMG;
public static const CentaurIMG:Class = ArtLoader_CentaurIMG;
public static const BackInBlackIMG:Class = ArtLoader_BackInBlackIMG;
public static const BetterItemsIMG:Class = ArtLoader_BetterItemsIMG;
public static const DigIMG:Class = ArtLoader_DigIMG;
public static const ScrollPaneDownIMG:Class = ArtLoader_ScrollPaneDownIMG;
public static const SkeletonIMG:Class = ArtLoader_SkeletonIMG;
public static const GemsIMG:Class = ArtLoader_GemsIMG;
public static const FromDeathComesLifeIMG:Class = ArtLoader_FromDeathComesLifeIMG;
public static const ElfHeroIMG:Class = ArtLoader_ElfHeroIMG;
public static const GymIMG:Class = ArtLoader_GymIMG;
public static const EquipmentListBorderIMG:Class = ArtLoader_EquipmentListBorderIMG;
public static const AvatarTabSelectedIMG:Class = ArtLoader_AvatarTabSelectedIMG;
public static const HelmetIMG:Class = ArtLoader_HelmetIMG;
public static const SafetyInNumbersIMG:Class = ArtLoader_SafetyInNumbersIMG;
public static const RedEquipmentBKGIMG:Class = ArtLoader_RedEquipmentBKGIMG;
public static const GlovesSlotIMG:Class = ArtLoader_GlovesSlotIMG;
public static const StrongerGoblinShieldsIMG:Class = ArtLoader_StrongerGoblinShieldsIMG;
public static const FireballIMG:Class = ArtLoader_FireballIMG;
public static const DemonLairIMG:Class = ArtLoader_DemonLairIMG;
public static const MagicResistanceIMG:Class = ArtLoader_MagicResistanceIMG;
public static const DruidHeroIMG:Class = ArtLoader_DruidHeroIMG;
public static const LeftArrowIMG:Class = ArtLoader_LeftArrowIMG;
public static const ScrollPaneUpIMG:Class = ArtLoader_ScrollPaneUpIMG;
public static const ElementalIMG:Class = ArtLoader_ElementalIMG;
public static const DwarfHeroIMG:Class = ArtLoader_DwarfHeroIMG;
public static const SpeedIMG:Class = ArtLoader_SpeedIMG;
public static const BootsSlotIMG:Class = ArtLoader_BootsSlotIMG;
public static const GoblinIMG:Class = ArtLoader_GoblinIMG;
public static const RogueHeroIMG:Class = ArtLoader_RogueHeroIMG;
public static const ManticoreLairIMG:Class = ArtLoader_ManticoreLairIMG;
public static const WeaponIMG:Class = ArtLoader_WeaponIMG;
public static const MaimTrapIMG:Class = ArtLoader_MaimTrapIMG;
public static const FireWallIMG:Class = ArtLoader_FireWallIMG;
public static const TabPanelBackgroundIMG:Class = ArtLoader_TabPanelBackgroundIMG;
public static const PantsIMG:Class = ArtLoader_PantsIMG;
public static const DeathTrapIMG:Class = ArtLoader_DeathTrapIMG;
public static const LichLairIMG:Class = ArtLoader_LichLairIMG;
public static const GlovesIMG:Class = ArtLoader_GlovesIMG;
public static const ValkyrieHeroIMG:Class = ArtLoader_ValkyrieHeroIMG;
public static const GoldVeinIMG:Class = ArtLoader_GoldVeinIMG;
public static const MenuButtonIMG:Class = ArtLoader_MenuButtonIMG;
public static const RingSlotIMG:Class = ArtLoader_RingSlotIMG;
public static const PeonIMG:Class = ArtLoader_PeonIMG;
public static const EvenDeeperPitsIMG:Class = ArtLoader_EvenDeeperPitsIMG;
public static const ChampionIMG:Class = ArtLoader_ChampionIMG;
public static const HydraLairIMG:Class = ArtLoader_HydraLairIMG;
public static const TalentSelectedIMG:Class = ArtLoader_TalentSelectedIMG;
public static const MoreItemsIMG:Class = ArtLoader_MoreItemsIMG;
public static const MinotaurIMG:Class = ArtLoader_MinotaurIMG;
public static const BootsIMG:Class = ArtLoader_BootsIMG;
public static const HealActionIMG:Class = ArtLoader_HealActionIMG;
public static const SaveDiskIMG:Class = ArtLoader_SaveDiskIMG;
public static const WideLoadIMG:Class = ArtLoader_WideLoadIMG;
public static const WhereIsTheBeefIMG:Class = ArtLoader_WhereIsTheBeefIMG;
public static const SpikeTrapIMG:Class = ArtLoader_SpikeTrapIMG;
public static const StatusBarBackgroundIMG:Class = ArtLoader_StatusBarBackgroundIMG;
public static const PoisonCloudIMG:Class = ArtLoader_PoisonCloudIMG;
public static const TrackIMG:Class = ArtLoader_TrackIMG;
public static const TalentTreeIMG:Class = ArtLoader_TalentTreeIMG;
public static const MagicActionIMG:Class = ArtLoader_MagicActionIMG;
public static const OrangeEquipmentBKGIMG:Class = ArtLoader_OrangeEquipmentBKGIMG;
public static const OffHandSlotIMG:Class = ArtLoader_OffHandSlotIMG;
public static const AmuletIMG:Class = ArtLoader_AmuletIMG;
public static const MuteOnIMG:Class = ArtLoader_MuteOnIMG;
public static const StrongerBetterFasterIMG:Class = ArtLoader_StrongerBetterFasterIMG;
public static const CentaurLairIMG:Class = ArtLoader_CentaurLairIMG;
public static const OffHandIMG:Class = ArtLoader_OffHandIMG;
public static const AmuletSlotIMG:Class = ArtLoader_AmuletSlotIMG;
public static const ScrollPaneSliderIMG:Class = ArtLoader_ScrollPaneSliderIMG;
public static const PingPongIMG:Class = ArtLoader_PingPongIMG;
public static const SummonSwarmpTrapIMG:Class = ArtLoader_SummonSwarmpTrapIMG;
public static const BigIMG:Class = ArtLoader_BigIMG;
public static const RazorSharpIMG:Class = ArtLoader_RazorSharpIMG;
public static const LightningIMG:Class = ArtLoader_LightningIMG;
public static const BoulderTrapIMG:Class = ArtLoader_BoulderTrapIMG;
public static const GameBackgroundIMG:Class = ArtLoader_GameBackgroundIMG;
public static const GoldVaultIMG:Class = ArtLoader_GoldVaultIMG;
public static const House1IMG:Class = ArtLoader_House1IMG;
public static const GhostIMG:Class = ArtLoader_GhostIMG;
public static const EyeFromAnEyeIMG:Class = ArtLoader_EyeFromAnEyeIMG;
public static const ClericHeroIMG:Class = ArtLoader_ClericHeroIMG;
public static const AnimalHusbandryIMG:Class = ArtLoader_AnimalHusbandryIMG;
public static const AcidBreathIMG:Class = ArtLoader_AcidBreathIMG;
public static const MapIMG:Class = ArtLoader_MapIMG;
public static const EquipmentTabUnselectedIMG:Class = ArtLoader_EquipmentTabUnselectedIMG;
public static const PackHuntingIMG:Class = ArtLoader_PackHuntingIMG;
public static const MaimTrapMasteryIMG:Class = ArtLoader_MaimTrapMasteryIMG;
public static const AvatarTabUnselectedIMG:Class = ArtLoader_AvatarTabUnselectedIMG;
public static const VampireIMG:Class = ArtLoader_VampireIMG;
public static const MagicIMG:Class = ArtLoader_MagicIMG;
public static const BlueEquipmentBKGIMG:Class = ArtLoader_BlueEquipmentBKGIMG;
public static const FastGearsIMG:Class = ArtLoader_FastGearsIMG;
public static const LairTabUnselectedIMG:Class = ArtLoader_LairTabUnselectedIMG;
public static const ToolTipIMG:Class = ArtLoader_ToolTipIMG;
public static const TalentDisabledIMG:Class = ArtLoader_TalentDisabledIMG;
public static const EvilWizardIMG:Class = ArtLoader_EvilWizardIMG;
public static const TorsoIMG:Class = ArtLoader_TorsoIMG;
public static const SellIMG:Class = ArtLoader_SellIMG;
public static const TrashCanIMG:Class = ArtLoader_TrashCanIMG;
public static const WoodPanelIMG:Class = ArtLoader_WoodPanelIMG;
public static const FragmentationIMG:Class = ArtLoader_FragmentationIMG;
public static const UpArrowIMG:Class = ArtLoader_UpArrowIMG;
public static const EtherealMinionsIMG:Class = ArtLoader_EtherealMinionsIMG;
public static const ChooseDifficultyIMG:Class = ArtLoader_ChooseDifficultyIMG;
public static const ExtraSpikeTrapsIMG:Class = ArtLoader_ExtraSpikeTrapsIMG;
public static const DoorIMG:Class = ArtLoader_DoorIMG;
public static const RightArrowIMG:Class = ArtLoader_RightArrowIMG;
public static const WeaponSlotIMG:Class = ArtLoader_WeaponSlotIMG;
public static const KongLogoIMG:Class = ArtLoader_KongLogoIMG;
public static const DeathComesSwiftlyIMG:Class = ArtLoader_DeathComesSwiftlyIMG;
public static const SharperSpikesIMG:Class = ArtLoader_SharperSpikesIMG;
public static const PlatinumVeinIMG:Class = ArtLoader_PlatinumVeinIMG;
public static const AlchemyIMG:Class = ArtLoader_AlchemyIMG;
public static const ChaosRangerIMG:Class = ArtLoader_ChaosRangerIMG;
public static const SupportTabUnselectedIMG:Class = ArtLoader_SupportTabUnselectedIMG;
public static const House2IMG:Class = ArtLoader_House2IMG;
public static const SoulStealIMG:Class = ArtLoader_SoulStealIMG;
public static const ArrowIMG:Class = ArtLoader_ArrowIMG;
public static const FasterReloadIMG:Class = ArtLoader_FasterReloadIMG;
public static const TalentUnselectedIMG:Class = ArtLoader_TalentUnselectedIMG;
public static const ChestIMG:Class = ArtLoader_ChestIMG;
public static const GoldIMG:Class = ArtLoader_GoldIMG;
public static const SwarmIMG:Class = ArtLoader_SwarmIMG;
public static const SkullIMG:Class = ArtLoader_SkullIMG;
public static const BearIMG:Class = ArtLoader_BearIMG;
public static const RangedResistanceIMG:Class = ArtLoader_RangedResistanceIMG;
public static const ThickEnoughToWalkOnIMG:Class = ArtLoader_ThickEnoughToWalkOnIMG;
public static const AcademyIMG:Class = ArtLoader_AcademyIMG;
public static const DemonIMG:Class = ArtLoader_DemonIMG;
public static const BeyondTheGraveIMG:Class = ArtLoader_BeyondTheGraveIMG;
public static const EquipmentTabSelectedIMG:Class = ArtLoader_EquipmentTabSelectedIMG;
public static const PitTrapIMG:Class = ArtLoader_PitTrapIMG;
public static const WizardHeroIMG:Class = ArtLoader_WizardHeroIMG;
public static const PurpleEquipmentBKGIMG:Class = ArtLoader_PurpleEquipmentBKGIMG;
public static const BottomlessPitsIMG:Class = ArtLoader_BottomlessPitsIMG;
public static const PaldinHeroIMG:Class = ArtLoader_PaldinHeroIMG;
public static const WeaponHandIMG:Class = ArtLoader_WeaponHandIMG;
public static const MuteOffIMG:Class = ArtLoader_MuteOffIMG;
public static const FinishedTalentsIMG:Class = ArtLoader_FinishedTalentsIMG;
public static const GreenEquipmentBKGIMG:Class = ArtLoader_GreenEquipmentBKGIMG;
public static const LairTabSelectedIMG:Class = ArtLoader_LairTabSelectedIMG;
public static const DeeperPitsIMG:Class = ArtLoader_DeeperPitsIMG;
public static const MeleeAttackIMG:Class = ArtLoader_MeleeAttackIMG;
public static const NextWaveIMG:Class = ArtLoader_NextWaveIMG;
public static const ElementalLairIMG:Class = ArtLoader_ElementalLairIMG;
public static const StrongererBettererFastererIMG:Class = ArtLoader_StrongererBettererFastererIMG;
public static const WallIMG:Class = ArtLoader_WallIMG;
public static const PotentVenomIMG:Class = ArtLoader_PotentVenomIMG;
public static const PantsSlotIMG:Class = ArtLoader_PantsSlotIMG;
public static const House3IMG:Class = ArtLoader_House3IMG;
public static const ScrollPaneTrackIMG:Class = ArtLoader_ScrollPaneTrackIMG;
public static const GoblinLairIMG:Class = ArtLoader_GoblinLairIMG;
public static const ScrollIMG:Class = ArtLoader_ScrollIMG;
public static const GoalIMG:Class = ArtLoader_GoalIMG;
public static const HelmetSlotIMG:Class = ArtLoader_HelmetSlotIMG;
public static const TorsoSlotIMG:Class = ArtLoader_TorsoSlotIMG;
public static const ManticoreIMG:Class = ArtLoader_ManticoreIMG;
public static const ThickScalesIMG:Class = ArtLoader_ThickScalesIMG;
public static const BlacksmithIMG:Class = ArtLoader_BlacksmithIMG;
public static const MissingGraphicIMG:Class = ArtLoader_MissingGraphicIMG;
public static const HeadIMG:Class = ArtLoader_HeadIMG;
public static const CopperVeinIMG:Class = ArtLoader_CopperVeinIMG;
public static const WatchAndLearnIMG:Class = ArtLoader_WatchAndLearnIMG;
public static const DracoLichIMG:Class = ArtLoader_DracoLichIMG;
public static const DexterityIMG:Class = ArtLoader_DexterityIMG;
public static const LichIMG:Class = ArtLoader_LichIMG;
public static const GraveTrapIMG:Class = ArtLoader_GraveTrapIMG;
public static const RingIMG:Class = ArtLoader_RingIMG;
public static const VampireLairIMG:Class = ArtLoader_VampireLairIMG;
public static const HydraIMG:Class = ArtLoader_HydraIMG;
public static const RunningOfTheBullsIMG:Class = ArtLoader_RunningOfTheBullsIMG;
public static const TalentKongIMG:Class = ArtLoader_TalentKongIMG;
public static const MinotaurLairIMG:Class = ArtLoader_MinotaurLairIMG;
public static const WyrmIMG:Class = ArtLoader_WyrmIMG;
public static const StrengthIMG:Class = ArtLoader_StrengthIMG;
public static const GreyEquipmentBKGIMG:Class = ArtLoader_GreyEquipmentBKGIMG;
public static const MeleeResistanceIMG:Class = ArtLoader_MeleeResistanceIMG;
public static const SupportTabSelectedIMG:Class = ArtLoader_SupportTabSelectedIMG;
public static const DownArrowIMG:Class = ArtLoader_DownArrowIMG;
public static const MoreArrowsIMG:Class = ArtLoader_MoreArrowsIMG;
public static const FanTheCloudIMG:Class = ArtLoader_FanTheCloudIMG;
public static const KeepOnGoingIMG:Class = ArtLoader_KeepOnGoingIMG;
public static const House4IMG:Class = ArtLoader_House4IMG;
public static const BuildButtonBarIMG:Class = ArtLoader_BuildButtonBarIMG;
public static const EquipmentListBkgIMG:Class = ArtLoader_EquipmentListBkgIMG;
public static const SuckyIMG:Class = ArtLoader_SuckyIMG;
public static const SwiftWingsIMG:Class = ArtLoader_SwiftWingsIMG;
public static const LogoIMG:Class = ArtLoader_LogoIMG;
public static const HeavierRockIMG:Class = ArtLoader_HeavierRockIMG;
public static const PauseButtonIMG:Class = ArtLoader_PauseButtonIMG;
public static const FGLLogoIMG:Class = ArtLoader_FGLLogoIMG;
public static const RockIMG:Class = ArtLoader_RockIMG;
public static function duplicateDisplayObject(_arg1:DisplayObject):DisplayObject{
var _local4:Rectangle;
var _local2:Class = Object(_arg1).constructor;
var _local3:DisplayObject = new (_local2);
_local3.transform = _arg1.transform;
_local3.filters = _arg1.filters;
_local3.cacheAsBitmap = _arg1.cacheAsBitmap;
_local3.opaqueBackground = _arg1.opaqueBackground;
if (_arg1.scale9Grid){
_local4 = _arg1.scale9Grid;
_arg1.scale9Grid.x = (_local4.x / 20);
_local4.y = (_local4.y / 20);
_local4.width = (_local4.width / 20);
_local4.height = (_local4.height / 20);
_local3.scale9Grid = _local4;
};
return (_local3);
}
}
}//package com.greyhound.tools
Section 249
//ArtLoader_AcademyIMG (com.greyhound.tools.ArtLoader_AcademyIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AcademyIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 250
//ArtLoader_AcidBreathIMG (com.greyhound.tools.ArtLoader_AcidBreathIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AcidBreathIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 251
//ArtLoader_AcidForBreathIMG (com.greyhound.tools.ArtLoader_AcidForBreathIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AcidForBreathIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 252
//ArtLoader_AlchemyIMG (com.greyhound.tools.ArtLoader_AlchemyIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AlchemyIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 253
//ArtLoader_AltarIMG (com.greyhound.tools.ArtLoader_AltarIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AltarIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 254
//ArtLoader_AmuletIMG (com.greyhound.tools.ArtLoader_AmuletIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AmuletIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 255
//ArtLoader_AmuletSlotIMG (com.greyhound.tools.ArtLoader_AmuletSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AmuletSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 256
//ArtLoader_AnimalHusbandryIMG (com.greyhound.tools.ArtLoader_AnimalHusbandryIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AnimalHusbandryIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 257
//ArtLoader_ArrowIMG (com.greyhound.tools.ArtLoader_ArrowIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ArrowIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 258
//ArtLoader_AvatarTabSelectedIMG (com.greyhound.tools.ArtLoader_AvatarTabSelectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AvatarTabSelectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 259
//ArtLoader_AvatarTabUnselectedIMG (com.greyhound.tools.ArtLoader_AvatarTabUnselectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_AvatarTabUnselectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 260
//ArtLoader_BackInBlackIMG (com.greyhound.tools.ArtLoader_BackInBlackIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BackInBlackIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 261
//ArtLoader_BearIMG (com.greyhound.tools.ArtLoader_BearIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_BearIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_BearIMG(){
dataClass = ArtLoader_BearIMG_dataClass;
super();
initialWidth = (540 / 20);
initialHeight = (660 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 262
//ArtLoader_BearIMG_dataClass (com.greyhound.tools.ArtLoader_BearIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BearIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 263
//ArtLoader_BetterItemsIMG (com.greyhound.tools.ArtLoader_BetterItemsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BetterItemsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 264
//ArtLoader_BeyondTheGraveIMG (com.greyhound.tools.ArtLoader_BeyondTheGraveIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BeyondTheGraveIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 265
//ArtLoader_BigIMG (com.greyhound.tools.ArtLoader_BigIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BigIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 266
//ArtLoader_BlacksmithIMG (com.greyhound.tools.ArtLoader_BlacksmithIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BlacksmithIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 267
//ArtLoader_BlueEquipmentBKGIMG (com.greyhound.tools.ArtLoader_BlueEquipmentBKGIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BlueEquipmentBKGIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 268
//ArtLoader_BootsIMG (com.greyhound.tools.ArtLoader_BootsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BootsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 269
//ArtLoader_BootsSlotIMG (com.greyhound.tools.ArtLoader_BootsSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BootsSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 270
//ArtLoader_BottomlessPitsIMG (com.greyhound.tools.ArtLoader_BottomlessPitsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BottomlessPitsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 271
//ArtLoader_BoulderTrapIMG (com.greyhound.tools.ArtLoader_BoulderTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BoulderTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 272
//ArtLoader_BuildButtonBarIMG (com.greyhound.tools.ArtLoader_BuildButtonBarIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_BuildButtonBarIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 273
//ArtLoader_CentaurIMG (com.greyhound.tools.ArtLoader_CentaurIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_CentaurIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_CentaurIMG(){
dataClass = ArtLoader_CentaurIMG_dataClass;
super();
initialWidth = (660 / 20);
initialHeight = (540 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 274
//ArtLoader_CentaurIMG_dataClass (com.greyhound.tools.ArtLoader_CentaurIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_CentaurIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 275
//ArtLoader_CentaurLairIMG (com.greyhound.tools.ArtLoader_CentaurLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_CentaurLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 276
//ArtLoader_ChampionIMG (com.greyhound.tools.ArtLoader_ChampionIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ChampionIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ChampionIMG(){
dataClass = ArtLoader_ChampionIMG_dataClass;
super();
initialWidth = (600 / 20);
initialHeight = (880 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 277
//ArtLoader_ChampionIMG_dataClass (com.greyhound.tools.ArtLoader_ChampionIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ChampionIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 278
//ArtLoader_ChaosRangerIMG (com.greyhound.tools.ArtLoader_ChaosRangerIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ChaosRangerIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ChaosRangerIMG(){
dataClass = ArtLoader_ChaosRangerIMG_dataClass;
super();
initialWidth = (580 / 20);
initialHeight = (580 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 279
//ArtLoader_ChaosRangerIMG_dataClass (com.greyhound.tools.ArtLoader_ChaosRangerIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ChaosRangerIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 280
//ArtLoader_ChestIMG (com.greyhound.tools.ArtLoader_ChestIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ChestIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 281
//ArtLoader_ChooseDifficultyIMG (com.greyhound.tools.ArtLoader_ChooseDifficultyIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ChooseDifficultyIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 282
//ArtLoader_ChooseMapIMG (com.greyhound.tools.ArtLoader_ChooseMapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ChooseMapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 283
//ArtLoader_ClericHeroIMG (com.greyhound.tools.ArtLoader_ClericHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ClericHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ClericHeroIMG(){
dataClass = ArtLoader_ClericHeroIMG_dataClass;
super();
initialWidth = (500 / 20);
initialHeight = (500 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 284
//ArtLoader_ClericHeroIMG_dataClass (com.greyhound.tools.ArtLoader_ClericHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ClericHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 285
//ArtLoader_CopperVeinIMG (com.greyhound.tools.ArtLoader_CopperVeinIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_CopperVeinIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 286
//ArtLoader_DeathComesSwiftlyIMG (com.greyhound.tools.ArtLoader_DeathComesSwiftlyIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DeathComesSwiftlyIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 287
//ArtLoader_DeathKnightIMG (com.greyhound.tools.ArtLoader_DeathKnightIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_DeathKnightIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_DeathKnightIMG(){
dataClass = ArtLoader_DeathKnightIMG_dataClass;
super();
initialWidth = (580 / 20);
initialHeight = (580 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 288
//ArtLoader_DeathKnightIMG_dataClass (com.greyhound.tools.ArtLoader_DeathKnightIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DeathKnightIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 289
//ArtLoader_DeathTrapIMG (com.greyhound.tools.ArtLoader_DeathTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DeathTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 290
//ArtLoader_DeeperPitsIMG (com.greyhound.tools.ArtLoader_DeeperPitsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DeeperPitsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 291
//ArtLoader_DemonIMG (com.greyhound.tools.ArtLoader_DemonIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_DemonIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_DemonIMG(){
dataClass = ArtLoader_DemonIMG_dataClass;
super();
initialWidth = (540 / 20);
initialHeight = (540 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 292
//ArtLoader_DemonIMG_dataClass (com.greyhound.tools.ArtLoader_DemonIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DemonIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 293
//ArtLoader_DemonLairIMG (com.greyhound.tools.ArtLoader_DemonLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DemonLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 294
//ArtLoader_DexterityIMG (com.greyhound.tools.ArtLoader_DexterityIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DexterityIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 295
//ArtLoader_DigIMG (com.greyhound.tools.ArtLoader_DigIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DigIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 296
//ArtLoader_DoorIMG (com.greyhound.tools.ArtLoader_DoorIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DoorIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 297
//ArtLoader_DownArrowIMG (com.greyhound.tools.ArtLoader_DownArrowIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DownArrowIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 298
//ArtLoader_DracoLichIMG (com.greyhound.tools.ArtLoader_DracoLichIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_DracoLichIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_DracoLichIMG(){
dataClass = ArtLoader_DracoLichIMG_dataClass;
super();
initialWidth = (1360 / 20);
initialHeight = (1020 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 299
//ArtLoader_DracoLichIMG_dataClass (com.greyhound.tools.ArtLoader_DracoLichIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DracoLichIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 300
//ArtLoader_DruidHeroIMG (com.greyhound.tools.ArtLoader_DruidHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_DruidHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_DruidHeroIMG(){
dataClass = ArtLoader_DruidHeroIMG_dataClass;
super();
initialWidth = (500 / 20);
initialHeight = (500 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 301
//ArtLoader_DruidHeroIMG_dataClass (com.greyhound.tools.ArtLoader_DruidHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DruidHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 302
//ArtLoader_DwarfHeroIMG (com.greyhound.tools.ArtLoader_DwarfHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_DwarfHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_DwarfHeroIMG(){
dataClass = ArtLoader_DwarfHeroIMG_dataClass;
super();
initialWidth = (500 / 20);
initialHeight = (500 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 303
//ArtLoader_DwarfHeroIMG_dataClass (com.greyhound.tools.ArtLoader_DwarfHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_DwarfHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 304
//ArtLoader_ElementalIMG (com.greyhound.tools.ArtLoader_ElementalIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ElementalIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ElementalIMG(){
dataClass = ArtLoader_ElementalIMG_dataClass;
super();
initialWidth = (680 / 20);
initialHeight = (680 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 305
//ArtLoader_ElementalIMG_dataClass (com.greyhound.tools.ArtLoader_ElementalIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ElementalIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 306
//ArtLoader_ElementalLairIMG (com.greyhound.tools.ArtLoader_ElementalLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ElementalLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 307
//ArtLoader_ElfHeroIMG (com.greyhound.tools.ArtLoader_ElfHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ElfHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ElfHeroIMG(){
dataClass = ArtLoader_ElfHeroIMG_dataClass;
super();
initialWidth = (520 / 20);
initialHeight = (520 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 308
//ArtLoader_ElfHeroIMG_dataClass (com.greyhound.tools.ArtLoader_ElfHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ElfHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 309
//ArtLoader_EquipmentListBkgIMG (com.greyhound.tools.ArtLoader_EquipmentListBkgIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EquipmentListBkgIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 310
//ArtLoader_EquipmentListBorderIMG (com.greyhound.tools.ArtLoader_EquipmentListBorderIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EquipmentListBorderIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 311
//ArtLoader_EquipmentTabSelectedIMG (com.greyhound.tools.ArtLoader_EquipmentTabSelectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EquipmentTabSelectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 312
//ArtLoader_EquipmentTabUnselectedIMG (com.greyhound.tools.ArtLoader_EquipmentTabUnselectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EquipmentTabUnselectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 313
//ArtLoader_EtherealMinionsIMG (com.greyhound.tools.ArtLoader_EtherealMinionsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EtherealMinionsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 314
//ArtLoader_EvenDeeperPitsIMG (com.greyhound.tools.ArtLoader_EvenDeeperPitsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EvenDeeperPitsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 315
//ArtLoader_EvilWizardIMG (com.greyhound.tools.ArtLoader_EvilWizardIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_EvilWizardIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_EvilWizardIMG(){
dataClass = ArtLoader_EvilWizardIMG_dataClass;
super();
initialWidth = (580 / 20);
initialHeight = (580 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 316
//ArtLoader_EvilWizardIMG_dataClass (com.greyhound.tools.ArtLoader_EvilWizardIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EvilWizardIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 317
//ArtLoader_ExtraSpikeTrapsIMG (com.greyhound.tools.ArtLoader_ExtraSpikeTrapsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ExtraSpikeTrapsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 318
//ArtLoader_EyeFromAnEyeIMG (com.greyhound.tools.ArtLoader_EyeFromAnEyeIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_EyeFromAnEyeIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 319
//ArtLoader_FanTheCloudIMG (com.greyhound.tools.ArtLoader_FanTheCloudIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FanTheCloudIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 320
//ArtLoader_FasterReloadIMG (com.greyhound.tools.ArtLoader_FasterReloadIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FasterReloadIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 321
//ArtLoader_FastGearsIMG (com.greyhound.tools.ArtLoader_FastGearsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FastGearsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 322
//ArtLoader_FGLLogoIMG (com.greyhound.tools.ArtLoader_FGLLogoIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_FGLLogoIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_FGLLogoIMG(){
dataClass = ArtLoader_FGLLogoIMG_dataClass;
super();
initialWidth = (5840 / 20);
initialHeight = (3000 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 323
//ArtLoader_FGLLogoIMG_dataClass (com.greyhound.tools.ArtLoader_FGLLogoIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FGLLogoIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 324
//ArtLoader_FinishedTalentsIMG (com.greyhound.tools.ArtLoader_FinishedTalentsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FinishedTalentsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 325
//ArtLoader_FireballIMG (com.greyhound.tools.ArtLoader_FireballIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_FireballIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_FireballIMG(){
dataClass = ArtLoader_FireballIMG_dataClass;
super();
initialWidth = (320 / 20);
initialHeight = (320 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 326
//ArtLoader_FireballIMG_dataClass (com.greyhound.tools.ArtLoader_FireballIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FireballIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 327
//ArtLoader_FireWallIMG (com.greyhound.tools.ArtLoader_FireWallIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_FireWallIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_FireWallIMG(){
dataClass = ArtLoader_FireWallIMG_dataClass;
super();
initialWidth = (800 / 20);
initialHeight = (800 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 328
//ArtLoader_FireWallIMG_dataClass (com.greyhound.tools.ArtLoader_FireWallIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FireWallIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 329
//ArtLoader_FragmentationIMG (com.greyhound.tools.ArtLoader_FragmentationIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FragmentationIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 330
//ArtLoader_FromDeathComesLifeIMG (com.greyhound.tools.ArtLoader_FromDeathComesLifeIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_FromDeathComesLifeIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 331
//ArtLoader_GameBackgroundIMG (com.greyhound.tools.ArtLoader_GameBackgroundIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GameBackgroundIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 332
//ArtLoader_GemsIMG (com.greyhound.tools.ArtLoader_GemsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GemsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 333
//ArtLoader_GhostIMG (com.greyhound.tools.ArtLoader_GhostIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_GhostIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_GhostIMG(){
dataClass = ArtLoader_GhostIMG_dataClass;
super();
initialWidth = (500 / 20);
initialHeight = (500 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 334
//ArtLoader_GhostIMG_dataClass (com.greyhound.tools.ArtLoader_GhostIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GhostIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 335
//ArtLoader_GlovesIMG (com.greyhound.tools.ArtLoader_GlovesIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GlovesIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 336
//ArtLoader_GlovesSlotIMG (com.greyhound.tools.ArtLoader_GlovesSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GlovesSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 337
//ArtLoader_GoalIMG (com.greyhound.tools.ArtLoader_GoalIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GoalIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 338
//ArtLoader_GoblinIMG (com.greyhound.tools.ArtLoader_GoblinIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_GoblinIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_GoblinIMG(){
dataClass = ArtLoader_GoblinIMG_dataClass;
super();
initialWidth = (240 / 20);
initialHeight = (300 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 339
//ArtLoader_GoblinIMG_dataClass (com.greyhound.tools.ArtLoader_GoblinIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GoblinIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 340
//ArtLoader_GoblinLairIMG (com.greyhound.tools.ArtLoader_GoblinLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GoblinLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 341
//ArtLoader_GoldIMG (com.greyhound.tools.ArtLoader_GoldIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GoldIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 342
//ArtLoader_GoldVaultIMG (com.greyhound.tools.ArtLoader_GoldVaultIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GoldVaultIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 343
//ArtLoader_GoldVeinIMG (com.greyhound.tools.ArtLoader_GoldVeinIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GoldVeinIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 344
//ArtLoader_GraveTrapIMG (com.greyhound.tools.ArtLoader_GraveTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GraveTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 345
//ArtLoader_GreenEquipmentBKGIMG (com.greyhound.tools.ArtLoader_GreenEquipmentBKGIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GreenEquipmentBKGIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 346
//ArtLoader_GreyEquipmentBKGIMG (com.greyhound.tools.ArtLoader_GreyEquipmentBKGIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GreyEquipmentBKGIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 347
//ArtLoader_GymIMG (com.greyhound.tools.ArtLoader_GymIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_GymIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 348
//ArtLoader_HeadIMG (com.greyhound.tools.ArtLoader_HeadIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HeadIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 349
//ArtLoader_HealActionIMG (com.greyhound.tools.ArtLoader_HealActionIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HealActionIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 350
//ArtLoader_HeavierRockIMG (com.greyhound.tools.ArtLoader_HeavierRockIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HeavierRockIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 351
//ArtLoader_HelmetIMG (com.greyhound.tools.ArtLoader_HelmetIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HelmetIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 352
//ArtLoader_HelmetSlotIMG (com.greyhound.tools.ArtLoader_HelmetSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HelmetSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 353
//ArtLoader_House1IMG (com.greyhound.tools.ArtLoader_House1IMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_House1IMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 354
//ArtLoader_House2IMG (com.greyhound.tools.ArtLoader_House2IMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_House2IMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 355
//ArtLoader_House3IMG (com.greyhound.tools.ArtLoader_House3IMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_House3IMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 356
//ArtLoader_House4IMG (com.greyhound.tools.ArtLoader_House4IMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_House4IMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 357
//ArtLoader_HydraIMG (com.greyhound.tools.ArtLoader_HydraIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_HydraIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_HydraIMG(){
dataClass = ArtLoader_HydraIMG_dataClass;
super();
initialWidth = (940 / 20);
initialHeight = (1040 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 358
//ArtLoader_HydraIMG_dataClass (com.greyhound.tools.ArtLoader_HydraIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HydraIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 359
//ArtLoader_HydraLairIMG (com.greyhound.tools.ArtLoader_HydraLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_HydraLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 360
//ArtLoader_KeepOnGoingIMG (com.greyhound.tools.ArtLoader_KeepOnGoingIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_KeepOnGoingIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 361
//ArtLoader_KongLogoIMG (com.greyhound.tools.ArtLoader_KongLogoIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_KongLogoIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 362
//ArtLoader_LairTabSelectedIMG (com.greyhound.tools.ArtLoader_LairTabSelectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LairTabSelectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 363
//ArtLoader_LairTabUnselectedIMG (com.greyhound.tools.ArtLoader_LairTabUnselectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LairTabUnselectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 364
//ArtLoader_LeftArrowIMG (com.greyhound.tools.ArtLoader_LeftArrowIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LeftArrowIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 365
//ArtLoader_LichIMG (com.greyhound.tools.ArtLoader_LichIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_LichIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_LichIMG(){
dataClass = ArtLoader_LichIMG_dataClass;
super();
initialWidth = (500 / 20);
initialHeight = (500 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 366
//ArtLoader_LichIMG_dataClass (com.greyhound.tools.ArtLoader_LichIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LichIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 367
//ArtLoader_LichLairIMG (com.greyhound.tools.ArtLoader_LichLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LichLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 368
//ArtLoader_LightningIMG (com.greyhound.tools.ArtLoader_LightningIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LightningIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 369
//ArtLoader_LogoIMG (com.greyhound.tools.ArtLoader_LogoIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_LogoIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 370
//ArtLoader_MagicActionIMG (com.greyhound.tools.ArtLoader_MagicActionIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MagicActionIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 371
//ArtLoader_MagicIMG (com.greyhound.tools.ArtLoader_MagicIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MagicIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 372
//ArtLoader_MagicResistanceIMG (com.greyhound.tools.ArtLoader_MagicResistanceIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MagicResistanceIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 373
//ArtLoader_MaimTrapIMG (com.greyhound.tools.ArtLoader_MaimTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MaimTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 374
//ArtLoader_MaimTrapMasteryIMG (com.greyhound.tools.ArtLoader_MaimTrapMasteryIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MaimTrapMasteryIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 375
//ArtLoader_ManticoreIMG (com.greyhound.tools.ArtLoader_ManticoreIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ManticoreIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ManticoreIMG(){
dataClass = ArtLoader_ManticoreIMG_dataClass;
super();
initialWidth = (400 / 20);
initialHeight = (340 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 376
//ArtLoader_ManticoreIMG_dataClass (com.greyhound.tools.ArtLoader_ManticoreIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ManticoreIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 377
//ArtLoader_ManticoreLairIMG (com.greyhound.tools.ArtLoader_ManticoreLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ManticoreLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 378
//ArtLoader_MapIMG (com.greyhound.tools.ArtLoader_MapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 379
//ArtLoader_MasterOfMagicIMG (com.greyhound.tools.ArtLoader_MasterOfMagicIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MasterOfMagicIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 380
//ArtLoader_MeleeAttackIMG (com.greyhound.tools.ArtLoader_MeleeAttackIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MeleeAttackIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 381
//ArtLoader_MeleeResistanceIMG (com.greyhound.tools.ArtLoader_MeleeResistanceIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MeleeResistanceIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 382
//ArtLoader_MenuButtonIMG (com.greyhound.tools.ArtLoader_MenuButtonIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MenuButtonIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 383
//ArtLoader_MinotaurIMG (com.greyhound.tools.ArtLoader_MinotaurIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_MinotaurIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_MinotaurIMG(){
dataClass = ArtLoader_MinotaurIMG_dataClass;
super();
initialWidth = (460 / 20);
initialHeight = (600 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 384
//ArtLoader_MinotaurIMG_dataClass (com.greyhound.tools.ArtLoader_MinotaurIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MinotaurIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 385
//ArtLoader_MinotaurLairIMG (com.greyhound.tools.ArtLoader_MinotaurLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MinotaurLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 386
//ArtLoader_MissingGraphicIMG (com.greyhound.tools.ArtLoader_MissingGraphicIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MissingGraphicIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 387
//ArtLoader_MoreArrowsIMG (com.greyhound.tools.ArtLoader_MoreArrowsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MoreArrowsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 388
//ArtLoader_MoreItemsIMG (com.greyhound.tools.ArtLoader_MoreItemsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MoreItemsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 389
//ArtLoader_MuteOffIMG (com.greyhound.tools.ArtLoader_MuteOffIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MuteOffIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 390
//ArtLoader_MuteOnIMG (com.greyhound.tools.ArtLoader_MuteOnIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_MuteOnIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 391
//ArtLoader_NextWaveIMG (com.greyhound.tools.ArtLoader_NextWaveIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_NextWaveIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 392
//ArtLoader_NotAllowedIMG (com.greyhound.tools.ArtLoader_NotAllowedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_NotAllowedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 393
//ArtLoader_OffHandIMG (com.greyhound.tools.ArtLoader_OffHandIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_OffHandIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 394
//ArtLoader_OffHandSlotIMG (com.greyhound.tools.ArtLoader_OffHandSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_OffHandSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 395
//ArtLoader_OrangeEquipmentBKGIMG (com.greyhound.tools.ArtLoader_OrangeEquipmentBKGIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_OrangeEquipmentBKGIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 396
//ArtLoader_PackHuntingIMG (com.greyhound.tools.ArtLoader_PackHuntingIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PackHuntingIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 397
//ArtLoader_PaldinHeroIMG (com.greyhound.tools.ArtLoader_PaldinHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_PaldinHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_PaldinHeroIMG(){
dataClass = ArtLoader_PaldinHeroIMG_dataClass;
super();
initialWidth = (700 / 20);
initialHeight = (700 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 398
//ArtLoader_PaldinHeroIMG_dataClass (com.greyhound.tools.ArtLoader_PaldinHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PaldinHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 399
//ArtLoader_PantsIMG (com.greyhound.tools.ArtLoader_PantsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PantsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 400
//ArtLoader_PantsSlotIMG (com.greyhound.tools.ArtLoader_PantsSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PantsSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 401
//ArtLoader_PauseButtonIMG (com.greyhound.tools.ArtLoader_PauseButtonIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PauseButtonIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 402
//ArtLoader_PeonIMG (com.greyhound.tools.ArtLoader_PeonIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_PeonIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_PeonIMG(){
dataClass = ArtLoader_PeonIMG_dataClass;
super();
initialWidth = (260 / 20);
initialHeight = (400 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 403
//ArtLoader_PeonIMG_dataClass (com.greyhound.tools.ArtLoader_PeonIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PeonIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 404
//ArtLoader_PingPongIMG (com.greyhound.tools.ArtLoader_PingPongIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PingPongIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 405
//ArtLoader_PitTrapIMG (com.greyhound.tools.ArtLoader_PitTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PitTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 406
//ArtLoader_PlatinumVeinIMG (com.greyhound.tools.ArtLoader_PlatinumVeinIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PlatinumVeinIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 407
//ArtLoader_PoisonCloudIMG (com.greyhound.tools.ArtLoader_PoisonCloudIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PoisonCloudIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 408
//ArtLoader_PotentVenomIMG (com.greyhound.tools.ArtLoader_PotentVenomIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PotentVenomIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 409
//ArtLoader_PurpleEquipmentBKGIMG (com.greyhound.tools.ArtLoader_PurpleEquipmentBKGIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_PurpleEquipmentBKGIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 410
//ArtLoader_RangedResistanceIMG (com.greyhound.tools.ArtLoader_RangedResistanceIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RangedResistanceIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 411
//ArtLoader_RazorSharpIMG (com.greyhound.tools.ArtLoader_RazorSharpIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RazorSharpIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 412
//ArtLoader_RedEquipmentBKGIMG (com.greyhound.tools.ArtLoader_RedEquipmentBKGIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RedEquipmentBKGIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 413
//ArtLoader_RightArrowIMG (com.greyhound.tools.ArtLoader_RightArrowIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RightArrowIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 414
//ArtLoader_RingIMG (com.greyhound.tools.ArtLoader_RingIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RingIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 415
//ArtLoader_RingSlotIMG (com.greyhound.tools.ArtLoader_RingSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RingSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 416
//ArtLoader_RockIMG (com.greyhound.tools.ArtLoader_RockIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RockIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 417
//ArtLoader_RogueHeroIMG (com.greyhound.tools.ArtLoader_RogueHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_RogueHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_RogueHeroIMG(){
dataClass = ArtLoader_RogueHeroIMG_dataClass;
super();
initialWidth = (580 / 20);
initialHeight = (580 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 418
//ArtLoader_RogueHeroIMG_dataClass (com.greyhound.tools.ArtLoader_RogueHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RogueHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 419
//ArtLoader_RunningOfTheBullsIMG (com.greyhound.tools.ArtLoader_RunningOfTheBullsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_RunningOfTheBullsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 420
//ArtLoader_SafetyInNumbersIMG (com.greyhound.tools.ArtLoader_SafetyInNumbersIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SafetyInNumbersIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 421
//ArtLoader_SaveDiskIMG (com.greyhound.tools.ArtLoader_SaveDiskIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SaveDiskIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 422
//ArtLoader_ScrollIMG (com.greyhound.tools.ArtLoader_ScrollIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ScrollIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 423
//ArtLoader_ScrollPaneDownIMG (com.greyhound.tools.ArtLoader_ScrollPaneDownIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ScrollPaneDownIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 424
//ArtLoader_ScrollPaneSliderIMG (com.greyhound.tools.ArtLoader_ScrollPaneSliderIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ScrollPaneSliderIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 425
//ArtLoader_ScrollPaneTrackIMG (com.greyhound.tools.ArtLoader_ScrollPaneTrackIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ScrollPaneTrackIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 426
//ArtLoader_ScrollPaneUpIMG (com.greyhound.tools.ArtLoader_ScrollPaneUpIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ScrollPaneUpIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 427
//ArtLoader_SellIMG (com.greyhound.tools.ArtLoader_SellIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SellIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 428
//ArtLoader_SharperSpikesIMG (com.greyhound.tools.ArtLoader_SharperSpikesIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SharperSpikesIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 429
//ArtLoader_SkeletonIMG (com.greyhound.tools.ArtLoader_SkeletonIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_SkeletonIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_SkeletonIMG(){
dataClass = ArtLoader_SkeletonIMG_dataClass;
super();
initialWidth = (220 / 20);
initialHeight = (440 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 430
//ArtLoader_SkeletonIMG_dataClass (com.greyhound.tools.ArtLoader_SkeletonIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SkeletonIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 431
//ArtLoader_SkullIMG (com.greyhound.tools.ArtLoader_SkullIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SkullIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 432
//ArtLoader_SmallButtonIMG (com.greyhound.tools.ArtLoader_SmallButtonIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SmallButtonIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 433
//ArtLoader_SoulStealIMG (com.greyhound.tools.ArtLoader_SoulStealIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SoulStealIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 434
//ArtLoader_SpeedIMG (com.greyhound.tools.ArtLoader_SpeedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SpeedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 435
//ArtLoader_SpikeTrapIMG (com.greyhound.tools.ArtLoader_SpikeTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SpikeTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 436
//ArtLoader_StatusBarBackgroundIMG (com.greyhound.tools.ArtLoader_StatusBarBackgroundIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_StatusBarBackgroundIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 437
//ArtLoader_StrengthIMG (com.greyhound.tools.ArtLoader_StrengthIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_StrengthIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 438
//ArtLoader_StrongerBetterFasterIMG (com.greyhound.tools.ArtLoader_StrongerBetterFasterIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_StrongerBetterFasterIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 439
//ArtLoader_StrongererBettererFastererIMG (com.greyhound.tools.ArtLoader_StrongererBettererFastererIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_StrongererBettererFastererIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 440
//ArtLoader_StrongerGoblinShieldsIMG (com.greyhound.tools.ArtLoader_StrongerGoblinShieldsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_StrongerGoblinShieldsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 441
//ArtLoader_StrongestBestFastestIMG (com.greyhound.tools.ArtLoader_StrongestBestFastestIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_StrongestBestFastestIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 442
//ArtLoader_SuckyIMG (com.greyhound.tools.ArtLoader_SuckyIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SuckyIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 443
//ArtLoader_SummonSwarmpTrapIMG (com.greyhound.tools.ArtLoader_SummonSwarmpTrapIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SummonSwarmpTrapIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 444
//ArtLoader_SupportTabSelectedIMG (com.greyhound.tools.ArtLoader_SupportTabSelectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SupportTabSelectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 445
//ArtLoader_SupportTabUnselectedIMG (com.greyhound.tools.ArtLoader_SupportTabUnselectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SupportTabUnselectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 446
//ArtLoader_SwarmIMG (com.greyhound.tools.ArtLoader_SwarmIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_SwarmIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_SwarmIMG(){
dataClass = ArtLoader_SwarmIMG_dataClass;
super();
initialWidth = (700 / 20);
initialHeight = (380 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 447
//ArtLoader_SwarmIMG_dataClass (com.greyhound.tools.ArtLoader_SwarmIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SwarmIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 448
//ArtLoader_SwiftWingsIMG (com.greyhound.tools.ArtLoader_SwiftWingsIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_SwiftWingsIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 449
//ArtLoader_TabPanelBackgroundIMG (com.greyhound.tools.ArtLoader_TabPanelBackgroundIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TabPanelBackgroundIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 450
//ArtLoader_TalentDisabledIMG (com.greyhound.tools.ArtLoader_TalentDisabledIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TalentDisabledIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 451
//ArtLoader_TalentKongIMG (com.greyhound.tools.ArtLoader_TalentKongIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TalentKongIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 452
//ArtLoader_TalentSelectedIMG (com.greyhound.tools.ArtLoader_TalentSelectedIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TalentSelectedIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 453
//ArtLoader_TalentTreeIMG (com.greyhound.tools.ArtLoader_TalentTreeIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TalentTreeIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 454
//ArtLoader_TalentUnselectedIMG (com.greyhound.tools.ArtLoader_TalentUnselectedIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_TalentUnselectedIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_TalentUnselectedIMG(){
dataClass = ArtLoader_TalentUnselectedIMG_dataClass;
super();
initialWidth = (720 / 20);
initialHeight = (720 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 455
//ArtLoader_TalentUnselectedIMG_dataClass (com.greyhound.tools.ArtLoader_TalentUnselectedIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TalentUnselectedIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 456
//ArtLoader_ThickEnoughToWalkOnIMG (com.greyhound.tools.ArtLoader_ThickEnoughToWalkOnIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ThickEnoughToWalkOnIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 457
//ArtLoader_ThickScalesIMG (com.greyhound.tools.ArtLoader_ThickScalesIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ThickScalesIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 458
//ArtLoader_ToolTipIMG (com.greyhound.tools.ArtLoader_ToolTipIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ToolTipIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 459
//ArtLoader_TorsoIMG (com.greyhound.tools.ArtLoader_TorsoIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TorsoIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 460
//ArtLoader_TorsoSlotIMG (com.greyhound.tools.ArtLoader_TorsoSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TorsoSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 461
//ArtLoader_TrackIMG (com.greyhound.tools.ArtLoader_TrackIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TrackIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 462
//ArtLoader_TrashCanIMG (com.greyhound.tools.ArtLoader_TrashCanIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_TrashCanIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 463
//ArtLoader_UpArrowIMG (com.greyhound.tools.ArtLoader_UpArrowIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_UpArrowIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 464
//ArtLoader_ValkyrieHeroIMG (com.greyhound.tools.ArtLoader_ValkyrieHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_ValkyrieHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_ValkyrieHeroIMG(){
dataClass = ArtLoader_ValkyrieHeroIMG_dataClass;
super();
initialWidth = (580 / 20);
initialHeight = (580 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 465
//ArtLoader_ValkyrieHeroIMG_dataClass (com.greyhound.tools.ArtLoader_ValkyrieHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_ValkyrieHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 466
//ArtLoader_WallIMG (com.greyhound.tools.ArtLoader_WallIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WallIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 467
//ArtLoader_VampireIMG (com.greyhound.tools.ArtLoader_VampireIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_VampireIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_VampireIMG(){
dataClass = ArtLoader_VampireIMG_dataClass;
super();
initialWidth = (440 / 20);
initialHeight = (480 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 468
//ArtLoader_VampireIMG_dataClass (com.greyhound.tools.ArtLoader_VampireIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_VampireIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 469
//ArtLoader_VampireLairIMG (com.greyhound.tools.ArtLoader_VampireLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_VampireLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 470
//ArtLoader_WatchAndLearnIMG (com.greyhound.tools.ArtLoader_WatchAndLearnIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WatchAndLearnIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 471
//ArtLoader_WeaponHandIMG (com.greyhound.tools.ArtLoader_WeaponHandIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WeaponHandIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 472
//ArtLoader_WeaponIMG (com.greyhound.tools.ArtLoader_WeaponIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WeaponIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 473
//ArtLoader_WeaponSlotIMG (com.greyhound.tools.ArtLoader_WeaponSlotIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WeaponSlotIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 474
//ArtLoader_WhereIsTheBeefIMG (com.greyhound.tools.ArtLoader_WhereIsTheBeefIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WhereIsTheBeefIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 475
//ArtLoader_WideLoadIMG (com.greyhound.tools.ArtLoader_WideLoadIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WideLoadIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 476
//ArtLoader_WizardHeroIMG (com.greyhound.tools.ArtLoader_WizardHeroIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_WizardHeroIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_WizardHeroIMG(){
dataClass = ArtLoader_WizardHeroIMG_dataClass;
super();
initialWidth = (500 / 20);
initialHeight = (500 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 477
//ArtLoader_WizardHeroIMG_dataClass (com.greyhound.tools.ArtLoader_WizardHeroIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WizardHeroIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 478
//ArtLoader_WoodPanelIMG (com.greyhound.tools.ArtLoader_WoodPanelIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WoodPanelIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 479
//ArtLoader_WyrmIMG (com.greyhound.tools.ArtLoader_WyrmIMG)
package com.greyhound.tools {
import flash.utils.*;
import mx.core.*;
public class ArtLoader_WyrmIMG extends MovieClipLoaderAsset {
public var dataClass:Class;
private static var bytes:ByteArray = null;
public function ArtLoader_WyrmIMG(){
dataClass = ArtLoader_WyrmIMG_dataClass;
super();
initialWidth = (860 / 20);
initialHeight = (960 / 20);
}
override public function get movieClipData():ByteArray{
if (bytes == null){
bytes = ByteArray(new dataClass());
};
return (bytes);
}
}
}//package com.greyhound.tools
Section 480
//ArtLoader_WyrmIMG_dataClass (com.greyhound.tools.ArtLoader_WyrmIMG_dataClass)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WyrmIMG_dataClass extends ByteArrayAsset {
}
}//package com.greyhound.tools
Section 481
//ArtLoader_WyrmLairIMG (com.greyhound.tools.ArtLoader_WyrmLairIMG)
package com.greyhound.tools {
import mx.core.*;
public class ArtLoader_WyrmLairIMG extends BitmapAsset {
}
}//package com.greyhound.tools
Section 482
//IDisplayableApprover (com.greyhound.tools.IDisplayableApprover)
package com.greyhound.tools {
import com.greyhound.base.*;
public interface IDisplayableApprover {
function approve(_arg1:DisplayableGameObject):Boolean;
}
}//package com.greyhound.tools
Section 483
//TargetingData (com.greyhound.tools.TargetingData)
package com.greyhound.tools {
public class TargetingData {
private var yModifier:Number;
private var angle:Number;
private var xModifier:Number;
public function TargetingData(_arg1:Number, _arg2:Number, _arg3:Number){
this.xModifier = _arg1;
this.yModifier = _arg2;
this.angle = _arg3;
}
public function getYModifier():Number{
return (yModifier);
}
public function getAngleInDegrees():Number{
return (((angle * 180) / Math.PI));
}
public function getAngleInRadians():Number{
return (angle);
}
public function getXModifier():Number{
return (xModifier);
}
}
}//package com.greyhound.tools
Section 484
//Util (com.greyhound.tools.Util)
package com.greyhound.tools {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.*;
public class Util {
public static const NORTHWEST:int = 7;
public static const SOUTHWEST:int = 6;
public static const NORTH:int = 0;
public static const NORTHEAST:int = 4;
public static const SOUTHEAST:int = 5;
public static const SOUTH:int = 2;
public static const WEST:int = 3;
public static const EAST:int = 1;
public static function randomlyOffset(_arg1:Point, _arg2:int):Point{
var _local3:Point = new Point(_arg1.x, _arg1.y);
_local3.x = (_local3.x + (Tools.random((_arg2 * 2)) - _arg2));
_local3.y = (_local3.y + (Tools.random((_arg2 * 2)) - _arg2));
return (_local3);
}
public static function getAllDisplayableGameObjectsInRange(_arg1:Number, _arg2:World, _arg3:Point, _arg4:IDisplayableApprover):Array{
var _local14:int;
var _local15:Tile;
var _local16:Array;
var _local17:Object;
var _local18:DisplayableGameObject;
var _local19:Number;
var _local5:Array = new Array();
var _local6:Tile = _arg2.getTileAt(_arg3);
var _local7:int = _local6.getX();
var _local8:int = _local6.getY();
var _local9:Number = (_arg1 * _arg1);
var _local10:Number = (_arg1 / World.TILE_DIMENSION);
if ((_arg1 % World.TILE_DIMENSION) != 0){
_local10++;
};
var _local11:int = -(_local10);
while (_local11 <= _local10) {
_local14 = -(_local10);
while (_local14 <= _local10) {
_local15 = _arg2.getTileAtMapLocation((_local7 + _local14), (_local8 + _local11));
if (_local15 != null){
_local16 = _local15.getDisplayableGameObjects();
for each (_local17 in _local16) {
_local18 = (_local17 as DisplayableGameObject);
if (_arg4.approve(_local18)){
_local19 = Tools.distanceSquared(_arg3, _local18.getScreenLocation());
if (_local19 <= _local9){
_local5.push(new SortWrapper(_local18, _local19));
};
};
};
};
_local14++;
};
_local11++;
};
_local5.sort(sortWrappers);
var _local12:Array = new Array(_local5.length);
var _local13:int;
while (_local13 < _local5.length) {
_local12[_local13] = (_local5[_local13] as SortWrapper).getDisplayableGameObject();
_local13++;
};
return (_local12);
}
public static function getDirection(_arg1:Point, _arg2:Point):int{
var _local3:int = (_arg2.x - _arg1.x);
var _local4:int = (_arg2.y - _arg1.y);
if ((((_local3 == 0)) && ((_local4 == 0)))){
return (-1);
};
if (_local3 == 0){
if (_local4 > 0){
return (SOUTH);
};
return (NORTH);
//unresolved jump
};
if (_local4 == 0){
if (_local3 > 0){
return (EAST);
};
return (WEST);
//unresolved jump
};
if (_local3 < 0){
if (_local4 < 0){
return (NORTHWEST);
};
return (SOUTHWEST);
//unresolved jump
};
if (_local4 < 0){
return (NORTHEAST);
};
return (SOUTHEAST);
}
public static function modifyByDirection(_arg1:Point, _arg2:int, _arg3:Number=1):Point{
switch (_arg2){
case NORTH:
return (new Point(_arg1.x, (_arg1.y - (1 * _arg3))));
case EAST:
return (new Point((_arg1.x + (1 * _arg3)), _arg1.y));
case SOUTH:
return (new Point(_arg1.x, (_arg1.y + (1 * _arg3))));
case WEST:
return (new Point((_arg1.x - (1 * _arg3)), _arg1.y));
case NORTHEAST:
return (new Point((_arg1.x + (1 * _arg3)), (_arg1.y - (1 * _arg3))));
case NORTHWEST:
return (new Point((_arg1.x - (1 * _arg3)), (_arg1.y - (1 * _arg3))));
case SOUTHWEST:
return (new Point((_arg1.x - (1 * _arg3)), (_arg1.y + (1 * _arg3))));
case SOUTHEAST:
return (new Point((_arg1.x + (1 * _arg3)), (_arg1.y + (1 * _arg3))));
default:
trace(("unknown direction:" + _arg2));
return (new Point(_arg1.x, _arg1.y));
};
}
public static function getTileTowards(_arg1:World, _arg2:Tile, _arg3:Tile, _arg4:Boolean):Tile{
var _local5:int = (_arg3.getX() - _arg2.getX());
var _local6:int = (_arg3.getY() - _arg2.getY());
if ((((_local5 == 0)) && ((_local6 == 0)))){
return (_arg3);
};
if (!_arg4){
if (Math.abs(_local5) > Math.abs(_local6)){
(_local6 == 0);
} else {
_local5 = 0;
};
};
_local5 = Math.max(Math.min(1, _local5), -1);
_local6 = Math.max(Math.min(1, _local6), -1);
return (_arg1.getTileAtMapLocation((_arg2.getX() + _local5), (_arg2.getY() + _local6)));
}
public static function getAllLivingsInRange(_arg1:Number, _arg2:World, _arg3:Point, _arg4:IDisplayableApprover=null):Array{
var _local7:Object;
var _local8:Array;
var _local9:int;
var _local10:Living;
var _local11:Number;
var _local5:Array = new Array();
var _local6:Number = (_arg1 * _arg1);
for each (_local7 in _arg2.getLivings()) {
_local10 = (_local7 as Living);
_local11 = Tools.distanceSquared(_arg3, _local10.getScreenLocation());
if ((((((_local11 <= _local6)) && (!((_arg4 == null))))) && (_arg4.approve(_local10)))){
_local5.push(new SortWrapper(_local10, _local11));
};
};
_local5.sort(sortWrappers);
_local8 = new Array(_local5.length);
_local9 = 0;
while (_local9 < _local5.length) {
_local8[_local9] = (_local5[_local9] as SortWrapper).getDisplayableGameObject();
_local9++;
};
return (_local8);
}
public static function itterateOnSurroundingTiles(_arg1:World, _arg2:Tile, _arg3:Function, _arg4:int=1):void{
var _local6:int;
var _local7:Tile;
var _local5:int = -(_arg4);
while (_local5 <= _arg4) {
_local6 = -(_arg4);
while (_local6 <= _arg4) {
_local7 = _arg1.getTileAtMapLocation((_arg2.getX() + _local5), (_arg2.getY() + _local6));
if (_local7 != null){
_arg3(_local7);
};
_local6++;
};
_local5++;
};
}
public static function calculateTargetingData(_arg1:Point, _arg2:Point):TargetingData{
var _local3:Number = (_arg2.x - _arg1.x);
var _local4:Number = (_arg2.y - _arg1.y);
var _local5:Number = Math.atan2(_local4, _local3);
var _local6:Number = Math.cos(_local5);
var _local7:Number = Math.sin(_local5);
var _local8:TargetingData = new TargetingData(_local6, _local7, _local5);
return (_local8);
}
private static function sortWrappers(_arg1:Object, _arg2:Object):int{
return ((_arg1 as SortWrapper).compareTo((_arg2 as SortWrapper)));
}
}
}//package com.greyhound.tools
import com.greyhound.base.*;
class SortWrapper {
private var distance:Number;
private var object:DisplayableGameObject;
private function SortWrapper(_arg1:DisplayableGameObject, _arg2:Number){
this.distance = _arg2;
this.object = _arg1;
}
public function compareTo(_arg1:SortWrapper):int{
if (distance < _arg1.distance){
return (-1);
};
if (distance == _arg1.distance){
return (0);
};
return (1);
}
public function getDisplayableGameObject():DisplayableGameObject{
return (object);
}
}
Section 485
//WeightedRandomArray (com.greyhound.tools.WeightedRandomArray)
package com.greyhound.tools {
public class WeightedRandomArray {
private var values:Array;
private var endValue:int;
private var keys:Array;
public function WeightedRandomArray(){
keys = new Array();
values = new Array();
endValue = 0;
}
public function getRandomElement():Object{
var _local1:int = ((Math.random() * endValue) + 1);
var _local2:Object;
var _local3:int;
while (_local3 < keys.length) {
_local2 = values[_local3];
if (keys[_local3] >= _local1){
return (_local2);
};
_local3++;
};
return (_local2);
}
public function getSize():int{
return (values.length);
}
public function addElement(_arg1:int, _arg2:Object):void{
endValue = (endValue + _arg1);
keys.push(endValue);
values.push(_arg2);
}
}
}//package com.greyhound.tools
Section 486
//AvatarControls (com.greyhound.ui.controlpanel.avatarcontrols.AvatarControls)
package com.greyhound.ui.controlpanel.avatarcontrols {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.controlpanel.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import fl.controls.*;
import flash.text.*;
public class AvatarControls extends Sprite implements ISelectionListener, IChangeListener {
private var statsPanel:LivingStatPanel;
private var controlPanel:ControlPanel;
private var world:World;
private var experienceProgressBar:ProgressBar;
public function AvatarControls(_arg1:World, _arg2:ControlPanel){
this.world = _arg1;
this.controlPanel = _arg2;
statsPanel = new LivingStatPanel(_arg1.getAvatar());
statsPanel.x = 10;
statsPanel.y = Panel.PANEL_BORDER_INDENT;
addChild(statsPanel);
var _local3:TextField = TextFieldFactory.createText("Experience:");
_local3.x = 10;
_local3.y = (statsPanel.y + statsPanel.height);
addChild(_local3);
experienceProgressBar = new ProgressBar();
experienceProgressBar.mode = ProgressBarMode.MANUAL;
experienceProgressBar.maximum = 100;
experienceProgressBar.minimum = 0;
experienceProgressBar.direction = ProgressBarDirection.RIGHT;
experienceProgressBar.value = 0;
experienceProgressBar.x = ((_local3.x + _local3.width) + Panel.PANEL_BORDER_INDENT);
experienceProgressBar.y = (_local3.y + ((_local3.height - experienceProgressBar.height) * 0.5));
experienceProgressBar.width = 110;
addChild(experienceProgressBar);
addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
private function addedToStage(_arg1:Event):void{
world.getAvatar().addChangeListener(this);
update();
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
}
public function notifyChanged(_arg1:IChangeable):void{
update();
}
private function update():void{
statsPanel.refresh();
var _local1:int = world.getAvatar().getLevel();
var _local2:int = ExperienceCalculator.getExperienceForLevel((_local1 + 1));
_local2 = (_local2 - ExperienceCalculator.getExperienceForLevel(_local1));
var _local3:int = (world.getAvatar().getExperience() - ExperienceCalculator.getExperienceForLevel(_local1));
experienceProgressBar.value = (100 * (_local3 / _local2));
}
public function notifySelectionChanged(_arg1:ISelectable):void{
}
private function removedFromStage(_arg1:Event):void{
world.getAvatar().removeChangeListener(this);
}
public function notifyTileSelected(_arg1:Tile, _arg2:MouseEvent):void{
}
}
}//package com.greyhound.ui.controlpanel.avatarcontrols
Section 487
//EquipmentControls (com.greyhound.ui.controlpanel.equipmentcontrols.EquipmentControls)
package com.greyhound.ui.controlpanel.equipmentcontrols {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.equipment.*;
import com.greyhound.tools.*;
import flash.text.*;
public class EquipmentControls extends Sprite implements IChangeListener {
private var inventoryList:EquipmentList;
private var equipmentSlots:Array;
private var world:World;
private var autoEquipButton:TextButton;
public function EquipmentControls(_arg1:World){
this.world = _arg1;
var _local2:DisplayObject = new ArtLoader.EquipmentListBorderIMG();
_local2.x = 12;
_local2.y = 0;
addChild(_local2);
inventoryList = new EquipmentList();
inventoryList.width = 66;
inventoryList.height = 176;
inventoryList.x = 19;
inventoryList.y = 7;
addChild(inventoryList);
setupEquipmentSlots();
_arg1.getAvatar().addChangeListener(this);
var _local3:EquipmentTrashCan = new EquipmentTrashCan();
new ToolTip("Drag something here to get rid of it", _local3);
_local3.x = 100;
_local3.y = 140;
addChild(_local3);
var _local4:TextField = TextFieldFactory.createText("Item Control");
_local4.x = 100;
_local4.y = 180;
addChild(_local4);
autoEquipButton = new TextButton("Auto", toggleAutoEquip, "Auto equip lets the game manage your inventory for you. When you become more experienced you may want to do this yourself to optimize your gear.");
autoEquipButton.x = 60;
autoEquipButton.y = 200;
addChild(autoEquipButton);
update();
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function notifyChanged(_arg1:IChangeable):void{
update();
}
private function update():void{
var _local1:Object;
var _local2:Avatar;
var _local3:Array;
for each (_local1 in equipmentSlots) {
(_local1 as EquipmentSlotIcon).updateIcon();
};
_local2 = world.getAvatar();
_local3 = new Array();
for each (_local1 in _local2.getAllUnequipped()) {
_local3.push(new EquipmentListModelItem((_local1 as Equipment)));
};
inventoryList.setListModelItems(_local3);
autoEquipButton.setText((_local2.isAutoManagingEquipment()) ? "Auto" : "Manual");
}
private function setupEquipmentSlots():void{
var _local2:EquipmentSlotIcon;
equipmentSlots = new Array();
var _local1 = 140;
_local2 = new EquipmentSlotIcon(Equipment.HELMET_SLOT, world);
_local2.x = _local1;
_local2.y = Panel.PANEL_BORDER_INDENT;
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.AMULET_SLOT, world);
_local2.x = (_local1 + 34);
_local2.y = (Panel.PANEL_BORDER_INDENT + 2);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.RING_SLOT, world);
_local2.x = (_local1 - 42);
_local2.y = (Panel.PANEL_BORDER_INDENT + 10);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.TORSO_SLOT, world);
_local2.x = (_local1 - 9);
_local2.y = (Panel.PANEL_BORDER_INDENT + 34);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.GLOVES_SLOT, world);
_local2.x = (_local1 - 41);
_local2.y = (Panel.PANEL_BORDER_INDENT + 43);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.PANTS_SLOT, world);
_local2.x = _local1;
_local2.y = (Panel.PANEL_BORDER_INDENT + 86);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.WEAPON_SLOT, world);
_local2.x = (_local1 - 41);
_local2.y = (Panel.PANEL_BORDER_INDENT + 86);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.OFFHAND_SLOT, world);
_local2.x = (_local1 + 41);
_local2.y = (Panel.PANEL_BORDER_INDENT + 86);
addChild(_local2);
equipmentSlots.push(_local2);
_local2 = new EquipmentSlotIcon(Equipment.BOOTS_SLOT, world);
_local2.x = _local1;
_local2.y = (Panel.PANEL_BORDER_INDENT + 137);
addChild(_local2);
equipmentSlots.push(_local2);
}
private function toggleAutoEquip(_arg1:Event):void{
world.getAvatar().toggleAutoManageEquipment();
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
}
}
}//package com.greyhound.ui.controlpanel.equipmentcontrols
Section 488
//EquipmentList (com.greyhound.ui.controlpanel.equipmentcontrols.EquipmentList)
package com.greyhound.ui.controlpanel.equipmentcontrols {
import com.greyhound.ui.*;
import com.greyhound.living.*;
import com.greyhound.equipment.*;
import com.greyhound.tools.*;
public class EquipmentList extends DraggableList implements IDropTargetApprover {
public function EquipmentList(){
setStyle("upSkin", ArtLoader.EquipmentListBkgIMG);
setStyle("downArrowUpSkin", ArtLoader.ScrollPaneDownIMG);
setStyle("downArrowDownSkin", ArtLoader.ScrollPaneDownIMG);
setStyle("downArrowOverSkin", ArtLoader.ScrollPaneDownIMG);
setStyle("upArrowUpSkin", ArtLoader.ScrollPaneUpIMG);
setStyle("upArrowDownSkin", ArtLoader.ScrollPaneUpIMG);
setStyle("upArrowOverSkin", ArtLoader.ScrollPaneUpIMG);
setStyle("thumbUpSkin", ArtLoader.ScrollPaneSliderIMG);
setStyle("thumbDownSkin", ArtLoader.ScrollPaneSliderIMG);
setStyle("thumbOverSkin", ArtLoader.ScrollPaneSliderIMG);
setStyle("trackUpSkin", ArtLoader.ScrollPaneTrackIMG);
setStyle("trackDownSkin", ArtLoader.ScrollPaneTrackIMG);
setStyle("trackOverSkin", ArtLoader.ScrollPaneTrackIMG);
}
public function performDrop(_arg1:Object):void{
((_arg1 as Equipment).getEnvironment() as Living).unequip((_arg1 as Equipment));
}
override protected function handleDoubleClickOnModel(_arg1:Object):void{
var _local2:Equipment = (_arg1 as Equipment);
(_local2.getEnvironment() as Living).equip(_local2);
}
public function validateDrop(_arg1:Object):Boolean{
return ((_arg1 is Equipment));
}
}
}//package com.greyhound.ui.controlpanel.equipmentcontrols
Section 489
//EquipmentListModelItem (com.greyhound.ui.controlpanel.equipmentcontrols.EquipmentListModelItem)
package com.greyhound.ui.controlpanel.equipmentcontrols {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.equipment.*;
public class EquipmentListModelItem implements IListModelItem {
private var sprite:Sprite;
private var equipment:Equipment;
public function EquipmentListModelItem(_arg1:Equipment){
this.equipment = _arg1;
}
public function getSprite():Sprite{
var _local1:DisplayObject;
if (sprite == null){
_local1 = equipment.getDisplayObject();
sprite = new Sprite();
sprite.addChild(_local1);
new ToolTip(equipment.getDescription(), _local1);
};
return (sprite);
}
public function getDataObject():Object{
return (equipment);
}
}
}//package com.greyhound.ui.controlpanel.equipmentcontrols
Section 490
//EquipmentSlotIcon (com.greyhound.ui.controlpanel.equipmentcontrols.EquipmentSlotIcon)
package com.greyhound.ui.controlpanel.equipmentcontrols {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import com.greyhound.world.*;
import com.greyhound.equipment.*;
import com.greyhound.tools.*;
public class EquipmentSlotIcon extends Icon implements IDropTargetApprover {
private var draggedData:Equipment;
private var slotName:String;
private var equipment:Equipment;
private var emptySlotImage:DisplayObject;
private var world:World;
private var dragSprite:Sprite;
public function EquipmentSlotIcon(_arg1:String, _arg2:World){
super(new Sprite());
this.slotName = _arg1;
this.world = _arg2;
dragSprite = new Sprite();
emptySlotImage = getEmptySlotImage();
addChild(emptySlotImage);
updateIcon();
dragSprite.addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
dragSprite.addEventListener(MouseEvent.MOUSE_UP, dragStop);
setContents(dragSprite);
}
public function updateIcon():void{
var _local2:DisplayObject;
var _local1:Equipment = world.getAvatar().getEquipmentInSlot(slotName);
if (_local1 != equipment){
equipment = _local1;
while (dragSprite.numChildren > 0) {
dragSprite.removeChildAt(0);
};
if (_local1 != null){
_local2 = _local1.getDisplayObject();
_local2.x = 0;
_local2.y = 0;
new ToolTip(_local1.getDescription(), _local2);
dragSprite.addChild(_local2);
emptySlotImage.visible = false;
} else {
emptySlotImage.visible = true;
};
};
}
public function validateDrop(_arg1:Object):Boolean{
var _local2:Equipment;
if ((_arg1 is Equipment)){
_local2 = (_arg1 as Equipment);
return ((_local2.getSlot() == slotName));
};
return (false);
}
protected function getEmptySlotImage():DisplayObject{
var _local1:DisplayObject;
if (slotName == Equipment.HELMET_SLOT){
_local1 = new ArtLoader.HelmetSlotIMG();
} else {
if (slotName == Equipment.WEAPON_SLOT){
_local1 = new ArtLoader.WeaponSlotIMG();
} else {
if (slotName == Equipment.OFFHAND_SLOT){
_local1 = new ArtLoader.OffHandSlotIMG();
} else {
if (slotName == Equipment.AMULET_SLOT){
_local1 = new ArtLoader.AmuletSlotIMG();
} else {
if (slotName == Equipment.RING_SLOT){
_local1 = new ArtLoader.RingSlotIMG();
} else {
if (slotName == Equipment.BOOTS_SLOT){
_local1 = new ArtLoader.BootsSlotIMG();
} else {
if (slotName == Equipment.GLOVES_SLOT){
_local1 = new ArtLoader.GlovesSlotIMG();
} else {
if (slotName == Equipment.PANTS_SLOT){
_local1 = new ArtLoader.PantsSlotIMG();
} else {
if (slotName == Equipment.TORSO_SLOT){
_local1 = new ArtLoader.TorsoSlotIMG();
} else {
trace(("unknown slot in equipment slot icon:" + slotName));
};
};
};
};
};
};
};
};
};
new ToolTip("Nothing is equipped here", _local1);
return (_local1);
}
private function dragStart(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
if (draggedData == null){
draggedData = world.getAvatar().getEquipmentInSlot(slotName);
if (draggedData != null){
_local2 = dragSprite.getBounds(parent).x;
_local3 = dragSprite.getBounds(parent).y;
parent.addChild(dragSprite);
dragSprite.startDrag();
dragSprite.x = _local2;
dragSprite.y = _local3;
};
};
}
private function dragStop(_arg1:MouseEvent):void{
dragSprite.stopDrag();
var _local2:DisplayObject = dragSprite.dropTarget;
while (_local2 != null) {
if ((((_local2 is IDropTargetApprover)) && ((_local2 as IDropTargetApprover).validateDrop(draggedData)))){
(_local2 as IDropTargetApprover).performDrop(draggedData);
break;
};
_local2 = _local2.parent;
};
draggedData = null;
addChild(dragSprite);
dragSprite.x = 0;
dragSprite.y = 0;
}
public function performDrop(_arg1:Object):void{
var _local2:Avatar = world.getAvatar();
_local2.equip((_arg1 as Equipment));
}
}
}//package com.greyhound.ui.controlpanel.equipmentcontrols
Section 491
//EquipmentTrashCan (com.greyhound.ui.controlpanel.equipmentcontrols.EquipmentTrashCan)
package com.greyhound.ui.controlpanel.equipmentcontrols {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.equipment.*;
import com.greyhound.tools.*;
public class EquipmentTrashCan extends Sprite implements IDropTargetApprover {
public function EquipmentTrashCan(){
addChild(new ArtLoader.TrashCanIMG());
}
public function performDrop(_arg1:Object):void{
(_arg1 as Equipment).moveTo(null);
}
public function validateDrop(_arg1:Object):Boolean{
return ((_arg1 is Equipment));
}
}
}//package com.greyhound.ui.controlpanel.equipmentcontrols
Section 492
//ISelectionDisplayProvider (com.greyhound.ui.controlpanel.selectionpanel.ISelectionDisplayProvider)
package com.greyhound.ui.controlpanel.selectionpanel {
import com.greyhound.ui.*;
import com.greyhound.base.*;
public interface ISelectionDisplayProvider extends IChangeable {
function getDisplayText():String;
function getDisplayControls():IRefreshable;
}
}//package com.greyhound.ui.controlpanel.selectionpanel
Section 493
//LairPanel (com.greyhound.ui.controlpanel.selectionpanel.LairPanel)
package com.greyhound.ui.controlpanel.selectionpanel {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.controlpanel.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.world.*;
import fl.controls.*;
import com.greyhound.things.buildings.lairs.*;
import fl.events.*;
import flash.text.*;
public class LairPanel extends Sprite implements ILockableUI, IRefreshable {
private var radiusCircle:Shape;
private var world:World;
private var inventoryList:DisplayableInventoryList;
private var lair:Lair;
private var slider:Slider;
private var experienceProgressBar:ProgressBar;
private var uiLock:UILock;
private var upgradeButton:GameButton;
private var xpTextField:TextField;
public function LairPanel(_arg1:Lair){
var _local6:SellButton;
super();
this.lair = _arg1;
uiLock = new UILock();
world = _arg1.getWorld();
var _local2:TextField;
if (_arg1.hasPatrol() != 0){
_local2 = TextFieldFactory.createText("Defender patrol radius");
_local2.y = Panel.PANEL_BORDER_INDENT;
_local2.x = Panel.PANEL_BORDER_INDENT;
addChild(_local2);
slider = new Slider();
slider.x = Panel.PANEL_BORDER_INDENT;
slider.y = ((_local2.y + _local2.height) + Panel.PANEL_BORDER_INDENT);
slider.width = 200;
slider.height = 15;
slider.minimum = 0;
slider.maximum = _arg1.getMaximumPatrolRadius();
slider.tickInterval = (slider.maximum / 10);
slider.value = _arg1.getPatrolRadius();
slider.addEventListener(SliderEvent.CHANGE, sliderChange);
slider.addEventListener(SliderEvent.THUMB_DRAG, sliderDrag);
addChild(slider);
};
radiusCircle = new Shape();
_arg1.getWorld().getStage().addChild(radiusCircle);
var _local3:Point = _arg1.getScreenLocation();
radiusCircle.x = _local3.x;
radiusCircle.y = _local3.y;
addEventListener(Event.REMOVED_FROM_STAGE, cleanup);
var _local4:DisplayObject = _arg1.createDisplayObject();
_local4.x = Panel.PANEL_BORDER_INDENT;
if (slider == null){
_local4.y = Panel.PANEL_BORDER_INDENT;
} else {
_local4.y = (slider.y + slider.height);
};
addChild(_local4);
xpTextField = TextFieldFactory.createText("Level 1");
xpTextField.x = (_local4.width + Panel.PANEL_BORDER_INDENT);
xpTextField.y = _local4.y;
addChild(xpTextField);
experienceProgressBar = new ProgressBar();
experienceProgressBar.mode = ProgressBarMode.MANUAL;
experienceProgressBar.maximum = 100;
experienceProgressBar.minimum = 0;
experienceProgressBar.direction = ProgressBarDirection.RIGHT;
experienceProgressBar.value = (_arg1.getUpgradePercent() * 100);
experienceProgressBar.x = (((xpTextField.x + xpTextField.width) + Panel.PANEL_BORDER_INDENT) + 15);
experienceProgressBar.y = (xpTextField.y + ((xpTextField.height - experienceProgressBar.height) * 0.5));
experienceProgressBar.width = 75;
addChild(experienceProgressBar);
if (_arg1.getSellValue() > 0){
_local6 = new SellButton(_arg1);
_local6.x = ((experienceProgressBar.x + experienceProgressBar.width) + Panel.PANEL_BORDER_INDENT);
_local6.y = _local4.y;
addChild(_local6);
};
inventoryList = new DisplayableInventoryList(_arg1.getWaitingArea());
inventoryList.x = Panel.PANEL_BORDER_INDENT;
inventoryList.y = ((_local4.y + _local4.height) + Panel.PANEL_BORDER_INDENT);
inventoryList.width = 195;
var _local5 = 120;
if (slider != null){
_local5 = (_local5 - (slider.y + slider.height));
};
inventoryList.height = _local5;
addChild(inventoryList);
refresh();
}
public function getILockable():ILockable{
return (uiLock);
}
public function refresh():void{
if (slider != null){
slider.value = lair.getPatrolRadius();
drawRadius(slider.value);
} else {
drawRadius(lair.getCreatureAttackRange());
};
experienceProgressBar.value = (lair.getUpgradePercent() * 100);
xpTextField.text = ("Level: " + lair.getUpgradeLevel());
}
private function cleanup(_arg1:Event):void{
if (radiusCircle != null){
radiusCircle.stage.removeChild(radiusCircle);
radiusCircle = null;
};
}
private function sliderChange(_arg1:SliderEvent):void{
uiLock.unlock();
if (!lair.isDestroyed()){
lair.setPatrolRadius(_arg1.value);
};
if (stage != null){
stage.focus = stage;
};
}
private function drawRadius(_arg1:int):void{
if (radiusCircle != null){
radiusCircle.graphics.clear();
if (lair.hasPatrol()){
radiusCircle.graphics.lineStyle(3, 0xFF0000);
} else {
radiusCircle.graphics.lineStyle(3, 0xFF);
};
radiusCircle.graphics.drawCircle(0, 0, _arg1);
};
}
private function sliderDrag(_arg1:SliderEvent):void{
uiLock.lock();
if (!lair.isDestroyed()){
drawRadius(_arg1.value);
} else {
cleanup(null);
};
}
}
}//package com.greyhound.ui.controlpanel.selectionpanel
Section 494
//SelectionDisplay (com.greyhound.ui.controlpanel.selectionpanel.SelectionDisplay)
package com.greyhound.ui.controlpanel.selectionpanel {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.things.buildings.*;
public class SelectionDisplay extends Sprite implements ISelectionListener, IChangeListener, ILockListener {
private var watchObject:ISelectionDisplayProvider;
private var objectAwaitingUnlock:DisplayObject;
private var selectionControl:IRefreshable;
public static const SELECTION_DISPLAY_OBJECT_WIDTH:int = 207;
public function SelectionDisplay(_arg1:SelectionManager){
_arg1.addSelectionListener(this);
selectionControl = null;
}
public function notifySelectionChanged(_arg1:ISelectable):void{
var _local2:ISelectionDisplayProvider;
if (((!((_arg1 == null))) && ((_arg1.getDisplayableGameobject() is ISelectionDisplayProvider)))){
_local2 = (_arg1.getDisplayableGameobject() as ISelectionDisplayProvider);
if (_local2 != watchObject){
if (watchObject != null){
watchObject.removeChangeListener(this);
};
_local2.addChangeListener(this);
watchObject = _local2;
displayWatchObject();
};
} else {
if (selectionControl != null){
removeChild((selectionControl as DisplayObject));
selectionControl = null;
};
};
}
public function notifyChanged(_arg1:IChangeable):void{
if (selectionControl != null){
selectionControl.refresh();
};
}
private function displayWatchObject():void{
if (selectionControl != null){
removeChild((selectionControl as DisplayObject));
selectionControl = null;
};
var _local1:Boolean;
if ((watchObject is Building)){
_local1 = ((watchObject as Building).getTeam() == Living.PLAYER_TEAM);
};
if (_local1){
selectionControl = watchObject.getDisplayControls();
if (selectionControl != null){
addChild((selectionControl as DisplayObject));
(selectionControl as DisplayObject).x = 12;
(selectionControl as DisplayObject).y = 5;
};
};
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
var _local2:Boolean;
if ((selectionControl is ILockableUI)){
if ((selectionControl as ILockableUI).getILockable().isLocked()){
_local2 = true;
(selectionControl as ILockableUI).getILockable().addLockListener(this);
objectAwaitingUnlock = (selectionControl as DisplayObject);
objectAwaitingUnlock.x = 5000;
};
};
watchObject = null;
if (selectionControl != null){
if (!_local2){
removeChild((selectionControl as DisplayObject));
};
selectionControl = null;
};
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function notifyLocked(_arg1:ILockable):void{
}
public function notifyUnlocked(_arg1:ILockable):void{
if (objectAwaitingUnlock != null){
removeChild(objectAwaitingUnlock);
};
}
public function notifyTileSelected(_arg1:Tile, _arg2:MouseEvent):void{
}
}
}//package com.greyhound.ui.controlpanel.selectionpanel
Section 495
//ControlPanel (com.greyhound.ui.controlpanel.ControlPanel)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
import com.greyhound.tools.*;
import fl.controls.*;
import fl.events.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import flash.text.*;
import com.greyhound.ui.controlpanel.avatarcontrols.*;
import com.greyhound.ui.controlpanel.equipmentcontrols.*;
public class ControlPanel extends Sprite implements ISelectionListener, ITabSelectionListener {
private var selectionManager:SelectionManager;
private var speedSlider:Slider;
private var world:World;
private var lastTileHovered:Tile;
private var tabPane:NewTabPane;
private var hoverSprite:Sprite;
private var supportControls:SupportControls;
private var lairControls:LairControls;
private var muteSprite:Sprite;
public function ControlPanel(_arg1:World){
selectionManager = new SelectionManager();
this.world = _arg1;
tabPane = new NewTabPane();
tabPane.x = 0;
tabPane.y = 0;
addChild(new ArtLoader.TabPanelBackgroundIMG());
lairControls = new LairControls(_arg1, this);
supportControls = new SupportControls(_arg1, this);
tabPane.addTab(new ArtLoader.LairTabSelectedIMG(), new ArtLoader.LairTabUnselectedIMG(), lairControls);
tabPane.addTab(new ArtLoader.SupportTabSelectedIMG(), new ArtLoader.SupportTabUnselectedIMG(), supportControls);
tabPane.addTab(new ArtLoader.EquipmentTabSelectedIMG(), new ArtLoader.EquipmentTabUnselectedIMG(), new EquipmentControls(_arg1));
tabPane.addTab(new ArtLoader.AvatarTabSelectedIMG(), new ArtLoader.AvatarTabUnselectedIMG(), new AvatarControls(_arg1, this));
tabPane.addTabSelectionListener(this);
addChild(tabPane);
var _local2:SelectionDisplay = new SelectionDisplay(selectionManager);
_local2.y = 300;
_local2.x = 0;
addChild(_local2);
selectionManager.addSelectionListener(this);
hoverSprite = new Sprite();
graphics.clear();
graphics.beginFill(0);
graphics.drawRect(0, 0, 225, 475);
graphics.endFill();
muteSprite = new Sprite();
addCorrectMuteImage();
muteSprite.addEventListener(MouseEvent.CLICK, muteClick);
muteSprite.x = 200;
muteSprite.y = 473;
addChild(muteSprite);
var _local3:TextField = TextFieldFactory.createText("Speed");
_local3.x = 15;
_local3.y = 470;
addChild(_local3);
speedSlider = new Slider();
speedSlider.x = ((_local3.x + _local3.width) + 5);
speedSlider.y = 480;
speedSlider.height = 15;
speedSlider.minimum = 1;
speedSlider.maximum = 6;
speedSlider.tickInterval = 1;
speedSlider.value = 2;
speedSlider.width = 50;
speedSlider.addEventListener(SliderEvent.CHANGE, sliderChange);
addChild(speedSlider);
var _local4:Sprite = new Sprite();
_local4.mouseChildren = false;
_local4.useHandCursor = true;
_local4.buttonMode = true;
_local4.addEventListener(MouseEvent.CLICK, restartMap);
addChild(_local4);
_local4.x = 109;
_local4.y = 470;
var _local5:TextField = TextFieldFactory.createText("Restart");
_local5.x = 25;
_local5.y = 1;
_local4.addChild(_local5);
var _local6 = "The speed slider controls the game speed.";
new ToolTip(_local6, speedSlider);
new ToolTip(_local6, _local3);
}
public function showBuildingTab():void{
tabPane.showTabNumber(0);
}
public function showAvatarTab():void{
tabPane.showTabNumber(3);
}
private function restartMap(_arg1:MouseEvent):void{
world.restartMap();
}
public function notifyTileMousedOver(_arg1:Tile):void{
if (lastTileHovered != _arg1){
lastTileHovered = _arg1;
updateHoverObject();
};
}
public function updateHoverObject():void{
var _local1:DisplayObject;
while (hoverSprite.numChildren > 0) {
hoverSprite.removeChildAt(0);
};
if (hoverSprite.parent != null){
hoverSprite.parent.removeChild(hoverSprite);
};
if (((!((lastTileHovered == null))) && ((tabPane.getSelectedPane() is IHoverObjectProvider)))){
_local1 = (tabPane.getSelectedPane() as IHoverObjectProvider).createHoverObject(lastTileHovered);
if (_local1 != null){
hoverSprite.addChild(_local1);
(world.getWorldGraphic() as Sprite).addChild(hoverSprite);
hoverSprite.x = lastTileHovered.getScreenLocation().x;
hoverSprite.y = lastTileHovered.getScreenLocation().y;
};
};
}
public function showItemsTab():void{
tabPane.showTabNumber(2);
}
public function updateBuildButtons():void{
lairControls.updateButtons();
supportControls.updateButtons();
}
public function getSpeedAdjustment():Number{
return ((0.5 + (speedSlider.value / 100)));
}
public function notifyTileSelected(_arg1:Tile, _arg2:MouseEvent):void{
if ((tabPane.getSelectedPane() is ISelectionListener)){
(tabPane.getSelectedPane() as ISelectionListener).notifyTileSelected(_arg1, _arg2);
};
}
public function showTrapsTab():void{
tabPane.showTabNumber(1);
}
private function muteClick(_arg1:Event):void{
world.toggleMute();
addCorrectMuteImage();
}
private function sliderChange(_arg1:Event):void{
trace(("Val=" + speedSlider.value));
var _local2:Number = 1;
switch (speedSlider.value){
case 1:
_local2 = 1.5;
break;
case 2:
_local2 = 1;
break;
case 3:
_local2 = 0.85;
break;
case 4:
_local2 = 0.7;
break;
case 5:
_local2 = 0.5;
break;
case 6:
_local2 = 0.33;
break;
default:
trace("Unknown speed slider value");
};
world.setTimerScalor(_local2);
if (stage != null){
stage.focus = stage;
};
}
public function getSelectionManager():SelectionManager{
return (selectionManager);
}
public function notifySelectionChanged(_arg1:ISelectable):void{
}
private function addCorrectMuteImage():void{
while (muteSprite.numChildren > 0) {
muteSprite.removeChildAt(0);
};
if (world.isMuted()){
muteSprite.addChild(new ArtLoader.MuteOnIMG());
} else {
muteSprite.addChild(new ArtLoader.MuteOffIMG());
};
}
public function notifyTabSelectionChanged():void{
updateHoverObject();
}
public function clearSelection():void{
selectionManager.setSelection(null);
supportControls.clearSelectedButton();
lairControls.clearSelectedButton();
}
}
}//package com.greyhound.ui.controlpanel
Section 496
//ControlPanelBuildButton (com.greyhound.ui.controlpanel.ControlPanelBuildButton)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import flash.utils.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.things.*;
import com.greyhound.things.buildings.*;
import com.greyhound.*;
import com.greyhound.things.traps.*;
public class ControlPanelBuildButton extends ControlPanelButton {
private var maximumAllowed:int;
protected var whatToBuild:IBuyable;
private var numberBuilt:int;
public function ControlPanelBuildButton(_arg1:IBuyable, _arg2:Function, _arg3:int=-1){
super((_arg1 as IButtonProvider), _arg2);
this.whatToBuild = _arg1;
this.maximumAllowed = _arg3;
}
public function updateButton(_arg1:World):void{
setEnabled((whatToBuild as IBuyable).canBuy(_arg1));
}
override public function performAction(_arg1:World, _arg2:Tile):String{
if (((!((maximumAllowed == -1))) && ((numberBuilt >= maximumAllowed)))){
return ((("You can only have " + maximumAllowed) + " of these at any time."));
};
var _local3:int = (whatToBuild as IBuyable).getCost();
if (_local3 > _arg1.getVault().getGold()){
return ((("You need " + (_local3 - _arg1.getVault().getGold())) + " more gold."));
};
var _local4:String = (whatToBuild as IBuyable).canBuildAt(_arg2, _arg1);
if (_local4 != null){
return (_local4);
};
var _local5:String = getBlockReason(_arg2);
if (_local5 != null){
return (_local5);
};
_arg1.getVault().addGold((_local3 * -1));
numberBuilt++;
var _local6:Class = Tools.getClassFor(whatToBuild);
var _local7:IBuyable = (new (_local6) as IBuyable);
_local7.setTeam(Living.PLAYER_TEAM);
_arg1.addDisplayableAt((_local7 as DisplayableGameObject), _arg2.getScreenLocation());
_local7.built();
return (null);
}
private function getBlockReason(_arg1:Tile):String{
var _local3:Object;
var _local2:Array = _arg1.getDisplayableGameObjects();
for each (_local3 in _local2) {
if ((_local3 is Building)){
return ("There is already a building there.");
};
if ((_local3 is Trap)){
return ("There is a trap in the way.");
};
if ((_local3 is IPathfindingEffecting)){
return ("That tile is blocked");
};
};
return (null);
}
public function notifyObjectSold(_arg1:Object):void{
var _local2:String = getQualifiedClassName(whatToBuild);
if (((!((maximumAllowed == -1))) && ((_local2 == getQualifiedClassName(_arg1))))){
numberBuilt--;
};
}
override public function getDescriptionDisplayObject():DisplayObject{
return (new CompositeSprite([TextFieldFactory.createText(whatToBuild.getName(), 4461830, 12, 14663552, "Georgia", 2), TextFieldFactory.createText((whatToBuild.getCost() + " gold"), 4461830, 12, 14663552, "Georgia", 2)]));
}
override public function createHoverObject():DisplayObject{
var _local1:DisplayObject = (whatToBuild as DisplayableGameObject).createDisplayObject();
_local1.x = (_local1.width * -0.5);
_local1.y = (_local1.height * -0.5);
_local1.alpha = 0.6;
return (_local1);
}
}
}//package com.greyhound.ui.controlpanel
Section 497
//ControlPanelButton (com.greyhound.ui.controlpanel.ControlPanelButton)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
public class ControlPanelButton extends SelectableGameButton {
public function ControlPanelButton(_arg1:IButtonProvider, _arg2:Function=null){
super(_arg1, _arg2, 7829503);
}
public function getDescriptionDisplayObject():DisplayObject{
return (null);
}
public function autoUnselect():Boolean{
return (true);
}
public function performAction(_arg1:World, _arg2:Tile):String{
return (null);
}
public function createHoverObject():DisplayObject{
return (null);
}
}
}//package com.greyhound.ui.controlpanel
Section 498
//ControlPanelButtonPanel (com.greyhound.ui.controlpanel.ControlPanelButtonPanel)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.tools.*;
import com.greyhound.ui.floaters.*;
public class ControlPanelButtonPanel extends Sprite implements ISelectionListener, IHoverObjectProvider {
private var buttons:Array;
private var container:Sprite;
private var buttonDescriptions:Array;
protected var world:World;
private var controlPanel:ControlPanel;
private var selectedButton:ControlPanelButton;
private var buttonBackgrounds:Array;
public function ControlPanelButtonPanel(_arg1:World, _arg2:ControlPanel){
this.controlPanel = _arg2;
this.world = _arg1;
container = new Sprite();
addChild(container);
buttonBackgrounds = new Array();
}
public function createHoverObject(_arg1:Tile):DisplayObject{
if (selectedButton != null){
return (selectedButton.createHoverObject());
};
return (null);
}
public function notifyTileSelected(_arg1:Tile, _arg2:MouseEvent):void{
var _local3:String;
var _local4:Point;
if (((!((selectedButton == null))) && (selectedButton.isEnabled()))){
_local3 = selectedButton.performAction(world, _arg1);
if (_local3 != null){
_local4 = _arg1.getScreenLocation();
Floater.floatText(stage, _local3, _local4.x, (_local4.y - (World.TILE_DIMENSION * 2)));
} else {
if (((selectedButton.autoUnselect()) && (!(_arg2.shiftKey)))){
selectedButton.setSelected(false);
};
updateButtons();
};
};
}
protected function setButtons(_arg1:Array):void{
var _local4:DisplayObject;
buttons = _arg1;
buttonDescriptions = new Array(buttons.length);
var _local2:ButtonGroup = new ButtonGroup();
var _local3:int;
while (_local3 < buttons.length) {
_local4 = new ArtLoader.BuildButtonBarIMG();
buttonBackgrounds.push(_local4);
container.addChild(_local4);
buttonDescriptions[_local3] = buttons[_local3].getDescriptionDisplayObject();
container.addChild(buttons[_local3]);
_local2.addButton(buttons[_local3]);
container.addChild(buttonDescriptions[_local3]);
_local3++;
};
layoutButtons();
updateButtons();
}
protected function buttonSelectionChanged(_arg1:Boolean, _arg2:SelectableGameButton):void{
if (_arg1){
selectedButton = (_arg2 as ControlPanelButton);
controlPanel.updateHoverObject();
} else {
if (_arg2 == selectedButton){
selectedButton = null;
controlPanel.updateHoverObject();
};
};
}
public function notifySelectionChanged(_arg1:ISelectable):void{
}
public function clearSelectedButton():void{
if (selectedButton != null){
selectedButton.setSelected(false);
};
}
protected function layoutButtons():void{
var _local3:int;
container.graphics.clear();
var _local1:int = Panel.PANEL_BORDER_INDENT;
var _local2:int;
while (_local2 < buttons.length) {
buttons[_local2].x = 25;
buttons[_local2].y = _local1;
buttonDescriptions[_local2].x = ((buttons[_local2].x + buttons[_local2].width) + Panel.PANEL_BORDER_INDENT);
_local3 = ((_local1 + (buttons[_local2].height * 0.5)) - 10);
buttonDescriptions[_local2].y = (_local3 + 2);
buttonBackgrounds[_local2].x = 11;
buttonBackgrounds[_local2].y = (_local3 + 1);
_local1 = (_local1 + (buttons[_local2].height + Panel.PANEL_BORDER_INDENT));
_local2++;
};
}
public function updateButtons():void{
var _local1:Object;
for each (_local1 in buttons) {
if ((_local1 is ControlPanelBuildButton)){
(_local1 as ControlPanelBuildButton).updateButton(world);
};
};
}
}
}//package com.greyhound.ui.controlpanel
Section 499
//DigButton (com.greyhound.ui.controlpanel.DigButton)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
public class DigButton extends ControlPanelButton {
public function DigButton(_arg1:Function=null){
super(new ImageButtonProvider(ArtLoader.DigIMG, "Que this wall for digging. Peons will come out of your lair and dig it for you if they can walk to it."), _arg1);
}
override public function getDescriptionDisplayObject():DisplayObject{
return (TextFieldFactory.createText("Dig", 4461830, 12, 14663552, "Georgia", 2));
}
override public function autoUnselect():Boolean{
return (false);
}
override public function createHoverObject():DisplayObject{
var _local1:DisplayObject;
_local1 = new ArtLoader.DigIMG();
_local1.x = (_local1.width * -0.5);
_local1.y = (_local1.height * -0.5);
_local1.alpha = 0.6;
return (_local1);
}
override public function performAction(_arg1:World, _arg2:Tile):String{
var _local4:Object;
var _local3:Array = _arg2.getDisplayableGameObjects();
for each (_local4 in _local3) {
if ((_local4 is IDiggable)){
_arg1.getDiggingVariabels().toggleDigging((_local4 as IDiggable));
};
};
return (null);
}
}
}//package com.greyhound.ui.controlpanel
Section 500
//IHoverObjectProvider (com.greyhound.ui.controlpanel.IHoverObjectProvider)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import com.greyhound.world.*;
public interface IHoverObjectProvider {
function createHoverObject(_arg1:Tile):DisplayObject;
}
}//package com.greyhound.ui.controlpanel
Section 501
//LairButton (com.greyhound.ui.controlpanel.LairButton)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import com.greyhound.things.buildings.lairs.*;
public class LairButton extends ControlPanelBuildButton {
public function LairButton(_arg1:Lair, _arg2:Function, _arg3:int=-1){
super(_arg1, _arg2, _arg3);
}
override public function createHoverObject():DisplayObject{
var _local2:int;
var _local3:Sprite;
var _local4:DisplayObject;
var _local1:Lair = (whatToBuild as Lair);
if (_local1.getCreatureAttackRange() > 0){
_local2 = _local1.getCreatureAttackRange();
_local3 = new Sprite();
_local4 = _local1.createDisplayObject();
_local1.createDisplayObject().x = (_local4.width * -0.5);
_local4.y = (_local4.height * -0.5);
_local3.addChild(_local4);
_local3.graphics.beginFill(0xBBBBBB);
_local3.graphics.drawCircle(0, 0, _local2);
_local3.graphics.endFill();
_local3.alpha = 0.4;
return (_local3);
};
return (super.createHoverObject());
}
}
}//package com.greyhound.ui.controlpanel
Section 502
//LairControls (com.greyhound.ui.controlpanel.LairControls)
package com.greyhound.ui.controlpanel {
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.things.buildings.lairs.*;
import com.greyhound.things.buildings.*;
import com.greyhound.living.classes.avatars.*;
public class LairControls extends ControlPanelButtonPanel implements IChangeListener {
public function LairControls(_arg1:World, _arg2:ControlPanel){
var _local5:Object;
super(_arg1, _arg2);
_arg1.getAvatar().addChangeListener(this);
var _local3:Array = new Array();
_local3.push(new DigButton(buttonSelectionChanged));
_local3.push(new LairButton(new GoblinLair(), buttonSelectionChanged));
_local3.push(new LairButton(new CentaurLair(), buttonSelectionChanged));
_local3.push(new LairButton(new MinotaurLair(), buttonSelectionChanged));
_local3.push(new LairButton(new ManticoreLair(), buttonSelectionChanged));
_local3.push(new LairButton(new VampireLair(), buttonSelectionChanged));
_local3.push(new LairButton(new LichLair(), buttonSelectionChanged));
_local3.push(new LairButton(new ElementalLair(), buttonSelectionChanged));
var _local4:IAvatarClass = (_arg1.getAvatar().getLivingClass() as IAvatarClass);
for each (_local5 in _local4.getClassBuildings()) {
if ((_local5 is Lair)){
_local3.push(new LairButton((_local5 as Lair), buttonSelectionChanged));
} else {
_local3.push(new ControlPanelBuildButton((_local5 as Building), buttonSelectionChanged));
};
};
setButtons(_local3);
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
}
public function notifyChanged(_arg1:IChangeable):void{
if ((_arg1 is Avatar)){
updateButtons();
};
}
}
}//package com.greyhound.ui.controlpanel
Section 503
//LivingStatPanel (com.greyhound.ui.controlpanel.LivingStatPanel)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.living.*;
import com.greyhound.tools.*;
import flash.text.*;
import com.greyhound.*;
public class LivingStatPanel extends Sprite implements IRefreshable {
private var meleeResistanceTextField:TextField;
private var nameTextField:TextField;
private var strengthTextField:TextField;
private var meleeResistanceImage:DisplayObject;
private var hasteImage:DisplayObject;
private var hasteTextField:TextField;
private var magicTextField:TextField;
private var strengthImage:DisplayObject;
private var magicResistanceTextField:TextField;
private var dexteritySprite:Sprite;
private var magicResistanceSprite:Sprite;
private var magicImage:DisplayObject;
private var hasteSprite:Sprite;
private var magicResistanceImage:DisplayObject;
private var who:Living;
private var detailsToolTip:ToolTip;
private var rangedResistanceSprite:Sprite;
private var speedTextField:TextField;
private var rangedResistanceTextField:TextField;
private var magicSprite:Sprite;
private var speedImage:DisplayObject;
private var rangedResistanceImage:DisplayObject;
private var strengthSprite:Sprite;
private var dexterityTextField:TextField;
private var speedSprite:Sprite;
private var meleeResistanceSprite:Sprite;
private var dexterityImage:DisplayObject;
private var detailsDisplayObject:DisplayObject;
public function LivingStatPanel(_arg1:Living){
strengthSprite = new Sprite();
dexteritySprite = new Sprite();
magicSprite = new Sprite();
hasteSprite = new Sprite();
meleeResistanceSprite = new Sprite();
rangedResistanceSprite = new Sprite();
magicResistanceSprite = new Sprite();
speedSprite = new Sprite();
nameTextField = TextFieldFactory.createText("", 0xAAAAAA, 14);
strengthTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
dexterityTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
magicTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
hasteTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
meleeResistanceTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
rangedResistanceTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
magicResistanceTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
speedTextField = TextFieldFactory.createText("", 0xFFFFFF, 12);
strengthImage = new ArtLoader.StrengthIMG();
dexterityImage = new ArtLoader.DexterityIMG();
magicImage = new ArtLoader.MagicIMG();
hasteImage = new ArtLoader.SpeedIMG();
meleeResistanceImage = new ArtLoader.MeleeResistanceIMG();
rangedResistanceImage = new ArtLoader.RangedResistanceIMG();
magicResistanceImage = new ArtLoader.MagicResistanceIMG();
speedImage = new ArtLoader.SpeedIMG();
super();
this.who = _arg1;
new ToolTip("Strength provides bonuses to hit points and melee attacks.", strengthSprite);
new ToolTip("Dexterity provides bonuses to attack speed and ranged attacks.", dexteritySprite);
new ToolTip("Magic provides bonuses to magical attacks.", magicSprite);
new ToolTip("Speed is how fast you move.", speedSprite);
new ToolTip("Melee resistance", meleeResistanceSprite);
new ToolTip("Ranged resistance", rangedResistanceSprite);
new ToolTip("Magic resistance", magicResistanceSprite);
new ToolTip("Haste(attack speed).", hasteSprite);
strengthSprite.addChild(strengthImage);
strengthSprite.addChild(strengthTextField);
strengthSprite.mouseChildren = false;
dexteritySprite.addChild(dexterityImage);
dexteritySprite.addChild(dexterityTextField);
dexteritySprite.mouseChildren = false;
magicSprite.addChild(magicImage);
magicSprite.addChild(magicTextField);
magicSprite.mouseChildren = false;
hasteSprite.addChild(hasteImage);
hasteSprite.addChild(hasteTextField);
hasteSprite.mouseChildren = false;
meleeResistanceSprite.addChild(meleeResistanceImage);
meleeResistanceSprite.addChild(meleeResistanceTextField);
meleeResistanceSprite.mouseChildren = false;
rangedResistanceSprite.addChild(rangedResistanceImage);
rangedResistanceSprite.addChild(rangedResistanceTextField);
rangedResistanceSprite.mouseChildren = false;
magicResistanceSprite.addChild(magicResistanceImage);
magicResistanceSprite.addChild(magicResistanceTextField);
magicResistanceSprite.mouseChildren = false;
speedSprite.addChild(speedImage);
speedSprite.addChild(speedTextField);
speedSprite.mouseChildren = false;
var _local2:DisplayObject = _arg1.createDisplayObject();
addChild(_local2);
_local2.x = 0;
_local2.y = 5;
nameTextField.x = (_local2.x + _local2.width);
nameTextField.y = 0;
addChild(nameTextField);
detailsDisplayObject = TextFieldFactory.createText("Details", 0, 16, 0xFFFFFF);
detailsToolTip = new ToolTip("", detailsDisplayObject);
detailsDisplayObject.x = nameTextField.x;
detailsDisplayObject.y = (nameTextField.y + 20);
addChild(detailsDisplayObject);
var _local3:CompositeSprite = new CompositeSprite([strengthSprite, dexteritySprite, magicSprite, hasteSprite]);
var _local4:CompositeSprite = new CompositeSprite([meleeResistanceSprite, rangedResistanceSprite, magicResistanceSprite, speedSprite]);
_local3.x = 0;
_local3.y = 50;
_local4.x = 0;
_local4.y = (_local3.y + _local3.height);
addChild(_local3);
addChild(_local4);
refresh();
}
public function refresh():void{
nameTextField.text = ((who.getName() + " Level ") + who.getLevel());
strengthTextField.text = (who.getStatManager().getStrength() + "");
strengthTextField.x = Math.max(0, ((strengthImage.width - strengthTextField.width) * 0.5));
strengthTextField.y = (strengthImage.height - strengthTextField.height);
dexterityTextField.text = (who.getStatManager().getDexterity() + "");
dexterityTextField.x = Math.max(0, ((dexterityImage.width - dexterityTextField.width) * 0.5));
dexterityTextField.y = (dexterityImage.height - dexterityTextField.height);
magicTextField.text = (who.getStatManager().getMagic() + "");
magicTextField.x = Math.max(0, ((magicImage.width - magicTextField.width) * 0.5));
magicTextField.y = (magicImage.height - magicTextField.height);
hasteTextField.text = (Tools.round(who.getStatManager().getHastePercent(), 1) + "%");
hasteTextField.x = Math.max(0, ((hasteImage.width - hasteTextField.width) * 0.5));
hasteTextField.y = (hasteImage.height - hasteTextField.height);
meleeResistanceTextField.text = (Tools.round(who.getStatManager().getMeleeResistancePercent(), 1) + "%");
meleeResistanceTextField.x = Math.max(0, ((meleeResistanceImage.width - meleeResistanceTextField.width) * 0.5));
meleeResistanceTextField.y = (meleeResistanceImage.height - meleeResistanceTextField.height);
rangedResistanceTextField.text = (Tools.round(who.getStatManager().getRangedResistancePercent(), 1) + "%");
rangedResistanceTextField.x = Math.max(0, ((rangedResistanceImage.width - rangedResistanceTextField.width) * 0.5));
rangedResistanceTextField.y = (rangedResistanceImage.height - rangedResistanceTextField.height);
magicResistanceTextField.text = (Tools.round(who.getStatManager().getMagicResistancePercent(), 1) + "%");
magicResistanceTextField.x = Math.max(0, ((magicResistanceImage.width - magicResistanceTextField.width) * 0.5));
magicResistanceTextField.y = (magicResistanceImage.height - magicResistanceTextField.height);
speedTextField.text = (Tools.round((who.getStatManager().getSpeed() * MyPreloader.FRAMERATE), 1) + "");
speedTextField.x = Math.max(0, ((speedImage.width - speedTextField.width) * 0.5));
speedTextField.y = (speedImage.height - speedTextField.height);
detailsToolTip.setToolTip(who.getDisplayText());
}
}
}//package com.greyhound.ui.controlpanel
Section 504
//SellButton (com.greyhound.ui.controlpanel.SellButton)
package com.greyhound.ui.controlpanel {
import flash.display.*;
import flash.events.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.tools.*;
import com.greyhound.things.*;
import com.greyhound.ui.floaters.*;
public class SellButton extends Sprite {
private var buyable:IBuyable;
public function SellButton(_arg1:IBuyable){
addChild(new ArtLoader.SellIMG());
this.buyable = _arg1;
addEventListener(MouseEvent.CLICK, performAction);
}
public function performAction(_arg1:MouseEvent):void{
var _local2:Point = (buyable as DisplayableGameObject).getScreenLocation();
var _local3:Stage = (buyable as DisplayableGameObject).getWorld().getStage();
var _local4:int = buyable.sell();
GoldFloater.showGoldFloater(_local4, _local2, _local3);
}
}
}//package com.greyhound.ui.controlpanel
Section 505
//SupportControls (com.greyhound.ui.controlpanel.SupportControls)
package com.greyhound.ui.controlpanel {
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import com.greyhound.world.*;
import com.greyhound.things.buildings.*;
import com.greyhound.living.classes.avatars.*;
import com.greyhound.things.traps.*;
public class SupportControls extends ControlPanelButtonPanel implements IChangeListener {
public function SupportControls(_arg1:World, _arg2:ControlPanel){
var _local5:Object;
super(_arg1, _arg2);
_arg1.getAvatar().addChangeListener(this);
var _local3:Array = new Array();
_local3.push(new ControlPanelBuildButton(new SpikeTrap(), buttonSelectionChanged));
_local3.push(new ControlPanelBuildButton(new PitTrap(), buttonSelectionChanged));
_local3.push(new ControlPanelBuildButton(new BoulderTrap(), buttonSelectionChanged));
_local3.push(new ControlPanelBuildButton(new MaimTrap(), buttonSelectionChanged));
var _local4:IAvatarClass = (_arg1.getAvatar().getLivingClass() as IAvatarClass);
for each (_local5 in _local4.getClassTraps()) {
_local3.push(new ControlPanelBuildButton((_local5 as Trap), buttonSelectionChanged));
};
_local3.push(new ControlPanelBuildButton(new Gym(), buttonSelectionChanged));
_local3.push(new ControlPanelBuildButton(new Track(), buttonSelectionChanged));
_local3.push(new ControlPanelBuildButton(new Academy(), buttonSelectionChanged));
_local3.push(new ControlPanelBuildButton(new GoldVault(), buttonSelectionChanged));
setButtons(_local3);
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
}
public function notifyChanged(_arg1:IChangeable):void{
if ((_arg1 is Avatar)){
updateButtons();
};
}
}
}//package com.greyhound.ui.controlpanel
Section 506
//DecoratorDisplayObject (com.greyhound.ui.decorators.DecoratorDisplayObject)
package com.greyhound.ui.decorators {
import flash.display.*;
import com.greyhound.tools.*;
public class DecoratorDisplayObject extends Sprite {
private var decorator:IDecorator;
public function DecoratorDisplayObject(_arg1:IDecorator){
this.decorator = _arg1;
var _local2:DisplayObject;
switch (_arg1.getDecoratorID()){
case DecoratorFactory.DIG_DECORATOR:
_local2 = new ArtLoader.DigIMG();
break;
default:
trace(("unknown decorator id :" + _arg1.getDecoratorID()));
break;
};
addChild(_local2);
}
public function getDecoratorID():int{
return (decorator.getDecoratorID());
}
}
}//package com.greyhound.ui.decorators
Section 507
//DecoratorFactory (com.greyhound.ui.decorators.DecoratorFactory)
package com.greyhound.ui.decorators {
public class DecoratorFactory {
public static const DIG_DECORATOR:int = 0;
public static function createDecorator(_arg1:int):IDecorator{
switch (_arg1){
case DIG_DECORATOR:
return (new DigDecorator());
default:
trace(("unknown decorator id:" + _arg1));
return (null);
};
}
}
}//package com.greyhound.ui.decorators
Section 508
//DigDecorator (com.greyhound.ui.decorators.DigDecorator)
package com.greyhound.ui.decorators {
public class DigDecorator implements IDecorator {
public function getDecoratorID():int{
return (DecoratorFactory.DIG_DECORATOR);
}
}
}//package com.greyhound.ui.decorators
Section 509
//IDecorator (com.greyhound.ui.decorators.IDecorator)
package com.greyhound.ui.decorators {
public interface IDecorator {
function getDecoratorID():int;
}
}//package com.greyhound.ui.decorators
Section 510
//DisplayObjectProvider (com.greyhound.ui.displayobjectproviders.DisplayObjectProvider)
package com.greyhound.ui.displayobjectproviders {
import flash.display.*;
import com.greyhound.base.*;
public class DisplayObjectProvider implements IDisplayObjectProvider {
private var picScale:Number;
private var displayObjectClass:Class;
public function DisplayObjectProvider(_arg1:Class, _arg2:Number=1){
this.displayObjectClass = _arg1;
this.picScale = _arg2;
}
public function createDisplayObject(_arg1:DisplayableGameObject):DisplayObject{
var _local2:DisplayObject = new displayObjectClass();
_local2.scaleX = picScale;
_local2.scaleY = picScale;
return (_local2);
}
}
}//package com.greyhound.ui.displayobjectproviders
Section 511
//IDisplayObjectProvider (com.greyhound.ui.displayobjectproviders.IDisplayObjectProvider)
package com.greyhound.ui.displayobjectproviders {
import flash.display.*;
import com.greyhound.base.*;
public interface IDisplayObjectProvider {
function createDisplayObject(_arg1:DisplayableGameObject):DisplayObject;
}
}//package com.greyhound.ui.displayobjectproviders
Section 512
//LivingDisplayObjectProvider (com.greyhound.ui.displayobjectproviders.LivingDisplayObjectProvider)
package com.greyhound.ui.displayobjectproviders {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
public class LivingDisplayObjectProvider extends DisplayObjectProvider {
public function LivingDisplayObjectProvider(_arg1:Class, _arg2:Number=1){
super(_arg1, _arg2);
}
override public function createDisplayObject(_arg1:DisplayableGameObject):DisplayObject{
var _local2:DisplayObject = super.createDisplayObject(_arg1);
_local2.addEventListener(Event.COMPLETE, _arg1.adjustChildSize, false, 0, true);
var _local3:PercentBar = new PercentBar((_arg1 as IPercentBarProvider), _local2.width, 8978312);
_local3.x = 0;
_local3.y = -(_local3.height);
var _local4:Animateable = new Animateable(_local2);
_local4.addChild(_local3);
return (_local4);
}
}
}//package com.greyhound.ui.displayobjectproviders
Section 513
//PercentBarShowingDisplayObjectProvider (com.greyhound.ui.displayobjectproviders.PercentBarShowingDisplayObjectProvider)
package com.greyhound.ui.displayobjectproviders {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
public class PercentBarShowingDisplayObjectProvider extends DisplayObjectProvider {
public function PercentBarShowingDisplayObjectProvider(_arg1:Class, _arg2:Number=1){
super(_arg1, _arg2);
}
override public function createDisplayObject(_arg1:DisplayableGameObject):DisplayObject{
var _local2:DisplayObject = super.createDisplayObject(_arg1);
var _local3:PercentBar = new PercentBar((_arg1 as IPercentBarProvider), _local2.width, 16733525);
_local3.x = 0;
_local3.y = -(_local3.height);
var _local4:Sprite = new Sprite();
_local4.addChild(_local2);
_local4.addChild(_local3);
return (_local4);
}
}
}//package com.greyhound.ui.displayobjectproviders
Section 514
//DetonationGraphic (com.greyhound.ui.effects.DetonationGraphic)
package com.greyhound.ui.effects {
import flash.display.*;
import com.greyhound.base.*;
import com.greyhound.ui.displayobjectproviders.*;
import flash.filters.*;
public class DetonationGraphic extends Sprite implements IDisplayObjectProvider {
public function DetonationGraphic(){
filters = [new GlowFilter(0xFFD800, 0.7)];
}
public function createDisplayObject(_arg1:DisplayableGameObject):DisplayObject{
return (this);
}
public function setExplosionSize(_arg1:Number, _arg2:Number):void{
graphics.clear();
graphics.beginFill(0xFFFFFF, Math.max(0.1, (1 - (_arg1 / _arg2))));
graphics.drawCircle(0, 0, _arg1);
}
}
}//package com.greyhound.ui.effects
Section 515
//SpawnPointGraphic (com.greyhound.ui.effects.SpawnPointGraphic)
package com.greyhound.ui.effects {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.filters.*;
public class SpawnPointGraphic extends Sprite {
private var size:int;
private var timer:Timer;
private var direction:Boolean;
public function SpawnPointGraphic(){
timer = new Timer(40);
timer.addEventListener(TimerEvent.TIMER, timerTick);
size = 6;
timer.start();
filters = [new GlowFilter(0xFFD800, 0.7)];
}
private function timerTick(_arg1:Event):void{
if (parent == null){
timer.stop();
};
graphics.clear();
graphics.lineStyle(2, 0xFFFFFF);
if (size == 10){
size--;
direction = false;
} else {
if (size == 1){
size++;
direction = true;
} else {
if (direction){
size++;
} else {
size--;
};
};
};
graphics.drawCircle(0, 0, size);
}
}
}//package com.greyhound.ui.effects
Section 516
//Floater (com.greyhound.ui.floaters.Floater)
package com.greyhound.ui.floaters {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import flash.utils.*;
import flash.text.*;
public class Floater extends Sprite {
private var duration:int;
private var timer:Timer;
private var floatSpeed:int;
public function Floater(_arg1:Stage, _arg2:int, _arg3:int, _arg4:DisplayObject=null, _arg5:int=40, _arg6:int=4000){
timer = new Timer(_arg5);
timer.addEventListener(TimerEvent.TIMER, tick);
this.floatSpeed = _arg5;
this.duration = _arg6;
this.x = _arg2;
this.y = _arg3;
_arg1.addChild(this);
if (_arg4 != null){
addChild(_arg4);
};
timer.start();
}
private function tick(_arg1:Event):void{
y--;
duration = (duration - floatSpeed);
if (duration <= 0){
timer.stop();
if (stage != null){
stage.removeChild(this);
};
};
}
public static function floatText(_arg1:DisplayObject, _arg2:String, _arg3:int=0, _arg4:int=0):void{
var _local5:TextField = TextFieldFactory.createText(_arg2, 0xFFFFFF, 12);
var _local6:Sprite = new Sprite();
_local6.addChild(_local5);
float(_arg1, _local6, _arg3, _arg4);
}
public static function float(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:int=0, _arg4:int=0):void{
var _local5:Rectangle = _arg1.getBounds(_arg1.stage);
new Floater(_arg1.stage, (_local5.x + _arg3), (_local5.y + _arg4)).addChild(_arg2);
}
}
}//package com.greyhound.ui.floaters
Section 517
//GoldFloater (com.greyhound.ui.floaters.GoldFloater)
package com.greyhound.ui.floaters {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.tools.*;
public class GoldFloater {
public static function showGoldFloaterOn(_arg1:int, _arg2:DisplayableGameObject, _arg3:String=null):void{
showGoldFloater(_arg1, _arg2.getScreenLocation(), _arg2.getWorld().getStage(), _arg3);
}
public static function showGoldFloater(_arg1:int, _arg2:Point, _arg3:Stage, _arg4:String=null):void{
var _local5:Point = _arg2;
var _local6:Floater = new Floater(_arg3, _local5.x, _local5.y);
if (_arg4 != null){
_local6.addChild(new CompositeSprite([new ArtLoader.GoldIMG(), TextFieldFactory.createText((_arg4 + _arg1))]));
} else {
_local6.addChild(new CompositeSprite([new ArtLoader.GoldIMG(), TextFieldFactory.createText(("" + _arg1))]));
};
}
}
}//package com.greyhound.ui.floaters
Section 518
//AvatarDemoSprite (com.greyhound.ui.menus.demo.AvatarDemoSprite)
package com.greyhound.ui.menus.demo {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.tools.*;
import flash.text.*;
public class AvatarDemoSprite extends Sprite {
public function AvatarDemoSprite(){
mouseChildren = false;
useHandCursor = true;
buttonMode = true;
addChild(new ArtLoader.EvilWizardIMG());
var _local1:TextField = TextFieldFactory.createText("Evil Wizard");
_local1.x = 32;
addChild(_local1);
var _local2:DisplayObject = new ArtLoader.KongLogoIMG();
_local2.x = 120;
_local2.y = -5;
addChild(_local2);
var _local3:GreyOut = new GreyOut(113, 45, 0.4);
_local3.y = -5;
addChild(_local3);
addEventListener(MouseEvent.CLICK, kong);
}
private function kong(_arg1:MouseEvent):void{
Main.goToKongregateDungeonDefender(stage);
}
}
}//package com.greyhound.ui.menus.demo
Section 519
//KongregateHighScoresMenu (com.greyhound.ui.menus.main.kongregate.KongregateHighScoresMenu)
package com.greyhound.ui.menus.main.kongregate {
import flash.display.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.ui.menus.*;
import com.greyhound.tools.*;
public class KongregateHighScoresMenu extends Menu {
private var main:Main;
public function KongregateHighScoresMenu(_arg1:Main){
super(null);
var _local2:Sprite = new Sprite();
_local2.addChild(new MyPreloader.TitleScreenIMG());
var _local3:DisplayObject = new ArtLoader.ScrollIMG();
_local3.x = 270;
_local3.y = 140;
_local3.width = 241;
_local3.height = 300;
_local2.addChild(_local3);
var _local4:DisplayObject = new ArtLoader.ChooseDifficultyIMG();
_local4.x = 290;
_local4.y = 200;
_local2.addChild(_local4);
setBackground(_local2, false);
setMenuOffset(new Point(350, 260));
addMenuItem(new SubMenuMenuItem(new KongregatePickHighScoreMapMenu(_arg1, GameSave.MEDIUM_NAME), TextFieldFactory.createTextButton("Medium")));
addMenuItem(new SubMenuMenuItem(new KongregatePickHighScoreMapMenu(_arg1, GameSave.HARD_NAME), TextFieldFactory.createTextButton("Hard")));
addMenuItem(new PopMenuItem(TextFieldFactory.createTextButton("Go Back")));
}
}
}//package com.greyhound.ui.menus.main.kongregate
Section 520
//KongregatePickHighScoreMapMenu (com.greyhound.ui.menus.main.kongregate.KongregatePickHighScoreMapMenu)
package com.greyhound.ui.menus.main.kongregate {
import flash.display.*;
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.ui.menus.*;
import com.greyhound.tools.*;
public class KongregatePickHighScoreMapMenu extends Menu {
private var main:Main;
public function KongregatePickHighScoreMapMenu(_arg1:Main, _arg2:String){
super(null);
var _local3:Sprite = new Sprite();
_local3.addChild(new MyPreloader.TitleScreenIMG());
var _local4:DisplayObject = new ArtLoader.ScrollIMG();
_local4.x = 280;
_local4.y = 70;
_local4.height = 400;
_local4.width = 241;
_local3.addChild(_local4);
var _local5:DisplayObject = new ArtLoader.ChooseMapIMG();
_local5.x = 290;
_local5.y = 120;
_local3.addChild(_local5);
setBackground(_local3, false);
setMenuOffset(new Point(350, 160));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, PieceOfCakeMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("Piece Of Cake")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, NoMoreFreebiesMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("No More Freebies")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, HereBeTreasureMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("Here Be Treasure")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, ThePrisonMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("The Prison")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, MarathonMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("Marathon")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, TraitorsMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("Traitors")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, NewToolsMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("New Tools")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, PreludeToVictoryMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("Prelude To Victory")));
addMenuItem(new SubMenuMenuItem(new KongregateShowHighScoresMenu(_arg1, TakeTheTownMapVariables.MAP_ID, _arg2), TextFieldFactory.createText("Take The Town")));
addMenuItem(new PopMenuItem(TextFieldFactory.createTextButton("Go Back")));
}
}
}//package com.greyhound.ui.menus.main.kongregate
Section 521
//KongregateShowHighScoresMenu (com.greyhound.ui.menus.main.kongregate.KongregateShowHighScoresMenu)
package com.greyhound.ui.menus.main.kongregate {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.ui.menus.*;
import com.greyhound.tools.*;
import com.greyhound.common.kongregate.*;
public class KongregateShowHighScoresMenu extends Menu {
private var map:String;
private var difficultyName:String;
private var main:Main;
public function KongregateShowHighScoresMenu(_arg1:Main, _arg2:String, _arg3:String){
super(null);
var _local4:Sprite = new Sprite();
_local4.addChild(new MyPreloader.TitleScreenIMG());
var _local5:DisplayObject = new ArtLoader.ScrollIMG();
_local5.x = 280;
_local5.y = 70;
_local5.height = 400;
_local5.width = 241;
_local4.addChild(_local5);
setBackground(_local4, false);
setMenuOffset(new Point(350, 160));
this.map = _arg2;
this.difficultyName = _arg3;
}
private function doNothing(_arg1:Event):void{
}
private function scoresCallback(_arg1:Object):void{
var _local2:int;
var _local3:int;
if ((((((_arg1 == null)) || ((_arg1.list == null)))) || ((_arg1.list.length == 0)))){
addMenuItem(new MenuItem(TextFieldFactory.createText("None yet!"), doNothing));
} else {
_local2 = 0;
while ((((_local2 < _arg1.list.length)) && ((_local2 < 10)))) {
_local3 = (_local2 + 1);
addMenuItem(new MenuItem(TextFieldFactory.createText(((((_local3 + ". ") + _arg1.list[_local2].username) + " - ") + _arg1.list[_local2].score)), doNothing));
_local2++;
};
};
addMenuItem(new PopMenuItem(TextFieldFactory.createTextButton("Go Back")));
}
override public function show():void{
APILoader.Kongregate.scores.setMode(((difficultyName + ":") + map));
APILoader.Kongregate.scores.requestList(scoresCallback);
}
}
}//package com.greyhound.ui.menus.main.kongregate
Section 522
//LoadGameMenu (com.greyhound.ui.menus.main.LoadGameMenu)
package com.greyhound.ui.menus.main {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.ui.menus.*;
import com.greyhound.tools.*;
public class LoadGameMenu extends Menu {
private var main:Main;
public function LoadGameMenu(_arg1:Main){
var _local3:DisplayObject;
super(TextFieldFactory.createText("Load Which Game"));
this.main = _arg1;
var _local2:Sprite = new Sprite();
_local2.addChild(new MyPreloader.TitleScreenIMG());
_local3 = new ArtLoader.WoodPanelIMG();
_local3.x = 400;
_local3.y = -25;
_local3.scaleX = 0.62;
_local3.scaleY = 0.5;
_local2.addChild(_local3);
setBackground(_local2, false);
setMenuOffset(new Point(440, 290));
addMenuItem(new MenuItem(StartNewGameMenu.createSaveSlotDisplayObject(1), slot1));
addMenuItem(new MenuItem(StartNewGameMenu.createSaveSlotDisplayObject(2), slot2));
addMenuItem(new MenuItem(StartNewGameMenu.createSaveSlotDisplayObject(3), slot3));
addMenuItem(new PopMenuItem(TextFieldFactory.createText("Back To Main Menu")));
}
private function slot2(_arg1:MouseEvent):void{
SavedData.setCurrentInstance(2);
SavedData.loadSave();
main.beginGame();
}
private function slot1(_arg1:MouseEvent):void{
SavedData.setCurrentInstance(1);
SavedData.loadSave();
main.beginGame();
}
private function slot3(_arg1:MouseEvent):void{
SavedData.setCurrentInstance(3);
SavedData.loadSave();
main.beginGame();
}
}
}//package com.greyhound.ui.menus.main
Section 523
//MainMenu (com.greyhound.ui.menus.main.MainMenu)
package com.greyhound.ui.menus.main {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.ui.menus.*;
import com.greyhound.tools.*;
import flash.text.*;
import com.greyhound.*;
import com.greyhound.ui.menus.main.kongregate.*;
public class MainMenu extends Menu {
private var main:Main;
public static const VERSION:Number = 1.15;
public function MainMenu(_arg1:Main){
var _local3:DisplayObject;
var _local8:Sprite;
var _local9:CompositeSprite;
super(null);
var _local2:Sprite = new Sprite();
_local2.addChild(new MyPreloader.TitleScreenIMG());
_local3 = new ArtLoader.WoodPanelIMG();
_local3.x = 430;
_local3.y = -70;
_local3.scaleX = 0.55;
_local3.scaleY = 0.55;
_local2.addChild(_local3);
setBackground(_local2, false);
setMenuOffset(new Point(475, 265));
this.main = _arg1;
setContainer(_arg1);
if (_arg1.isGameInProgress()){
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Resume Game In Progress", null, 0xFFFFFF), resumeGame));
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Show Campaign Bonuses", null, 0xFFFFFF), showBonuses));
} else {
if (SavedData.activeGameExists()){
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Play", null, 0xFFFFFF), play));
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Show Campaign Bonuses", null, 0xFFFFFF), showBonuses));
};
};
addMenuItem(new SubMenuMenuItem(new StartNewGameMenu(_arg1), TextFieldFactory.createTextButton("Start A New Game", null, 0xFFFFFF)));
addMenuItem(new SubMenuMenuItem(new LoadGameMenu(_arg1), TextFieldFactory.createTextButton("Load Saved Game", null, 0xFFFFFF)));
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Help", null, 0xFFFFFF), showHelp));
if (!MyPreloader.isKongregate()){
_local8 = new Sprite();
_local9 = new CompositeSprite([TextFieldFactory.createText("Highscores", 0x999999), new ArtLoader.KongLogoIMG()]);
_local9.useHandCursor = true;
_local9.buttonMode = true;
_local9.mouseChildren = false;
addMenuItem(new MenuItem(_local9, goKong));
} else {
addMenuItem(new SubMenuMenuItem(new KongregateHighScoresMenu(_arg1), TextFieldFactory.createTextButton("Highscores", null, 0xFFFFFF)));
};
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Play More Games", null, 0xFFFFFF), playMoreGames));
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Credits", null, 0xFFFFFF), credits));
var _local4:CompositeButton = TextFieldFactory.createTextButton("Host This", hostGame);
_local4.y = 450;
addChild(_local4);
var _local5:CompositeButton = TextFieldFactory.createTextButton("©2008 Tom Delorenzi greyhoundgames.com", goGreyhound);
_local5.y = 480;
var _local6:Icon = new Icon(new ArtLoader.LogoIMG(), 0, false);
_local6.x = _local5.width;
_local6.y = 480;
_local6.addEventListener(MouseEvent.CLICK, goGreyhound);
addChild(_local6);
addChild(_local5);
var _local7:TextField = TextFieldFactory.createText(("V" + VERSION), 0xFFFFFF, 12);
_local7.x = 600;
_local7.y = 480;
addChild(_local7);
}
private function showBonuses(_arg1:MouseEvent):void{
main.showTalents();
}
private function credits(_arg1:MouseEvent):void{
main.showCredits();
}
private function play(_arg1:MouseEvent):void{
main.beginGame();
}
private function goKong(_arg1:MouseEvent):void{
Main.goToKongregateDungeonDefender(stage);
}
private function playMoreGames(_arg1:MouseEvent):void{
Main.goToKongregate(stage);
}
private function hostGame(_arg1:MouseEvent):void{
Tools.openWindow("http://greyhoundgames.com/ddefender/hostthis.html");
}
private function goGreyhound(_arg1:MouseEvent):void{
Tools.openWindow("http://greyhoundgames.com");
}
private function showHelp(_arg1:MouseEvent):void{
Tools.openWindow("http://greyhoundgames.com/ddefender/help.html");
}
private function resumeGame(_arg1:MouseEvent):void{
main.resumeGame();
}
}
}//package com.greyhound.ui.menus.main
Section 524
//StartNewGameMenu (com.greyhound.ui.menus.main.StartNewGameMenu)
package com.greyhound.ui.menus.main {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.ui.menus.*;
import com.greyhound.tools.*;
import flash.text.*;
public class StartNewGameMenu extends Menu {
private var main:Main;
public function StartNewGameMenu(_arg1:Main){
super(TextFieldFactory.createText("Start A New Game In Which Slot"));
this.main = _arg1;
var _local2:Sprite = new Sprite();
_local2.addChild(new MyPreloader.TitleScreenIMG());
var _local3:DisplayObject = new ArtLoader.WoodPanelIMG();
_local3.x = 400;
_local3.y = -25;
_local3.scaleX = 0.62;
_local3.scaleY = 0.5;
_local2.addChild(_local3);
setBackground(_local2, false);
setMenuOffset(new Point(440, 290));
addMenuItem(new MenuItem(createSaveSlotDisplayObject(1), slot1));
addMenuItem(new MenuItem(createSaveSlotDisplayObject(2), slot2));
addMenuItem(new MenuItem(createSaveSlotDisplayObject(3), slot3));
addMenuItem(new PopMenuItem(TextFieldFactory.createTextButton("Back To Main Menu", null)));
}
private function slot2(_arg1:MouseEvent):void{
SavedData.setCurrentInstance(2);
SavedData.clearGame();
main.beginGame();
}
private function slot1(_arg1:MouseEvent):void{
SavedData.setCurrentInstance(1);
SavedData.clearGame();
main.beginGame();
}
private function slot3(_arg1:MouseEvent):void{
SavedData.setCurrentInstance(3);
SavedData.clearGame();
main.beginGame();
}
public static function createSaveSlotDisplayObject(_arg1:int):DisplayObject{
var _local2:TextField;
var _local3:String = SavedData.getDifficultyNameInSaveSlot(_arg1);
if (_local3 == "None"){
_local2 = TextFieldFactory.createText("Empty");
} else {
_local2 = TextFieldFactory.createText((((((SavedData.getAvatarInSaveSlot(_arg1) + ", Level: ") + SavedData.getNumberOfMapsCompletedInSaveSlot(_arg1)) + "(") + _local3) + ")"));
};
var _local4:DisplayObject = new ArtLoader.SaveDiskIMG();
return (new CompositeButton(null, [_local4, _local2]));
}
}
}//package com.greyhound.ui.menus.main
Section 525
//ChooseAvatarPanel (com.greyhound.ui.menus.ChooseAvatarPanel)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import com.greyhound.tools.*;
import flash.text.*;
import com.greyhound.ui.menus.demo.*;
public class ChooseAvatarPanel extends Sprite {
private var evilWizardButton:CompositeButton;
private var deathKnightButton:CompositeButton;
private var chaosRangerButton:CompositeButton;
private var finishedChoosingAvatar:Function;
public function ChooseAvatarPanel(_arg1:Function){
var _local7:DisplayObject;
super();
addChild(new MyPreloader.TitleScreenIMG());
var _local2:DisplayObject = new ArtLoader.WoodPanelIMG();
addChild(_local2);
_local2.scaleX = 0.63;
_local2.scaleY = 0.62;
_local2.x = 400;
_local2.y = -130;
var _local3:TextField = TextFieldFactory.createText("Choose your avatar! Each avatar has a unique building and a unique trap that they can build. Avatars move with the arrow keys (or wasd), gain items, level up, and respawn when defeated.");
addChild(_local3);
_local3.x = 445;
_local3.y = 260;
_local3.width = 240;
_local3.wordWrap = true;
var _local4:DeathKnight = new DeathKnight();
var _local5:ChaosRanger = new ChaosRanger();
var _local6:EvilWizard = new EvilWizard();
deathKnightButton = new CompositeButton(buttonSelected, [_local4.createDisplayObject(), TextFieldFactory.createText(_local4.getName())], true);
new ToolTip(_local4.getChooseAvatarToolTip(), deathKnightButton);
chaosRangerButton = new CompositeButton(buttonSelected, [_local5.createDisplayObject(), TextFieldFactory.createText(_local5.getName())], true);
new ToolTip(_local5.getChooseAvatarToolTip(), chaosRangerButton);
evilWizardButton = new CompositeButton(buttonSelected, [_local6.createDisplayObject(), TextFieldFactory.createText(_local6.getName())], true);
new ToolTip(_local6.getChooseAvatarToolTip(), evilWizardButton);
chaosRangerButton.x = _local3.x;
chaosRangerButton.y = ((_local3.y + _local3.height) + Panel.PANEL_BORDER_INDENT);
addChild(chaosRangerButton);
addChild(deathKnightButton);
deathKnightButton.x = chaosRangerButton.x;
deathKnightButton.y = (((chaosRangerButton.y + chaosRangerButton.height) + Panel.PANEL_BORDER_INDENT) + 5);
if (MyPreloader.isDemoVersion()){
_local7 = new AvatarDemoSprite();
_local7.x = deathKnightButton.x;
_local7.y = (((deathKnightButton.y + deathKnightButton.height) + Panel.PANEL_BORDER_INDENT) + 5);
addChild(_local7);
} else {
evilWizardButton.x = deathKnightButton.x;
evilWizardButton.y = (((deathKnightButton.y + deathKnightButton.height) + Panel.PANEL_BORDER_INDENT) + 5);
addChild(evilWizardButton);
};
this.finishedChoosingAvatar = _arg1;
}
private function buttonSelected(_arg1:MouseEvent):void{
var _local2:Avatar;
var _local3:DisplayObject = (_arg1.target as DisplayObject);
if (_local3 == deathKnightButton){
_local2 = new DeathKnight();
} else {
if (_local3 == chaosRangerButton){
_local2 = new ChaosRanger();
} else {
if (_local3 == evilWizardButton){
_local2 = new EvilWizard();
};
};
};
if (_local2 != null){
parent.removeChild(this);
finishedChoosingAvatar(_local2);
} else {
trace("unknown avatar selected");
};
}
}
}//package com.greyhound.ui.menus
Section 526
//ChooseDifficultyMenu (com.greyhound.ui.menus.ChooseDifficultyMenu)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.tools.*;
public class ChooseDifficultyMenu extends Menu {
private var finishCallBack:Function;
public function ChooseDifficultyMenu(_arg1:Function){
super(null);
var _local2:Sprite = new Sprite();
_local2.addChild(new MyPreloader.TitleScreenIMG());
var _local3:DisplayObject = new ArtLoader.ScrollIMG();
_local3.x = 280;
_local3.y = 150;
_local3.height = 230;
_local3.width = 241;
_local2.addChild(_local3);
var _local4:DisplayObject = new ArtLoader.ChooseDifficultyIMG();
_local4.x = 290;
_local4.y = 200;
_local2.addChild(_local4);
setBackground(_local2, false);
setMenuOffset(new Point(350, 260));
this.finishCallBack = _arg1;
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Easy", null), chooseEasy));
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Medium", null), chooseMedium));
addMenuItem(new MenuItem(TextFieldFactory.createTextButton("Hard", null), chooseHard));
}
private function chooseEasy(_arg1:Event):void{
finishCallBack(GameSave.EASY);
}
private function chooseHard(_arg1:Event):void{
finishCallBack(GameSave.HARD);
}
private function chooseMedium(_arg1:Event):void{
finishCallBack(GameSave.MEDIUM);
}
}
}//package com.greyhound.ui.menus
Section 527
//ChooseMapButton (com.greyhound.ui.menus.ChooseMapButton)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.*;
import flash.geom.*;
public class ChooseMapButton extends Sprite {
private var callback:Function;
private var mapVariables:IMapVariables;
public function ChooseMapButton(_arg1:IMapVariables, _arg2:Function, _arg3:int){
this.callback = _arg2;
this.mapVariables = _arg1;
x = _arg1.getPictureLocation().x;
y = _arg1.getPictureLocation().y;
revertRectangle();
addEventListener(MouseEvent.MOUSE_OVER, mouseOver);
addEventListener(MouseEvent.MOUSE_OUT, mouseOut);
addEventListener(MouseEvent.CLICK, click);
new ToolTip(_arg1.getMapToolTip(), this, null, null, 0);
}
private function mouseOut(_arg1:MouseEvent):void{
revertRectangle();
}
public function getMapVariables():IMapVariables{
return (mapVariables);
}
private function revertRectangle():void{
graphics.clear();
var _local1:Point = mapVariables.getPictureDimensions();
if (!mapVariables.meetsPrereqs()){
graphics.beginFill(0, 0.5);
filters = [];
} else {
graphics.beginFill(0, 0.01);
};
graphics.drawRect(0, 0, _local1.x, _local1.y);
graphics.endFill();
}
private function click(_arg1:Event):void{
if (mapVariables.meetsPrereqs()){
callback(this);
};
}
private function mouseOver(_arg1:MouseEvent):void{
var _local2:Point;
if (mapVariables.meetsPrereqs()){
graphics.clear();
_local2 = mapVariables.getPictureDimensions();
graphics.beginFill(0xFFFFFF, 0.25);
graphics.drawRect(0, 0, _local2.x, _local2.y);
graphics.endFill();
};
}
}
}//package com.greyhound.ui.menus
Section 528
//ChooseMapPanel (com.greyhound.ui.menus.ChooseMapPanel)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.*;
import com.greyhound.tools.*;
import flash.text.*;
public class ChooseMapPanel extends Sprite {
private var finishedChoosingMap:Function;
public function ChooseMapPanel(_arg1:Function, _arg2:Main){
addChild(new ArtLoader.MapIMG());
var _local3:TextField = TextFieldFactory.createText("Choose a map to play. Each map you defeat unlocks a new map.\nGreyed out maps are ones you cannot play yet.", 0xFFFFFF, 25);
_local3.x = 15;
_local3.y = 40;
addChild(_local3);
var _local4:Array = new Array();
var _local5:ChooseMapButton = new ChooseMapButton(new PieceOfCakeMapVariables(), buttonSelected, 1);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new NoMoreFreebiesMapVariables(), buttonSelected, 2);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new HereBeTreasureMapVariables(), buttonSelected, 3);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new ThePrisonMapVariables(), buttonSelected, 4);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new MarathonMapVariables(), buttonSelected, 5);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new TraitorsMapVariables(), buttonSelected, 6);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new NewToolsMapVariables(), buttonSelected, 7);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new PreludeToVictoryMapVariables(), buttonSelected, 8);
_local4.push(_local5);
addChild(_local5);
_local5 = new ChooseMapButton(new TakeTheTownMapVariables(), buttonSelected, 9);
_local4.push(_local5);
addChild(_local5);
var _local6:TextButton = new TextButton("Back", backClicked);
_local6.y = ((height - _local6.height) - Panel.PANEL_BORDER_INDENT);
_local6.x = Panel.PANEL_BORDER_INDENT;
_local6.opaqueBackground = true;
this.finishedChoosingMap = _arg1;
addChild(_local6);
}
private function backClicked(_arg1:MouseEvent):void{
finishedChoosingMap(null);
}
private function buttonSelected(_arg1:ChooseMapButton):void{
var _local2:IMapVariables = _arg1.getMapVariables();
parent.removeChild(this);
finishedChoosingMap(_local2);
}
}
}//package com.greyhound.ui.menus
Section 529
//ChooseTalentButton (com.greyhound.ui.menus.ChooseTalentButton)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.tools.*;
import com.greyhound.talents.*;
import com.greyhound.*;
public class ChooseTalentButton extends Sprite {
private var doNothing:Boolean;
private var currentBorder:DisplayObject;
private var talent:ITalent;
private var clickCallBack:Function;
private var talentPicture:DisplayObject;
public function ChooseTalentButton(_arg1:ITalent, _arg2:Function=null){
this.clickCallBack = _arg2;
this.talent = _arg1;
var _local3:String = _arg1.getButtonToolTip();
if (((_arg1.isRestricted()) && (MyPreloader.isDemoVersion()))){
_local3 = (_local3 + "\nYou can only use this talent on kongregate. Click it to go there now!");
};
new ToolTip(_local3, this, null, null, 0);
addEventListener(MouseEvent.CLICK, talentClickCallBack);
doNothing = false;
}
private function talentClickCallBack(_arg1:Event):void{
if (((talent.isRestricted()) && (MyPreloader.isDemoVersion()))){
Main.goToKongregateDungeonDefender(stage);
} else {
if (!doNothing){
clickCallBack(_arg1);
};
};
}
public function getTalent():ITalent{
return (talent);
}
public function updateButton(_arg1:Array, _arg2:int):void{
var _local3:DisplayObject;
if (currentBorder != null){
removeChild(currentBorder);
};
if (talentPicture != null){
removeChild(talentPicture);
};
if (((!((_arg1.indexOf(Tools.getClassFor(talent)) == -1))) || (SavedData.hasTalenPoint(Tools.getClassFor(talent))))){
talentPicture = talent.getButtonDisplayObject();
addChild(talentPicture);
currentBorder = new ArtLoader.TalentSelectedIMG();
addChild(currentBorder);
doNothing = true;
} else {
if (((!(talent.meetsPrereqs(_arg1))) || ((_arg2 == 0)))){
talentPicture = talent.getButtonDisplayObject();
talentPicture.filters = new Array(Tools.createBlackAndWhiteFilter());
addChild(talentPicture);
currentBorder = new ArtLoader.TalentDisabledIMG();
addChild(currentBorder);
doNothing = true;
} else {
talentPicture = talent.getButtonDisplayObject();
addChild(talentPicture);
currentBorder = new ArtLoader.TalentUnselectedIMG();
addChild(currentBorder);
doNothing = false;
};
};
if (((talent.isRestricted()) && (MyPreloader.isDemoVersion()))){
_local3 = new ArtLoader.TalentKongIMG();
_local3.x = 5;
_local3.y = 5;
addChild(_local3);
};
}
}
}//package com.greyhound.ui.menus
Section 530
//ChooseTalentPanel (com.greyhound.ui.menus.ChooseTalentPanel)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.*;
import com.greyhound.tools.*;
import flash.text.*;
import com.greyhound.*;
import com.greyhound.talents.avatar.*;
import com.greyhound.talents.ranged.*;
import com.greyhound.talents.traps.*;
import com.greyhound.talents.melee.*;
import com.greyhound.common.kongregate.*;
public class ChooseTalentPanel extends Panel {
private var pointsToSpend:int;// = 0
private var finishedButton:TextButton;
private var score:int;
private var buttonsArray:Array;
private var talentPointsToSpendLabel:TextField;
private var resetButton:TextButton;
private var talentsPicked:Array;
private var avatarNameString:String;
private var finishedCallBack:Function;
private var mapVariables:IMapVariables;
public function ChooseTalentPanel(_arg1:Function, _arg2:int=0, _arg3:String=null, _arg4:IMapVariables=null){
var _local5:ChooseTalentButton;
super();
talentsPicked = new Array();
this.avatarNameString = _arg3;
this.pointsToSpend = (SavedData.getNumberOfMapsCompleted() - SavedData.getTalentsPicked());
this.mapVariables = _arg4;
this.score = _arg2;
if (((!((_arg4 == null))) && (!(SavedData.isMapCleared(_arg4.getUniqueID()))))){
pointsToSpend++;
};
this.finishedCallBack = _arg1;
addChild(new ArtLoader.TalentTreeIMG());
finishedButton = new TextButton("Finished", finished, null, new ArtLoader.FinishedTalentsIMG());
finishedButton.opaqueBackground = true;
addChild(finishedButton);
finishedButton.blendMode = BlendMode.NORMAL;
finishedButton.x = 350;
finishedButton.y = ((500 - finishedButton.height) - Panel.PANEL_BORDER_INDENT);
finishedButton.setEnabled((pointsToSpend == 0));
resetButton = new TextButton("Reset", resetTalents, null, new ArtLoader.FinishedTalentsIMG());
resetButton.opaqueBackground = true;
addChild(resetButton);
resetButton.blendMode = BlendMode.NORMAL;
resetButton.x = 500;
resetButton.y = finishedButton.y;
resetButton.setEnabled((((pointsToSpend > 0)) || ((((SavedData.getNumberOfMapsCompleted() == 9)) && (!((_arg4 == null)))))));
new ToolTip("You can only reset your talents when you earn a new talent point or you clear a map again after beating all 9 maps.", resetButton);
talentPointsToSpendLabel = TextFieldFactory.createText(("Points Left:" + pointsToSpend));
addChild(talentPointsToSpendLabel);
talentPointsToSpendLabel.x = 360;
talentPointsToSpendLabel.y = ((finishedButton.y - talentPointsToSpendLabel.height) - Panel.PANEL_BORDER_INDENT);
_local5 = new ChooseTalentButton(new StrongerGoblinShields(), selectionMade);
addChild(_local5);
_local5.x = 74;
_local5.y = 109;
_local5 = new ChooseTalentButton(new WhereIsTheBeef(), selectionMade);
addChild(_local5);
_local5.x = 112;
_local5.y = 109;
_local5 = new ChooseTalentButton(new Sucky(), selectionMade);
addChild(_local5);
_local5.x = 150;
_local5.y = 109;
_local5 = new ChooseTalentButton(new FasterReload(), selectionMade);
addChild(_local5);
_local5.x = 208;
_local5.y = 109;
_local5 = new ChooseTalentButton(new SwiftWings(), selectionMade);
addChild(_local5);
_local5.x = 246;
_local5.y = 109;
_local5 = new ChooseTalentButton(new FanTheCloud(), selectionMade);
addChild(_local5);
_local5.x = 284;
_local5.y = 109;
_local5 = new ChooseTalentButton(new SharperSpikes(), selectionMade);
addChild(_local5);
_local5.x = 382;
_local5.y = 109;
_local5 = new ChooseTalentButton(new DeeperPits(), selectionMade);
addChild(_local5);
_local5.x = 420;
_local5.y = 109;
_local5 = new ChooseTalentButton(new HeavierRock(), selectionMade);
addChild(_local5);
_local5.x = 458;
_local5.y = 109;
_local5 = new ChooseTalentButton(new StrongerBetterFaster(), selectionMade);
addChild(_local5);
_local5.x = 518;
_local5.y = 109;
_local5 = new ChooseTalentButton(new SafetyInNumbers(), selectionMade);
addChild(_local5);
_local5.x = 74;
_local5.y = 169;
_local5 = new ChooseTalentButton(new RunningOfTheBulls(), selectionMade);
addChild(_local5);
_local5.x = 112;
_local5.y = 169;
_local5 = new ChooseTalentButton(new FromDeathComesLife(), selectionMade);
addChild(_local5);
_local5.x = 150;
_local5.y = 169;
_local5 = new ChooseTalentButton(new MoreArrows(), selectionMade);
addChild(_local5);
_local5.x = 208;
_local5.y = 169;
_local5 = new ChooseTalentButton(new PotentVenom(), selectionMade);
addChild(_local5);
_local5.x = 246;
_local5.y = 169;
_local5 = new ChooseTalentButton(new ExtraSpikeTraps(), selectionMade);
addChild(_local5);
_local5.x = 382;
_local5.y = 169;
_local5 = new ChooseTalentButton(new EvenDeeperPits(), selectionMade);
addChild(_local5);
_local5.x = 420;
_local5.y = 169;
_local5 = new ChooseTalentButton(new WideLoad(), selectionMade);
addChild(_local5);
_local5.x = 458;
_local5.y = 169;
_local5 = new ChooseTalentButton(new StrongererBettererFasterer(), selectionMade);
addChild(_local5);
_local5.x = 518;
_local5.y = 169;
_local5 = new ChooseTalentButton(new WatchAndLearn(), selectionMade);
addChild(_local5);
_local5.x = 556;
_local5.y = 169;
_local5 = new ChooseTalentButton(new Fragmentation(), selectionMade);
addChild(_local5);
_local5.x = 74;
_local5.y = 229;
_local5 = new ChooseTalentButton(new RazorSharp(), selectionMade);
addChild(_local5);
_local5.x = 112;
_local5.y = 229;
_local5 = new ChooseTalentButton(new Big(), selectionMade);
addChild(_local5);
_local5.x = 150;
_local5.y = 229;
_local5 = new ChooseTalentButton(new AnimalHusbandry(), selectionMade);
addChild(_local5);
_local5.x = 208;
_local5.y = 229;
_local5 = new ChooseTalentButton(new PackHunting(), selectionMade);
addChild(_local5);
_local5.x = 246;
_local5.y = 229;
_local5 = new ChooseTalentButton(new EtherealMinions(), selectionMade);
addChild(_local5);
_local5.x = 284;
_local5.y = 229;
_local5 = new ChooseTalentButton(new MasterOfMagic(), selectionMade);
addChild(_local5);
_local5.x = 322;
_local5.y = 229;
_local5 = new ChooseTalentButton(new FastGears(), selectionMade);
addChild(_local5);
_local5.x = 382;
_local5.y = 229;
_local5 = new ChooseTalentButton(new BottomlessPit(), selectionMade);
addChild(_local5);
_local5.x = 420;
_local5.y = 229;
_local5 = new ChooseTalentButton(new PingPong(), selectionMade);
addChild(_local5);
_local5.x = 458;
_local5.y = 229;
_local5 = new ChooseTalentButton(new StrongestBestFastest(), selectionMade);
addChild(_local5);
_local5.x = 518;
_local5.y = 229;
_local5 = new ChooseTalentButton(new MoreItems(), selectionMade);
addChild(_local5);
_local5.x = 556;
_local5.y = 229;
_local5 = new ChooseTalentButton(new KeepOnGoing(), selectionMade);
addChild(_local5);
_local5.x = 594;
_local5.y = 229;
_local5 = new ChooseTalentButton(new ThickScales(), selectionMade);
addChild(_local5);
_local5.x = 112;
_local5.y = 289;
_local5 = new ChooseTalentButton(new AcidForBreath(), selectionMade);
addChild(_local5);
_local5.x = 246;
_local5.y = 289;
_local5 = new ChooseTalentButton(new EyeFromAnEye(), selectionMade);
addChild(_local5);
_local5.x = 284;
_local5.y = 289;
_local5 = new ChooseTalentButton(new MaimTrapMastery(), selectionMade);
addChild(_local5);
_local5.x = 382;
_local5.y = 289;
switch (SavedData.getAvatarType()){
case GameSave.DEATH_KNIGHT:
_local5 = new ChooseTalentButton(new DeathComesSwiftly(), selectionMade);
break;
case GameSave.CHAOS_RANGER:
_local5 = new ChooseTalentButton(new ThickEnoughToWalkOn(), selectionMade);
break;
case GameSave.EVIL_WIZARD:
_local5 = new ChooseTalentButton(new BeyondTheGrave(), selectionMade);
break;
default:
trace(("Need to add unique trap for class type:" + SavedData.getAvatarType()));
};
addChild(_local5);
_local5.x = 420;
_local5.y = 289;
_local5 = new ChooseTalentButton(new BackInBlack(), selectionMade);
addChild(_local5);
_local5.x = 518;
_local5.y = 289;
_local5 = new ChooseTalentButton(new BetterItems(), selectionMade);
addChild(_local5);
_local5.x = 556;
_local5.y = 289;
_local5 = new ChooseTalentButton(new Alchemy(), selectionMade);
addChild(_local5);
_local5.x = 594;
_local5.y = 289;
updateButtons();
}
private function validateName(_arg1:String):Boolean{
if (_arg1.length > 15){
return (false);
};
var _local2:int;
while (_local2 < _arg1.length) {
if (!validateCharacter(_arg1.charCodeAt(_local2))){
return (false);
};
_local2++;
};
return (true);
}
private function cleanupTalents():int{
return (0);
}
private function gotoMainMenu(_arg1:Event):void{
finishedCallBack();
}
private function playAtKong(_arg1:Event):void{
Main.goToKongregateDungeonDefender(stage);
}
private function selectionMade(_arg1:Event):void{
var _local2:ChooseTalentButton;
if (pointsToSpend > 0){
pointsToSpend--;
_local2 = (_arg1.currentTarget as ChooseTalentButton);
talentsPicked.push(Tools.getClassFor(_local2.getTalent()));
finishedButton.setEnabled((pointsToSpend == 0));
talentPointsToSpendLabel.text = ("Points Left:" + pointsToSpend);
updateButtons();
} else {
trace("Was able to spend a point when no points were left available");
};
}
private function highscoreCallback(_arg1:Boolean):void{
if (_arg1){
submitKongregateScore();
} else {
finishedCallBack();
};
}
private function submitScore(_arg1:String):void{
var _local2:YesNoPanel;
if (!validateName(_arg1)){
clearChildren();
_local2 = new YesNoPanel("The name you entered is invalid. Do you wish to record your score(letters and numbers only, max length 15)?", highscoreCallback);
_local2.x = (350 - (_local2.width / 2));
_local2.y = (250 - (_local2.height / 2));
addChild(_local2);
} else {
mapVariables.reportHighScore(_arg1, avatarNameString, score);
finishedCallBack();
};
}
private function updateButtons():void{
var _local2:DisplayObject;
var _local1:int;
while (_local1 < numChildren) {
_local2 = getChildAt(_local1);
if ((_local2 is ChooseTalentButton)){
(_local2 as ChooseTalentButton).updateButton(talentsPicked, pointsToSpend);
};
_local1++;
};
}
private function finished(_arg1:Event):void{
var _local2:Object;
var _local3:CompositeButton;
var _local4:DisplayObject;
var _local5:YesNoPanel;
if (pointsToSpend == 0){
if (talentsPicked.length > 0){
for each (_local2 in talentsPicked) {
SavedData.addTalenPoint((_local2 as Class));
};
SavedData.setMapCleared(mapVariables.getUniqueID());
SavedData.dumpSave();
if ((((mapVariables.getUniqueID() == TakeTheTownMapVariables.MAP_ID)) && (MyPreloader.isKongregate()))){
APILoader.submitStat((SavedData.getDifficultyName() + KongregateStatistics.DIFFICULTY_SUFFIX), 1);
};
};
clearChildren();
if (((!((mapVariables == null))) && (!((SavedData.getDifficulty() == GameSave.EASY))))){
addChild(new MyPreloader.TitleScreenIMG());
if (!MyPreloader.isKongregate()){
_local3 = new CompositeButton(playAtKong, [TextFieldFactory.createText("Submit High Scores "), new ArtLoader.KongLogoIMG(), TextFieldFactory.createText(" click to go there!")]);
_local3.x = 200;
_local3.y = 250;
addChild(_local3);
_local4 = TextFieldFactory.createTextButton("Back To Menu", gotoMainMenu);
_local4.x = 200;
_local4.y = 300;
addChild(_local4);
} else {
_local5 = new YesNoPanel((("Do you want to submit your score of " + score) + " to the scoreboards?"), highscoreCallback);
_local5.x = (350 - (_local5.width / 2));
_local5.y = (250 - (_local5.height / 2));
addChild(_local5);
};
} else {
finishedCallBack();
};
} else {
trace("Was able to click finished without spending all points");
};
}
private function resetTalents(_arg1:Event):void{
SavedData.clearAllTalents();
pointsToSpend = (SavedData.getNumberOfMapsCompleted() + 1);
talentPointsToSpendLabel.text = ("Points Left:" + pointsToSpend);
resetButton.setEnabled(false);
talentsPicked = [];
finishedButton.setEnabled(false);
updateButtons();
}
private function validateCharacter(_arg1:Number):Boolean{
if ((((((_arg1 >= 97)) && ((_arg1 <= 122)))) || ((((_arg1 >= 65)) && ((_arg1 <= 90)))))){
return (true);
};
return (false);
}
private function submitKongregateScore():void{
mapVariables.reportHighScore(null, avatarNameString, score);
finishedCallBack();
}
}
}//package com.greyhound.ui.menus
Section 531
//Credits (com.greyhound.ui.menus.Credits)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.utils.*;
import com.greyhound.tools.*;
import flash.text.*;
import com.greyhound.ui.floaters.*;
import com.greyhound.*;
public class Credits extends Sprite {
private var timer:Timer;
private var callback:Function;
private var texts:Array;
public function Credits(_arg1:Function){
var _local3:DisplayObject;
super();
this.callback = _arg1;
addChild(new MyPreloader.TitleScreenIMG());
var _local2:TextButton = new TextButton("Back", back);
addChild(_local2);
_local3 = new ArtLoader.ScrollIMG();
_local3.x = 250;
_local3.y = 50;
_local3.height = 400;
_local3.width = 241;
addChild(_local3);
_local2.x = 300;
_local2.y = 450;
texts = ["Credits", "Contact\ncontact@greyhoundgames.com", "Design\nTom Delorenzi", "Coding\nTom Delorenzi", "Art\nwww.doublesidesecond.com", "Music\nwww.shockwave-sound.com", "Ideas and Guidance", "Adam Schroeder\n(FlashGameLicense)", "Undefined(Protector)", "Patience and Love\nLeslie Delorenzi", "Motiviation To Do This\nDesktopTowerDefense", "Other Input", "James Delorenzi", "John Watson", "Charles Jones", "Bob Ellis", "Mike Horton", "William", "Slugger, Shooter and Anna", "", "", "", "", "", "", "", "", "Wait for it.....", "Dungeon Keeper!!", "upupdowndownleftrightleftrightbaselectstart", "There are no cheat codes in this game", "The cake is a lie", "This is the last credit"];
var _local4:DisplayObject = new ArtLoader.FGLLogoIMG();
_local4.x = 0;
_local4.y = 300;
_local4.addEventListener(MouseEvent.CLICK, fglClick);
addChild(_local4);
}
public function start():void{
timer = new Timer(3000);
timer.addEventListener(TimerEvent.TIMER, tick);
timer.start();
tick(null);
}
private function back(_arg1:Event):void{
timer.stop();
callback();
}
private function fglClick(_arg1:Event):void{
Tools.openWindow("http://www.flashgamelicense.com/game_referral.php?game_id=911");
}
private function tick(_arg1:Event):void{
var _local2:String;
var _local3:TextField;
if (texts.length > 0){
_local2 = (texts.shift() as String);
_local3 = TextFieldFactory.createText(_local2);
_local3.wordWrap = true;
_local3.width = 200;
new Floater(stage, (360 - (_local3.textWidth / 2)), 350, _local3, 40, 10000);
};
}
}
}//package com.greyhound.ui.menus
Section 532
//Menu (com.greyhound.ui.menus.Menu)
package com.greyhound.ui.menus {
import flash.display.*;
import com.greyhound.ui.*;
import flash.geom.*;
public class Menu extends Sprite {
private var container:DisplayObjectContainer;
private var menuItems:Array;
private var titleDisplayObject:DisplayObject;
private var background:DisplayObject;
private var parentMenu:Menu;
private var autoSize:Boolean;
private var menuOffset:Point;
public function Menu(_arg1:DisplayObject=null){
this.parentMenu = parentMenu;
menuItems = new Array();
if (_arg1 != null){
this.titleDisplayObject = _arg1;
addChild(_arg1);
};
menuOffset = new Point(0, 50);
doLayout();
}
public function show():void{
}
public function setMenuOffset(_arg1:Point):void{
menuOffset = _arg1;
doLayout();
}
private function doLayout():void{
var _local1:int;
var _local2:int = menuOffset.y;
if (titleDisplayObject != null){
titleDisplayObject.x = menuOffset.x;
titleDisplayObject.y = _local2;
_local2 = ((titleDisplayObject.y + titleDisplayObject.height) + Panel.PANEL_BORDER_INDENT);
_local1 = ((titleDisplayObject.width + menuOffset.x) + 20);
};
var _local3:int;
while (_local3 < menuItems.length) {
(menuItems[_local3] as MenuItem).x = menuOffset.x;
(menuItems[_local3] as MenuItem).y = _local2;
_local2 = (_local2 + ((menuItems[_local3] as MenuItem).height + Panel.PANEL_BORDER_INDENT));
_local1 = Math.max((((menuItems[_local3] as MenuItem).width + menuOffset.x) + 20), _local1);
_local3++;
};
if (((!((background == null))) && (autoSize))){
background.height = (_local2 + 25);
background.width = _local1;
};
}
public function setBackground(_arg1:DisplayObject, _arg2:Boolean=true):void{
this.autoSize = _arg2;
addChildAt(_arg1, 0);
background = _arg1;
}
public function addMenuItem(_arg1:MenuItem):void{
addChild(_arg1);
menuItems.push(_arg1);
_arg1.setMenu(this);
doLayout();
}
public function pushMenu(_arg1:Menu):void{
container.removeChild(this);
_arg1.parentMenu = this;
_arg1.container = container;
_arg1.x = x;
_arg1.y = y;
container.addChild(_arg1);
_arg1.show();
}
public function popMenu():void{
if (parentMenu != null){
container.removeChild(this);
container.addChild(parentMenu);
parentMenu.show();
parentMenu = null;
container = null;
};
}
public function setContainer(_arg1:DisplayObjectContainer):void{
this.container = _arg1;
}
}
}//package com.greyhound.ui.menus
Section 533
//MenuItem (com.greyhound.ui.menus.MenuItem)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
public class MenuItem extends Sprite {
private var menu:Menu;
public function MenuItem(_arg1:DisplayObject, _arg2:Function){
useHandCursor = true;
addChild(_arg1);
addEventListener(MouseEvent.CLICK, _arg2);
}
public function setMenu(_arg1:Menu):void{
this.menu = _arg1;
}
public function getMenu():Menu{
return (menu);
}
}
}//package com.greyhound.ui.menus
Section 534
//PopMenuItem (com.greyhound.ui.menus.PopMenuItem)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
public class PopMenuItem extends MenuItem {
public function PopMenuItem(_arg1:DisplayObject, _arg2:DisplayObject=null){
super(_arg1, pop);
}
private function pop(_arg1:Event):void{
getMenu().popMenu();
}
}
}//package com.greyhound.ui.menus
Section 535
//SetupGamePanel (com.greyhound.ui.menus.SetupGamePanel)
package com.greyhound.ui.menus {
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
public class SetupGamePanel extends Panel {
private var main:Main;
private var difficulty:int;
public function SetupGamePanel(_arg1:Main){
this.main = _arg1;
if (!SavedData.activeGameExists()){
addChild(new ChooseDifficultyMenu(finishedChoosingDifficulty));
} else {
addChild(new ChooseMapPanel(finishedChoosingMap, _arg1));
};
}
private function finishedChoosingDifficulty(_arg1:int):void{
this.difficulty = _arg1;
clearChildren();
addChild(new ChooseAvatarPanel(finishedChoosingAvatar));
}
private function finishedChoosingMap(_arg1:IMapVariables):void{
if (_arg1 == null){
main.showMainMenu();
} else {
main.beginMap(_arg1);
};
}
private function finishedChoosingAvatar(_arg1:Avatar):void{
SavedData.saveNewGame(GameSave.createGameSave(_arg1, difficulty));
clearChildren();
addChild(new ChooseMapPanel(finishedChoosingMap, main));
}
}
}//package com.greyhound.ui.menus
Section 536
//SubMenuMenuItem (com.greyhound.ui.menus.SubMenuMenuItem)
package com.greyhound.ui.menus {
import flash.display.*;
import flash.events.*;
public class SubMenuMenuItem extends MenuItem {
private var subMenu:Menu;
public function SubMenuMenuItem(_arg1:Menu, _arg2:DisplayObject){
super(_arg2, pushMenu);
this.subMenu = _arg1;
}
private function pushMenu(_arg1:MouseEvent):void{
getMenu().pushMenu(subMenu);
}
}
}//package com.greyhound.ui.menus
Section 537
//Animateable (com.greyhound.ui.Animateable)
package com.greyhound.ui {
import flash.display.*;
public class Animateable extends Sprite {
private var actionGraphic:DisplayObject;
private var actionTotalFrames:int;
private var actionFrameCounter:int;
private var idleGraphic:DisplayObject;
public function Animateable(_arg1:DisplayObject):void{
this.idleGraphic = _arg1;
addChild(_arg1);
}
public function resumeIdle():void{
if (actionGraphic != null){
removeChild(actionGraphic);
actionGraphic = null;
};
if ((idleGraphic is MovieClip)){
(idleGraphic as MovieClip).play();
};
}
public function startAction(_arg1:DisplayObject):void{
if (actionGraphic != null){
removeChild(actionGraphic);
};
actionGraphic = _arg1;
addChild(actionGraphic);
actionGraphic.y = -(_arg1.height);
actionGraphic.x = ((idleGraphic.width - _arg1.width) * 0.5);
if ((idleGraphic is MovieClip)){
(idleGraphic as MovieClip).stop();
};
}
public function isIdle():Boolean{
return ((actionGraphic == null));
}
}
}//package com.greyhound.ui
Section 538
//Border (com.greyhound.ui.Border)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
public class Border extends Shape {
private var color:uint;
private var roundedBorder:Boolean;
private var borderWidth:int;
private var fill:Boolean;
public static const STANDERED_CORNER_ROUNDING:int = 10;
public function Border(_arg1:uint=0, _arg2:int=2, _arg3:Boolean=false, _arg4:Boolean=false){
this.color = _arg1;
this.borderWidth = _arg2;
this.roundedBorder = _arg3;
addEventListener(Event.ADDED_TO_STAGE, setupBorder);
this.fill = _arg4;
}
private function setupBorder(_arg1:Event):void{
var _local2:Rectangle = parent.getBounds(parent);
graphics.clear();
if (fill){
graphics.beginFill(color);
} else {
graphics.lineStyle(borderWidth, color);
};
var _local3:int;
if ((borderWidth % 2) == 0){
_local3 = borderWidth;
} else {
_local3 = borderWidth;
};
if (roundedBorder){
graphics.drawRoundRect(1, 1, (_local2.width - (_local3 * 2)), (_local2.height - (_local3 * 2)), STANDERED_CORNER_ROUNDING, STANDERED_CORNER_ROUNDING);
} else {
graphics.drawRect(1, 1, (_local2.width - (_local3 * 2)), (_local2.height - (_local3 * 2)));
};
if (fill){
graphics.endFill();
};
}
public function setFill(_arg1:Boolean):void{
fill = _arg1;
}
}
}//package com.greyhound.ui
Section 539
//ButtonGroup (com.greyhound.ui.ButtonGroup)
package com.greyhound.ui {
public class ButtonGroup {
private var buttons:Array;
public function ButtonGroup(){
buttons = new Array();
}
public function addButton(_arg1:SelectableGameButton):void{
if (buttons.indexOf(_arg1) == -1){
buttons.push(_arg1);
_arg1.setButtonGroup(this);
} else {
trace("Tried to add a button twice");
};
}
public function setSelectedButton(_arg1:SelectableGameButton):void{
var _local2:Object;
for each (_local2 in buttons) {
if (_local2 != _arg1){
(_local2 as SelectableGameButton).setSelected(false);
};
};
_arg1.setSelected(true);
}
}
}//package com.greyhound.ui
Section 540
//CompositeButton (com.greyhound.ui.CompositeButton)
package com.greyhound.ui {
import flash.events.*;
import flash.display.*;
public class CompositeButton extends Sprite {
public function CompositeButton(_arg1:Function=null, _arg2:Array=null, _arg3:Boolean=true){
var _local4:int;
var _local5:int;
super();
buttonMode = true;
mouseChildren = false;
if (_arg1 != null){
addEventListener(MouseEvent.CLICK, _arg1);
};
if (_arg2 != null){
_local4 = 0;
_local5 = 0;
while (_local5 < _arg2.length) {
if (_arg3){
_arg2[_local5].x = _local4;
_local4 = (_local4 + (_arg2[_local5].width + 4));
} else {
_arg2[_local5].y = _local4;
_local4 = (_local4 + (_arg2[_local5].height + 4));
};
addChild(_arg2[_local5]);
_local5++;
};
};
}
}
}//package com.greyhound.ui
Section 541
//CompositeSprite (com.greyhound.ui.CompositeSprite)
package com.greyhound.ui {
import flash.display.*;
public class CompositeSprite extends Sprite implements IRefreshable {
public function CompositeSprite(_arg1:Array, _arg2:Boolean=true, _arg3:Boolean=true){
var _local4:int;
var _local5:int;
var _local6:int;
while (_local6 < _arg1.length) {
if (_arg2){
_local5 = Math.max(_local5, _arg1[_local6].height);
_arg1[_local6].x = _local4;
_local4 = (_local4 + (_arg1[_local6].width + 4));
} else {
_local5 = Math.max(_local5, _arg1[_local6].width);
_arg1[_local6].y = _local4;
_local4 = (_local4 + (_arg1[_local6].height + 4));
};
addChild(_arg1[_local6]);
_local6++;
};
if (_arg3){
_local6 = 0;
while (_local6 < _arg1.length) {
if (_arg2){
_arg1[_local6].y = ((_local5 - _arg1[_local6].height) * 0.5);
} else {
_arg1[_local6].x = ((_local5 - _arg1[_local6].width) * 0.5);
};
_local6++;
};
};
}
public function refresh():void{
var _local1:int;
while (_local1 < numChildren) {
if ((getChildAt(_local1) is IRefreshable)){
(getChildAt(_local1) as IRefreshable).refresh();
};
_local1++;
};
}
}
}//package com.greyhound.ui
Section 542
//DisplayableInventoryList (com.greyhound.ui.DisplayableInventoryList)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.base.*;
import com.greyhound.tools.*;
import fl.containers.*;
public class DisplayableInventoryList extends ScrollPane implements IInventoryChangeListener {
private var listContainer:Sprite;
private var dataList:Array;
private var gameObject:GameObject;
public function DisplayableInventoryList(_arg1:GameObject){
var _local3:Object;
super();
this.gameObject = _arg1;
_arg1.addInventoryChangeListener(this);
listContainer = new Sprite();
source = listContainer;
dataList = new Array();
var _local2:ScrollPane_upSkin = new ScrollPane_upSkin();
_local2.alpha = 0;
setStyle("upSkin", _local2);
setStyle("upSkin", ArtLoader.EquipmentListBkgIMG);
setStyle("downArrowUpSkin", ArtLoader.ScrollPaneDownIMG);
setStyle("downArrowDownSkin", ArtLoader.ScrollPaneDownIMG);
setStyle("downArrowOverSkin", ArtLoader.ScrollPaneDownIMG);
setStyle("upArrowUpSkin", ArtLoader.ScrollPaneUpIMG);
setStyle("upArrowDownSkin", ArtLoader.ScrollPaneUpIMG);
setStyle("upArrowOverSkin", ArtLoader.ScrollPaneUpIMG);
setStyle("thumbUpSkin", ArtLoader.ScrollPaneSliderIMG);
setStyle("thumbDownSkin", ArtLoader.ScrollPaneSliderIMG);
setStyle("thumbOverSkin", ArtLoader.ScrollPaneSliderIMG);
setStyle("trackUpSkin", ArtLoader.ScrollPaneTrackIMG);
setStyle("trackDownSkin", ArtLoader.ScrollPaneTrackIMG);
setStyle("trackOverSkin", ArtLoader.ScrollPaneTrackIMG);
for each (_local3 in _arg1.getInventory()) {
if ((_local3 is DisplayableGameObject)){
addToList((_local3 as DisplayableGameObject));
};
};
addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
}
public function objectRemoved(_arg1:GameObject):void{
if ((_arg1 is DisplayableGameObject)){
removeFromList((_arg1 as DisplayableGameObject));
};
}
private function removeFromList(_arg1:DisplayableGameObject):void{
var _local3:IListModelItem;
var _local2:int;
while (_local2 < dataList.length) {
_local3 = (dataList[_local2] as IListModelItem);
if (_local3.getDataObject() == _arg1){
dataList.splice(_local2, 1);
listContainer.removeChild(_local3.getSprite());
layoutList();
return;
};
_local2++;
};
}
private function removedFromStage(_arg1:Event):void{
gameObject.removeInventoryChangeListener(this);
}
private function layoutList():void{
var _local3:IListModelItem;
var _local1:int = Panel.PANEL_BORDER_INDENT;
var _local2:int;
while (_local2 < dataList.length) {
_local3 = (dataList[_local2] as IListModelItem);
_local3.getSprite().x = Panel.PANEL_BORDER_INDENT;
_local3.getSprite().y = _local1;
_local1 = (_local1 + _local3.getSprite().height);
_local2++;
};
update();
}
public function objectAdded(_arg1:GameObject):void{
if ((_arg1 is DisplayableGameObject)){
addToList((_arg1 as DisplayableGameObject));
};
}
private function addToList(_arg1:DisplayableGameObject):void{
var _local2:IListModelItem = new DisplayableListModelItem(_arg1);
dataList.push(_local2);
listContainer.addChild(_local2.getSprite());
layoutList();
}
}
}//package com.greyhound.ui
Section 543
//DisplayableListModelItem (com.greyhound.ui.DisplayableListModelItem)
package com.greyhound.ui {
import flash.display.*;
import com.greyhound.base.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import flash.text.*;
public class DisplayableListModelItem implements IListModelItem {
private var gameObject:DisplayableGameObject;
private var sprite:Sprite;
public function DisplayableListModelItem(_arg1:DisplayableGameObject){
this.gameObject = _arg1;
}
public function getSprite():Sprite{
var _local1:DisplayObject;
var _local2:TextField;
if (sprite == null){
_local1 = gameObject.createDisplayObject();
sprite = new Sprite();
sprite.addChild(_local1);
if ((gameObject is ISelectionDisplayProvider)){
_local2 = TextFieldFactory.createText((gameObject as ISelectionDisplayProvider).getDisplayText(), 0xFFFFFF, 12);
_local2.x = (_local1.width + Panel.PANEL_BORDER_INDENT);
sprite.addChild(_local2);
};
};
return (sprite);
}
public function getDataObject():Object{
return (gameObject);
}
}
}//package com.greyhound.ui
Section 544
//DraggableList (com.greyhound.ui.DraggableList)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import fl.containers.*;
public class DraggableList extends ScrollPane {
private var listContainer:Sprite;
private var dropTargetApprover:Function;
private var dataList:Array;
private var spriteBeingDragged:Sprite;
public function DraggableList(){
dataList = new Array();
listContainer = new Sprite();
source = listContainer;
listContainer.doubleClickEnabled = true;
listContainer.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClick);
_horizontalScrollPolicy = "off";
}
private function layoutList():void{
var _local3:IListModelItem;
var _local1:int = Panel.PANEL_BORDER_INDENT;
var _local2:int;
while (_local2 < dataList.length) {
_local3 = (dataList[_local2] as IListModelItem);
if (_local3.getSprite() != spriteBeingDragged){
_local3.getSprite().x = Panel.PANEL_BORDER_INDENT;
_local3.getSprite().y = _local1;
_local1 = (_local1 + _local3.getSprite().height);
};
_local2++;
};
update();
}
public function add(_arg1:IListModelItem, _arg2:int=-1):void{
if (getIndexOfModel(_arg1.getDataObject()) != -1){
trace("Tried to add something to the DraggableList more then once");
} else {
if ((((_arg2 > dataList.length)) || ((_arg2 < -1)))){
trace(("Invalid index to add at:" + _arg2));
} else {
_arg1.getSprite().addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
_arg1.getSprite().addEventListener(MouseEvent.MOUSE_UP, dragStop);
_arg1.getSprite().doubleClickEnabled = true;
if ((((_arg2 == -1)) || ((_arg2 == dataList.length)))){
dataList.push(_arg1);
} else {
dataList.splice(_arg2, 0, _arg1);
};
listContainer.addChild(_arg1.getSprite());
layoutList();
};
};
}
public function remove(_arg1:Object):void{
var _local3:IListModelItem;
var _local2:int = dataList.indexOf(getIndexOfModel(_arg1));
if (_local2 == -1){
trace("Tried to remove something from the DraggableList that was not there");
} else {
_local3 = dataList[_local2];
dataList.splice(_local2, 1);
listContainer.removeChild(_local3.getSprite());
_local3.getSprite().removeEventListener(MouseEvent.MOUSE_DOWN, dragStart);
_local3.getSprite().removeEventListener(MouseEvent.MOUSE_UP, dragStop);
layoutList();
};
}
public function clear():void{
while (dataList.length > 0) {
removeAt(0);
};
}
private function dragStart(_arg1:MouseEvent):void{
var _local2:DisplayObject = (_arg1.target as DisplayObject);
while (((!((_local2 is Sprite))) || ((getIndexOfSprite((_local2 as Sprite)) == -1)))) {
_local2 = _local2.parent;
};
spriteBeingDragged = (_local2 as Sprite);
var _local3:int = spriteBeingDragged.getBounds(parent).x;
var _local4:int = spriteBeingDragged.getBounds(parent).y;
parent.addChild(_local2);
spriteBeingDragged.startDrag();
spriteBeingDragged.x = _local3;
spriteBeingDragged.y = _local4;
}
public function setListModelItems(_arg1:Array):void{
var _local2:IListModelItem;
var _local4:Object;
var _local5:Object;
var _local6:Boolean;
var _local7:int;
var _local3:Array = new Array();
for each (_local4 in _arg1) {
_local2 = (_local4 as IListModelItem);
_local6 = false;
_local7 = 0;
while (_local7 < dataList.length) {
if ((dataList[_local7] as IListModelItem).getDataObject() == _local2.getDataObject()){
_local3.push(dataList[_local7]);
dataList.splice(_local7, 1);
_local7--;
_local6 = true;
};
_local7++;
};
if (!_local6){
_local3.push(_local2);
_local2.getSprite().addEventListener(MouseEvent.MOUSE_DOWN, dragStart);
_local2.getSprite().addEventListener(MouseEvent.MOUSE_UP, dragStop);
listContainer.addChild(_local2.getSprite());
};
};
for each (_local5 in dataList) {
_local2 = (_local5 as IListModelItem);
listContainer.removeChild(_local2.getSprite());
_local2.getSprite().removeEventListener(MouseEvent.MOUSE_DOWN, dragStart);
_local2.getSprite().removeEventListener(MouseEvent.MOUSE_UP, dragStop);
};
dataList = _local3;
layoutList();
}
private function getIndexOfModel(_arg1:Object):int{
var _local2:int;
while (_local2 < dataList.length) {
if ((dataList[_local2] as IListModelItem).getDataObject() == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
public function removeAt(_arg1:int):void{
remove((dataList[_arg1] as IListModelItem).getDataObject());
}
protected function handleDoubleClickOnModel(_arg1:Object):void{
}
private function dragStop(_arg1:MouseEvent):void{
var _local2:int;
var _local3:DisplayObject;
var _local4:IListModelItem;
var _local5:IDropTargetApprover;
if (spriteBeingDragged == null){
trace("Null sprite being dragged...");
} else {
spriteBeingDragged.stopDrag();
_local2 = getIndexOfSprite(spriteBeingDragged);
if (_local2 != -1){
_local3 = spriteBeingDragged.dropTarget;
_local4 = (dataList[_local2] as IListModelItem);
while (_local3 != null) {
if (((!((_local3 == this))) && ((_local3 is IDropTargetApprover)))){
_local5 = (_local3 as IDropTargetApprover);
if (_local5.validateDrop(_local4.getDataObject())){
dataList.splice(_local2, 1);
spriteBeingDragged.removeEventListener(MouseEvent.MOUSE_DOWN, dragStart);
spriteBeingDragged.removeEventListener(MouseEvent.MOUSE_UP, dragStop);
spriteBeingDragged.parent.removeChild(spriteBeingDragged);
layoutList();
_local5.performDrop(_local4.getDataObject());
spriteBeingDragged = null;
break;
};
};
_local3 = _local3.parent;
};
if (_local3 == null){
listContainer.addChild(spriteBeingDragged);
spriteBeingDragged = null;
layoutList();
};
} else {
trace("Couldnt find the sprite we just dropped");
};
};
}
private function doubleClick(_arg1:MouseEvent):void{
var _local4:Object;
var _local2:Boolean;
var _local3:DisplayObject = (_arg1.target as DisplayObject);
if (_local3 != null){
_local3 = _local3.parent;
for each (_local4 in dataList) {
if ((_local4 as IListModelItem).getSprite() == _local3){
_local2 = true;
handleDoubleClickOnModel((_local4 as IListModelItem).getDataObject());
};
};
if (!_local2){
trace("Double click item not found in list");
};
} else {
trace("Double click was on null");
};
}
private function getIndexOfSprite(_arg1:Sprite):int{
var _local2:int;
while (_local2 < dataList.length) {
if ((dataList[_local2] as IListModelItem).getSprite() == _arg1){
return (_local2);
};
_local2++;
};
return (-1);
}
}
}//package com.greyhound.ui
Section 545
//Drawing (com.greyhound.ui.Drawing)
package com.greyhound.ui {
import flash.display.*;
import flash.geom.*;
public class Drawing {
public static function drawWedge(_arg1:Graphics, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number=-1):void{
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
var _local19:int;
_arg1.moveTo(_arg2, _arg3);
if (_arg7 == -1){
_arg7 = _arg6;
};
if (Math.abs(_arg5) > 360){
_arg5 = 360;
};
_local12 = Math.ceil((Math.abs(_arg5) / 45));
_local8 = (_arg5 / _local12);
_local9 = (-((_local8 / 180)) * Math.PI);
_local10 = (-((_arg4 / 180)) * Math.PI);
if (_local12 > 0){
_local13 = (_arg2 + (Math.cos(((_arg4 / 180) * Math.PI)) * _arg6));
_local14 = (_arg3 + (Math.sin(((-(_arg4) / 180) * Math.PI)) * _arg7));
_arg1.lineTo(_local13, _local14);
_local19 = 0;
while (_local19 < _local12) {
_local10 = (_local10 + _local9);
_local11 = (_local10 - (_local9 / 2));
_local15 = (_arg2 + (Math.cos(_local10) * _arg6));
_local16 = (_arg3 + (Math.sin(_local10) * _arg7));
_local17 = (_arg2 + (Math.cos(_local11) * (_arg6 / Math.cos((_local9 / 2)))));
_local18 = (_arg3 + (Math.sin(_local11) * (_arg7 / Math.cos((_local9 / 2)))));
_arg1.curveTo(_local17, _local18, _local15, _local16);
_local19++;
};
_arg1.lineTo(_arg2, _arg3);
};
}
public static function drawArc(_arg1:Graphics, _arg2:int, _arg3:int, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number=-1):Point{
var _local8:Number;
var _local9:Number;
var _local10:Number;
var _local11:Number;
var _local12:Number;
var _local13:Number;
var _local14:Number;
var _local15:Number;
var _local16:Number;
var _local17:Number;
var _local18:Number;
if (_arg7 == -1){
_arg7 = _arg4;
};
if (Math.abs(_arg5) > 360){
_arg5 = 360;
};
_local12 = Math.ceil((Math.abs(_arg5) / 45));
_local8 = (_arg5 / _local12);
_local9 = (-((_local8 / 180)) * Math.PI);
_local10 = (-((_arg6 / 180)) * Math.PI);
_local13 = (_arg2 - (Math.cos(_local10) * _arg4));
_local14 = (_arg3 - (Math.sin(_local10) * _arg7));
var _local19:int;
while (_local19 < _local12) {
_local10 = (_local10 + _local9);
_local11 = (_local10 - (_local9 / 2));
_local15 = (_local13 + (Math.cos(_local10) * _arg4));
_local16 = (_local14 + (Math.sin(_local10) * _arg7));
_local17 = (_local13 + (Math.cos(_local11) * (_arg4 / Math.cos((_local9 / 2)))));
_local18 = (_local14 + (Math.sin(_local11) * (_arg7 / Math.cos((_local9 / 2)))));
_arg1.curveTo(_local17, _local18, _local15, _local16);
_local19++;
};
return (new Point(_local15, _local16));
}
}
}//package com.greyhound.ui
Section 546
//GameButton (com.greyhound.ui.GameButton)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.tools.*;
public class GameButton extends SimpleButton {
private var buttonProvider:IButtonProvider;
private var clickCallback:Function;
private var gameButtonEnabled:Boolean;
public function GameButton(_arg1:IButtonProvider, _arg2:Function=null, _arg3:int=500){
this.buttonProvider = _arg1;
upState = _arg1.getButtonDisplayObject();
overState = upState;
downState = _arg1.getButtonDisplayObject();
downState.x = -1;
downState.y = -1;
this.clickCallback = _arg2;
hitTestState = _arg1.getButtonDisplayObject();
useHandCursor = true;
addEventListener(MouseEvent.MOUSE_DOWN, buttonClick);
var _local4:String = _arg1.getButtonToolTip();
if (_local4 != null){
new ToolTip(_local4, this, null, null, _arg3);
};
gameButtonEnabled = true;
}
private function buttonClick(_arg1:MouseEvent):void{
if (((gameButtonEnabled) && (!((clickCallback == null))))){
clickCallback(_arg1);
};
}
public function isGameButtonEnabled():Boolean{
return (gameButtonEnabled);
}
public function setEnabled(_arg1:Boolean):void{
var _local2:DisplayObject;
var _local3:Sprite;
var _local4:DisplayObject;
if (gameButtonEnabled != _arg1){
gameButtonEnabled = _arg1;
if (_arg1){
upState = buttonProvider.getButtonDisplayObject();
overState = upState;
downState = buttonProvider.getButtonDisplayObject();
downState.x = -1;
downState.y = -1;
} else {
_local2 = buttonProvider.getButtonDisplayObject();
_local3 = new Sprite();
_local3.addChild(_local2);
_local3.addChild(new GreyOut(_local2.width, _local2.height));
upState = _local3;
overState = _local3;
_local3 = new Sprite();
_local4 = new ArtLoader.NotAllowedIMG();
_local2 = buttonProvider.getButtonDisplayObject();
_local3.addChild(_local2);
_local3.addChild(new GreyOut(_local2.width, _local2.height));
_local4.width = _local2.width;
_local4.height = _local2.height;
_local3.addChild(_local4);
downState = _local3;
downState.x = -1;
downState.y = -1;
};
};
}
}
}//package com.greyhound.ui
Section 547
//GameObjectSprite (com.greyhound.ui.GameObjectSprite)
package com.greyhound.ui {
import flash.display.*;
import com.greyhound.base.*;
import flash.geom.*;
public class GameObjectSprite extends Sprite implements ISelectable, IDoubleClickable {
private var border:Border;
private var selected:Boolean;
private var gameObject:DisplayableGameObject;
private var rotate:Boolean;
private var selectable:Boolean;
public function GameObjectSprite(_arg1:DisplayableGameObject, _arg2:Boolean=true){
this.gameObject = _arg1;
this.selectable = _arg2;
border = new Border(0xFFFFFF);
selected = false;
}
public function isSelected():Boolean{
return (selected);
}
public function setAllowsDoubleClick(_arg1:Boolean):void{
doubleClickEnabled = _arg1;
}
public function handleDoubleClick():void{
gameObject.handleDoubleClick();
}
public function setSelected(_arg1:Boolean):void{
var _local2:Rectangle;
if (_arg1){
selected = true;
_local2 = getBounds(this);
border.x = _local2.x;
border.y = _local2.y;
addChild(border);
} else {
if (((selected) && (!(_arg1)))){
removeChild(border);
};
};
}
public function getDisplayableGameobject():DisplayableGameObject{
return (gameObject);
}
public function canSelect():Boolean{
return (selectable);
}
public function setSelectable(_arg1:Boolean):void{
selectable = _arg1;
}
}
}//package com.greyhound.ui
Section 548
//GreyOut (com.greyhound.ui.GreyOut)
package com.greyhound.ui {
import flash.display.*;
public class GreyOut extends Sprite {
public function GreyOut(_arg1:int, _arg2:int, _arg3:Number=0.6){
graphics.clear();
graphics.beginFill(0, 0.6);
graphics.drawRect(0, 0, _arg1, _arg2);
graphics.endFill();
}
}
}//package com.greyhound.ui
Section 549
//IButtonProvider (com.greyhound.ui.IButtonProvider)
package com.greyhound.ui {
import flash.display.*;
public interface IButtonProvider {
function getButtonDisplayObject():DisplayObject;
function getButtonToolTip():String;
}
}//package com.greyhound.ui
Section 550
//Icon (com.greyhound.ui.Icon)
package com.greyhound.ui {
import flash.display.*;
public class Icon extends Sprite {
private var displayObject:DisplayObject;
public function Icon(_arg1:DisplayObject, _arg2:uint=11184878, _arg3:Boolean=true){
displayObject = _arg1;
addChild(_arg1);
if (_arg3){
setBackgroundColor(_arg2);
};
}
public function setContents(_arg1:DisplayObject):void{
removeChild(displayObject);
addChild(_arg1);
displayObject = _arg1;
}
public function setBackgroundColor(_arg1:uint):void{
graphics.clear();
graphics.beginFill(_arg1);
graphics.drawRoundRect(0, 0, displayObject.width, displayObject.height, Border.STANDERED_CORNER_ROUNDING, Border.STANDERED_CORNER_ROUNDING);
graphics.endFill();
}
}
}//package com.greyhound.ui
Section 551
//IDoubleClickable (com.greyhound.ui.IDoubleClickable)
package com.greyhound.ui {
public interface IDoubleClickable {
function handleDoubleClick():void;
}
}//package com.greyhound.ui
Section 552
//IDropTargetApprover (com.greyhound.ui.IDropTargetApprover)
package com.greyhound.ui {
public interface IDropTargetApprover {
function performDrop(_arg1:Object):void;
function validateDrop(_arg1:Object):Boolean;
}
}//package com.greyhound.ui
Section 553
//IListModelItem (com.greyhound.ui.IListModelItem)
package com.greyhound.ui {
import flash.display.*;
public interface IListModelItem {
function getSprite():Sprite;
function getDataObject():Object;
}
}//package com.greyhound.ui
Section 554
//ILockable (com.greyhound.ui.ILockable)
package com.greyhound.ui {
public interface ILockable {
function addLockListener(_arg1:ILockListener):void;
function removeLockListener(_arg1:ILockListener):void;
function isLocked():Boolean;
}
}//package com.greyhound.ui
Section 555
//ILockableUI (com.greyhound.ui.ILockableUI)
package com.greyhound.ui {
public interface ILockableUI {
function getILockable():ILockable;
}
}//package com.greyhound.ui
Section 556
//ILockListener (com.greyhound.ui.ILockListener)
package com.greyhound.ui {
public interface ILockListener {
function notifyLocked(_arg1:ILockable):void;
function notifyUnlocked(_arg1:ILockable):void;
}
}//package com.greyhound.ui
Section 557
//ImageButtonProvider (com.greyhound.ui.ImageButtonProvider)
package com.greyhound.ui {
import flash.display.*;
public class ImageButtonProvider implements IButtonProvider {
private var tooltip:String;
private var imageClass:Class;
public function ImageButtonProvider(_arg1:Class, _arg2:String=null){
this.imageClass = _arg1;
this.tooltip = _arg2;
}
public function getButtonDisplayObject():DisplayObject{
return (new imageClass());
}
public function getButtonToolTip():String{
return (tooltip);
}
}
}//package com.greyhound.ui
Section 558
//IPercentBarProvider (com.greyhound.ui.IPercentBarProvider)
package com.greyhound.ui {
import com.greyhound.base.*;
public interface IPercentBarProvider extends IChangeable {
function getBarPercent():Number;
}
}//package com.greyhound.ui
Section 559
//IRefreshable (com.greyhound.ui.IRefreshable)
package com.greyhound.ui {
public interface IRefreshable {
function refresh():void;
}
}//package com.greyhound.ui
Section 560
//ISelectable (com.greyhound.ui.ISelectable)
package com.greyhound.ui {
import com.greyhound.base.*;
public interface ISelectable {
function canSelect():Boolean;
function setSelected(_arg1:Boolean):void;
function getDisplayableGameobject():DisplayableGameObject;
function isSelected():Boolean;
}
}//package com.greyhound.ui
Section 561
//ISelectionListener (com.greyhound.ui.ISelectionListener)
package com.greyhound.ui {
import flash.events.*;
import com.greyhound.world.*;
public interface ISelectionListener {
function notifySelectionChanged(_arg1:ISelectable):void;
function notifyTileSelected(_arg1:Tile, _arg2:MouseEvent):void;
}
}//package com.greyhound.ui
Section 562
//ITabSelectionListener (com.greyhound.ui.ITabSelectionListener)
package com.greyhound.ui {
public interface ITabSelectionListener {
function notifyTabSelectionChanged():void;
}
}//package com.greyhound.ui
Section 563
//IToolTipProvider (com.greyhound.ui.IToolTipProvider)
package com.greyhound.ui {
public interface IToolTipProvider {
function getToolTip():String;
}
}//package com.greyhound.ui
Section 564
//KeyCodes (com.greyhound.ui.KeyCodes)
package com.greyhound.ui {
public class KeyCodes {
public static const KEY_0:uint = 48;
public static const KEY_1:uint = 49;
public static const KEY_2:uint = 50;
public static const KEY_3:uint = 51;
public static const KEY_4:uint = 52;
public static const KEY_5:uint = 53;
public static const KEY_6:uint = 54;
public static const KEY_7:uint = 55;
public static const KEY_8:uint = 56;
public static const KEY_9:uint = 57;
public static const KEY_A:uint = 65;
public static const KEY_B:uint = 66;
public static const KEY_C:uint = 67;
public static const KEY_D:uint = 68;
public static const KEY_E:uint = 69;
public static const KEY_F:uint = 70;
public static const KEY_G:uint = 71;
public static const KEY_H:uint = 72;
public static const KEY_I:uint = 73;
public static const KEY_J:uint = 74;
public static const KEY_K:uint = 75;
public static const KEY_L:uint = 76;
public static const KEY_M:uint = 77;
public static const KEY_N:uint = 78;
public static const KEY_O:uint = 79;
public static const KEY_P:uint = 80;
public static const KEY_Q:uint = 81;
public static const KEY_R:uint = 82;
public static const KEY_S:uint = 83;
public static const KEY_T:uint = 84;
public static const KEY_U:uint = 85;
public static const KEY_V:uint = 86;
public static const KEY_W:uint = 87;
public static const KEY_X:uint = 88;
public static const KEY_Y:uint = 89;
public static const KEY_Z:uint = 90;
public static const KEY_a:uint = 97;
public static const KEY_b:uint = 98;
public static const KEY_c:uint = 99;
public static const KEY_d:uint = 100;
public static const KEY_e:uint = 101;
public static const KEY_f:uint = 102;
public static const KEY_g:uint = 103;
public static const KEY_h:uint = 104;
public static const KEY_i:uint = 105;
public static const KEY_j:uint = 106;
public static const KEY_k:uint = 107;
public static const KEY_l:uint = 108;
public static const KEY_m:uint = 109;
public static const KEY_n:uint = 110;
public static const KEY_o:uint = 111;
public static const KEY_p:uint = 112;
public static const KEY_q:uint = 113;
public static const KEY_r:uint = 114;
public static const KEY_s:uint = 115;
public static const KEY_t:uint = 116;
public static const KEY_u:uint = 117;
public static const KEY_v:uint = 118;
public static const KEY_w:uint = 119;
public static const KEY_x:uint = 120;
public static const KEY_y:uint = 121;
public static const KEY_z:uint = 122;
}
}//package com.greyhound.ui
Section 565
//MessageDialog (com.greyhound.ui.MessageDialog)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.tools.*;
import flash.text.*;
public class MessageDialog extends Sprite {
private var callBackFunctions:Array;
private var optionButtons:Array;
private function optionSelected(_arg1:Event):void{
stage.focus = stage;
parent.removeChild(this);
var _local2:int = optionButtons.indexOf(_arg1.currentTarget);
if (_local2 != -1){
var _local3 = callBackFunctions;
_local3[_local2]();
} else {
trace("Couldn't find option button");
};
}
public function addOptionsDialog(_arg1:String, _arg2:int, _arg3:int, _arg4:DisplayObjectContainer, _arg5:Array, _arg6:Array):void{
var _local8:TextField;
var _local9:int;
var _local10:int;
var _local11:int;
var _local12:int;
var _local13:int;
var _local14:String;
var _local15:TextButton;
var _local7:DisplayObject = new ArtLoader.ToolTipIMG();
addChild(_local7);
this.x = _arg2;
this.y = _arg3;
_local8 = TextFieldFactory.createText(_arg1, 0xFFFFFF, 16, 0, "Georgia");
_local8.wordWrap = true;
_local8.width = (200 + (_arg1.length / 5));
_local8.x = Panel.PANEL_BORDER_INDENT;
_local8.y = Panel.PANEL_BORDER_INDENT;
addChild(_local8);
_local9 = _local8.width;
_local10 = _local8.height;
if (_arg5 != null){
this.callBackFunctions = _arg6;
optionButtons = new Array();
_local11 = Panel.PANEL_BORDER_INDENT;
_local12 = 0;
_local13 = 0;
while (_local13 < _arg5.length) {
_local14 = (_arg5[_local13] as String);
_local15 = new TextButton(_local14, optionSelected);
_local15.x = _local11;
_local15.y = ((_local8.y + _local8.height) + Panel.PANEL_BORDER_INDENT);
_local11 = (_local11 + (_local15.width + Panel.PANEL_BORDER_INDENT));
_local12 = Math.max(_local12, _local15.height);
optionButtons.push(_local15);
addChild(_local15);
_local13++;
};
_local10 = (_local10 + ((Panel.PANEL_BORDER_INDENT + _local12) + Panel.PANEL_BORDER_INDENT));
_local9 = Math.max(_local11, _local9);
};
_local9 = (_local9 + Panel.PANEL_BORDER_INDENT);
_local10 = (_local10 + Panel.PANEL_BORDER_INDENT);
_local7.x = -3;
_local7.y = -3;
_local7.width = (_local9 + 6);
_local7.height = (_local10 + 6);
_arg4.addChild(this);
}
}
}//package com.greyhound.ui
Section 566
//NewTabPane (com.greyhound.ui.NewTabPane)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class NewTabPane extends Sprite {
private var currentTab:DisplayObject;
private var tabSelectionListeners:Array;
private var currentTabHeader:TabHeader;
private var dictionary:Dictionary;
private var tabs:Array;
public function NewTabPane(){
tabs = new Array();
currentTab = null;
dictionary = new Dictionary();
tabSelectionListeners = new Array();
}
public function getSelectedPane():DisplayObject{
return (currentTab);
}
public function showTabNumber(_arg1:int):void{
showTab(tabs[_arg1]);
}
private function fireTabSelectionChanged():void{
var _local1:Object;
for each (_local1 in tabSelectionListeners) {
(_local1 as ITabSelectionListener).notifyTabSelectionChanged();
};
}
private function calculateTabWidths():int{
var _local2:DisplayObject;
var _local1:int;
for each (_local2 in tabs) {
_local1 = (_local1 + _local2.width);
};
return (_local1);
}
public function addTabSelectionListener(_arg1:ITabSelectionListener):void{
tabSelectionListeners.push(_arg1);
}
public function addTab(_arg1:DisplayObject, _arg2:DisplayObject, _arg3:DisplayObject):void{
var _local4:TabHeader = new TabHeader(_arg1, _arg2);
_local4.addEventListener(MouseEvent.CLICK, tabClicked);
_local4.y = 0;
_local4.x = calculateTabWidths();
tabs.push(_local4);
addChild(_local4);
dictionary[_local4] = _arg3;
if (currentTab == null){
showTab(_local4);
_local4.setSelected(true);
};
}
private function tabClicked(_arg1:MouseEvent):void{
var _local3:Object;
var _local2:TabHeader;
if ((_arg1.target is TabHeader)){
_local2 = (_arg1.target as TabHeader);
};
if (_local2 != null){
for each (_local3 in tabs) {
if (_local3 == _local2){
showTab(_local2);
return;
};
};
};
trace("Tab clicked but couldn't find which one");
}
private function showTab(_arg1:TabHeader):void{
var _local2:DisplayObject = (dictionary[_arg1] as DisplayObject);
if (_local2 != currentTab){
if (currentTab != null){
removeChild(currentTab);
currentTabHeader.setSelected(false);
};
currentTab = _local2;
currentTabHeader = _arg1;
currentTabHeader.setSelected(true);
addChild(currentTab);
currentTab.y = _arg1.height;
fireTabSelectionChanged();
};
}
}
}//package com.greyhound.ui
Section 567
//Panel (com.greyhound.ui.Panel)
package com.greyhound.ui {
import flash.display.*;
public class Panel extends Sprite {
private var setWidth:int;// = 0
private var setHeight:int;// = 0
private var rounded:Boolean;// = false
public static const PANEL_BORDER_INDENT:int = 4;
public function setSize(_arg1:int, _arg2:int, _arg3:uint=14540287, _arg4:Boolean=true, _arg5:Boolean=true):void{
this.rounded = _arg4;
setWidth = _arg1;
setHeight = _arg2;
setBackgroundColor(_arg3);
if (((_arg5) && (_arg4))){
addChild(new Border(0, 2, true));
};
if (((_arg5) && (!(_arg4)))){
addChild(new Border(0, 2, false));
};
}
public function setBackgroundColor(_arg1:uint):void{
graphics.clear();
graphics.beginFill(_arg1);
if (rounded){
graphics.drawRoundRect(0, 0, setWidth, setHeight, Border.STANDERED_CORNER_ROUNDING);
} else {
graphics.drawRect(0, 0, setWidth, setHeight);
};
graphics.endFill();
}
protected function clearChildren():void{
while (numChildren > 0) {
removeChildAt(0);
};
}
}
}//package com.greyhound.ui
Section 568
//PercentBar (com.greyhound.ui.PercentBar)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.base.*;
import com.greyhound.living.*;
public class PercentBar extends Sprite implements IChangeListener {
private var color:uint;
private var length:int;
private var provider:IPercentBarProvider;
public function PercentBar(_arg1:IPercentBarProvider, _arg2:int, _arg3:uint){
this.length = _arg2;
this.color = _arg3;
this.provider = _arg1;
updateBar(_arg1);
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
private function addedToStage(_arg1:Event):void{
provider.addChangeListener(this);
}
public function notifyChanged(_arg1:IChangeable):void{
updateBar(_arg1);
}
private function removedFromStage(_arg1:Event):void{
provider.removeChangeListener(this);
}
private function updateBar(_arg1:IChangeable):void{
var _local4:Object;
var _local2:Number = (_arg1 as IPercentBarProvider).getBarPercent();
graphics.clear();
var _local3:int = color;
if ((_arg1 is GameObject)){
for each (_local4 in (_arg1 as GameObject).getInventory()) {
if ((_local4 is IPercentBarColorModifier)){
_local3 = (_local4 as IPercentBarColorModifier).getBarColor();
break;
};
};
};
if (_local2 > 0){
graphics.beginFill(_local3);
graphics.drawRect(0, 0, (_local2 * length), 3);
graphics.endFill();
};
}
}
}//package com.greyhound.ui
Section 569
//RefreshingText (com.greyhound.ui.RefreshingText)
package com.greyhound.ui {
import flash.display.*;
import com.greyhound.ui.controlpanel.selectionpanel.*;
import flash.text.*;
public class RefreshingText extends Sprite implements IRefreshable {
private var selectionProvider:ISelectionDisplayProvider;
private var textField:TextField;
public function RefreshingText(_arg1:ISelectionDisplayProvider, _arg2:int=220){
this.selectionProvider = _arg1;
textField = TextFieldFactory.createText(_arg1.getDisplayText(), 0xFFFFFF, 16, 0, "Georgia", 4, false);
textField.wordWrap = true;
textField.width = _arg2;
textField.x = Panel.PANEL_BORDER_INDENT;
addChild(textField);
}
public function refresh():void{
textField.text = selectionProvider.getDisplayText();
}
}
}//package com.greyhound.ui
Section 570
//SelectableGameButton (com.greyhound.ui.SelectableGameButton)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
public class SelectableGameButton extends Panel {
private var selectCallback:Function;
private var timer:Timer;
private var cooldown:Sprite;
private var border:Border;
private var buttonGroup:ButtonGroup;
private var button:GameButton;
private var coolingDown:Boolean;
private var selected:Boolean;
public function SelectableGameButton(_arg1:IButtonProvider, _arg2:Function=null, _arg3:uint=0){
button = new GameButton(_arg1, clickCallback);
selected = false;
border = new Border(_arg3, 2);
buttonGroup = null;
this.selectCallback = _arg2;
button.x = 1;
button.y = 1;
addChild(button);
cooldown = new Sprite();
addChild(cooldown);
}
public function setSelected(_arg1:Boolean):void{
if (selected != _arg1){
selected = _arg1;
if (_arg1){
addChild(border);
} else {
removeChild(border);
};
};
if (selectCallback != null){
selectCallback(_arg1, this);
};
}
public function setButtonGroup(_arg1:ButtonGroup):void{
this.buttonGroup = _arg1;
}
public function isCoolingDown():Boolean{
return (coolingDown);
}
public function setCooldown(_arg1:Number):void{
var _local2:int;
var _local3:int;
cooldown.graphics.clear();
if (_arg1 > 0){
coolingDown = true;
_local2 = (button.upState.width * 0.5);
_local3 = (button.upState.height * 0.5);
cooldown.graphics.beginFill(0, 0.4);
Drawing.drawWedge(cooldown.graphics, _local2, _local3, 0, (_arg1 * 360), _local2, _local3);
cooldown.graphics.endFill();
} else {
coolingDown = false;
};
}
public function isEnabled():Boolean{
return (button.isGameButtonEnabled());
}
private function clickCallback(_arg1:MouseEvent):void{
if (!selected){
if (buttonGroup != null){
buttonGroup.setSelectedButton(this);
} else {
setSelected(true);
};
} else {
setSelected(false);
};
}
public function setEnabled(_arg1:Boolean):void{
button.setEnabled(_arg1);
}
}
}//package com.greyhound.ui
Section 571
//SelectionManager (com.greyhound.ui.SelectionManager)
package com.greyhound.ui {
import flash.events.*;
import com.greyhound.world.*;
public class SelectionManager {
private var currentSelection:ISelectable;
private var selectionListeners:Array;
public function SelectionManager(){
currentSelection = null;
selectionListeners = new Array();
}
public function refreshSelection():void{
setSelection(currentSelection);
}
public function notifyTileSelected(_arg1:Tile, _arg2:MouseEvent):void{
var _local3:Object;
for each (_local3 in selectionListeners) {
(_local3 as ISelectionListener).notifyTileSelected(_arg1, _arg2);
};
}
public function getSelection():ISelectable{
return (currentSelection);
}
public function setSelection(_arg1:ISelectable):void{
var _local2:Object;
if (_arg1 != currentSelection){
if (currentSelection != null){
currentSelection.setSelected(false);
currentSelection = null;
};
if (((!((_arg1 == null))) && (_arg1.canSelect()))){
currentSelection = _arg1;
currentSelection.setSelected(true);
};
for each (_local2 in selectionListeners) {
(_local2 as ISelectionListener).notifySelectionChanged(currentSelection);
};
};
}
public function removeSelectionListener(_arg1:ISelectionListener):void{
var _local2:int = selectionListeners.indexOf(_arg1);
if (_local2 != -1){
selectionListeners.splice(_local2, 1);
} else {
trace("Tried to remove a selection listener that wasn't there");
};
}
public function addSelectionListener(_arg1:ISelectionListener):void{
selectionListeners.push(_arg1);
}
}
}//package com.greyhound.ui
Section 572
//StatusBar (com.greyhound.ui.StatusBar)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.tools.*;
import flash.text.*;
import com.greyhound.*;
public class StatusBar extends Sprite implements IChangeListener {
private var scoreLabel:TextField;
private var pauseText:TextField;
private var gemsLabel:TextField;
private var world:World;
private var goldLabel:TextField;
private var main:Main;
private var roundNumberLabel:TextField;
private var advanceRoundButton:GameButton;
public function StatusBar(_arg1:int, _arg2:int, _arg3:Main){
var _local4:CompositeSprite;
var _local5:CompositeSprite;
var _local6:Sprite;
super();
addChild(new ArtLoader.StatusBarBackgroundIMG());
this.main = _arg3;
goldLabel = TextFieldFactory.createText(("" + _arg1));
_local4 = new CompositeSprite([new ArtLoader.GoldIMG(), goldLabel]);
new ToolTip("Use it to buy things, get it from killing things. Simple enough?", _local4);
gemsLabel = TextFieldFactory.createText(("" + _arg2));
_local5 = new CompositeSprite([new ArtLoader.GemsIMG(), gemsLabel]);
new ToolTip("Gems are what the heroes are trying to steal from you. Run out and it's game over.", _local5);
_local4.x = Panel.PANEL_BORDER_INDENT;
_local4.y = 1;
_local4.mouseChildren = false;
_local5.x = 80;
_local5.y = _local4.y;
_local5.mouseChildren = false;
advanceRoundButton = new GameButton(new ImageButtonProvider(ArtLoader.NextWaveIMG, (("Send the next round now(can only do once every " + Tools.round(((EntryPoint.ROUND_LENGTH * 0.5) / 1000), 1)) + " seconds)")), nextRound);
advanceRoundButton.x = 125;
advanceRoundButton.y = 4;
addChild(advanceRoundButton);
roundNumberLabel = TextFieldFactory.createText("Round: 0", 0xFFFFFF, 12);
roundNumberLabel.x = 140;
roundNumberLabel.y = 2;
roundNumberLabel.width = 75;
new ToolTip("One round represents all the spawn points releasing a wave.", roundNumberLabel);
scoreLabel = TextFieldFactory.createText("Score: 0", 0xFFFFFF, 12);
scoreLabel.x = 220;
scoreLabel.y = 2;
scoreLabel.width = 100;
new ToolTip((((("Your score is equal to the amount of gold you have made through interest. You have a base interest rate of " + (100 * Vault.BASE_INTEREST)) + "% and a bonus of ") + (Vault.INTEREST_PER_VAULT * 100)) + "% for every gold vault you build."), scoreLabel);
addChild(scoreLabel);
_local6 = new Sprite();
_local6.addChild(new ArtLoader.PauseButtonIMG());
pauseText = TextFieldFactory.createText("Pause", 0xFFFFFF, 10, 0, "Georgia", 4, false);
pauseText.x = 19;
_local6.addChild(pauseText);
_local6.mouseChildren = false;
_local6.addEventListener(MouseEvent.CLICK, pauseCallBack);
_local6.x = 322;
_local6.y = 4;
new ToolTip("Toggle the game's paused state.", _local6);
var _local7:Sprite = new Sprite();
_local7.addChild(new ArtLoader.MenuButtonIMG());
var _local8:TextField = TextFieldFactory.createText("Menu", 0xFFFFFF, 10, 0, "Georgia", 4, false);
_local8.x = 8;
_local7.addChild(_local8);
_local7.mouseChildren = false;
_local7.addEventListener(MouseEvent.CLICK, menuCallback);
_local7.x = 406;
_local7.y = 4;
new ToolTip("Go to the main menu", _local7);
addChild(_local4);
addChild(_local5);
addChild(roundNumberLabel);
addChild(_local6);
addChild(_local7);
}
public function getGoldPositionOnStage():Point{
var _local1:Rectangle = goldLabel.getBounds(stage);
return (new Point(_local1.x, _local1.y));
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function updateAdvanceButton():void{
if (world.canAdvance()){
advanceRoundButton.alpha = 1;
advanceRoundButton.setEnabled(true);
} else {
advanceRoundButton.alpha = 0.4;
advanceRoundButton.setEnabled(false);
};
}
private function menuCallback(_arg1:Event):void{
main.showMainMenu();
}
public function setWorld(_arg1:World):void{
this.world = _arg1;
if (_arg1 != null){
setPaused(_arg1.isPaused());
};
updateAdvanceButton();
updateRoundNumber(_arg1.getRound());
notifyChanged(_arg1.getVault());
}
private function nextRound(_arg1:Event):void{
world.advanceRound();
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
}
public function notifyChanged(_arg1:IChangeable):void{
var _local2:Vault;
if ((_arg1 is Vault)){
_local2 = (_arg1 as Vault);
goldLabel.text = ("" + _local2.getGold());
gemsLabel.text = ("" + _local2.getGems());
scoreLabel.text = ("Score: " + _local2.getScore());
};
}
public function updateRoundNumber(_arg1:int):void{
roundNumberLabel.text = ((("Round:" + _arg1) + "/") + (world.getMap().getEntryPoints()[0] as EntryPoint).getTotalWaves());
}
public function setPaused(_arg1:Boolean):void{
pauseText.text = (world.isPaused()) ? "Unpause" : "Pause";
}
private function pauseCallBack(_arg1:Event):void{
world.togglePause();
}
}
}//package com.greyhound.ui
Section 573
//TabHeader (com.greyhound.ui.TabHeader)
package com.greyhound.ui {
import flash.display.*;
public class TabHeader extends Sprite {
private var unselectedDisplayObject:DisplayObject;
private var selectedDisplayObject:DisplayObject;
private var selected:Boolean;
public function TabHeader(_arg1:DisplayObject, _arg2:DisplayObject){
this.selectedDisplayObject = _arg1;
this.unselectedDisplayObject = _arg2;
selected = false;
addChild(_arg2);
mouseChildren = false;
}
public function setSelected(_arg1:Boolean):void{
if (_arg1 != selected){
if (selected){
removeChild(selectedDisplayObject);
addChild(unselectedDisplayObject);
} else {
addChild(selectedDisplayObject);
removeChild(unselectedDisplayObject);
};
selected = _arg1;
};
}
}
}//package com.greyhound.ui
Section 574
//TextButton (com.greyhound.ui.TextButton)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.tools.*;
import flash.text.*;
public class TextButton extends Sprite {
private var enabled:Boolean;
private var clickCallBack:Function;
private var textField:TextField;
public function TextButton(_arg1:String, _arg2:Function, _arg3:String=null, _arg4:DisplayObject=null){
textField = TextFieldFactory.createText(_arg1, 0xFFFFFF, 12, 0, "Georgia", 2);
if (_arg4 == null){
addChild(new ArtLoader.SmallButtonIMG());
} else {
addChild(_arg4);
};
textField.x = (65 - Math.min(34, (textField.textWidth * 0.5)));
textField.y = 2;
addChild(textField);
this.clickCallBack = _arg2;
addEventListener(MouseEvent.CLICK, buttonPress);
mouseChildren = false;
if (_arg3 != null){
new ToolTip(_arg3, this);
};
enabled = true;
useHandCursor = true;
}
public function setText(_arg1:String):void{
textField.text = _arg1;
}
private function buttonPress(_arg1:MouseEvent):void{
if (enabled){
clickCallBack(_arg1);
};
}
public function setEnabled(_arg1:Boolean):void{
enabled = _arg1;
if (_arg1){
alpha = 1;
} else {
alpha = 0.6;
};
}
}
}//package com.greyhound.ui
Section 575
//TextFieldFactory (com.greyhound.ui.TextFieldFactory)
package com.greyhound.ui {
import flash.text.*;
import flash.filters.*;
public class TextFieldFactory {
public static function createText(_arg1:String, _arg2:uint=0xFFFFFF, _arg3:int=16, _arg4:uint=0, _arg5:String="Tachoma", _arg6:int=4, _arg7:Boolean=true):TextField{
var _local8:TextField = new TextField();
var _local9:TextFormat = new TextFormat(_arg5, _arg3, _arg2, _arg7);
_local8.defaultTextFormat = _local9;
var _local10:Array = _local8.filters.slice();
_local10.push(new GlowFilter(_arg4, 1, _arg6, _arg6, 10, 1, false, false));
_local8.filters = _local10;
_local8.text = _arg1;
_local8.autoSize = TextFieldAutoSize.LEFT;
_local8.selectable = false;
_local8.antiAliasType = AntiAliasType.ADVANCED;
return (_local8);
}
public static function createTextButton(_arg1:String, _arg2:Function=null, _arg3:uint=0xFFFFFF, _arg4:int=16, _arg5:uint=0):CompositeButton{
return (new CompositeButton(_arg2, [createText(_arg1, _arg3, _arg4, _arg5)]));
}
public static function createHTMLText(_arg1:String, _arg2:uint=0xFFFFFF, _arg3:int=16, _arg4:uint=0, _arg5:String="Tachoma", _arg6:int=4, _arg7:Boolean=true):TextField{
var _local8:TextField = new TextField();
var _local9:TextFormat = new TextFormat(_arg5, _arg3, _arg2, _arg7);
_local8.defaultTextFormat = _local9;
var _local10:Array = _local8.filters.slice();
if (_arg6 != 0){
_local10.push(new GlowFilter(_arg4, 1, _arg6, _arg6, 10, 1, false, false));
};
_local8.filters = _local10;
_local8.htmlText = _arg1;
_local8.autoSize = TextFieldAutoSize.LEFT;
_local8.selectable = false;
_local8.antiAliasType = AntiAliasType.ADVANCED;
return (_local8);
}
}
}//package com.greyhound.ui
Section 576
//ToolTip (com.greyhound.ui.ToolTip)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import com.greyhound.base.*;
import flash.utils.*;
import com.greyhound.tools.*;
import flash.text.*;
public class ToolTip extends Sprite implements IChangeListener {
private var timer:Timer;
private var textField:TextField;
private var changeable:IChangeable;
private var tooltipProvider:IToolTipProvider;
private var scrollGraphic:DisplayObject;
private var popupDelay:int;
private var forWhat:DisplayObject;
public function ToolTip(_arg1:String, _arg2:DisplayObject, _arg3:IToolTipProvider=null, _arg4:IChangeable=null, _arg5:int=500){
this.popupDelay = Math.max(1, _arg5);
forWhat = _arg2;
_arg2.addEventListener(Event.REMOVED_FROM_STAGE, removedFromStage);
_arg2.addEventListener(MouseEvent.MOUSE_OVER, mouseOver);
_arg2.addEventListener(MouseEvent.MOUSE_OUT, mouseOut);
_arg2.addEventListener(MouseEvent.MOUSE_MOVE, mouseMove);
if (_arg4 != null){
_arg4.addChangeListener(this);
this.changeable = _arg4;
};
tooltipProvider = _arg3;
if (tooltipProvider != null){
_arg1 = tooltipProvider.getToolTip();
};
textField = TextFieldFactory.createText(_arg1, 0xFFFFFF, 16, 0, "Georgia", 4, false);
textField.wordWrap = true;
scrollGraphic = new ArtLoader.ToolTipIMG();
addChild(scrollGraphic);
addChild(textField);
adjustSize();
}
private function displayToolTip(_arg1:Event):void{
if (forWhat.stage != null){
if (tooltipProvider != null){
textField.text = tooltipProvider.getToolTip();
adjustSize();
};
forWhat.stage.addChild(this);
x = (forWhat.stage.mouseX + 15);
y = forWhat.stage.mouseY;
if ((x + width) > 690){
x = (x - (width + 25));
};
if ((y + height) > 490){
y = (y - (height + 10));
};
};
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
private function mouseMove(_arg1:MouseEvent):void{
if (timer != null){
timer.reset();
timer.start();
};
}
private function mouseOver(_arg1:MouseEvent):void{
timer = new Timer(popupDelay, 1);
timer.addEventListener(TimerEvent.TIMER_COMPLETE, displayToolTip);
}
public function setToolTip(_arg1:String):void{
textField.text = _arg1;
adjustSize();
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
if (stage != null){
stage.removeChild(this);
};
if (timer != null){
timer.removeEventListener(TimerEvent.TIMER_COMPLETE, displayToolTip);
timer = null;
};
forWhat = null;
tooltipProvider = null;
}
public function notifyChanged(_arg1:IChangeable):void{
textField.text = tooltipProvider.getToolTip();
adjustSize();
}
private function adjustSize():void{
textField.width = (100 + textField.text.length);
scrollGraphic.width = (textField.width + 30);
scrollGraphic.height = (textField.height + 40);
textField.x = 10;
textField.y = 15;
}
public function removedFromStage(_arg1:Event):void{
if (changeable != null){
changeable.removeChangeListener(this);
};
}
private function mouseOut(_arg1:MouseEvent):void{
if (timer != null){
timer.stop();
timer.removeEventListener(TimerEvent.TIMER_COMPLETE, displayToolTip);
timer = null;
};
if (stage != null){
stage.removeChild(this);
};
}
}
}//package com.greyhound.ui
Section 577
//TutorialDialog (com.greyhound.ui.TutorialDialog)
package com.greyhound.ui {
import flash.display.*;
import com.greyhound.tools.*;
public class TutorialDialog extends Sprite {
private var endCallBack:Function;
private var nextCallBack:Function;
public function TutorialDialog(_arg1:String, _arg2:int, _arg3:int, _arg4:DisplayObjectContainer, _arg5:Function, _arg6:Function, _arg7:int=-1){
var _local9:DisplayObject;
super();
this.x = _arg2;
this.y = _arg3;
this.nextCallBack = _arg5;
this.endCallBack = _arg6;
var _local8:MessageDialog = new MessageDialog();
_local8.addOptionsDialog(_arg1, 0, 0, this, ["Next", "End"], [internalNextCallBack, internalEndCallBack]);
addChild(_local8);
if (_arg7 != -1){
switch (_arg7){
case Util.NORTH:
_local9 = new ArtLoader.UpArrowIMG();
_local9.x = ((_local8.width * 0.5) - (_local9.width * 0.5));
_local9.y = -(_local9.height);
break;
case Util.EAST:
_local9 = new ArtLoader.RightArrowIMG();
_local9.x = _local8.width;
_local9.y = ((_local8.height * 0.5) - (_local9.height * 0.5));
break;
case Util.WEST:
_local9 = new ArtLoader.LeftArrowIMG();
new ArtLoader.LeftArrowIMG().x = -(_local9.width);
_local9.y = ((_local8.height * 0.5) - (_local9.height * 0.5));
break;
case Util.SOUTH:
_local9 = new ArtLoader.DownArrowIMG();
_local9.x = ((_local8.width * 0.5) - (_local9.width * 0.5));
_local9.y = _local8.height;
break;
default:
trace(("Unknown direction in tutorial dialog:" + _arg7));
};
addChild(_local9);
};
_arg4.addChild(this);
}
private function internalNextCallBack():void{
parent.removeChild(this);
nextCallBack();
}
private function internalEndCallBack():void{
parent.removeChild(this);
endCallBack();
}
}
}//package com.greyhound.ui
Section 578
//UILock (com.greyhound.ui.UILock)
package com.greyhound.ui {
public class UILock implements ILockable {
private var locked:Boolean;
private var listeners:Array;
public function UILock(){
locked = false;
listeners = new Array();
}
public function addLockListener(_arg1:ILockListener):void{
listeners.push(_arg1);
}
public function removeLockListener(_arg1:ILockListener):void{
listeners.splice(listeners.indexOf(_arg1), 1);
}
public function unlock():void{
var _local1:Object;
if (locked){
locked = false;
for each (_local1 in listeners) {
(_local1 as ILockListener).notifyUnlocked(this);
};
};
}
public function lock():void{
var _local1:Object;
if (!locked){
locked = true;
for each (_local1 in listeners) {
(_local1 as ILockListener).notifyLocked(this);
};
};
}
public function isLocked():Boolean{
return (locked);
}
}
}//package com.greyhound.ui
Section 579
//YesNoPanel (com.greyhound.ui.YesNoPanel)
package com.greyhound.ui {
import flash.display.*;
import flash.events.*;
import flash.text.*;
public class YesNoPanel extends Sprite {
private var callback:Function;
public function YesNoPanel(_arg1:String, _arg2:Function){
this.callback = _arg2;
var _local3:TextField = TextFieldFactory.createText(_arg1, 0xFFFFFF, 20);
addChild(_local3);
_local3.x = Panel.PANEL_BORDER_INDENT;
_local3.y = Panel.PANEL_BORDER_INDENT;
var _local4:TextButton = new TextButton("Yes", confirmYes);
var _local5:TextButton = new TextButton("No", confirmNo);
_local4.x = Panel.PANEL_BORDER_INDENT;
_local4.y = ((_local3.y + _local3.height) + Panel.PANEL_BORDER_INDENT);
_local5.x = ((_local4.x + _local4.width) + Panel.PANEL_BORDER_INDENT);
_local5.y = _local4.y;
addChild(_local4);
addChild(_local5);
}
private function confirmNo(_arg1:Event):void{
callback(false);
}
private function confirmYes(_arg1:Event):void{
callback(true);
}
}
}//package com.greyhound.ui
Section 580
//HereBeTreasureMapCreator (com.greyhound.world.maps.mapcreators.HereBeTreasureMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.living.ai.*;
import com.greyhound.things.treasure.*;
import com.greyhound.living.creep.*;
public class HereBeTreasureMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local4:Object;
var _local5:Array;
var _local2:Array = new Array(2);
var _local3:Array = createWaves();
for each (_local4 in _local3) {
(_local4 as Wave).setWaveSpacing(3000);
};
_local5 = createWaves();
for each (_local4 in _local5) {
(_local4 as Wave).setWaveSpacing(3000);
};
_local2[0] = new EntryPoint(new Point(12, 6), _local3, _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(12, 8), _local5, _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function populateMap(_arg1:World):void{
super.populateMap(_arg1);
var _local2:TreasureChest = new TreasureChest(15, 2, 1, 300);
_arg1.addDisplayableAt(_local2, _arg1.getTileAtMapLocation(16, 18).getScreenLocation());
var _local3:MasterLich = new MasterLich();
_local3.setLevel(15);
_local3.setTeam(Living.CREEP_TEAM);
_arg1.addDisplayableAt(_local3, _arg1.getTileAtMapLocation(16, 16).getScreenLocation());
var _local4:StayTask = new StayTask(_local3, _arg1.getTileAtMapLocation(16, 16), false, 10);
_local4.appendTask(new HuntTask(_local3, new PatrolRadiusProvider(_arg1.getTileAtMapLocation(16, 16).getScreenLocation(), 60)));
}
override public function getGoal():Point{
return (new Point(1, 7));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "wwwwwwwwwwwwwwwwwww";
_local1[1] = "wwwwww wwwwwwwwwwww";
_local1[2] = "w w";
_local1[3] = "w wwwc wwwwwwwwww w";
_local1[4] = "w wwwwwwwwwwwwwww w";
_local1[5] = "w wwwwwwwwwcwwwgw w";
_local1[6] = "w wwwwcwwwwpE w";
_local1[7] = "wHwwwwwwwwwp p p p";
_local1[8] = "w wcwwwwwwwpE w";
_local1[9] = "w wwwwwwwwwwwwwww w";
_local1[10] = "w wwwwwwwwwwwwwww w";
_local1[11] = "w wcww wwwwwwwwww w";
_local1[12] = "w w";
_local1[13] = "wwwwww wwwwwwwwwwww";
_local1[14] = "wwwwwwwwwwwwwwcwwww";
_local1[15] = "wwwwwwwww ww";
_local1[16] = "wwwcwwwwwwwwwwww ww";
_local1[17] = "wwwwwwwwwwwgwwwrDrw";
_local1[18] = "wwwwwwcwwwwwwwwr rw";
return (_local1);
}
private function createWaves():Array{
return (mergeWaves(createWaveSet1()));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 581
//IMapCreator (com.greyhound.world.maps.mapcreators.IMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
public interface IMapCreator {
function getGoal():Point;
function createEntryPoints(_arg1:World):Array;
function populateMap(_arg1:World):void;
function createMap(_arg1:World):Array;
}
}//package com.greyhound.world.maps.mapcreators
Section 582
//MapCreator (com.greyhound.world.maps.mapcreators.MapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.things.buildings.*;
import com.greyhound.living.heroes.*;
import com.greyhound.things.obstacles.*;
public class MapCreator implements IMapCreator {
public function createMap(_arg1:World):Array{
var _local4:int;
var _local2:Array = new Array(World.MAP_WIDTH);
var _local3:int;
while (_local3 < World.MAP_WIDTH) {
_local2[_local3] = new Array(World.MAP_HEIGHT);
_local4 = 0;
while (_local4 < World.MAP_HEIGHT) {
_local2[_local3][_local4] = new Tile(_local3, _local4, _arg1);
_local4++;
};
_local3++;
};
return (_local2);
}
protected function mergeWaves(... _args):Array{
var _local3:Object;
var _local2:Array = new Array();
for each (_local3 in _args) {
if ((_local3 is Array)){
_local2 = _local2.concat((_local3 as Array));
} else {
trace("non array passed to merge waves");
};
};
return (_local2);
}
protected function createWaveSet1():Array{
var _local1:Array = new Array();
var _local2:Array = new Array();
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Elf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Cleric());
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Cleric());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Rogue());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Rogue());
_local2.push(new Dwarf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Wizard());
_local2.push(new Dwarf());
_local2.push(new Valkyrie());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = [new Paladin()];
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Cleric());
_local2.push(new Cleric());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Cleric());
_local2.push(new Cleric());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Rogue());
_local2.push(new Elf());
_local2.push(new Cleric());
_local2.push(new Druid());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Druid());
_local2.push(new Druid());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local1.push(new Wave(_local2, 2000));
_local2 = [new Paladin()];
_local1.push(new Wave(_local2, 2000));
return (_local1);
}
protected function createWaveSet2():Array{
var _local1:Array = new Array();
var _local2:Array = new Array();
_local2.push(new Rogue());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Cleric());
_local2.push(new Druid());
_local2.push(new Elf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Rogue());
_local2.push(new Wizard());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Elf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Cleric());
_local2.push(new Druid());
_local2.push(new Elf());
_local2.push(new Cleric());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Paladin());
_local2.push(new Elf());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Dwarf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Cleric());
_local2.push(new Druid());
_local2.push(new Wizard());
_local2.push(new Wizard());
_local2.push(new Cleric());
_local2.push(new Druid());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Paladin());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local2.push(new Elf());
_local1.push(new Wave(_local2, 2000));
return (_local1);
}
protected function createWaveSet3():Array{
var _local1:Array = new Array();
var _local2:Array = new Array();
_local2.push(new Dwarf());
_local2.push(new Rogue());
_local2.push(new Cleric());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Cleric());
_local2.push(new Dwarf());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Cleric());
_local2.push(new Rogue());
_local2.push(new Cleric());
_local2.push(new Elf());
_local2.push(new Cleric());
_local2.push(new Elf());
_local2.push(new Cleric());
_local2.push(new Dwarf());
_local2.push(new Cleric());
_local2.push(new Wizard());
_local2.push(new Cleric());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local2.push(new Rogue());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local2.push(new Druid());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local2.push(new Valkyrie());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local2.push(new Dwarf());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Wizard());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Paladin());
_local2.push(new Dwarf());
_local2.push(new Cleric());
_local2.push(new Elf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Cleric());
_local2.push(new Druid());
_local2.push(new Dwarf());
_local2.push(new Wizard());
_local2.push(new Elf());
_local2.push(new Paladin());
_local1.push(new Wave(_local2, 2000));
return (_local1);
}
public function createEntryPoints(_arg1:World):Array{
return (null);
}
protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "wwwwwwwwwwwwwwwwwww";
_local1[1] = "wwwwwwwwwwwwwwwwwww";
_local1[2] = "wwwwwwwwwwwwwwwwwww";
_local1[3] = "wwwwwwwwwwwwwwwwwww";
_local1[4] = "wwwwwwwwwwwwwwwwwww";
_local1[5] = "wwwwwwwwwwwwwwwwwww";
_local1[6] = "wwwwwwwwwwwwwwwwwww";
_local1[7] = "wwwwwwwwwwwwwwwwwww";
_local1[8] = "wwwwwwwwwwwwwwwwwww";
_local1[9] = "wwwwwwwwwwwwwwwwwww";
_local1[10] = "wwwwwwwwwwwwwwwwwww";
_local1[11] = "wwwwwwwwwwwwwwwwwww";
_local1[12] = "wwwwwwwwwwwwwwwwwww";
_local1[13] = "wwwwwwwwwwwwwwwwwww";
_local1[14] = "wwwwwwwwwwwwwwwwwww";
_local1[15] = "wwwwwwwwwwwwwwwwwww";
_local1[16] = "wwwwwwwwwwwwwwwwwww";
_local1[17] = "wwwwwwwwwwwwwwwwwww";
_local1[18] = "wwwwwwwwwwwwwwwwwww";
return (_local1);
}
public function getGoal():Point{
return (new Point(9, 9));
}
protected function makeBuilding(_arg1:int, _arg2:Class):Building{
var _local3:Building = (new (_arg2) as Building);
_local3.setTeam(_arg1);
return (_local3);
}
public function populateMap(_arg1:World):void{
var _local5:String;
var _local6:int;
var _local7:Point;
var _local8:Door;
var _local2:Array = getMapDiagram();
var _local3:int;
while (_local3 < _local2.length) {
_local5 = (_local2[_local3] as String);
_local6 = 0;
while (_local6 < _local5.length) {
_local7 = _arg1.getTileAtMapLocation(_local6, _local3).getScreenLocation();
if (_local5.charAt(_local6) == "w"){
_arg1.addDisplayableAt(new Wall(), _local7);
} else {
if (_local5.charAt(_local6) == "g"){
_arg1.addDisplayableAt(new GoldVein(), _local7);
} else {
if (_local5.charAt(_local6) == "c"){
_arg1.addDisplayableAt(new CopperVein(), _local7);
} else {
if (_local5.charAt(_local6) == "p"){
_arg1.addDisplayableAt(new PlatinumVein(), _local7);
} else {
if (_local5.charAt(_local6) == "G"){
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, Gym), _local7);
} else {
if (_local5.charAt(_local6) == "T"){
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, Track), _local7);
} else {
if (_local5.charAt(_local6) == "A"){
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, Academy), _local7);
} else {
if (_local5.charAt(_local6) == "a"){
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, Altar), _local7);
} else {
if (_local5.charAt(_local6) == "B"){
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, Blacksmith), _local7);
} else {
if (_local5.charAt(_local6) == "h"){
_arg1.addDisplayableAt(new House(), _local7);
} else {
if (_local5.charAt(_local6) == "r"){
_arg1.addDisplayableAt(new Rock(), _local7);
} else {
if ((((_local5.charAt(_local6) == "d")) || ((_local5.charAt(_local6) == "D")))){
_local8 = new Door();
_arg1.addDisplayableAt(_local8, _local7);
if (_local5.charAt(_local6) == "D"){
_local8.setLocked(true);
};
};
};
};
};
};
};
};
};
};
};
};
};
_local6++;
};
_local3++;
};
var _local4:HomeBase = new HomeBase();
_local4.setTeam(Living.PLAYER_TEAM);
_arg1.addDisplayableAt(_local4, _arg1.getTileAtMapLocation(getGoal().x, getGoal().y).getScreenLocation());
}
}
}//package com.greyhound.world.maps.mapcreators
Section 583
//MarathonMapCreator (com.greyhound.world.maps.mapcreators.MarathonMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.living.heroes.*;
public class MarathonMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(2);
_local2[0] = new EntryPoint(new Point(8, 17), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(10, 18), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function getGoal():Point{
return (new Point(9, 0));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "wwwwwwww H wwwwwwww";
_local1[1] = "wwwwwwww wwwwwwww";
_local1[2] = "wwwwwwww wwwwwcww";
_local1[3] = "wwwcwwww wwwwwwww";
_local1[4] = "wwwwwwww wwwwwwww";
_local1[5] = "wwwwwwww wwwwwwww";
_local1[6] = "wwwwwwww wwwwwwww";
_local1[7] = "wwcwwwww wwwwwwcw";
_local1[8] = "wwwwwwww wwwwwwww";
_local1[9] = "wwwwwwww wwcwwwww";
_local1[10] = "wwwwwwcw wwwwwwww";
_local1[11] = "wwwwwwww w wwwwwwww";
_local1[12] = "wwgwwwww w wwwwwwww";
_local1[13] = "wwwwwwww w wwgwwwww";
_local1[14] = "wwwwwwwg w gwwwwwww";
_local1[15] = "wwwwwwww w wwwwwwww";
_local1[16] = "wwwwwwwg w gwwwwwww";
_local1[17] = "wwwwwwww w wwwwwwww";
_local1[18] = "wwwwpwwpEwEpwwwwwpw";
return (_local1);
}
private function createWaves():Array{
var _local4:Number;
var _local1:Array = new Array();
var _local2:Array = new Array();
var _local3:int;
while (_local3 < 10) {
_local2.push(new Dwarf());
_local2.push(new Cleric());
_local2.push(new Wizard());
_local4 = Math.random();
if (_local4 < 0.33){
_local2.push(new Druid());
} else {
if (_local4 < 0.66){
_local2.push(new Elf());
} else {
_local2.push(new Rogue());
};
};
_local3++;
};
_local2.push(new Paladin());
_local1.push(new Wave(_local2, 2000));
return (mergeWaves(createWaveSet1(), createWaveSet2(), _local1));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 584
//NewToolsMapCreator (com.greyhound.world.maps.mapcreators.NewToolsMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
public class NewToolsMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(2);
_local2[0] = new EntryPoint(new Point(0, 18), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(18, 0), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function getGoal():Point{
return (new Point(9, 9));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "pwwwwwwwwwwwwwwww E";
_local1[1] = "wwwwwgwwwwwwwwwww w";
_local1[2] = "wwwwwwwwwwcwwawww w";
_local1[3] = "wgwwwwwwwwwwwww w";
_local1[4] = "wwwwwwwwwwwawww www";
_local1[5] = "wwwwwwwwwwwww www";
_local1[6] = "wwwwwwcwwww w wwwww";
_local1[7] = "wwwwwwwwww wwBww";
_local1[8] = "wwwwwwwwwww wwwwwww";
_local1[9] = "wwcwwww wH wwBwwww";
_local1[10] = "wwwwaw wwwwwwwcw";
_local1[11] = "wwwwwww wwwwwwwwwww";
_local1[12] = "wwwww wwwwwwwcwww";
_local1[13] = "wawww wwwwwwwwwwwww";
_local1[14] = "www wwBwwwwwwwgww";
_local1[15] = "www wwwwwwwwwwwwwww";
_local1[16] = "w wwwwcwwwwgwwwww";
_local1[17] = "w wwwwBwwwwwwwwwwww";
_local1[18] = "E wwwwwwwwgwwwwwwwp";
return (_local1);
}
private function createWaves():Array{
return (mergeWaves(createWaveSet1(), createWaveSet2(), createWaveSet3()));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 585
//NoMoreFreebiesMapCreator (com.greyhound.world.maps.mapcreators.NoMoreFreebiesMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
public class NoMoreFreebiesMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(1);
_local2[0] = new EntryPoint(new Point(1, 18), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function getGoal():Point{
return (new Point(12, 16));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "gwwwwwwwwwwwcwwwwww";
_local1[1] = "wwwwwcwwwwwwwwwwwww";
_local1[2] = "wwwwwwwwwwwwwwwwwww";
_local1[3] = "wwwwwwwwcwwwwwwwwww";
_local1[4] = "wwgwwwwwww wwwwwwww";
_local1[5] = "w w";
_local1[6] = "w wwwwwwww wwwwww w";
_local1[7] = "p wwwwcwwwwwwwwww w";
_local1[8] = "w wwwwwwwwwwwcwww w";
_local1[9] = "w wwwwwwwwwwwwww ";
_local1[10] = "p wwwwwwwcwwwwwww w";
_local1[11] = "w wwwcwwwwwwwwwww w";
_local1[12] = "w wwwwwwwwwwwwcww w";
_local1[13] = "p wwwwwwwwcwwwwww w";
_local1[14] = "w wwwcwwwwwwwwwww w";
_local1[15] = "w wwwwwwwww www w";
_local1[16] = "p pwwwwwwww H w";
_local1[17] = "w wwwcwwwww wwwww";
_local1[18] = "wEwwwwwwwwwwwwwwwcw";
return (_local1);
}
private function createWaves():Array{
return (mergeWaves(createWaveSet1()));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 586
//PieceOfCakeMapCreator (com.greyhound.world.maps.mapcreators.PieceOfCakeMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.things.buildings.lairs.*;
public class PieceOfCakeMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local3:Object;
var _local4:Array;
var _local2:Array = createWaves();
for each (_local3 in _local2) {
(_local3 as Wave).setWaveSpacing(3000);
};
_local4 = new Array(1);
_local4[0] = new EntryPoint(new Point(15, 0), _local2, _arg1, Living.ENEMY_TEAM);
return (_local4);
}
override public function populateMap(_arg1:World):void{
super.populateMap(_arg1);
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, GoblinLair), _arg1.getTileAtMapLocation(14, 9).getScreenLocation());
_arg1.addDisplayableAt(makeBuilding(Living.PLAYER_TEAM, CentaurLair), _arg1.getTileAtMapLocation(14, 10).getScreenLocation());
}
override public function getGoal():Point{
return (new Point(3, 1));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "wwwwwwwwwwwwwwwEpww";
_local1[1] = "ww H wwwwwcwwww www";
_local1[2] = "ww wwwwwwwwww gww";
_local1[3] = "www wwwwwwwwwww www";
_local1[4] = "www wwwcwwwwwww gww";
_local1[5] = "www wwwwwwwcwww www";
_local1[6] = "www wwwwwwwwwww www";
_local1[7] = "www wwwwwwwwwww www";
_local1[8] = "www wwwwwcwwwww www";
_local1[9] = "w wwwwwww w";
_local1[10] = "w wwwwwww w";
_local1[11] = "www wwwwwwwwwww www";
_local1[12] = "www wwwcwwwwwww www";
_local1[13] = "www wwwwwwwwwww www";
_local1[14] = "www wwwwwwwcwww www";
_local1[15] = "www wwwwwwwwwww www";
_local1[16] = "www wwww wwwww www";
_local1[17] = "www www";
_local1[18] = "wwwwwwcw wcwwwwwww";
return (_local1);
}
private function createWaves():Array{
return (mergeWaves(createWaveSet1()));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 587
//PreludeToVictoryMapCreator (com.greyhound.world.maps.mapcreators.PreludeToVictoryMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
public class PreludeToVictoryMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(3);
_local2[0] = new EntryPoint(new Point(9, 18), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(0, 9), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[2] = new EntryPoint(new Point(18, 0), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function getGoal():Point{
return (new Point(9, 9));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "c ccwcwcw E";
_local1[1] = "c c wcwcwcc cccgcgc";
_local1[2] = "g g cwccwcc c";
_local1[3] = "c c ccwccwcccccgc c";
_local1[4] = "c c wccwcwcc c";
_local1[5] = "c c wccwccwc ccgccc";
_local1[6] = "g g ccwcwccw ";
_local1[7] = "c r ccacccawcccgcc ";
_local1[8] = "c r wcwccwccc ";
_local1[9] = "E r H wwwww";
_local1[10] = "rrrrwww w w wwwBwww";
_local1[11] = "rrrrwww w w ";
_local1[12] = "rrwwwBw w wwwwwwww ";
_local1[13] = " w w ";
_local1[14] = "ccgcccgcwcccgccc w ";
_local1[15] = " w ";
_local1[16] = " cgcccgcccwwwwwwww ";
_local1[17] = " w ";
_local1[18] = "ccgcccgccEwwwwwwwww";
return (_local1);
}
private function createWaves():Array{
var _local2:Object;
var _local3:Array;
var _local4:Array;
var _local1:Array = createWaveSet1();
for each (_local2 in _local1) {
(_local2 as Wave).setWaveSpacing(2500);
};
_local3 = createWaveSet2();
for each (_local2 in _local3) {
(_local2 as Wave).setWaveSpacing(2500);
};
_local4 = createWaveSet3();
for each (_local2 in _local4) {
(_local2 as Wave).setWaveSpacing(2500);
};
return (mergeWaves(_local1, _local3, _local4));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 588
//TakeTheTownMapCreator (com.greyhound.world.maps.mapcreators.TakeTheTownMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.living.heroes.*;
public class TakeTheTownMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(2);
_local2[0] = new EntryPoint(new Point(0, 1), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(18, 1), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
private function createFinalBossWaves():Array{
var _local2:Array;
var _local1:Array = new Array();
_local2 = [new Paladin()];
_local1.push(new Wave(_local2, 2000));
_local2 = [new Paladin(), new Paladin()];
_local1.push(new Wave(_local2, 2000));
_local2 = [new Paladin(), new Paladin(), new Paladin()];
_local1.push(new Wave(_local2, 2000));
_local2 = [new Paladin(), new Paladin(), new Paladin(), new Paladin()];
_local1.push(new Wave(_local2, 2000));
_local2 = [new Paladin(), new Paladin(), new Paladin(), new Paladin(), new Paladin()];
_local1.push(new Wave(_local2, 2000));
_local2 = [new Champion()];
_local1.push(new Wave(_local2, 2000));
return (_local1);
}
override public function getGoal():Point{
return (new Point(5, 15));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "hhhh hhhhhhhhh hhhh";
_local1[1] = "E E";
_local1[2] = "h hh hhhh hhhh hhhh";
_local1[3] = "h hh hhhh hhhh hhhh";
_local1[4] = "h hhhh";
_local1[5] = "hhhh hhhh hhhh hhhh";
_local1[6] = "hhhh hhhh hhhh hhhh";
_local1[7] = " ";
_local1[8] = " hhhhhhhhhhhhh hhhh";
_local1[9] = " hhhhhhhhhhhh hhhh";
_local1[10] = " hhhhhhh hhhh hhhhh";
_local1[11] = " hhhhhhh hhhh hhhhh";
_local1[12] = " ";
_local1[13] = " hhhhhhhhhhh hhhhhh";
_local1[14] = " hhhhhhhhhh hhhhhh";
_local1[15] = " hhh H hhhh hhhhhhh";
_local1[16] = " hhh hhhh hhhhhhh";
_local1[17] = " hhhh hhhh hhhhhhh";
_local1[18] = " hhhhhhhh";
return (_local1);
}
private function createWaves():Array{
return (mergeWaves(createWaveSet1(), createWaveSet2(), createWaveSet3(), createFinalBossWaves()));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 589
//ThePrisonMapCreator (com.greyhound.world.maps.mapcreators.ThePrisonMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.things.buildings.lairs.*;
import com.greyhound.things.treasure.*;
public class ThePrisonMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(2);
_local2[0] = new EntryPoint(new Point(8, 0), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(10, 0), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function populateMap(_arg1:World):void{
super.populateMap(_arg1);
createChest(_arg1, 0, 17, 4, 1, 0, 100);
createLair(_arg1, 2, 17, GoblinLair, 4);
createChest(_arg1, 18, 17, 4, 1, 0, 100);
createLair(_arg1, 16, 17, GoblinLair, 4);
createChest(_arg1, 0, 15, 6, 1, 0, 150);
createLair(_arg1, 2, 15, CentaurLair, 3);
createChest(_arg1, 18, 15, 6, 1, 0, 150);
createLair(_arg1, 16, 15, CentaurLair, 3);
createChest(_arg1, 0, 13, 10, 1, 0, 200);
createLair(_arg1, 2, 13, MinotaurLair, 3);
createChest(_arg1, 18, 13, 10, 1, 0, 200);
createLair(_arg1, 16, 13, MinotaurLair, 3);
createChest(_arg1, 0, 11, 14, 1, 0, 250);
createLair(_arg1, 2, 11, ManticoreLair, 3);
createChest(_arg1, 18, 11, 14, 1, 0, 250);
createLair(_arg1, 16, 11, ManticoreLair, 3);
createChest(_arg1, 0, 9, 18, 9, 0, 300);
createLair(_arg1, 2, 9, LichLair, 2);
createChest(_arg1, 18, 9, 18, 1, 0, 300);
createLair(_arg1, 16, 9, LichLair, 2);
createChest(_arg1, 0, 7, 22, 1, 0, 350);
createLair(_arg1, 2, 7, ElementalLair, 2);
createChest(_arg1, 18, 7, 22, 1, 0, 350);
createLair(_arg1, 16, 7, ElementalLair, 2);
createChest(_arg1, 0, 5, 24, 1, 0, 400);
createLair(_arg1, 2, 5, HydraLair, 1);
createChest(_arg1, 18, 5, 24, 1, 0, 400);
createLair(_arg1, 16, 5, HydraLair, 1);
createChest(_arg1, 0, 3, 28, 1, 0, 450);
createLair(_arg1, 2, 3, WyrmLair, 1);
createChest(_arg1, 18, 3, 28, 1, 0, 450);
createLair(_arg1, 16, 3, WyrmLair, 1);
createChest(_arg1, 0, 1, 32, 1, 0, 500);
createLair(_arg1, 2, 1, DemonLair, 1);
createChest(_arg1, 18, 1, 32, 1, 0, 500);
createLair(_arg1, 16, 1, DemonLair, 1);
}
private function createChest(_arg1:World, _arg2:int, _arg3:int, _arg4:int, _arg5:int, _arg6:int, _arg7:int):void{
var _local8:TreasureChest = new TreasureChest(_arg4, _arg5, _arg6, _arg7);
_arg1.addDisplayableAt(_local8, _arg1.getTileAtMapLocation(_arg2, _arg3).getScreenLocation());
}
override public function getGoal():Point{
return (new Point(9, 18));
}
private function createLair(_arg1:World, _arg2:int, _arg3:int, _arg4:Class, _arg5:int):void{
var _local6:Lair = new (_arg4);
_local6.setMaximumPopulation(_arg5);
_local6.setRespawnSpeed(500000);
_local6.setTeam(Living.CREEP_TEAM);
_arg1.addDisplayableAt(_local6, _arg1.getTileAtMapLocation(_arg2, _arg3).getScreenLocation());
var _local7:int;
while (_local7 < _arg5) {
_local6.spawnNow();
_local7++;
};
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = "rrrwwwwrEwErwwwwrrr";
_local1[1] = " D r r r D ";
_local1[2] = "rrrwww r r r wwwrrr";
_local1[3] = " D r r r D ";
_local1[4] = "rrrwww r r r wwwrrr";
_local1[5] = " D r r r D ";
_local1[6] = "rrrwww r r r wwwrrr";
_local1[7] = " D r r r D ";
_local1[8] = "rrrwww r r r wwwrrr";
_local1[9] = " D r r r D ";
_local1[10] = "rrrwww r r r wwwrrr";
_local1[11] = " D r r r D ";
_local1[12] = "rrrwww r r r wwwrrr";
_local1[13] = " D r r r D ";
_local1[14] = "rrrwww wwwrrr";
_local1[15] = " D D ";
_local1[16] = "rrrwww wwwrrr";
_local1[17] = " D D ";
_local1[18] = "rrrrwwwwwHwwwwwwrrr";
return (_local1);
}
private function createWaves():Array{
return (mergeWaves(createWaveSet1()));
}
}
}//package com.greyhound.world.maps.mapcreators
Section 590
//TraitorsMapCreator (com.greyhound.world.maps.mapcreators.TraitorsMapCreator)
package com.greyhound.world.maps.mapcreators {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.living.*;
import com.greyhound.living.monsters.*;
import com.greyhound.living.creep.*;
public class TraitorsMapCreator extends MapCreator {
override public function createEntryPoints(_arg1:World):Array{
var _local2:Array = new Array(2);
_local2[0] = new EntryPoint(new Point(0, 9), createWaves(), _arg1, Living.ENEMY_TEAM);
_local2[1] = new EntryPoint(new Point(18, 9), createWaves(), _arg1, Living.ENEMY_TEAM);
return (_local2);
}
override public function getGoal():Point{
return (new Point(9, 9));
}
override protected function getMapDiagram():Array{
var _local1:Array = new Array(19);
_local1[0] = " w wgwcwgw ww";
_local1[1] = " w w w wwwwcww w ww";
_local1[2] = " w w w wwwcwww w ww";
_local1[3] = " w w w wcwwwcw w ww";
_local1[4] = " w w w wwwcwww w ww";
_local1[5] = " w w w w www w ww";
_local1[6] = " w w w w cww w ww";
_local1[7] = " w w w ww wcww w ww";
_local1[8] = " w w w wg cwww w ww";
_local1[9] = "Ep p p H p p pE";
_local1[10] = "ww w wwwc gw w w w ";
_local1[11] = "ww w wcww ww w w w ";
_local1[12] = "ww w www w w w w ";
_local1[13] = "ww w wcw w w w w ";
_local1[14] = "ww w wwcwcww w w w ";
_local1[15] = "ww w wwwwwww w w w ";
_local1[16] = "ww w wwccwcw w w w ";
_local1[17] = "ww w wwwwwww w w w ";
_local1[18] = "ww wwgwwgw w ";
return (_local1);
}
private function createWaves():Array{
var _local1:Array = new Array();
var _local2:Array = new Array();
var _local3:int;
while (_local3 < 8) {
_local2.push(new Goblin());
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
if ((_local3 % 2) == 0){
_local2.push(new Goblin());
} else {
_local2.push(new Centaur());
};
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
if ((_local3 % 3) == 0){
_local2.push(new Goblin());
} else {
if ((_local3 % 3) == 1){
_local2.push(new Centaur());
} else {
_local2.push(new Minotaur());
};
};
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
if ((_local3 % 4) == 0){
_local2.push(new Goblin());
} else {
if ((_local3 % 4) == 1){
_local2.push(new Centaur());
} else {
if ((_local3 % 4) == 2){
_local2.push(new Minotaur());
} else {
_local2.push(new Lich());
};
};
};
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
if ((_local3 % 4) == 0){
_local2.push(new Minotaur());
} else {
if ((_local3 % 4) == 1){
_local2.push(new Centaur());
} else {
if ((_local3 % 4) == 2){
_local2.push(new Centaur());
} else {
_local2.push(new Lich());
};
};
};
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
_local2.push(new Centaur());
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
_local2.push(new Lich());
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
_local2.push(new Manticore());
_local3++;
};
_local1.push(new Wave(_local2, 1500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 20) {
_local2.push(new Goblin());
_local3++;
};
_local1.push(new Wave(_local2, 500));
_local2 = new Array();
_local3 = 0;
while (_local3 < 5) {
_local2.push(new Elemental());
_local3++;
};
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local3 = 0;
while (_local3 < 8) {
if ((_local3 % 4) == 0){
_local2.push(new Elemental());
} else {
if ((_local3 % 4) == 1){
_local2.push(new Elemental());
} else {
if ((_local3 % 4) == 2){
_local2.push(new Centaur());
} else {
_local2.push(new Centaur());
};
};
};
_local3++;
};
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Manticore());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Wyrm());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Demon());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Hydra());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local3 = 0;
while (_local3 < 2) {
_local2.push(new Demon());
_local3++;
};
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local3 = 0;
while (_local3 < 2) {
_local2.push(new Wyrm());
_local3++;
};
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local3 = 0;
while (_local3 < 2) {
_local2.push(new Hydra());
_local3++;
};
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Hydra());
_local2.push(new Demon());
_local2.push(new Wyrm());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
_local2.push(new Goblin());
_local2.push(new Centaur());
_local2.push(new Minotaur());
_local2.push(new Manticore());
_local2.push(new Lich());
_local2.push(new Elemental());
_local2.push(new Hydra());
_local2.push(new Demon());
_local2.push(new Wyrm());
_local1.push(new Wave(_local2, 2000));
_local2 = new Array();
switch (SavedData.getDifficulty()){
case GameSave.HARD:
_local2.push(new EnemyEvilWizard());
case GameSave.MEDIUM:
_local2.push(new EnemyChaosRanger());
case GameSave.EASY:
_local2.push(new EnemyDeathKnight());
break;
default:
trace("Unknown difficulty level");
};
_local1.push(new Wave(_local2, 2000));
return (_local1);
}
}
}//package com.greyhound.world.maps.mapcreators
Section 591
//HereBeTreasureMapVariables (com.greyhound.world.maps.mapvariables.HereBeTreasureMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class HereBeTreasureMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "TREASURE";
public function HereBeTreasureMapVariables(){
mapID = MAP_ID;
medFlashKey = "Qk5LRWVKQWc=";
medSu0249 = "MjQ0M2olZSVhJW4lcw==";
hardFlashKey = "a05ld1dlZEM=";
hardSu0249 = "MjQ1MmolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"Here Be Treasure\" As you traveled closer towards the surface, you started to find interesting baubles left behind by heroes of old.");
}
public function getStartingGold():int{
return (132);
}
public function getMapCreator():IMapCreator{
return (new HereBeTreasureMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(193, 107));
}
public function getTutorial(_arg1:World):ITutorial{
return (new HereBeTreasureTutorial(_arg1));
}
public function getStartingLevel():int{
return (3);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(NoMoreFreebiesMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(180, 0x0101));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 592
//IMapVariables (com.greyhound.world.maps.mapvariables.IMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public interface IMapVariables {
function getStartingLevel():int;
function getUniqueID():String;
function reportHighScore(_arg1:String, _arg2:String, _arg3:int):void;
function getPictureLocation():Point;
function getPictureDimensions():Point;
function getMapCreator():IMapCreator;
function getTutorial(_arg1:World):ITutorial;
function meetsPrereqs():Boolean;
function getMapToolTip():String;
function getStartingGold():int;
}
}//package com.greyhound.world.maps.mapvariables
Section 593
//MapVariables (com.greyhound.world.maps.mapvariables.MapVariables)
package com.greyhound.world.maps.mapvariables {
import com.greyhound.common.kongregate.*;
public class MapVariables {
protected var hardSu0249:String;
protected var medSu0249:String;
protected var mapID:String;
protected var hardFlashKey:String;
protected var medFlashKey:String;
public function reportHighScore(_arg1:String, _arg2:String, _arg3:int):void{
APILoader.submitScore(_arg3, ((SavedData.getDifficultyName() + ":") + mapID));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 594
//MarathonMapVariables (com.greyhound.world.maps.mapvariables.MarathonMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class MarathonMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "MARATHON";
public function MarathonMapVariables(){
mapID = MAP_ID;
medFlashKey = "TmluWHlJbUc=";
medSu0249 = "MjQ0NmolZSVhJW4lcw==";
hardFlashKey = "Q1ZYVWZxZFo=";
hardSu0249 = "MjQ1NGolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"Marathon\" The heroes have decided they need to try a new tactic. Have fun...(hint boulders)");
}
public function getStartingGold():int{
return (140);
}
public function getMapCreator():IMapCreator{
return (new MarathonMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(211, 70));
}
public function getTutorial(_arg1:World):ITutorial{
return (null);
}
public function getStartingLevel():int{
return (5);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(ThePrisonMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(406, 179));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 595
//NewToolsMapVariables (com.greyhound.world.maps.mapvariables.NewToolsMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class NewToolsMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "NEW_TOOLS";
public function NewToolsMapVariables(){
mapID = MAP_ID;
medFlashKey = "SnFsWExXVUs=";
medSu0249 = "MjQ1NmolZSVhJW4lcw==";
hardFlashKey = "UFl6aU9zcEE=";
hardSu0249 = "MjQ1N2olZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"New Tools\" New challenges and new buildings are both present on this map. ");
}
public function getStartingGold():int{
return (150);
}
public function getMapCreator():IMapCreator{
return (new NewToolsMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(154, 50));
}
public function getTutorial(_arg1:World):ITutorial{
return (new NewToolsTutorial(_arg1));
}
public function getStartingLevel():int{
return (7);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(TraitorsMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(79, 365));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 596
//NoMoreFreebiesMapVariables (com.greyhound.world.maps.mapvariables.NoMoreFreebiesMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class NoMoreFreebiesMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "NO_FREEB";
public function NoMoreFreebiesMapVariables(){
mapID = MAP_ID;
medFlashKey = "a3lJeUZ4Q0w=";
medSu0249 = "MjQ0NGolZSVhJW4lcw==";
hardFlashKey = "U01PbXdKaFg=";
hardSu0249 = "MjQ1MWolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"No More Freebies\" This map will be your first venture into the game without the assistance of prebuilt lairs and buildings, and nicely carved out spaces. If you beat this map then you have a firm handle on how the game works.");
}
public function getStartingGold():int{
return (72);
}
public function getMapCreator():IMapCreator{
return (new NoMoreFreebiesMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(194, 108));
}
public function getTutorial(_arg1:World):ITutorial{
return (new NoMoreFreebiesTutorial(_arg1));
}
public function getStartingLevel():int{
return (2);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(PieceOfCakeMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(423, 362));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 597
//PieceOfCakeMapVariables (com.greyhound.world.maps.mapvariables.PieceOfCakeMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class PieceOfCakeMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "POC";
public function PieceOfCakeMapVariables(){
mapID = MAP_ID;
medFlashKey = "UGhCYkxLZ1E=";
medSu0249 = "MjQ0MmolZSVhJW4lcw==";
hardFlashKey = "U21sR2doRVU=";
hardSu0249 = "MjQ1MGolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"Piece Of Cake\" This is where it all started. Your glorious campaign to control the underworld, and the overworld. This is the easiest map. Once you have completed it you can progress further upwards and unlock new abilities.");
}
public function getStartingGold():int{
return (72);
}
public function getMapCreator():IMapCreator{
return (new PieceOfCakeMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(154, 97));
}
public function getTutorial(_arg1:World):ITutorial{
return (new PieceOfCakeTutorial(_arg1));
}
public function getStartingLevel():int{
return (1);
}
public function meetsPrereqs():Boolean{
return (true);
}
public function getPictureLocation():Point{
return (new Point(266, 373));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 598
//PreludeToVictoryMapVariables (com.greyhound.world.maps.mapvariables.PreludeToVictoryMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class PreludeToVictoryMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "PRELUDE";
public function PreludeToVictoryMapVariables(){
mapID = MAP_ID;
medFlashKey = "dUlvU0RRdnM=";
medSu0249 = "MjQ0OGolZSVhJW4lcw==";
hardFlashKey = "cHNaVElCWGk=";
hardSu0249 = "MjQ1OGolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"Prelude To Victory\" This is the final stop before you can emerge from darkness into the light of day and assault the town.");
}
public function getStartingGold():int{
return (160);
}
public function getMapCreator():IMapCreator{
return (new PreludeToVictoryMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(98, 107));
}
public function getTutorial(_arg1:World):ITutorial{
return (null);
}
public function getStartingLevel():int{
return (8);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(NewToolsMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(79, 0x0101));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 599
//TakeTheTownMapVariables (com.greyhound.world.maps.mapvariables.TakeTheTownMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class TakeTheTownMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "TAKE_TOWN";
public function TakeTheTownMapVariables(){
mapID = MAP_ID;
medFlashKey = "RUFTSXpBSHg=";
medSu0249 = "MjQ0OWolZSVhJW4lcw==";
hardFlashKey = "alVtSmFIbHk=";
hardSu0249 = "MjQ1OWolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"Take The Town\" The final assault. Will your power be enough to stand and fight in the heart of the enemy? The leader of the humans lives here and you will lose the battle if he reaches your home tile alive.");
}
public function getStartingGold():int{
return (180);
}
public function getMapCreator():IMapCreator{
return (new TakeTheTownMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(293, 107));
}
public function getTutorial(_arg1:World):ITutorial{
return (new TakeTheTownTutorial(_arg1));
}
public function getStartingLevel():int{
return (9);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(PreludeToVictoryMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(79, 147));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 600
//ThePrisonMapVariables (com.greyhound.world.maps.mapvariables.ThePrisonMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class ThePrisonMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "PRISON";
public function ThePrisonMapVariables(){
mapID = MAP_ID;
medFlashKey = "VVlMbmdWUWI=";
medSu0249 = "MjQ0NWolZSVhJW4lcw==";
hardFlashKey = "UlRPV2Nhd2E=";
hardSu0249 = "MjQ1M2olZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"The Prison\" Long ago many heroes were locked away in this prison. They have since died but their treasure(and the jailkeepers) remain. ");
}
public function getStartingGold():int{
return (132);
}
public function getMapCreator():IMapCreator{
return (new ThePrisonMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(234, 107));
}
public function getTutorial(_arg1:World):ITutorial{
return (new ThePrisonTutorial(_arg1));
}
public function getStartingLevel():int{
return (4);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(HereBeTreasureMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(383, 252));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 601
//TraitorsMapVariables (com.greyhound.world.maps.mapvariables.TraitorsMapVariables)
package com.greyhound.world.maps.mapvariables {
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.world.maps.tutorials.*;
public class TraitorsMapVariables extends MapVariables implements IMapVariables {
public static const MAP_ID:String = "TRAITORS";
public function TraitorsMapVariables(){
mapID = MAP_ID;
medFlashKey = "eVllVFdQY3o=";
medSu0249 = "MjQ0N2olZSVhJW4lcw==";
hardFlashKey = "VWlpaGxxU1Q=";
hardSu0249 = "MjQ1NWolZSVhJW4lcw==";
}
public function getUniqueID():String{
return (MAP_ID);
}
public function getMapToolTip():String{
return ("\"Traitors\" Well it was bound to happen. You ran into another overlord and he is trying to remove you from the picture.");
}
public function getStartingGold():int{
return (140);
}
public function getMapCreator():IMapCreator{
return (new TraitorsMapCreator());
}
public function getPictureDimensions():Point{
return (new Point(184, 50));
}
public function getTutorial(_arg1:World):ITutorial{
return (null);
}
public function getStartingLevel():int{
return (6);
}
public function meetsPrereqs():Boolean{
return (SavedData.isMapCleared(MarathonMapVariables.MAP_ID));
}
public function getPictureLocation():Point{
return (new Point(79, 418));
}
}
}//package com.greyhound.world.maps.mapvariables
Section 602
//HereBeTreasureTutorial (com.greyhound.world.maps.tutorials.HereBeTreasureTutorial)
package com.greyhound.world.maps.tutorials {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
import com.greyhound.tools.*;
public class HereBeTreasureTutorial extends Tutorial implements ITutorial {
private static const WAIT_FOR_ENTRY_POINTS_TO_CLOSE:int = 2;
private static const START_STATE:int = 0;
private static const DONE:int = 10;
private static const WAIT_FOR_TREASURE_TO_CLOSE:int = 3;
private static const WAIT_FOR_SKIP_CLOSE:int = 1;
public function HereBeTreasureTutorial(_arg1:World){
super(_arg1);
state = START_STATE;
}
private function advanceState():void{
var _local1:Stage;
var _local2:String;
_local1 = world.getStage();
switch (state){
case WAIT_FOR_SKIP_CLOSE:
state = WAIT_FOR_ENTRY_POINTS_TO_CLOSE;
_local2 = "The first thing of note here, and the most pressing, is you now have two enemy spawn points to contend with. This means twice as much is going to be coming at you.";
new TutorialDialog(_local2, 180, 250, _local1, advanceState, endCallBack, Util.NORTH);
break;
case WAIT_FOR_ENTRY_POINTS_TO_CLOSE:
state = WAIT_FOR_TREASURE_TO_CLOSE;
_local2 = "You may have also noticed this treasure chest down here. If you get your avatar to touch it you will gain whatever is inside.";
new TutorialDialog(_local2, 270, 300, _local1, advanceState, endCallBack, Util.SOUTH);
break;
case WAIT_FOR_TREASURE_TO_CLOSE:
state = DONE;
_local2 = "There is a door, and a neutral monster(which are called creeps) blocking it. It isn't trying to take your jewels, but it will try to defeat you if you come near it. Once you defeat the monster and have a goblin dig out the door, the treasure will be yours. Simply move your avatar on top of it to claim it.";
new TutorialDialog(_local2, 265, 160, _local1, advanceState, endCallBack, Util.SOUTH);
break;
case DONE:
endCallBack();
break;
default:
trace(("unknown state in here be treasure tutorial:" + state));
};
}
override protected function process():void{
var _local1:Stage;
var _local2:String;
_local1 = world.getStage();
if (state == START_STATE){
state = WAIT_FOR_SKIP_CLOSE;
world.setPaused(true);
_local2 = "This map has a couple of new things on it, so we will pause to explain it. You can skip this if you already know what you are doing by pressing end. Otherwise press the next to continue.";
new TutorialDialog(_local2, 100, 100, _local1, advanceState, endCallBack);
};
}
}
}//package com.greyhound.world.maps.tutorials
Section 603
//ITutorial (com.greyhound.world.maps.tutorials.ITutorial)
package com.greyhound.world.maps.tutorials {
public interface ITutorial {
function setMain(_arg1:Main):void;
function passTime(_arg1:int):void;
}
}//package com.greyhound.world.maps.tutorials
Section 604
//NewToolsTutorial (com.greyhound.world.maps.tutorials.NewToolsTutorial)
package com.greyhound.world.maps.tutorials {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
public class NewToolsTutorial extends Tutorial implements ITutorial {
private static const DONE:int = 1;
private static const START_STATE:int = 0;
public function NewToolsTutorial(_arg1:World){
super(_arg1);
state = START_STATE;
}
private function advanceState():void{
var _local1:Stage = world.getStage();
switch (state){
case DONE:
endCallBack();
break;
default:
trace(("unknown state in new tools:" + state));
};
}
override protected function process():void{
var _local1:Stage;
var _local2:String;
_local1 = world.getStage();
if (state == START_STATE){
state = DONE;
world.setPaused(true);
_local2 = "This map contains a new feature. There are a few buildings here that you cannot normaly build. Take advantage of them.";
new TutorialDialog(_local2, 50, 100, _local1, advanceState, endCallBack);
};
}
}
}//package com.greyhound.world.maps.tutorials
Section 605
//NoMoreFreebiesTutorial (com.greyhound.world.maps.tutorials.NoMoreFreebiesTutorial)
package com.greyhound.world.maps.tutorials {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
public class NoMoreFreebiesTutorial extends Tutorial implements ITutorial {
private static const WAIT_FOR_ENTRY_POINTS_TO_CLOSE:int = 2;
private static const START_STATE:int = 0;
private static const DONE:int = 10;
private static const WAIT_FOR_SKIP_CLOSE:int = 1;
public function NoMoreFreebiesTutorial(_arg1:World){
super(_arg1);
state = START_STATE;
}
private function advanceState():void{
var _local2:String;
var _local1:Stage = world.getStage();
switch (state){
case WAIT_FOR_SKIP_CLOSE:
state = WAIT_FOR_ENTRY_POINTS_TO_CLOSE;
_local2 = "The glowing ring in the corner is one of the hero's spawn points. If any of your units get too close to it, the overwhelming goodness contained within will burst forth and purge all evil. So stay away from these.";
new TutorialDialog(_local2, 0, 223, _local1, advanceState, endCallBack);
break;
case WAIT_FOR_ENTRY_POINTS_TO_CLOSE:
endCallBack();
break;
default:
trace(("unknown state in here be treasure tutorial:" + state));
};
}
override protected function process():void{
var _local1:Stage;
var _local2:String;
_local1 = world.getStage();
if (state == START_STATE){
state = WAIT_FOR_SKIP_CLOSE;
world.setPaused(true);
_local2 = "A quick tip. You can hold down control while clicking to only select buildings. Useful when a unit is on top of a building.";
new TutorialDialog(_local2, 100, 100, _local1, advanceState, endCallBack);
};
}
}
}//package com.greyhound.world.maps.tutorials
Section 606
//PieceOfCakeTutorial (com.greyhound.world.maps.tutorials.PieceOfCakeTutorial)
package com.greyhound.world.maps.tutorials {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
import com.greyhound.tools.*;
public class PieceOfCakeTutorial extends Tutorial implements ITutorial {
private var waitForFourtyStart:int;
private static const DONE:int = (WAIT_FOR_FEW_MINUTES + 1);
private static const WAIT_FOR_VEIN_TO_CLOSE:int = (WAIT_FOR_HOME_BASE_CLOSE + 1);
private static const WAIT_AVATAR_LEVEL_UP_CLOSE:int = (WAIT_FOR_AVATAR_LEVEL_UP + 1);
private static const WAIT_FOR_BUILD_OTHER_SIDE_CLOSE:int = (WAIT_FOR_GOBLIN_CLOSE + 1);
private static const WAIT_FOR_GOBLIN_CLOSE:int = (WAIT_FOR_CENTAUR_CLOSE + 1);
private static const WAIT_FOR_FEW_MINUTES:int = (WAIT_AVATAR_LEVEL_UP_CLOSE + 1);
private static const WAIT_FOR_AVATAR_LEVEL_UP:int = (WAIT_FOR_VEIN_TO_CLOSE + 1);
private static const WAIT_FOR_HOME_BASE_CLOSE:int = (WAIT_FOR_FOURTY_SECONDS + 1);
private static const WAIT_FOR_FOURTY_SECONDS:int = (WAIT_FOR_BUILD_OTHER_SIDE_CLOSE + 1);
private static const WAIT_FOR_CENTAUR_CLOSE:int = (WAIT_FOR_SUMMARY_CLOSE + 1);
private static const START_STATE:int = 0;
private static const WAIT_FOR_SKIP_CLOSE:int = (START_STATE + 1);
private static const WAIT_FOR_SUMMARY_CLOSE:int = (WAIT_FOR_SKIP_CLOSE + 1);
public function PieceOfCakeTutorial(_arg1:World){
super(_arg1);
state = START_STATE;
}
private function advanceState():void{
var _local2:String;
var _local1:Stage = world.getStage();
switch (state){
case WAIT_FOR_SKIP_CLOSE:
state = WAIT_FOR_SUMMARY_CLOSE;
_local2 = "You lose the game if enough enemies make it through the maze to your home tile.";
new TutorialDialog(_local2, 150, 182, _local1, advanceState, endCallBack);
break;
case WAIT_FOR_SUMMARY_CLOSE:
state = WAIT_FOR_CENTAUR_CLOSE;
_local2 = "Build lairs to produce troops to stop the enemy. This is a centaur lair(ranged unit).";
new TutorialDialog(_local2, 28, 213, _local1, advanceState, endCallBack, Util.EAST);
break;
case WAIT_FOR_CENTAUR_CLOSE:
state = WAIT_FOR_GOBLIN_CLOSE;
_local2 = "This is a goblin lair(melee unit). Select it to adjust how far out you want its minions to patrol.";
new TutorialDialog(_local2, 215, 70, _local1, advanceState, endCallBack, Util.SOUTH);
break;
case WAIT_FOR_GOBLIN_CLOSE:
state = WAIT_FOR_BUILD_OTHER_SIDE_CLOSE;
_local2 = "Build another goblin and centaur lair over here to setup a defensive position. Then unpause the game with the spacebar.";
new TutorialDialog(_local2, 260, 300, _local1, advanceState, endCallBack, Util.NORTH);
break;
case WAIT_FOR_BUILD_OTHER_SIDE_CLOSE:
state = WAIT_FOR_FOURTY_SECONDS;
waitForFourtyStart = totalTimePassed;
break;
case WAIT_FOR_FOURTY_SECONDS:
state = WAIT_FOR_HOME_BASE_CLOSE;
_local2 = "A quick note, in the northwest corner is your home base, and your avatar's spawn point. Move him around with wasd or the arrow keys. Move him close to enemies and he will automatically attack.";
new TutorialDialog(_local2, 130, 0, _local1, advanceState, endCallBack);
break;
case WAIT_FOR_HOME_BASE_CLOSE:
state = WAIT_FOR_VEIN_TO_CLOSE;
_local2 = "Dig out dirt and minerals with the shovel on the build tab!";
new TutorialDialog(_local2, 70, 175, _local1, advanceState, endCallBack, Util.SOUTH);
break;
case WAIT_FOR_VEIN_TO_CLOSE:
state = WAIT_FOR_FEW_MINUTES;
break;
case WAIT_FOR_FEW_MINUTES:
state = DONE;
_local2 = "Some enemies can fly. They will make a straight line for your home tile. Make sure you have some ranged units, or flying units of your own to stop them.";
new TutorialDialog(_local2, 50, 50, _local1, endCallBack, advanceState);
break;
case DONE:
endCallBack();
break;
default:
trace(("unknown state in piece of cake tutorial:" + state));
};
}
override protected function process():void{
var _local1:Stage;
var _local2:String;
_local1 = world.getStage();
if (state == START_STATE){
state = WAIT_FOR_SKIP_CLOSE;
world.setPaused(true);
_local2 = "Welcome to Dungeon Defender. This map has a tutorial on it. If you would like to skip that tutorial, please click end(don't worry it's not long).";
new TutorialDialog(_local2, 100, (_local1.height * 0.5), _local1, advanceState, endCallBack);
} else {
if (state == WAIT_FOR_AVATAR_LEVEL_UP){
if (world.getAvatar().getLevel() >= 2){
advanceState();
};
} else {
if ((((state == WAIT_FOR_FEW_MINUTES)) && ((totalTimePassed >= 120000)))){
advanceState();
} else {
if ((((state == WAIT_FOR_FOURTY_SECONDS)) && ((totalTimePassed > (waitForFourtyStart + 40000))))){
advanceState();
};
};
};
};
}
}
}//package com.greyhound.world.maps.tutorials
Section 607
//TakeTheTownTutorial (com.greyhound.world.maps.tutorials.TakeTheTownTutorial)
package com.greyhound.world.maps.tutorials {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
public class TakeTheTownTutorial extends Tutorial implements ITutorial {
private static const WAIT_FOR_ENTRY_POINTS_TO_CLOSE:int = 2;
private static const START_STATE:int = 0;
private static const DONE:int = 10;
private static const WAIT_FOR_TREASURE_TO_CLOSE:int = 3;
private static const WAIT_FOR_SKIP_CLOSE:int = 1;
public function TakeTheTownTutorial(_arg1:World){
super(_arg1);
state = START_STATE;
}
private function advanceState():void{
endCallBack();
}
override protected function process():void{
var _local1:Stage;
var _local2:String;
_local1 = world.getStage();
if (state == START_STATE){
state = WAIT_FOR_SKIP_CLOSE;
world.setPaused(true);
_local2 = "The final challenge awaits you. Be aware of something very important. If either of the final bosses reach your home tile, you will lose.";
new TutorialDialog(_local2, 100, 100, _local1, advanceState, endCallBack);
};
}
}
}//package com.greyhound.world.maps.tutorials
Section 608
//ThePrisonTutorial (com.greyhound.world.maps.tutorials.ThePrisonTutorial)
package com.greyhound.world.maps.tutorials {
import flash.display.*;
import com.greyhound.ui.*;
import com.greyhound.world.*;
public class ThePrisonTutorial extends Tutorial implements ITutorial {
private static const DONE:int = 1;
private static const START_STATE:int = 0;
public function ThePrisonTutorial(_arg1:World){
super(_arg1);
state = START_STATE;
}
private function advanceState():void{
var _local1:Stage = world.getStage();
switch (state){
case DONE:
endCallBack();
break;
default:
trace(("unknown state in prison tutorial:" + state));
};
}
override protected function process():void{
var _local1:String;
var _local2:Stage;
_local2 = world.getStage();
if (state == START_STATE){
state = DONE;
world.setPaused(true);
_local1 = "One small thing to note here. These lairs are not under your control. They are creep lairs. You can tell this by clicking on them and noting the lack of a lair population scroll window. If you can get past these lairs their treasure will be yours.";
new TutorialDialog(_local1, 50, 100, _local2, advanceState, endCallBack);
};
}
}
}//package com.greyhound.world.maps.tutorials
Section 609
//Tutorial (com.greyhound.world.maps.tutorials.Tutorial)
package com.greyhound.world.maps.tutorials {
import com.greyhound.world.*;
public class Tutorial {
protected var totalTimePassed:int;
protected var state:int;// = 0
protected var world:World;
protected var main:Main;
public function Tutorial(_arg1:World){
this.world = _arg1;
totalTimePassed = 0;
state = 0;
}
protected function endCallBack():void{
world.stopTutorial();
world.setPaused(false);
}
protected function process():void{
}
public function setMain(_arg1:Main):void{
this.main = _arg1;
}
public function passTime(_arg1:int):void{
totalTimePassed = (totalTimePassed + _arg1);
process();
}
}
}//package com.greyhound.world.maps.tutorials
Section 610
//EntryPoint (com.greyhound.world.EntryPoint)
package com.greyhound.world {
import flash.geom.*;
import com.greyhound.living.ai.*;
import com.greyhound.things.*;
public class EntryPoint extends SpawnPoint {
private var waves:Array;
private var roundCounter:int;
private var currentWave:int;
private var round:int;
private var lastWaveHeroLevel:Number;
private var team:int;
public static const ROUND_LENGTH:int = 30000;
public function EntryPoint(_arg1:Point, _arg2:Array, _arg3:World, _arg4:int){
var _local5:Object;
super(_arg1, _arg3, false);
lastWaveHeroLevel = 1;
this.waves = _arg2;
roundCounter = ROUND_LENGTH;
currentWave = 0;
for each (_local5 in _arg2) {
(_local5 as Wave).setEntryPoint(this);
};
this.team = _arg4;
}
public function releaseHero(_arg1:AILiving):void{
_arg1.setTeam(team);
var _local2:Number = lastWaveHeroLevel;
switch (SavedData.getDifficulty()){
case GameSave.EASY:
_local2 = (_local2 * 0.5);
break;
case GameSave.MEDIUM:
_local2 = (_local2 * 0.75);
break;
case GameSave.HARD:
_local2 = (_local2 * 1);
break;
default:
trace("Unknown difficulty level");
};
_local2 = Math.max(1, _local2);
_arg1.setLevel(_local2);
spawnGameObject(_arg1);
_arg1.setAITask(new ReachGoalTask(_arg1));
_arg1.addLootTable();
var _local3:Detonation = new Detonation(50);
var _local4:Point = world.getTileAtMapLocation(getX(), getY()).getScreenLocation();
world.addDisplayableAt(_local3, _local4);
}
public function isComplete():Boolean{
return ((currentWave >= (waves.length - 1)));
}
public function getTotalWaves():int{
return (waves.length);
}
public function advanceRound():void{
roundCounter = 0;
}
public function passTime(_arg1:int):void{
var _local3:int;
roundCounter = (roundCounter - _arg1);
if ((((roundCounter <= 0)) && ((currentWave < (waves.length - 1))))){
_local3 = ROUND_LENGTH;
switch (SavedData.getDifficulty()){
case GameSave.EASY:
_local3 = (_local3 * 1.5);
break;
case GameSave.MEDIUM:
_local3 = (_local3 * 1.25);
break;
case GameSave.HARD:
break;
default:
trace("Unknown difficulty level");
};
roundCounter = (roundCounter + _local3);
currentWave++;
lastWaveHeroLevel = (lastWaveHeroLevel + 1);
world.incrementRound();
};
var _local2:int;
while ((((_local2 <= currentWave)) && ((_local2 < waves.length)))) {
(waves[_local2] as Wave).passTime(_arg1);
_local2++;
};
}
}
}//package com.greyhound.world
Section 611
//HeartbeatTimer (com.greyhound.world.HeartbeatTimer)
package com.greyhound.world {
public class HeartbeatTimer {
private var duration:int;
private var callback:Function;
private var counter:int;
public function HeartbeatTimer(_arg1:int, _arg2:Function){
this.callback = _arg2;
this.duration = _arg1;
counter = _arg1;
}
public function abort():void{
counter = 0;
}
public function isComplete():Boolean{
return ((counter <= 0));
}
public function heartBeat(_arg1:int):void{
counter = (counter - _arg1);
if (counter <= 0){
callback(0, duration);
} else {
callback(counter, duration);
};
}
}
}//package com.greyhound.world
Section 612
//HoldingArea (com.greyhound.world.HoldingArea)
package com.greyhound.world {
import com.greyhound.base.*;
public class HoldingArea extends GameObject {
private var storedObjects:Array;
public function HoldingArea(){
setHeartbeatSpeed(300);
storedObjects = new Array();
}
public function moveToHoldingArea(_arg1:GameObject, _arg2:int, _arg3:Function):void{
_arg1.moveTo(this);
storedObjects.push(new HoldingAreaData(_arg1, _arg2, _arg3));
}
override protected function notifyObjectEntered(_arg1:GameObject, _arg2:GameObject):void{
super.notifyObjectEntered(_arg1, _arg2);
_arg1.setHeartBeatSuspended(true);
}
override protected function heartBeat(_arg1:int):void{
var _local3:Object;
var _local2:Array = new Array();
for each (_local3 in storedObjects) {
if ((_local3 as HoldingAreaData).passTime(_arg1)){
_local2.push(_local3);
};
};
if (_local2.length > 0){
for each (_local3 in _local2) {
storedObjects.splice(storedObjects.indexOf(_local3), 1);
};
};
}
override protected function notifyObjectLeft(_arg1:GameObject, _arg2:GameObject):void{
super.notifyObjectLeft(_arg1, _arg2);
_arg1.setHeartBeatSuspended(false);
}
}
}//package com.greyhound.world
Section 613
//HoldingAreaData (com.greyhound.world.HoldingAreaData)
package com.greyhound.world {
import com.greyhound.base.*;
public class HoldingAreaData {
private var gameObject:GameObject;
private var timeLeft:int;
private var releaseFunction:Function;
public function HoldingAreaData(_arg1:GameObject, _arg2:int, _arg3:Function){
this.gameObject = _arg1;
this.timeLeft = _arg2;
this.releaseFunction = _arg3;
}
public function passTime(_arg1:int):Boolean{
timeLeft = (timeLeft - _arg1);
if (timeLeft <= 0){
releaseFunction(gameObject);
return (true);
};
return (false);
}
}
}//package com.greyhound.world
Section 614
//IPathfindingChangeListener (com.greyhound.world.IPathfindingChangeListener)
package com.greyhound.world {
public interface IPathfindingChangeListener {
function pathBlockerRemoved():void;
function pathBlockerAdded():void;
}
}//package com.greyhound.world
Section 615
//ITileProvider (com.greyhound.world.ITileProvider)
package com.greyhound.world {
public interface ITileProvider {
function provideTile():Tile;
}
}//package com.greyhound.world
Section 616
//KeyboardHandler (com.greyhound.world.KeyboardHandler)
package com.greyhound.world {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import com.greyhound.tools.*;
import flash.ui.*;
public class KeyboardHandler {
private var world:World;
public function KeyboardHandler(_arg1:Stage){
_arg1.addEventListener(KeyboardEvent.KEY_UP, keyUp);
_arg1.addEventListener(KeyboardEvent.KEY_DOWN, keyDown);
}
public function setWorld(_arg1:World):void{
this.world = _arg1;
}
private function keyUp(_arg1:KeyboardEvent):void{
if (world != null){
if (_arg1.keyCode == Keyboard.SPACE){
world.togglePause();
} else {
if ((((((_arg1.keyCode == Keyboard.RIGHT)) || ((_arg1.keyCode == KeyCodes.KEY_D)))) || ((_arg1.keyCode == KeyCodes.KEY_d)))){
world.getAvatar().getMovementControl().clearMoveDirection(Util.EAST);
} else {
if ((((((_arg1.keyCode == Keyboard.LEFT)) || ((_arg1.keyCode == KeyCodes.KEY_A)))) || ((_arg1.keyCode == KeyCodes.KEY_a)))){
world.getAvatar().getMovementControl().clearMoveDirection(Util.WEST);
} else {
if ((((((_arg1.keyCode == Keyboard.UP)) || ((_arg1.keyCode == KeyCodes.KEY_W)))) || ((_arg1.keyCode == KeyCodes.KEY_w)))){
world.getAvatar().getMovementControl().clearMoveDirection(Util.NORTH);
} else {
if ((((((_arg1.keyCode == Keyboard.DOWN)) || ((_arg1.keyCode == KeyCodes.KEY_S)))) || ((_arg1.keyCode == KeyCodes.KEY_s)))){
world.getAvatar().getMovementControl().clearMoveDirection(Util.SOUTH);
} else {
if ((((((_arg1.keyCode == Keyboard.ESCAPE)) || ((_arg1.keyCode == KeyCodes.KEY_X)))) || ((_arg1.keyCode == KeyCodes.KEY_x)))){
world.clearSelection();
};
};
};
};
};
};
};
}
private function keyDown(_arg1:KeyboardEvent):void{
if (world != null){
if ((((((_arg1.keyCode == Keyboard.RIGHT)) || ((_arg1.keyCode == KeyCodes.KEY_d)))) || ((_arg1.keyCode == KeyCodes.KEY_D)))){
world.getAvatar().getMovementControl().setMoveDirection(Util.EAST);
} else {
if ((((((_arg1.keyCode == Keyboard.LEFT)) || ((_arg1.keyCode == KeyCodes.KEY_a)))) || ((_arg1.keyCode == KeyCodes.KEY_A)))){
world.getAvatar().getMovementControl().setMoveDirection(Util.WEST);
} else {
if ((((((_arg1.keyCode == Keyboard.UP)) || ((_arg1.keyCode == KeyCodes.KEY_w)))) || ((_arg1.keyCode == KeyCodes.KEY_W)))){
world.getAvatar().getMovementControl().setMoveDirection(Util.NORTH);
} else {
if ((((((_arg1.keyCode == Keyboard.DOWN)) || ((_arg1.keyCode == KeyCodes.KEY_s)))) || ((_arg1.keyCode == KeyCodes.KEY_S)))){
world.getAvatar().getMovementControl().setMoveDirection(Util.SOUTH);
};
};
};
};
};
}
}
}//package com.greyhound.world
Section 617
//Map (com.greyhound.world.Map)
package com.greyhound.world {
import com.greyhound.world.maps.mapvariables.*;
import flash.geom.*;
import com.greyhound.world.maps.mapcreators.*;
public class Map {
private var tiles:Array;
private var entryPoints:Array;
private var goal:Point;
public function createMap(_arg1:IMapVariables, _arg2:World):void{
var _local3:IMapCreator = _arg1.getMapCreator();
tiles = _local3.createMap(_arg2);
_local3.populateMap(_arg2);
goal = _local3.getGoal();
entryPoints = _local3.createEntryPoints(_arg2);
}
public function isComplete():Boolean{
var _local1:Object;
for each (_local1 in entryPoints) {
if (!(_local1 as EntryPoint).isComplete()){
return (false);
};
};
return (true);
}
public function getTile(_arg1:int, _arg2:int):Tile{
if ((((((((_arg1 < 0)) || ((_arg2 < 0)))) || ((_arg1 >= getWidth())))) || ((_arg2 >= getHeight())))){
return (null);
};
return ((tiles[_arg1][_arg2] as Tile));
}
public function getGoal():Point{
return (goal);
}
public function getTileAt(_arg1:Point):Tile{
var _local2:Number = (_arg1.x / World.TILE_DIMENSION);
var _local3:Number = (_arg1.y / World.TILE_DIMENSION);
if ((((((((_local2 < 0)) || ((_local3 < 0)))) || ((_local2 >= getWidth())))) || ((_local3 >= getHeight())))){
return (null);
};
return (getTile(int(_local2), int(_local3)));
}
public function getWidth():int{
return (tiles.length);
}
public function getGoalTile():Tile{
return ((tiles[goal.x][goal.y] as Tile));
}
public function getHeight():int{
return (tiles[0].length);
}
public function passTime(_arg1:int):void{
var _local2:Object;
for each (_local2 in entryPoints) {
(_local2 as EntryPoint).passTime(_arg1);
};
}
public function getEntryPoints():Array{
return (entryPoints);
}
}
}//package com.greyhound.world
Section 618
//MouseHandler (com.greyhound.world.MouseHandler)
package com.greyhound.world {
import flash.display.*;
import flash.events.*;
import com.greyhound.ui.*;
import flash.geom.*;
import com.greyhound.things.buildings.*;
public class MouseHandler {
private var selectionManager:SelectionManager;
private var world:World;
public function MouseHandler(_arg1:Stage){
this.world = world;
_arg1.addEventListener(MouseEvent.CLICK, clickHandler);
_arg1.addEventListener(MouseEvent.DOUBLE_CLICK, doubleClickHandler);
_arg1.addEventListener(MouseEvent.MOUSE_MOVE, processMouseMove);
}
public function setWorld(_arg1:World):void{
this.world = _arg1;
}
private function processMouseMove(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
var _local4:Tile;
if (world != null){
_local2 = (_arg1.stageX / World.TILE_DIMENSION);
_local3 = (_arg1.stageY / World.TILE_DIMENSION);
_local4 = world.getMap().getTile(_local2, _local3);
world.notifyTileMousedOver(_local4);
};
}
public function setSelectionManager(_arg1:SelectionManager):void{
this.selectionManager = _arg1;
}
private function doubleClickHandler(_arg1:MouseEvent):void{
var _local2:DisplayObject;
if (world != null){
if ((_arg1.target is IDoubleClickable)){
(_arg1.target as IDoubleClickable).handleDoubleClick();
} else {
if ((_arg1.target is DisplayObject)){
_local2 = (_arg1.target as DisplayObject);
while (((!((_local2 is IDoubleClickable))) && (!((_local2 == null))))) {
_local2 = _local2.parent;
};
if (_local2 != null){
(_local2 as IDoubleClickable).handleDoubleClick();
};
};
};
};
}
private function clickHandler(_arg1:MouseEvent):void{
var _local2:int;
var _local3:int;
var _local4:Tile;
var _local5:ISelectable;
var _local6:Array;
var _local7:int;
var _local8:DisplayObject;
if (world != null){
_local2 = (_arg1.stageX / World.TILE_DIMENSION);
_local3 = (_arg1.stageY / World.TILE_DIMENSION);
_local4 = world.getMap().getTile(_local2, _local3);
_local5 = null;
if (_local4 != null){
selectionManager.notifyTileSelected(_local4, _arg1);
};
if ((((((((_arg1.stageX < world.getWorldGraphic().width)) && ((_arg1.stageX >= 0)))) && ((_arg1.stageY < world.getWorldGraphic().height)))) && ((_arg1.stageY >= 0)))){
_local6 = world.getStage().getObjectsUnderPoint(new Point(_arg1.stageX, _arg1.stageY));
_local7 = (_local6.length - 1);
for (;(((_local7 >= 0)) && ((_local5 == null)));_local7--) {
_local8 = (_local6[_local7] as DisplayObject);
while (!((_local8 is ISelectable))) {
_local8 = _local8.parent;
if (_local8 == null){
break;
};
};
if (_local8 != null){
if ((_local8 is GameObjectSprite)){
if ((_local8 as GameObjectSprite).getDisplayableGameobject().getEnvironment() != null){
if (((_arg1.ctrlKey) && (!(((_local8 as GameObjectSprite).getDisplayableGameobject() is Building))))){
continue;
};
_local5 = (_local8 as ISelectable);
};
} else {
if (_arg1.ctrlKey){
} else {
_local5 = (_local8 as ISelectable);
};
};
};
};
selectionManager.setSelection(_local5);
};
};
}
}
}//package com.greyhound.world
Section 619
//SpawnPoint (com.greyhound.world.SpawnPoint)
package com.greyhound.world {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.tools.*;
public class SpawnPoint {
protected var world:World;
private var randomOffset:Boolean;
private var x:int;
private var y:int;
public function SpawnPoint(_arg1:Point, _arg2:World, _arg3:Boolean){
x = int(_arg1.x);
y = int(_arg1.y);
this.world = _arg2;
this.randomOffset = _arg3;
}
public function getX():int{
return (x);
}
public function getY():int{
return (y);
}
public function spawnGameObject(_arg1:DisplayableGameObject):void{
var _local2:Point = world.getTileAtMapLocation(x, y).getScreenLocation();
if (randomOffset){
_local2 = Util.randomlyOffset(_local2, 15);
_local2.x = Math.max(0, _local2.x);
_local2.y = Math.max(0, _local2.y);
_local2.x = Math.min((world.getMapPixelWidth() - 1), _local2.x);
_local2.y = Math.min((world.getMapPixelHeight() - 1), _local2.y);
};
world.addDisplayableAt(_arg1, _local2);
}
}
}//package com.greyhound.world
Section 620
//Tile (com.greyhound.world.Tile)
package com.greyhound.world {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.tools.pathfinding.*;
public class Tile {
private var y:int;
private var screenLocation:Point;
private var displayableGameObjects:Array;
private var world:World;
private var pathfindingEffectingGameObjects:Array;
private var x:int;
public function Tile(_arg1:int, _arg2:int, _arg3:World){
this.x = _arg1;
this.y = _arg2;
pathfindingEffectingGameObjects = new Array();
displayableGameObjects = new Array();
this.world = _arg3;
screenLocation = Tile.getScreenLocation(_arg1, _arg2);
}
public function getY():int{
return (y);
}
public function getX():int{
return (x);
}
public function getDisplayableGameObjects():Array{
return (displayableGameObjects);
}
public function addPathfindingEffecting(_arg1:IPathfindingEffecting):void{
pathfindingEffectingGameObjects.push(_arg1);
world.firePathBlockerAdded();
}
public function removePathfindingEffecting(_arg1:IPathfindingEffecting):void{
var _local2:int = pathfindingEffectingGameObjects.indexOf(_arg1);
if (_local2 != -1){
pathfindingEffectingGameObjects.splice(_local2, 1);
world.firePathBlockerRemoved();
} else {
trace("Tried to remove a pathfinding object but didn't find it");
};
}
public function getScreenLocation():Point{
return (screenLocation.clone());
}
public function addDisplayable(_arg1:DisplayableGameObject):void{
var _local2:int = displayableGameObjects.indexOf(_arg1);
if (_local2 != -1){
trace("Tried to add something twice");
} else {
displayableGameObjects.push(_arg1);
};
}
public function blocksMovement(_arg1:Object):Boolean{
var _local2:Object;
for each (_local2 in pathfindingEffectingGameObjects) {
if ((_local2 as IPathfindingEffecting).blocksMovement(_arg1)){
return (true);
};
};
return (false);
}
public function removeDisplayable(_arg1:DisplayableGameObject):void{
var _local2:int = displayableGameObjects.indexOf(_arg1);
if (_local2 != -1){
displayableGameObjects.splice(_local2, 1);
} else {
trace("Told to remove a displayable from a tile but it wasnt there");
};
}
private static function getScreenLocation(_arg1:int, _arg2:int):Point{
return (new Point(((_arg1 * World.TILE_DIMENSION) + (World.TILE_DIMENSION * 0.5)), ((_arg2 * World.TILE_DIMENSION) + (World.TILE_DIMENSION * 0.5))));
}
}
}//package com.greyhound.world
Section 621
//Vault (com.greyhound.world.Vault)
package com.greyhound.world {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.ui.floaters.*;
import com.greyhound.*;
import com.greyhound.talents.avatar.*;
import com.greyhound.common.kongregate.*;
public class Vault implements IChangeable {
private var goldVaults:int;
private var gems:int;
private var score:int;
private var world:World;
private var gold:int;
private var changeListeners:Array;
private var interestCounter:int;// = 0
public static const BASE_INTEREST:Number = 0.05;
public static const INTEREST_PER_VAULT:Number = 0.02;
public function Vault(_arg1:int, _arg2:int, _arg3:World){
this.world = _arg3;
changeListeners = new Array();
this.gold = _arg1;
this.gems = _arg2;
goldVaults = 0;
}
public function addGems(_arg1:int):void{
gems = (gems + _arg1);
fireChange();
}
protected function fireChange():void{
var _local1:Object;
for each (_local1 in changeListeners) {
(_local1 as IChangeListener).notifyChanged(this);
};
}
public function addChangeListener(_arg1:IChangeListener):void{
changeListeners.push(_arg1);
}
public function removeGoldVault():void{
goldVaults--;
}
public function addGoldVault():void{
goldVaults++;
}
public function getGold():int{
return (gold);
}
public function getScore():int{
return (score);
}
public function addGold(_arg1:int):void{
gold = (gold + _arg1);
fireChange();
if (MyPreloader.isKongregate()){
APILoader.submitStat(KongregateStatistics.MAX_GOLD, gold);
};
}
public function removeChangeListener(_arg1:IChangeListener):void{
changeListeners.splice(changeListeners.indexOf(_arg1), 1);
}
public function getGems():int{
return (gems);
}
public function passRound():void{
var _local2:Point;
var _local1:int = (gold * ((goldVaults * INTEREST_PER_VAULT) + BASE_INTEREST));
if (_local1 > 0){
gold = (gold + _local1);
score = (score + _local1);
GoldFloater.showGoldFloater(_local1, world.getStatusBar().getGoldPositionOnStage(), world.getStage(), "Interest:");
};
if (SavedData.hasTalenPoint(Alchemy)){
_local1 = (Alchemy.GOLD_GENERATION_PER_LEVEL * world.getAvatar().getLevel());
gold = (gold + _local1);
_local2 = world.getStatusBar().getGoldPositionOnStage();
_local2.y = (_local2.y - 30);
GoldFloater.showGoldFloater(_local1, _local2, world.getStage(), "Alchemy:");
};
fireChange();
}
}
}//package com.greyhound.world
Section 622
//Wave (com.greyhound.world.Wave)
package com.greyhound.world {
import com.greyhound.living.ai.*;
public class Wave {
private var spaceBetweenEach:int;
private var entryPoint:EntryPoint;
private var heroes:Array;
private var timeToNext:int;
public function Wave(_arg1:Array, _arg2:int){
this.heroes = _arg1;
_arg1.reverse();
this.spaceBetweenEach = _arg2;
timeToNext = 0;
}
public function setEntryPoint(_arg1:EntryPoint):void{
this.entryPoint = _arg1;
}
protected function releaseHero():void{
var _local1:AILiving;
if (heroes.length > 0){
_local1 = (heroes.pop() as AILiving);
entryPoint.releaseHero(_local1);
};
}
public function setWaveSpacing(_arg1:int):void{
spaceBetweenEach = _arg1;
}
public function passTime(_arg1:int):void{
timeToNext = (timeToNext - _arg1);
while (timeToNext <= 0) {
timeToNext = (timeToNext + spaceBetweenEach);
releaseHero();
};
}
}
}//package com.greyhound.world
Section 623
//WorkerVariables (com.greyhound.world.WorkerVariables)
package com.greyhound.world {
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.living.ai.*;
import com.greyhound.ui.decorators.*;
import com.greyhound.things.*;
import com.greyhound.*;
public class WorkerVariables implements IChangeListener {
private var unreachableCounter:int;
private var stealCounters:Array;
private var objectsMarkedButUnreachable:Array;
private var objectsMarkedForDigging:Array;
private var objectsClaimedForDigging:Array;
private var claimOwners:Array;
public static const SCAN_UNREACHABLE_FREQUENCY:int = 5000;
private static const MAX_STEALS:int = 2;
public function WorkerVariables(){
objectsMarkedForDigging = new Array();
objectsClaimedForDigging = new Array();
stealCounters = new Array();
objectsMarkedButUnreachable = new Array();
claimOwners = new Array();
}
public function notifyPositionChanged(_arg1:IChangeable):void{
}
public function checkUnreachables():void{
var _local2:Object;
var _local3:GameObject;
var _local1:Array = objectsMarkedButUnreachable.slice();
objectsMarkedButUnreachable = new Array();
for each (_local2 in _local1) {
_local3 = (_local2 as GameObject);
if (_local3.getWorld().goalHasPathToTile(_local3.getTile())){
objectsMarkedForDigging.push(_local2);
} else {
objectsMarkedButUnreachable.push(_local2);
};
};
}
public function toggleDigging(_arg1:IDiggable):void{
var _local3:int;
var _local4:GameObject;
var _local2:Array;
_local3 = objectsMarkedForDigging.indexOf(_arg1);
if (_local3 != -1){
_local2 = objectsMarkedForDigging;
} else {
_local3 = objectsClaimedForDigging.indexOf(_arg1);
if (_local3 != -1){
_local2 = objectsClaimedForDigging;
} else {
_local3 = objectsMarkedButUnreachable.indexOf(_arg1);
if (_local3 != -1){
_local2 = objectsMarkedButUnreachable;
};
};
};
if (_local2 != null){
_local2.splice(_local3, 1);
if (_local2 == objectsClaimedForDigging){
claimOwners.splice(_local3, 1);
stealCounters.splice(_local3, 1);
};
_arg1.removeChangeListener(this);
(_arg1 as DisplayableGameObject).removeDecorator(DecoratorFactory.DIG_DECORATOR);
} else {
_local4 = (_arg1 as GameObject);
if (_local4.getWorld().goalHasPathToTile(_local4.getTile())){
objectsMarkedForDigging.push(_local4);
} else {
objectsMarkedButUnreachable.push(_local4);
};
_arg1.addChangeListener(this);
(_arg1 as DisplayableGameObject).addDecorator(DecoratorFactory.DIG_DECORATOR);
};
}
public function notifyChanged(_arg1:IChangeable):void{
}
public function releaseDiggable(_arg1:IDiggable):void{
var _local2:int = objectsClaimedForDigging.indexOf(_arg1);
if (_local2 != -1){
objectsClaimedForDigging.splice(_local2, 1);
claimOwners.splice(_local2, 1);
stealCounters.splice(_local2, 1);
objectsMarkedForDigging.push(_arg1);
} else {
trace("Tried to release something but it wasnt in the claimed array");
};
}
public function claimClosestDiggableTo(_arg1:Point, _arg2:DigAITask):IDiggable{
var _local4:Number;
var _local5:Object;
var _local6:Number;
var _local7:DisplayableGameObject;
var _local9:int;
var _local10:Number;
var _local11:int;
var _local12:int;
var _local13:DigAITask;
var _local3:DisplayableGameObject;
if (objectsMarkedForDigging.length > 0){
for each (_local5 in objectsMarkedForDigging) {
_local7 = (_local5 as DisplayableGameObject);
_local6 = Tools.distanceSquared(_local7.getScreenLocation(), _arg1);
if ((((_local3 == null)) || ((_local6 < _local4)))){
_local3 = _local7;
_local4 = _local6;
};
};
};
var _local8:Boolean;
if (objectsClaimedForDigging.length > 0){
_local9 = 0;
while (_local9 < objectsClaimedForDigging.length) {
if (stealCounters[_local9] < MAX_STEALS){
_local7 = (objectsClaimedForDigging[_local9] as DisplayableGameObject);
_local6 = Tools.distanceSquared(_local7.getScreenLocation(), _arg1);
if ((((_local3 == null)) || ((_local6 < _local4)))){
_local10 = (claimOwners[_local9] as DigAITask).getDistanceSquaredFromDiggable();
if ((_local10 * 0.9) > _local6){
_local8 = true;
_local3 = _local7;
_local4 = _local6;
};
};
};
_local9++;
};
};
if (_local3 != null){
_local11 = 0;
if (_local8){
_local12 = objectsClaimedForDigging.indexOf(_local3);
objectsClaimedForDigging.splice(_local12, 1);
_local13 = (claimOwners[_local12] as DigAITask);
_local11 = stealCounters[_local12];
claimOwners.splice(_local12, 1);
stealCounters.splice(_local12, 1);
_local13.notifyClaimLost();
} else {
objectsMarkedForDigging.splice(objectsMarkedForDigging.indexOf(_local3), 1);
};
objectsClaimedForDigging.push(_local3);
claimOwners.push(_arg2);
stealCounters.push((_local11 + 1));
};
return ((_local3 as IDiggable));
}
public function passTime(_arg1:int):void{
unreachableCounter = (unreachableCounter - _arg1);
if (unreachableCounter <= 0){
unreachableCounter = (unreachableCounter + SCAN_UNREACHABLE_FREQUENCY);
checkUnreachables();
};
}
public function notifyChangeableDestroyed(_arg1:IChangeable):void{
var _local2:int = objectsMarkedForDigging.indexOf(_arg1);
if (_local2 != -1){
objectsMarkedForDigging.splice(_local2, 1);
} else {
_local2 = objectsClaimedForDigging.indexOf(_arg1);
if (_local2 != -1){
objectsClaimedForDigging.splice(_local2, 1);
claimOwners.splice(_local2, 1);
stealCounters.splice(_local2, 1);
} else {
_local2 = objectsMarkedButUnreachable.indexOf(_arg1);
if (_local2 != -1){
objectsMarkedButUnreachable.splice(_local2, 1);
} else {
trace("Couldn't find thing destroyed in digging variabels");
};
};
};
checkUnreachables();
}
}
}//package com.greyhound.world
Section 624
//World (com.greyhound.world.World)
package com.greyhound.world {
import flash.display.*;
import flash.events.*;
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import com.greyhound.base.*;
import flash.geom.*;
import com.greyhound.living.*;
import com.greyhound.ui.displayobjectproviders.*;
import flash.utils.*;
import com.greyhound.world.maps.tutorials.*;
import com.greyhound.tools.pathfinding.*;
import com.greyhound.tools.*;
import com.greyhound.living.heroes.*;
import com.greyhound.ui.effects.*;
public class World extends DisplayableGameObject implements IPathableMap {
private var timeUntilCanAdvance:int;
private var heartbeatObjects:Array;
private var pathfindingChangeListeners:Array;
private var mapVariabels:IMapVariables;
private var avatarSpawnPoint:SpawnPoint;
private var round:int;
private var paused:Boolean;
private var vault:Vault;
private var main:Main;
private var timer:Timer;
private var timers:Array;
private var worldSpeed:int;
private var avatar:Avatar;
private var diggingVariables:WorkerVariables;
private var map:Map;
private var tutorial:ITutorial;
private var livings:Array;
private var livingsAtGoal:Array;
private var holdingArea:HoldingArea;
public static const MAP_WIDTH:int = 19;
public static const TILE_DIMENSION:int = 25;
public static const MAP_HEIGHT:int = 19;
public function World(_arg1:int, _arg2:Avatar, _arg3:IMapVariables, _arg4:Main){
var _local5:Tile;
var _local6:Point;
var _local7:SpawnPointGraphic;
super(new DisplayObjectProvider(Sprite));
this.mapVariabels = _arg3;
this.main = _arg4;
livings = new Array();
pathfindingChangeListeners = new Array();
this.avatar = _arg2;
_arg2.setTeam(Living.PLAYER_TEAM);
makeWorld();
this.worldSpeed = _arg1;
heartbeatObjects = new Array();
getRootGraphic().setSelectable(false);
getRootGraphic().addChild(new Sprite());
getRootGraphic().graphics.beginBitmapFill((new ArtLoader.GameBackgroundIMG() as Bitmap).bitmapData);
getRootGraphic().graphics.drawRect(0, 0, 475, 475);
getRootGraphic().graphics.endFill();
map = new Map();
map.createMap(_arg3, this);
timer = new Timer(worldSpeed);
timer.addEventListener(TimerEvent.TIMER, timerTick);
avatarSpawnPoint = new SpawnPoint(map.getGoal(), this, false);
holdingArea = new HoldingArea();
holdingArea.moveTo(this);
avatarSpawnPoint.spawnGameObject(_arg2);
vault = new Vault(_arg3.getStartingGold(), 20, this);
_arg2.setInitialLevel(_arg3.getStartingLevel());
paused = false;
timers = new Array();
diggingVariables = new WorkerVariables();
getRootGraphic().addEventListener(Event.REMOVED_FROM_STAGE, stopWorld);
getRootGraphic().addEventListener(Event.ADDED_TO_STAGE, startWorld);
tutorial = _arg3.getTutorial(this);
livingsAtGoal = new Array();
timeUntilCanAdvance = (EntryPoint.ROUND_LENGTH * 0.5);
for each (_local5 in getEntryPointTiles()) {
_local6 = _local5.getScreenLocation();
_local7 = new SpawnPointGraphic();
_local7.x = _local6.x;
_local7.y = _local6.y;
getRootGraphic().addChild(_local7);
};
if (tutorial != null){
tutorial.setMain(_arg4);
};
}
public function forceWin():void{
main.notifyMapFinished(true, mapVariabels);
}
public function setTimerScalor(_arg1:Number):void{
timer.stop();
timer.delay = (worldSpeed * _arg1);
timer.start();
}
public function togglePause():void{
paused = !(paused);
main.getStatusBar().setPaused(paused);
}
public function getPathLocation(_arg1:int, _arg2:int):Object{
return (map.getTile(_arg1, _arg2));
}
private function timerTick(_arg1:Event):void{
var _local2:int;
var _local3:Array;
var _local4:Object;
var _local5:Object;
var _local6:HeartbeatTimer;
var _local7:GameObject;
var _local8:Boolean;
if (!paused){
_local2 = worldSpeed;
_local3 = new Array();
for each (_local4 in timers) {
_local6 = (_local4 as HeartbeatTimer);
if (!_local6.isComplete()){
_local6.heartBeat(_local2);
if (!_local6.isComplete()){
_local3.push(_local6);
};
};
};
timers = _local3;
map.passTime(_local2);
for each (_local5 in heartbeatObjects.slice()) {
_local7 = (_local5 as GameObject);
if (!_local7.isDestroyed()){
_local7.worldHeartBeat(_local2);
};
};
if (tutorial != null){
tutorial.passTime(_local2);
};
diggingVariables.passTime(_local2);
if (((map.isComplete()) && (allHeroesDead()))){
main.notifyMapFinished(true, mapVariabels);
return;
};
if (livingsAtGoal.length > 0){
_local8 = false;
for each (_local4 in livingsAtGoal) {
if ((_local4 is Champion)){
_local8 = true;
};
if (!(_local4 as Living).isDestroyed()){
(_local4 as Living).moveTo(null);
};
vault.addGems(-1);
};
livingsAtGoal = new Array();
if (((_local8) || ((vault.getGems() <= 0)))){
gameOver();
return;
};
};
if (timeUntilCanAdvance > 0){
timeUntilCanAdvance = (timeUntilCanAdvance - _local2);
if (timeUntilCanAdvance <= 0){
main.getStatusBar().updateAdvanceButton();
};
};
};
}
public function stopTutorial():void{
tutorial = null;
}
public function removeHeartBeat(_arg1:GameObject):void{
var _local2:int = heartbeatObjects.indexOf(_arg1);
if (_local2 != -1){
heartbeatObjects.splice(_local2, 1);
} else {
trace(("Tried to remove a heartbeat that wasn't there:" + _arg1));
};
}
public function addHeartBeatTimer(_arg1:HeartbeatTimer):void{
timers.push(_arg1);
}
public function getStatusBar():StatusBar{
return (main.getStatusBar());
}
public function toggleMute():void{
main.toggleMute();
}
public function isPathLocationValid(_arg1:int, _arg2:int, _arg3:Object):Boolean{
return ((((((((((_arg1 >= 0)) && ((_arg1 < map.getWidth())))) && ((_arg2 >= 0)))) && ((_arg2 < map.getHeight())))) && (!(map.getTile(_arg1, _arg2).blocksMovement(_arg3)))));
}
public function canAdvance():Boolean{
return ((timeUntilCanAdvance <= 0));
}
override protected function notifyObjectLeft(_arg1:GameObject, _arg2:GameObject):void{
if ((_arg1 is Living)){
livings.splice(livings.indexOf(_arg1), 1);
};
}
public function getPathingCostOfTile(_arg1:int, _arg2:int, _arg3:Object):Number{
return (0);
}
public function updateBuildButtons():void{
main.getControlPanel().updateBuildButtons();
}
public function moveToHoldingArea(_arg1:GameObject, _arg2:int, _arg3:Function):void{
holdingArea.moveToHoldingArea(_arg1, _arg2, _arg3);
}
public function getMapPixelWidth():int{
return ((TILE_DIMENSION * map.getWidth()));
}
public function advanceRound():void{
var _local1:EntryPoint;
for each (_local1 in map.getEntryPoints()) {
_local1.advanceRound();
};
timeUntilCanAdvance = (EntryPoint.ROUND_LENGTH * 0.5);
getStatusBar().updateAdvanceButton();
}
private function allHeroesDead():Boolean{
var _local1:Object;
for each (_local1 in livings) {
if ((_local1 as Living).getTeam() == Living.ENEMY_TEAM){
return (false);
};
};
return (true);
}
private function stopWorld(_arg1:Event):void{
timer.stop();
}
public function getEntryPointTiles():Array{
var _local3:Object;
var _local4:EntryPoint;
var _local1:Array = map.getEntryPoints();
var _local2:Array = new Array();
for each (_local3 in _local1) {
_local4 = (_local3 as EntryPoint);
_local2.push(map.getTile(_local4.getX(), _local4.getY()));
};
return (_local2);
}
public function forceLoss():void{
main.notifyMapFinished(false, mapVariabels);
}
public function setPaused(_arg1:Boolean):void{
paused = _arg1;
main.getStatusBar().setPaused(paused);
}
public function getTileAtMapLocation(_arg1:int, _arg2:int):Tile{
return (map.getTile(_arg1, _arg2));
}
public function getLivings():Array{
return (livings);
}
public function clearSelection():void{
main.getControlPanel().clearSelection();
}
public function removePathfindingChangeListener(_arg1:IPathfindingChangeListener):void{
var _local2:int = pathfindingChangeListeners.indexOf(_arg1);
if (_local2 != -1){
pathfindingChangeListeners.splice(_local2, 1);
};
}
public function addPathfindingChangeListener(_arg1:IPathfindingChangeListener):void{
pathfindingChangeListeners.push(_arg1);
}
public function firePathBlockerAdded():void{
var _local1:Object;
for each (_local1 in pathfindingChangeListeners) {
(_local1 as IPathfindingChangeListener).pathBlockerAdded()();
};
}
public function livingReachedGoal(_arg1:Living):void{
livingsAtGoal.push(_arg1);
}
public function notifyTileMousedOver(_arg1:Tile):void{
main.getControlPanel().notifyTileMousedOver(_arg1);
}
public function restartMap():void{
timer.stop();
main.restartMap(mapVariabels);
}
public function getStage():Stage{
return (getRootGraphic().stage);
}
private function startWorld(_arg1:Event):void{
timer.start();
}
public function getMap():Map{
return (map);
}
public function getAvatar():Avatar{
return (avatar);
}
public function goalHasPathToTile(_arg1:Tile, _arg2:Boolean=true):Boolean{
var _local3:AStar = new AStar(getWorld(), false, _arg2);
return (_local3.generatePath(map.getGoal(), new Point(_arg1.getX(), _arg1.getY()), null));
}
public function getRound():int{
return (round);
}
public function addDisplayableAt(_arg1:DisplayableGameObject, _arg2:Point):void{
_arg1.moveTo(this);
_arg1.setScreenLocation(_arg2);
}
public function incrementRound():void{
round++;
if ((round % getEntryPointTiles().length) == 0){
vault.passRound();
main.getStatusBar().updateRoundNumber((round / getEntryPointTiles().length));
};
timeUntilCanAdvance = (EntryPoint.ROUND_LENGTH * 0.5);
}
public function isMuted():Boolean{
return (main.isMuted());
}
public function getDiggingVariabels():WorkerVariables{
return (diggingVariables);
}
public function getGoalTile():Tile{
return (map.getGoalTile());
}
public function firePathBlockerRemoved():void{
var _local1:Object;
for each (_local1 in pathfindingChangeListeners) {
(_local1 as IPathfindingChangeListener).pathBlockerRemoved()();
};
}
public function getMapPixelHeight():int{
return ((TILE_DIMENSION * map.getHeight()));
}
public function killAllHeroes():void{
var _local1:Living;
for each (_local1 in livings.slice()) {
if (_local1.getTeam() == Living.ENEMY_TEAM){
_local1.moveTo(null);
};
};
}
public function getWorldGraphic():DisplayObject{
return (getRootGraphic());
}
private function gameOver():void{
main.notifyMapFinished(false, mapVariabels);
}
override protected function notifyObjectEntered(_arg1:GameObject, _arg2:GameObject):void{
super.notifyObjectEntered(_arg1, _arg2);
if (((!((_arg1 is DisplayableGameObject))) && (!((_arg1 is HoldingArea))))){
trace("Added a non displayable game object into the world directly... Not allowed");
};
if ((_arg1 is Living)){
livings.push(_arg1);
};
}
public function getMapVariables():IMapVariables{
return (mapVariabels);
}
public function isPaused():Boolean{
return (paused);
}
public function addHeartBeat(_arg1:GameObject):void{
if (heartbeatObjects.indexOf(_arg1) == -1){
heartbeatObjects.push(_arg1);
} else {
trace(("Tried to add a heartbeat twice for:" + _arg1));
};
}
public function getVault():Vault{
return (vault);
}
public function getTileAt(_arg1:Point):Tile{
return (map.getTileAt(_arg1));
}
}
}//package com.greyhound.world
Section 625
//KongregateStatistics (com.greyhound.KongregateStatistics)
package com.greyhound {
public class KongregateStatistics {
public static const LAIR_NAME_SUFFIX:String = " Level";
public static const ARTIFACTS_COLLECTED:String = "Artifacts Collected";
public static const AVATAR_LEVEL_SUFFIX:String = " Level";
public static const HEROES_KILLED:String = "Heroes Killed";
public static const DIFFICULTY_SUFFIX:String = " Defeated";
public static const GOLD_DUG:String = "Gold Dug";
public static const MAX_GOLD:String = "Max Gold";
}
}//package com.greyhound
Section 626
//Tools (com.greyhound.Tools)
package com.greyhound {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.text.*;
import flash.utils.*;
import flash.net.*;
import flash.filters.*;
import flash.external.*;
import flash.errors.*;
public class Tools {
private static const WINDOW_OPEN_FUNCTION:String = "window.open";
public static function openWindow(_arg1:String, _arg2:String="_blank", _arg3:String=""):void{
var url = _arg1;
var window = _arg2;
var features = _arg3;
try {
ExternalInterface.call("window.open", url, "_blank", "");
} catch(error:Error) {
navigateToURL(new URLRequest(url), "_blank");
};
}
public static function random(_arg1:int):int{
return (int((Math.random() * _arg1)));
}
public static function joinArrays(_arg1:Array, _arg2:Array):Array{
var _local3:Array = new Array((_arg1.length + _arg2.length));
var _local4:int;
while (_local4 < _arg1.length) {
_local3[_local4] = _arg1[_local4];
_local4++;
};
_local4 = 0;
while (_local4 < _arg2.length) {
_local3[(_local4 + _arg1.length)] = _arg2[_local4];
_local4++;
};
return (_local3);
}
public static function centerOnParent(_arg1:DisplayObject):void{
_arg1.x = (_arg1.parent.x + ((_arg1.parent.width - _arg1.width) * 0.5));
_arg1.y = (_arg1.parent.y + ((_arg1.parent.height - _arg1.height) * 0.5));
}
public static function createBlackAndWhiteFilter():BitmapFilter{
var _local1:Number = 0.212671;
var _local2:Number = 0.71516;
var _local3:Number = 0.072169;
var _local4:Array = new Array();
_local4 = _local4.concat([_local1, _local2, _local3, 0, 0]);
_local4 = _local4.concat([_local1, _local2, _local3, 0, 0]);
_local4 = _local4.concat([_local1, _local2, _local3, 0, 0]);
_local4 = _local4.concat([0, 0, 0, 1, 0]);
return (new ColorMatrixFilter(_local4));
}
public static function getClassFor(_arg1:Object):Class{
return ((getDefinitionByName(getQualifiedClassName(_arg1)) as Class));
}
public static function getKeys(_arg1:Dictionary):Array{
var _local3:Object;
var _local2:Array = new Array();
for (_local3 in _arg1) {
_local2.push(_local3);
};
return (_local2);
}
public static function removeFromArray(_arg1:Object, _arg2:Array):Object{
var _local3:int = _arg2.indexOf(_arg1);
if (_local3 != -1){
return (_arg2.splice(_local3, 1)[0]);
};
return (null);
}
public static function scaleNegatively(_arg1:Number, _arg2:Number):Number{
return ((_arg1 / (1 + _arg2)));
}
public static function create2DArray(_arg1:int, _arg2:int):Array{
var _local3:Array = new Array();
var _local4:int;
while (_local4 < _arg1) {
_local3.push(new Array(_arg2));
_local4++;
};
return (_local3);
}
public static function round(_arg1:Number, _arg2:Number):Number{
var _local3:Number = Math.pow(10, _arg2);
return ((Math.round((_local3 * _arg1)) / _local3));
}
public static function addIfUnique(_arg1:Array, _arg2:Object):Boolean{
var _local3:int = _arg1.indexOf(_arg2);
if (_local3 == -1){
_arg1.push(_arg2);
return (true);
};
return (false);
}
public static function implode(_arg1:Array):String{
return (_arg1.join(","));
}
public static function pickRandomFromArray(_arg1:Array):Object{
return (_arg1[random(_arg1.length)]);
}
public static function distanceSquared(_arg1:Point, _arg2:Point):Number{
return ((Math.pow((_arg2.x - _arg1.x), 2) + Math.pow((_arg2.y - _arg1.y), 2)));
}
public static function navigateTo(_arg1:String, _arg2:URLVariables=null):void{
var _local3:URLRequest = new URLRequest(_arg1);
if (_arg2 != null){
_local3.data = _arg2;
};
navigateToURL(_local3, "_top");
}
public static function createHTMLText(_arg1:String, _arg2:uint=0, _arg3:TextFormat=null):TextField{
var _local4:TextField = new TextField();
if (_arg3 == null){
_arg3 = new TextFormat();
_arg3.size = 14;
_arg3.font = "Tachoma";
_arg3.bold = true;
};
_arg3.color = _arg2;
_local4.defaultTextFormat = _arg3;
_local4.htmlText = _arg1;
_local4.autoSize = TextFieldAutoSize.LEFT;
return (_local4);
}
public static function copyToBiggerArray(_arg1:Array, _arg2:Array, _arg3:int, _arg4:int):void{
var _local6:int;
var _local5:int;
while (_local5 < _arg1.length) {
_local6 = 0;
while (_local6 < _arg1[_local5].length) {
_arg2[(_local5 + _arg3)][(_local6 + _arg4)] = _arg1[_local5][_local6];
_local6++;
};
_local5++;
};
}
public static function abstractKludge(_arg1:Array, _arg2:Class, _arg3:Object):void{
var abstractTypeName:String;
var selfDescription:XML;
var methods:XMLList;
var concreteTypeName:String;
var unimplemented = _arg1;
var abstractClass = _arg2;
var instance = _arg3;
abstractTypeName = getQualifiedClassName(abstractClass);
selfDescription = describeType(instance);
methods = selfDescription.method.(((@declaredBy == abstractTypeName)) && ((unimplemented.indexOf(instance[@name]) >= 0)));
if (methods.length() > 0){
concreteTypeName = getQualifiedClassName(instance);
throw (new IllegalOperationError(((((("Function " + methods[0].@name) + " from abstract class ") + abstractTypeName) + " has not been implemented by subclass ") + concreteTypeName)));
};
}
public static function getValues(_arg1:Dictionary):Array{
var _local3:Object;
var _local2:Array = new Array();
for each (_local3 in _arg1) {
_local2.push(_local3);
};
return (_local2);
}
public static function arrayBoundsCheck(_arg1:Array, _arg2:int, _arg3:int):Boolean{
return ((((((((_arg2 >= 0)) && ((_arg3 >= 0)))) && ((_arg2 < _arg1.length)))) && ((_arg3 < _arg1[_arg2].length))));
}
public static function delayedFunctionCall(_arg1:int, _arg2:Function):void{
var _local3:Timer = new Timer(_arg1, 1);
_local3.addEventListener(TimerEvent.TIMER_COMPLETE, _arg2);
_local3.start();
}
}
}//package com.greyhound
Section 627
//BaseScrollPane (fl.containers.BaseScrollPane)
package fl.containers {
import flash.display.*;
import flash.events.*;
import flash.geom.*;
import fl.core.*;
import fl.controls.*;
import fl.events.*;
public class BaseScrollPane extends UIComponent {
protected var defaultLineScrollSize:Number;// = 4
protected var _maxHorizontalScrollPosition:Number;// = 0
protected var vScrollBar:Boolean;
protected var disabledOverlay:Shape;
protected var hScrollBar:Boolean;
protected var availableWidth:Number;
protected var _verticalPageScrollSize:Number;// = 0
protected var vOffset:Number;// = 0
protected var _verticalScrollBar:ScrollBar;
protected var useFixedHorizontalScrolling:Boolean;// = false
protected var contentWidth:Number;// = 0
protected var contentHeight:Number;// = 0
protected var _horizontalPageScrollSize:Number;// = 0
protected var background:DisplayObject;
protected var _useBitmpScrolling:Boolean;// = false
protected var contentPadding:Number;// = 0
protected var availableHeight:Number;
protected var _horizontalScrollBar:ScrollBar;
protected var contentScrollRect:Rectangle;
protected var _horizontalScrollPolicy:String;
protected var _verticalScrollPolicy:String;
protected static const SCROLL_BAR_STYLES:Object = {upArrowDisabledSkin:"upArrowDisabledSkin", upArrowDownSkin:"upArrowDownSkin", upArrowOverSkin:"upArrowOverSkin", upArrowUpSkin:"upArrowUpSkin", downArrowDisabledSkin:"downArrowDisabledSkin", downArrowDownSkin:"downArrowDownSkin", downArrowOverSkin:"downArrowOverSkin", downArrowUpSkin:"downArrowUpSkin", thumbDisabledSkin:"thumbDisabledSkin", thumbDownSkin:"thumbDownSkin", thumbOverSkin:"thumbOverSkin", thumbUpSkin:"thumbUpSkin", thumbIcon:"thumbIcon", trackDisabledSkin:"trackDisabledSkin", trackDownSkin:"trackDownSkin", trackOverSkin:"trackOverSkin", trackUpSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {repeatDelay:500, repeatInterval:35, skin:"ScrollPane_upSkin", contentPadding:0, disabledAlpha:0.5};
public function BaseScrollPane(){
contentWidth = 0;
contentHeight = 0;
contentPadding = 0;
vOffset = 0;
_maxHorizontalScrollPosition = 0;
_horizontalPageScrollSize = 0;
_verticalPageScrollSize = 0;
defaultLineScrollSize = 4;
useFixedHorizontalScrolling = false;
_useBitmpScrolling = false;
super();
}
protected function handleWheel(_arg1:MouseEvent):void{
if (((((!(enabled)) || (!(_verticalScrollBar.visible)))) || ((contentHeight <= availableHeight)))){
return;
};
_verticalScrollBar.scrollPosition = (_verticalScrollBar.scrollPosition - (_arg1.delta * verticalLineScrollSize));
setVerticalScrollPosition(_verticalScrollBar.scrollPosition);
dispatchEvent(new ScrollEvent(ScrollBarDirection.VERTICAL, _arg1.delta, horizontalScrollPosition));
}
public function get verticalScrollPosition():Number{
return (_verticalScrollBar.scrollPosition);
}
protected function drawDisabledOverlay():void{
if (enabled){
if (contains(disabledOverlay)){
removeChild(disabledOverlay);
};
} else {
disabledOverlay.x = (disabledOverlay.y = contentPadding);
disabledOverlay.width = availableWidth;
disabledOverlay.height = availableHeight;
disabledOverlay.alpha = (getStyleValue("disabledAlpha") as Number);
addChild(disabledOverlay);
};
}
public function set verticalScrollPosition(_arg1:Number):void{
drawNow();
_verticalScrollBar.scrollPosition = _arg1;
setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false);
}
protected function setContentSize(_arg1:Number, _arg2:Number):void{
if ((((((contentWidth == _arg1)) || (useFixedHorizontalScrolling))) && ((contentHeight == _arg2)))){
return;
};
contentWidth = _arg1;
contentHeight = _arg2;
invalidate(InvalidationType.SIZE);
}
public function get horizontalScrollPosition():Number{
return (_horizontalScrollBar.scrollPosition);
}
public function get horizontalScrollBar():ScrollBar{
return (_horizontalScrollBar);
}
override public function set enabled(_arg1:Boolean):void{
if (enabled == _arg1){
return;
};
_verticalScrollBar.enabled = _arg1;
_horizontalScrollBar.enabled = _arg1;
super.enabled = _arg1;
}
public function get verticalLineScrollSize():Number{
return (_verticalScrollBar.lineScrollSize);
}
public function get horizontalScrollPolicy():String{
return (_horizontalScrollPolicy);
}
protected function calculateAvailableSize():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local5:Number;
_local1 = ScrollBar.WIDTH;
_local2 = (contentPadding = Number(getStyleValue("contentPadding")));
_local3 = ((height - (2 * _local2)) - vOffset);
vScrollBar = (((_verticalScrollPolicy == ScrollPolicy.ON)) || ((((_verticalScrollPolicy == ScrollPolicy.AUTO)) && ((contentHeight > _local3)))));
_local4 = ((width - (vScrollBar) ? _local1 : 0) - (2 * _local2));
_local5 = (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - _local4);
hScrollBar = (((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_local5 > 0)))));
if (hScrollBar){
_local3 = (_local3 - _local1);
};
if (((((((hScrollBar) && (!(vScrollBar)))) && ((_verticalScrollPolicy == ScrollPolicy.AUTO)))) && ((contentHeight > _local3)))){
vScrollBar = true;
_local4 = (_local4 - _local1);
};
availableHeight = (_local3 + vOffset);
availableWidth = _local4;
}
public function get maxVerticalScrollPosition():Number{
drawNow();
return (Math.max(0, (contentHeight - availableHeight)));
}
public function set horizontalScrollPosition(_arg1:Number):void{
drawNow();
_horizontalScrollBar.scrollPosition = _arg1;
setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false);
}
public function get horizontalLineScrollSize():Number{
return (_horizontalScrollBar.lineScrollSize);
}
public function set verticalPageScrollSize(_arg1:Number):void{
_verticalPageScrollSize = _arg1;
invalidate(InvalidationType.SIZE);
}
public function get verticalScrollPolicy():String{
return (_verticalScrollPolicy);
}
protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
}
public function get useBitmapScrolling():Boolean{
return (_useBitmpScrolling);
}
protected function handleScroll(_arg1:ScrollEvent):void{
if (_arg1.target == _verticalScrollBar){
setVerticalScrollPosition(_arg1.position);
} else {
setHorizontalScrollPosition(_arg1.position);
};
}
public function set verticalLineScrollSize(_arg1:Number):void{
_verticalScrollBar.lineScrollSize = _arg1;
}
public function get verticalScrollBar():ScrollBar{
return (_verticalScrollBar);
}
protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
}
public function set horizontalPageScrollSize(_arg1:Number):void{
_horizontalPageScrollSize = _arg1;
invalidate(InvalidationType.SIZE);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES)){
setStyles();
drawBackground();
if (contentPadding != getStyleValue("contentPadding")){
invalidate(InvalidationType.SIZE, false);
};
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.STATE)){
drawLayout();
};
updateChildren();
super.draw();
}
public function set horizontalScrollPolicy(_arg1:String):void{
_horizontalScrollPolicy = _arg1;
invalidate(InvalidationType.SIZE);
}
override protected function configUI():void{
var _local1:Graphics;
super.configUI();
contentScrollRect = new Rectangle(0, 0, 85, 85);
_verticalScrollBar = new ScrollBar();
_verticalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true);
_verticalScrollBar.visible = false;
_verticalScrollBar.lineScrollSize = defaultLineScrollSize;
addChild(_verticalScrollBar);
copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES);
_horizontalScrollBar = new ScrollBar();
_horizontalScrollBar.direction = ScrollBarDirection.HORIZONTAL;
_horizontalScrollBar.addEventListener(ScrollEvent.SCROLL, handleScroll, false, 0, true);
_horizontalScrollBar.visible = false;
_horizontalScrollBar.lineScrollSize = defaultLineScrollSize;
addChild(_horizontalScrollBar);
copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES);
disabledOverlay = new Shape();
_local1 = disabledOverlay.graphics;
_local1.beginFill(0xFFFFFF);
_local1.drawRect(0, 0, width, height);
_local1.endFill();
addEventListener(MouseEvent.MOUSE_WHEEL, handleWheel, false, 0, true);
}
protected function calculateContentWidth():void{
}
public function get verticalPageScrollSize():Number{
if (isNaN(availableHeight)){
drawNow();
};
return (((((_verticalPageScrollSize == 0)) && (!(isNaN(availableHeight))))) ? availableHeight : _verticalPageScrollSize);
}
protected function drawLayout():void{
calculateAvailableSize();
calculateContentWidth();
background.width = width;
background.height = height;
if (vScrollBar){
_verticalScrollBar.visible = true;
_verticalScrollBar.x = ((width - ScrollBar.WIDTH) - contentPadding);
_verticalScrollBar.y = contentPadding;
_verticalScrollBar.height = availableHeight;
} else {
_verticalScrollBar.visible = false;
};
_verticalScrollBar.setScrollProperties(availableHeight, 0, (contentHeight - availableHeight), verticalPageScrollSize);
setVerticalScrollPosition(_verticalScrollBar.scrollPosition, false);
if (hScrollBar){
_horizontalScrollBar.visible = true;
_horizontalScrollBar.x = contentPadding;
_horizontalScrollBar.y = ((height - ScrollBar.WIDTH) - contentPadding);
_horizontalScrollBar.width = availableWidth;
} else {
_horizontalScrollBar.visible = false;
};
_horizontalScrollBar.setScrollProperties(availableWidth, 0, (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - availableWidth), horizontalPageScrollSize);
setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, false);
drawDisabledOverlay();
}
protected function drawBackground():void{
var _local1:DisplayObject;
_local1 = background;
background = getDisplayObjectInstance(getStyleValue("skin"));
background.width = width;
background.height = height;
addChildAt(background, 0);
if (((!((_local1 == null))) && (!((_local1 == background))))){
removeChild(_local1);
};
}
public function set horizontalLineScrollSize(_arg1:Number):void{
_horizontalScrollBar.lineScrollSize = _arg1;
}
public function get horizontalPageScrollSize():Number{
if (isNaN(availableWidth)){
drawNow();
};
return (((((_horizontalPageScrollSize == 0)) && (!(isNaN(availableWidth))))) ? availableWidth : _horizontalPageScrollSize);
}
public function get maxHorizontalScrollPosition():Number{
drawNow();
return (Math.max(0, (contentWidth - availableWidth)));
}
protected function setStyles():void{
copyStylesToChild(_verticalScrollBar, SCROLL_BAR_STYLES);
copyStylesToChild(_horizontalScrollBar, SCROLL_BAR_STYLES);
}
protected function updateChildren():void{
_verticalScrollBar.enabled = (_horizontalScrollBar.enabled = enabled);
_verticalScrollBar.drawNow();
_horizontalScrollBar.drawNow();
}
public function set verticalScrollPolicy(_arg1:String):void{
_verticalScrollPolicy = _arg1;
invalidate(InvalidationType.SIZE);
}
public function set useBitmapScrolling(_arg1:Boolean):void{
_useBitmpScrolling = _arg1;
invalidate(InvalidationType.STATE);
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, ScrollBar.getStyleDefinition()));
}
}
}//package fl.containers
Section 628
//ScrollPane (fl.containers.ScrollPane)
package fl.containers {
import flash.display.*;
import flash.events.*;
import fl.managers.*;
import fl.core.*;
import fl.controls.*;
import fl.events.*;
import flash.net.*;
import flash.system.*;
import flash.ui.*;
public class ScrollPane extends BaseScrollPane implements IFocusManagerComponent {
protected var scrollDragHPos:Number;
protected var loader:Loader;
protected var yOffset:Number;
protected var currentContent:Object;
protected var xOffset:Number;
protected var _source:Object;// = ""
protected var scrollDragVPos:Number;
protected var _scrollDrag:Boolean;// = false
protected var contentClip:Sprite;
private static var defaultStyles:Object = {upSkin:"ScrollPane_upSkin", disabledSkin:"ScrollPane_disabledSkin", focusRectSkin:null, focusRectPadding:null, contentPadding:0};
public function ScrollPane(){
_source = "";
_scrollDrag = false;
super();
}
public function get source():Object{
return (_source);
}
public function set source(_arg1:Object):void{
var _local2:*;
clearContent();
if (isLivePreview){
return;
};
_source = _arg1;
if ((((_source == "")) || ((_source == null)))){
return;
};
currentContent = getDisplayObjectInstance(_arg1);
if (currentContent != null){
_local2 = contentClip.addChild((currentContent as DisplayObject));
dispatchEvent(new Event(Event.INIT));
update();
} else {
load(new URLRequest(_source.toString()));
};
}
public function get bytesLoaded():Number{
return (((((loader == null)) || ((loader.contentLoaderInfo == null)))) ? 0 : loader.contentLoaderInfo.bytesLoaded);
}
protected function doDrag(_arg1:MouseEvent):void{
var _local2:*;
var _local3:*;
_local2 = (scrollDragVPos - (mouseY - yOffset));
_verticalScrollBar.setScrollPosition(_local2);
setVerticalScrollPosition(_verticalScrollBar.scrollPosition, true);
_local3 = (scrollDragHPos - (mouseX - xOffset));
_horizontalScrollBar.setScrollPosition(_local3);
setHorizontalScrollPosition(_horizontalScrollBar.scrollPosition, true);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
var _local2:int;
_local2 = calculateAvailableHeight();
switch (_arg1.keyCode){
case Keyboard.DOWN:
verticalScrollPosition++;
break;
case Keyboard.UP:
verticalScrollPosition--;
break;
case Keyboard.RIGHT:
horizontalScrollPosition++;
break;
case Keyboard.LEFT:
horizontalScrollPosition--;
break;
case Keyboard.END:
verticalScrollPosition = maxVerticalScrollPosition;
break;
case Keyboard.HOME:
verticalScrollPosition = 0;
break;
case Keyboard.PAGE_UP:
verticalScrollPosition = (verticalScrollPosition - _local2);
break;
case Keyboard.PAGE_DOWN:
verticalScrollPosition = (verticalScrollPosition + _local2);
break;
};
}
protected function doStartDrag(_arg1:MouseEvent):void{
if (!enabled){
return;
};
xOffset = mouseX;
yOffset = mouseY;
scrollDragHPos = horizontalScrollPosition;
scrollDragVPos = verticalScrollPosition;
stage.addEventListener(MouseEvent.MOUSE_MOVE, doDrag, false, 0, true);
}
public function get content():DisplayObject{
var _local1:Object;
_local1 = currentContent;
if ((_local1 is URLRequest)){
_local1 = loader.content;
};
return ((_local1 as DisplayObject));
}
public function get percentLoaded():Number{
if (loader != null){
return (Math.round(((bytesLoaded / bytesTotal) * 100)));
};
return (0);
}
protected function endDrag(_arg1:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, doDrag);
}
public function update():void{
var _local1:DisplayObject;
_local1 = contentClip.getChildAt(0);
setContentSize(_local1.width, _local1.height);
}
override protected function setHorizontalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
var _local3:*;
_local3 = contentClip.scrollRect;
_local3.x = _arg1;
contentClip.scrollRect = _local3;
}
public function refreshPane():void{
if ((_source is URLRequest)){
_source = _source.url;
};
source = _source;
}
protected function passEvent(_arg1:Event):void{
dispatchEvent(_arg1);
}
protected function calculateAvailableHeight():Number{
var _local1:Number;
_local1 = Number(getStyleValue("contentPadding"));
return (((height - (_local1 * 2)) - ((((_horizontalScrollPolicy == ScrollPolicy.ON)) || ((((_horizontalScrollPolicy == ScrollPolicy.AUTO)) && ((_maxHorizontalScrollPosition > 0)))))) ? 15 : 0));
}
public function load(_arg1:URLRequest, _arg2:LoaderContext=null):void{
if (_arg2 == null){
_arg2 = new LoaderContext(false, ApplicationDomain.currentDomain);
};
clearContent();
initLoader();
currentContent = (_source = _arg1);
loader.load(_arg1, _arg2);
}
override protected function handleScroll(_arg1:ScrollEvent):void{
passEvent(_arg1);
super.handleScroll(_arg1);
}
override protected function setVerticalScrollPosition(_arg1:Number, _arg2:Boolean=false):void{
var _local3:*;
_local3 = contentClip.scrollRect;
_local3.y = _arg1;
contentClip.scrollRect = _local3;
}
protected function initLoader():void{
loader = new Loader();
loader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, passEvent, false, 0, true);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, onContentLoad, false, 0, true);
loader.contentLoaderInfo.addEventListener(Event.INIT, passEvent, false, 0, true);
contentClip.addChild(loader);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES)){
drawBackground();
};
if (isInvalid(InvalidationType.STATE)){
setScrollDrag();
};
super.draw();
}
override protected function configUI():void{
super.configUI();
contentClip = new Sprite();
addChild(contentClip);
contentClip.scrollRect = contentScrollRect;
_horizontalScrollPolicy = ScrollPolicy.AUTO;
_verticalScrollPolicy = ScrollPolicy.AUTO;
}
public function set scrollDrag(_arg1:Boolean):void{
_scrollDrag = _arg1;
invalidate(InvalidationType.STATE);
}
protected function clearContent():void{
if (contentClip.numChildren == 0){
return;
};
contentClip.removeChildAt(0);
currentContent = null;
if (loader != null){
try {
loader.close();
} catch(e) {
};
try {
loader.unload();
} catch(e) {
};
loader = null;
};
}
override protected function drawLayout():void{
super.drawLayout();
contentScrollRect = contentClip.scrollRect;
contentScrollRect.width = availableWidth;
contentScrollRect.height = availableHeight;
contentClip.cacheAsBitmap = useBitmapScrolling;
contentClip.scrollRect = contentScrollRect;
contentClip.x = (contentClip.y = contentPadding);
}
override protected function drawBackground():void{
var _local1:DisplayObject;
_local1 = background;
background = getDisplayObjectInstance(getStyleValue((enabled) ? "upSkin" : "disabledSkin"));
background.width = width;
background.height = height;
addChildAt(background, 0);
if (((!((_local1 == null))) && (!((_local1 == background))))){
removeChild(_local1);
};
}
public function get bytesTotal():Number{
return (((((loader == null)) || ((loader.contentLoaderInfo == null)))) ? 0 : loader.contentLoaderInfo.bytesTotal);
}
protected function onContentLoad(_arg1:Event):void{
var _local2:*;
update();
_local2 = calculateAvailableHeight();
calculateAvailableSize();
horizontalScrollBar.setScrollProperties(availableWidth, 0, (useFixedHorizontalScrolling) ? _maxHorizontalScrollPosition : (contentWidth - availableWidth), availableWidth);
verticalScrollBar.setScrollProperties(_local2, 0, (contentHeight - _local2), _local2);
passEvent(_arg1);
}
public function get scrollDrag():Boolean{
return (_scrollDrag);
}
protected function setScrollDrag():void{
if (_scrollDrag){
contentClip.addEventListener(MouseEvent.MOUSE_DOWN, doStartDrag, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, endDrag, false, 0, true);
} else {
contentClip.removeEventListener(MouseEvent.MOUSE_DOWN, doStartDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, endDrag);
removeEventListener(MouseEvent.MOUSE_MOVE, doDrag);
};
contentClip.buttonMode = _scrollDrag;
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, BaseScrollPane.getStyleDefinition()));
}
}
}//package fl.containers
Section 629
//IndeterminateBar (fl.controls.progressBarClasses.IndeterminateBar)
package fl.controls.progressBarClasses {
import flash.display.*;
import flash.events.*;
import fl.core.*;
public class IndeterminateBar extends UIComponent {
protected var bar:Sprite;
protected var barMask:Sprite;
protected var patternBmp:BitmapData;
protected var animationCount:uint;// = 0
private static var defaultStyles:Object = {indeterminateSkin:"ProgressBar_indeterminateSkin"};
public function IndeterminateBar(){
animationCount = 0;
super();
setSize(0, 0);
startAnimation();
}
protected function drawBar():void{
var _local1:Graphics;
if (patternBmp == null){
return;
};
_local1 = bar.graphics;
_local1.clear();
_local1.beginBitmapFill(patternBmp);
_local1.drawRect(0, 0, (_width + patternBmp.width), _height);
_local1.endFill();
}
protected function drawMask():void{
var _local1:Graphics;
_local1 = barMask.graphics;
_local1.clear();
_local1.beginFill(0, 0);
_local1.drawRect(0, 0, _width, _height);
_local1.endFill();
}
override public function get visible():Boolean{
return (super.visible);
}
override public function set visible(_arg1:Boolean):void{
if (_arg1){
startAnimation();
} else {
stopAnimation();
};
super.visible = _arg1;
}
protected function startAnimation():void{
addEventListener(Event.ENTER_FRAME, handleEnterFrame, false, 0, true);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES)){
drawPattern();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawBar();
drawMask();
};
super.draw();
}
override protected function configUI():void{
bar = new Sprite();
addChild(bar);
barMask = new Sprite();
addChild(barMask);
bar.mask = barMask;
}
protected function stopAnimation():void{
removeEventListener(Event.ENTER_FRAME, handleEnterFrame);
}
protected function drawPattern():void{
var _local1:DisplayObject;
_local1 = getDisplayObjectInstance(getStyleValue("indeterminateSkin"));
if (patternBmp){
patternBmp.dispose();
};
patternBmp = new BitmapData((_local1.width << 0), (_local1.height << 0), true, 0);
patternBmp.draw(_local1);
}
protected function handleEnterFrame(_arg1:Event):void{
if (patternBmp == null){
return;
};
animationCount = ((animationCount + 2) % patternBmp.width);
bar.x = -(animationCount);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls.progressBarClasses
Section 630
//BaseButton (fl.controls.BaseButton)
package fl.controls {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import fl.core.*;
import fl.events.*;
public class BaseButton extends UIComponent {
protected var _selected:Boolean;// = false
private var unlockedMouseState:String;
protected var pressTimer:Timer;
protected var mouseState:String;
protected var background:DisplayObject;
private var _mouseStateLocked:Boolean;// = false
protected var _autoRepeat:Boolean;// = false
private static var defaultStyles:Object = {upSkin:"Button_upSkin", downSkin:"Button_downSkin", overSkin:"Button_overSkin", disabledSkin:"Button_disabledSkin", selectedDisabledSkin:"Button_selectedDisabledSkin", selectedUpSkin:"Button_selectedUpSkin", selectedDownSkin:"Button_selectedDownSkin", selectedOverSkin:"Button_selectedOverSkin", focusRectSkin:null, focusRectPadding:null, repeatDelay:500, repeatInterval:35};
public function BaseButton(){
_selected = false;
_autoRepeat = false;
_mouseStateLocked = false;
super();
buttonMode = true;
mouseChildren = false;
useHandCursor = false;
setupMouseEvents();
setMouseState("up");
pressTimer = new Timer(1, 0);
pressTimer.addEventListener(TimerEvent.TIMER, buttonDown, false, 0, true);
}
protected function endPress():void{
pressTimer.reset();
}
public function set mouseStateLocked(_arg1:Boolean):void{
_mouseStateLocked = _arg1;
if (_arg1 == false){
setMouseState(unlockedMouseState);
} else {
unlockedMouseState = mouseState;
};
}
public function get autoRepeat():Boolean{
return (_autoRepeat);
}
public function set autoRepeat(_arg1:Boolean):void{
_autoRepeat = _arg1;
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
mouseEnabled = _arg1;
}
public function get selected():Boolean{
return (_selected);
}
protected function mouseEventHandler(_arg1:MouseEvent):void{
if (_arg1.type == MouseEvent.MOUSE_DOWN){
setMouseState("down");
startPress();
} else {
if ((((_arg1.type == MouseEvent.ROLL_OVER)) || ((_arg1.type == MouseEvent.MOUSE_UP)))){
setMouseState("over");
endPress();
} else {
if (_arg1.type == MouseEvent.ROLL_OUT){
setMouseState("up");
endPress();
};
};
};
}
public function setMouseState(_arg1:String):void{
if (_mouseStateLocked){
unlockedMouseState = _arg1;
return;
};
if (mouseState == _arg1){
return;
};
mouseState = _arg1;
invalidate(InvalidationType.STATE);
}
protected function startPress():void{
if (_autoRepeat){
pressTimer.delay = Number(getStyleValue("repeatDelay"));
pressTimer.start();
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
protected function buttonDown(_arg1:TimerEvent):void{
if (!_autoRepeat){
endPress();
return;
};
if (pressTimer.currentCount == 1){
pressTimer.delay = Number(getStyleValue("repeatInterval"));
};
dispatchEvent(new ComponentEvent(ComponentEvent.BUTTON_DOWN, true));
}
public function set selected(_arg1:Boolean):void{
if (_selected == _arg1){
return;
};
_selected = _arg1;
invalidate(InvalidationType.STATE);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
super.draw();
}
protected function setupMouseEvents():void{
addEventListener(MouseEvent.ROLL_OVER, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_DOWN, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.MOUSE_UP, mouseEventHandler, false, 0, true);
addEventListener(MouseEvent.ROLL_OUT, mouseEventHandler, false, 0, true);
}
protected function drawLayout():void{
background.width = width;
background.height = height;
}
protected function drawBackground():void{
var _local1:String;
var _local2:DisplayObject;
_local1 = (enabled) ? mouseState : "disabled";
if (selected){
_local1 = (("selected" + _local1.substr(0, 1).toUpperCase()) + _local1.substr(1));
};
_local1 = (_local1 + "Skin");
_local2 = background;
background = getDisplayObjectInstance(getStyleValue(_local1));
addChildAt(background, 0);
if (((!((_local2 == null))) && (!((_local2 == background))))){
removeChild(_local2);
};
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 631
//Button (fl.controls.Button)
package fl.controls {
import flash.display.*;
import fl.managers.*;
import fl.core.*;
public class Button extends LabelButton implements IFocusManagerComponent {
protected var emphasizedBorder:DisplayObject;
protected var _emphasized:Boolean;// = false
private static var defaultStyles:Object = {emphasizedSkin:"Button_emphasizedSkin", emphasizedPadding:2};
public static var createAccessibilityImplementation:Function;
public function Button(){
_emphasized = false;
super();
}
override public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
var _local3:*;
super.drawFocus(_arg1);
if (_arg1){
_local2 = Number(getStyleValue("emphasizedPadding"));
if ((((_local2 < 0)) || (!(_emphasized)))){
_local2 = 0;
};
_local3 = getStyleValue("focusRectPadding");
_local3 = ((_local3)==null) ? 2 : _local3;
_local3 = (_local3 + _local2);
uiFocusRect.x = -(_local3);
uiFocusRect.y = -(_local3);
uiFocusRect.width = (width + (_local3 * 2));
uiFocusRect.height = (height + (_local3 * 2));
};
}
public function set emphasized(_arg1:Boolean):void{
_emphasized = _arg1;
invalidate(InvalidationType.STYLES);
}
override protected function draw():void{
if (((isInvalid(InvalidationType.STYLES)) || (isInvalid(InvalidationType.SIZE)))){
drawEmphasized();
};
super.draw();
if (emphasizedBorder != null){
setChildIndex(emphasizedBorder, (numChildren - 1));
};
}
public function get emphasized():Boolean{
return (_emphasized);
}
override protected function initializeAccessibility():void{
if (Button.createAccessibilityImplementation != null){
Button.createAccessibilityImplementation(this);
};
}
protected function drawEmphasized():void{
var _local1:Object;
var _local2:Number;
if (emphasizedBorder != null){
removeChild(emphasizedBorder);
};
emphasizedBorder = null;
if (!_emphasized){
return;
};
_local1 = getStyleValue("emphasizedSkin");
if (_local1 != null){
emphasizedBorder = getDisplayObjectInstance(_local1);
};
if (emphasizedBorder != null){
addChildAt(emphasizedBorder, 0);
_local2 = Number(getStyleValue("emphasizedPadding"));
emphasizedBorder.x = (emphasizedBorder.y = -(_local2));
emphasizedBorder.width = (width + (_local2 * 2));
emphasizedBorder.height = (height + (_local2 * 2));
};
}
public static function getStyleDefinition():Object{
return (UIComponent.mergeStyles(LabelButton.getStyleDefinition(), defaultStyles));
}
}
}//package fl.controls
Section 632
//ButtonLabelPlacement (fl.controls.ButtonLabelPlacement)
package fl.controls {
public class ButtonLabelPlacement {
public static const TOP:String = "top";
public static const LEFT:String = "left";
public static const BOTTOM:String = "bottom";
public static const RIGHT:String = "right";
}
}//package fl.controls
Section 633
//LabelButton (fl.controls.LabelButton)
package fl.controls {
import flash.display.*;
import flash.events.*;
import fl.managers.*;
import fl.core.*;
import fl.events.*;
import flash.text.*;
import flash.ui.*;
public class LabelButton extends BaseButton implements IFocusManagerComponent {
protected var _labelPlacement:String;// = "right"
protected var _toggle:Boolean;// = false
protected var icon:DisplayObject;
protected var oldMouseState:String;
protected var mode:String;// = "center"
public var textField:TextField;
protected var _label:String;// = "Label"
private static var defaultStyles:Object = {icon:null, upIcon:null, downIcon:null, overIcon:null, disabledIcon:null, selectedDisabledIcon:null, selectedUpIcon:null, selectedDownIcon:null, selectedOverIcon:null, textFormat:null, disabledTextFormat:null, textPadding:5, embedFonts:false};
public static var createAccessibilityImplementation:Function;
public function LabelButton(){
_labelPlacement = ButtonLabelPlacement.RIGHT;
_toggle = false;
_label = "Label";
mode = "center";
super();
}
protected function toggleSelected(_arg1:MouseEvent):void{
selected = !(selected);
dispatchEvent(new Event(Event.CHANGE, true));
}
public function get labelPlacement():String{
return (_labelPlacement);
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
if (oldMouseState == null){
oldMouseState = mouseState;
};
setMouseState("down");
startPress();
};
}
protected function setEmbedFont(){
var _local1:Object;
_local1 = getStyleValue("embedFonts");
if (_local1 != null){
textField.embedFonts = _local1;
};
}
override protected function keyUpHandler(_arg1:KeyboardEvent):void{
if (!enabled){
return;
};
if (_arg1.keyCode == Keyboard.SPACE){
setMouseState(oldMouseState);
oldMouseState = null;
endPress();
dispatchEvent(new MouseEvent(MouseEvent.CLICK));
};
}
override public function get selected():Boolean{
return ((_toggle) ? _selected : false);
}
public function set labelPlacement(_arg1:String):void{
_labelPlacement = _arg1;
invalidate(InvalidationType.SIZE);
}
public function set toggle(_arg1:Boolean):void{
if (((!(_arg1)) && (super.selected))){
selected = false;
};
_toggle = _arg1;
if (_toggle){
addEventListener(MouseEvent.CLICK, toggleSelected, false, 0, true);
} else {
removeEventListener(MouseEvent.CLICK, toggleSelected);
};
invalidate(InvalidationType.STATE);
}
public function get label():String{
return (_label);
}
override public function set selected(_arg1:Boolean):void{
_selected = _arg1;
if (_toggle){
invalidate(InvalidationType.STATE);
};
}
override protected function draw():void{
if (textField.text != _label){
label = _label;
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
drawBackground();
drawIcon();
drawTextFormat();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
};
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
public function get toggle():Boolean{
return (_toggle);
}
override protected function configUI():void{
super.configUI();
textField = new TextField();
textField.type = TextFieldType.DYNAMIC;
textField.selectable = false;
addChild(textField);
}
override protected function drawLayout():void{
var _local1:Number;
var _local2:String;
var _local3:Number;
var _local4:Number;
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
_local1 = Number(getStyleValue("textPadding"));
_local2 = ((((icon == null)) && ((mode == "center")))) ? ButtonLabelPlacement.TOP : _labelPlacement;
textField.height = (textField.textHeight + 4);
_local3 = (textField.textWidth + 4);
_local4 = (textField.textHeight + 4);
_local5 = ((icon)==null) ? 0 : (icon.width + _local1);
_local6 = ((icon)==null) ? 0 : (icon.height + _local1);
textField.visible = (label.length > 0);
if (icon != null){
icon.x = Math.round(((width - icon.width) / 2));
icon.y = Math.round(((height - icon.height) / 2));
};
if (textField.visible == false){
textField.width = 0;
textField.height = 0;
} else {
if ((((_local2 == ButtonLabelPlacement.BOTTOM)) || ((_local2 == ButtonLabelPlacement.TOP)))){
_local7 = Math.max(0, Math.min(_local3, (width - (2 * _local1))));
if ((height - 2) > _local4){
_local8 = _local4;
} else {
_local8 = (height - 2);
};
_local3 = _local7;
textField.width = _local3;
_local4 = _local8;
textField.height = _local4;
textField.x = Math.round(((width - _local3) / 2));
textField.y = Math.round(((((height - textField.height) - _local6) / 2) + ((_local2)==ButtonLabelPlacement.BOTTOM) ? _local6 : 0));
if (icon != null){
icon.y = Math.round(((_local2)==ButtonLabelPlacement.BOTTOM) ? (textField.y - _local6) : ((textField.y + textField.height) + _local1));
};
} else {
_local7 = Math.max(0, Math.min(_local3, ((width - _local5) - (2 * _local1))));
_local3 = _local7;
textField.width = _local3;
textField.x = Math.round(((((width - _local3) - _local5) / 2) + ((_local2)!=ButtonLabelPlacement.LEFT) ? _local5 : 0));
textField.y = Math.round(((height - textField.height) / 2));
if (icon != null){
icon.x = Math.round(((_local2)!=ButtonLabelPlacement.LEFT) ? (textField.x - _local5) : ((textField.x + _local3) + _local1));
};
};
};
super.drawLayout();
}
override protected function initializeAccessibility():void{
if (LabelButton.createAccessibilityImplementation != null){
LabelButton.createAccessibilityImplementation(this);
};
}
protected function drawIcon():void{
var _local1:DisplayObject;
var _local2:String;
var _local3:Object;
_local1 = icon;
_local2 = (enabled) ? mouseState : "disabled";
if (selected){
_local2 = (("selected" + _local2.substr(0, 1).toUpperCase()) + _local2.substr(1));
};
_local2 = (_local2 + "Icon");
_local3 = getStyleValue(_local2);
if (_local3 == null){
_local3 = getStyleValue("icon");
};
if (_local3 != null){
icon = getDisplayObjectInstance(_local3);
};
if (icon != null){
addChildAt(icon, 1);
};
if (((!((_local1 == null))) && (!((_local1 == icon))))){
removeChild(_local1);
};
}
public function set label(_arg1:String):void{
_label = _arg1;
if (textField.text != _label){
textField.text = _label;
dispatchEvent(new ComponentEvent(ComponentEvent.LABEL_CHANGE));
};
invalidate(InvalidationType.SIZE);
invalidate(InvalidationType.STYLES);
}
protected function drawTextFormat():void{
var _local1:Object;
var _local2:TextFormat;
var _local3:TextFormat;
_local1 = UIComponent.getStyleDefinition();
_local2 = (enabled) ? (_local1.defaultTextFormat as TextFormat) : (_local1.defaultDisabledTextFormat as TextFormat);
textField.setTextFormat(_local2);
_local3 = (getStyleValue((enabled) ? "textFormat" : "disabledTextFormat") as TextFormat);
if (_local3 != null){
textField.setTextFormat(_local3);
} else {
_local3 = _local2;
};
textField.defaultTextFormat = _local3;
setEmbedFont();
}
public static function getStyleDefinition():Object{
return (mergeStyles(defaultStyles, BaseButton.getStyleDefinition()));
}
}
}//package fl.controls
Section 634
//ProgressBar (fl.controls.ProgressBar)
package fl.controls {
import flash.display.*;
import flash.events.*;
import fl.core.*;
import fl.controls.progressBarClasses.*;
public class ProgressBar extends UIComponent {
protected var _direction:String;// = "right"
protected var _mode:String;// = "event"
protected var _value:Number;// = 0
protected var _indeterminate:Boolean;// = true
protected var _minimum:Number;// = 0
protected var _maximum:Number;// = 0
protected var determinateBar:DisplayObject;
protected var _loaded:Number;
protected var _source:Object;
protected var track:DisplayObject;
protected var indeterminateBar:UIComponent;
private static var defaultStyles:Object = {trackSkin:"ProgressBar_trackSkin", barSkin:"ProgressBar_barSkin", indeterminateSkin:"ProgressBar_indeterminateSkin", indeterminateBar:IndeterminateBar, barPadding:0};
public function ProgressBar(){
_direction = ProgressBarDirection.RIGHT;
_indeterminate = true;
_mode = ProgressBarMode.EVENT;
_minimum = 0;
_maximum = 0;
_value = 0;
super();
}
public function get minimum():Number{
return (_minimum);
}
public function get source():Object{
return (_source);
}
public function set minimum(_arg1:Number):void{
if (_mode != ProgressBarMode.MANUAL){
return;
};
_minimum = _arg1;
invalidate(InvalidationType.DATA);
}
public function get maximum():Number{
return (_maximum);
}
protected function drawBars():void{
var _local1:DisplayObject;
var _local2:DisplayObject;
_local1 = determinateBar;
_local2 = indeterminateBar;
determinateBar = getDisplayObjectInstance(getStyleValue("barSkin"));
addChild(determinateBar);
indeterminateBar = (getDisplayObjectInstance(getStyleValue("indeterminateBar")) as UIComponent);
indeterminateBar.setStyle("indeterminateSkin", getStyleValue("indeterminateSkin"));
addChild(indeterminateBar);
if (((!((_local1 == null))) && (!((_local1 == determinateBar))))){
removeChild(_local1);
};
if (((!((_local2 == null))) && (!((_local2 == determinateBar))))){
removeChild(_local2);
};
}
protected function setupSourceEvents():void{
_source.addEventListener(ProgressEvent.PROGRESS, handleProgress, false, 0, true);
_source.addEventListener(Event.COMPLETE, handleComplete, false, 0, true);
}
public function set maximum(_arg1:Number):void{
setProgress(_value, _arg1);
}
public function set source(_arg1:Object):void{
if (_source == _arg1){
return;
};
if (_mode != ProgressBarMode.MANUAL){
resetProgress();
};
_source = _arg1;
if (_source == null){
return;
};
if (_mode == ProgressBarMode.EVENT){
setupSourceEvents();
} else {
if (_mode == ProgressBarMode.POLLED){
addEventListener(Event.ENTER_FRAME, pollSource, false, 0, true);
};
};
}
protected function drawTrack():void{
var _local1:DisplayObject;
_local1 = track;
track = getDisplayObjectInstance(getStyleValue("trackSkin"));
addChildAt(track, 0);
if (((!((_local1 == null))) && (!((_local1 == track))))){
removeChild(_local1);
};
}
protected function handleProgress(_arg1:ProgressEvent):void{
_setProgress(_arg1.bytesLoaded, _arg1.bytesTotal, true);
}
public function set sourceName(_arg1:String):void{
var _local2:DisplayObject;
if (!componentInspectorSetting){
return;
};
if (_arg1 == ""){
return;
};
_local2 = (parent.getChildByName(_arg1) as DisplayObject);
if (_local2 == null){
throw (new Error((("Source clip '" + _arg1) + "' not found on parent.")));
};
source = _local2;
}
protected function resetProgress():void{
if ((((_mode == ProgressBarMode.EVENT)) && (!((_source == null))))){
cleanupSourceEvents();
} else {
if (_mode == ProgressBarMode.POLLED){
removeEventListener(Event.ENTER_FRAME, pollSource);
} else {
if (_source != null){
_source = null;
};
};
};
_minimum = (_maximum = (_value = 0));
}
public function get percentComplete():Number{
return (((((_maximum <= _minimum)) || ((_value <= _minimum)))) ? 0 : Math.max(0, Math.min(100, (((_value - _minimum) / (_maximum - _minimum)) * 100))));
}
public function setProgress(_arg1:Number, _arg2:Number):void{
if (_mode != ProgressBarMode.MANUAL){
return;
};
_setProgress(_arg1, _arg2);
}
protected function pollSource(_arg1:Event):void{
if (_source == null){
return;
};
_setProgress(_source.bytesLoaded, _source.bytesTotal, true);
if ((((_maximum > 0)) && ((_maximum == _value)))){
removeEventListener(Event.ENTER_FRAME, pollSource);
dispatchEvent(new Event(Event.COMPLETE));
};
}
public function get indeterminate():Boolean{
return (_indeterminate);
}
public function set value(_arg1:Number):void{
setProgress(_arg1, _maximum);
}
public function set direction(_arg1:String):void{
_direction = _arg1;
invalidate(InvalidationType.DATA);
}
protected function _setProgress(_arg1:Number, _arg2:Number, _arg3:Boolean=false):void{
if ((((_arg1 == _value)) && ((_arg2 == _maximum)))){
return;
};
_value = _arg1;
_maximum = _arg2;
if (((!((_value == _loaded))) && (_arg3))){
dispatchEvent(new ProgressEvent(ProgressEvent.PROGRESS, false, false, _value, _maximum));
_loaded = _value;
};
if (_mode != ProgressBarMode.MANUAL){
setIndeterminate((_arg2 == 0));
};
invalidate(InvalidationType.DATA);
}
public function set mode(_arg1:String):void{
if (_mode == _arg1){
return;
};
resetProgress();
_mode = _arg1;
if ((((_arg1 == ProgressBarMode.EVENT)) && (!((_source == null))))){
setupSourceEvents();
} else {
if (_arg1 == ProgressBarMode.POLLED){
addEventListener(Event.ENTER_FRAME, pollSource, false, 0, true);
};
};
setIndeterminate(!((_mode == ProgressBarMode.MANUAL)));
}
public function reset():void{
var _local1:Object;
_setProgress(0, 0);
_local1 = _source;
_source = null;
source = _local1;
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES)){
drawTrack();
drawBars();
invalidate(InvalidationType.STATE, false);
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.STATE)){
indeterminateBar.visible = _indeterminate;
determinateBar.visible = !(_indeterminate);
invalidate(InvalidationType.DATA, false);
};
if (isInvalid(InvalidationType.SIZE)){
drawLayout();
invalidate(InvalidationType.DATA, false);
};
if (((isInvalid(InvalidationType.DATA)) && (!(_indeterminate)))){
drawDeterminateBar();
};
super.draw();
}
override protected function configUI():void{
super.configUI();
}
protected function drawDeterminateBar():void{
var _local1:Number;
var _local2:Number;
_local1 = (percentComplete / 100);
_local2 = Number(getStyleValue("barPadding"));
determinateBar.width = Math.round(((width - (_local2 * 2)) * _local1));
determinateBar.x = ((_direction)==ProgressBarDirection.LEFT) ? ((width - _local2) - determinateBar.width) : _local2;
}
public function get value():Number{
return (_value);
}
public function set indeterminate(_arg1:Boolean):void{
if (((!((_mode == ProgressBarMode.MANUAL))) || ((_indeterminate == _arg1)))){
return;
};
setIndeterminate(_arg1);
}
protected function setIndeterminate(_arg1:Boolean):void{
if (_indeterminate == _arg1){
return;
};
_indeterminate = _arg1;
invalidate(InvalidationType.STATE);
}
protected function handleComplete(_arg1:Event):void{
_setProgress(_maximum, _maximum, true);
dispatchEvent(_arg1);
}
protected function drawLayout():void{
var _local1:Number;
_local1 = Number(getStyleValue("barPadding"));
track.width = width;
track.height = height;
indeterminateBar.setSize((width - (_local1 * 2)), (height - (_local1 * 2)));
indeterminateBar.move(_local1, _local1);
indeterminateBar.drawNow();
determinateBar.height = (height - (_local1 * 2));
determinateBar.y = _local1;
}
public function get direction():String{
return (_direction);
}
public function get mode():String{
return (_mode);
}
protected function cleanupSourceEvents():void{
_source.removeEventListener(ProgressEvent.PROGRESS, handleProgress);
_source.removeEventListener(Event.COMPLETE, handleComplete);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 635
//ProgressBarDirection (fl.controls.ProgressBarDirection)
package fl.controls {
public class ProgressBarDirection {
public static const RIGHT:String = "right";
public static const LEFT:String = "left";
}
}//package fl.controls
Section 636
//ProgressBarMode (fl.controls.ProgressBarMode)
package fl.controls {
public class ProgressBarMode {
public static const MANUAL:String = "manual";
public static const EVENT:String = "event";
public static const POLLED:String = "polled";
}
}//package fl.controls
Section 637
//ScrollBar (fl.controls.ScrollBar)
package fl.controls {
import flash.events.*;
import fl.core.*;
import fl.events.*;
public class ScrollBar extends UIComponent {
private var _direction:String;// = "vertical"
protected var inDrag:Boolean;// = false
protected var upArrow:BaseButton;
private var _pageScrollSize:Number;// = 0
protected var downArrow:BaseButton;
private var _pageSize:Number;// = 10
private var thumbScrollOffset:Number;
private var _maxScrollPosition:Number;// = 0
private var _scrollPosition:Number;// = 0
protected var track:BaseButton;
private var _minScrollPosition:Number;// = 0
private var _lineScrollSize:Number;// = 1
protected var thumb:LabelButton;
protected static const THUMB_STYLES:Object = {disabledSkin:"thumbDisabledSkin", downSkin:"thumbDownSkin", overSkin:"thumbOverSkin", upSkin:"thumbUpSkin", icon:"thumbIcon", textPadding:0};
public static const WIDTH:Number = 15;
protected static const DOWN_ARROW_STYLES:Object = {disabledSkin:"downArrowDisabledSkin", downSkin:"downArrowDownSkin", overSkin:"downArrowOverSkin", upSkin:"downArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const UP_ARROW_STYLES:Object = {disabledSkin:"upArrowDisabledSkin", downSkin:"upArrowDownSkin", overSkin:"upArrowOverSkin", upSkin:"upArrowUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
protected static const TRACK_STYLES:Object = {disabledSkin:"trackDisabledSkin", downSkin:"trackDownSkin", overSkin:"trackOverSkin", upSkin:"trackUpSkin", repeatDelay:"repeatDelay", repeatInterval:"repeatInterval"};
private static var defaultStyles:Object = {downArrowDisabledSkin:"ScrollArrowDown_disabledSkin", downArrowDownSkin:"ScrollArrowDown_downSkin", downArrowOverSkin:"ScrollArrowDown_overSkin", downArrowUpSkin:"ScrollArrowDown_upSkin", thumbDisabledSkin:"ScrollThumb_upSkin", thumbDownSkin:"ScrollThumb_downSkin", thumbOverSkin:"ScrollThumb_overSkin", thumbUpSkin:"ScrollThumb_upSkin", trackDisabledSkin:"ScrollTrack_skin", trackDownSkin:"ScrollTrack_skin", trackOverSkin:"ScrollTrack_skin", trackUpSkin:"ScrollTrack_skin", upArrowDisabledSkin:"ScrollArrowUp_disabledSkin", upArrowDownSkin:"ScrollArrowUp_downSkin", upArrowOverSkin:"ScrollArrowUp_overSkin", upArrowUpSkin:"ScrollArrowUp_upSkin", thumbIcon:"ScrollBar_thumbIcon", repeatDelay:500, repeatInterval:35};
public function ScrollBar(){
_pageSize = 10;
_pageScrollSize = 0;
_lineScrollSize = 1;
_minScrollPosition = 0;
_maxScrollPosition = 0;
_scrollPosition = 0;
_direction = ScrollBarDirection.VERTICAL;
inDrag = false;
super();
setStyles();
focusEnabled = false;
}
public function get minScrollPosition():Number{
return (_minScrollPosition);
}
public function set minScrollPosition(_arg1:Number):void{
setScrollProperties(_pageSize, _arg1, _maxScrollPosition);
}
public function setScrollPosition(_arg1:Number, _arg2:Boolean=true):void{
var _local3:Number;
_local3 = scrollPosition;
_scrollPosition = Math.max(_minScrollPosition, Math.min(_maxScrollPosition, _arg1));
if (_local3 == _scrollPosition){
return;
};
if (_arg2){
dispatchEvent(new ScrollEvent(_direction, (scrollPosition - _local3), scrollPosition));
};
updateThumb();
}
public function set scrollPosition(_arg1:Number):void{
setScrollPosition(_arg1, true);
}
public function get pageScrollSize():Number{
return (((_pageScrollSize)==0) ? _pageSize : _pageScrollSize);
}
public function set pageSize(_arg1:Number):void{
if (_arg1 > 0){
_pageSize = _arg1;
};
}
public function setScrollProperties(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number=0):void{
this.pageSize = _arg1;
_minScrollPosition = _arg2;
_maxScrollPosition = _arg3;
if (_arg4 >= 0){
_pageScrollSize = _arg4;
};
enabled = (_maxScrollPosition > _minScrollPosition);
setScrollPosition(_scrollPosition, false);
updateThumb();
}
override public function set enabled(_arg1:Boolean):void{
super.enabled = _arg1;
downArrow.enabled = (track.enabled = (thumb.enabled = (upArrow.enabled = ((enabled) && ((_maxScrollPosition > _minScrollPosition))))));
updateThumb();
}
protected function updateThumb():void{
var _local1:Number;
_local1 = ((_maxScrollPosition - _minScrollPosition) + _pageSize);
if ((((((track.height <= 12)) || ((_maxScrollPosition <= _minScrollPosition)))) || ((((_local1 == 0)) || (isNaN(_local1)))))){
thumb.height = 12;
thumb.visible = false;
} else {
thumb.height = Math.max(13, ((_pageSize / _local1) * track.height));
thumb.y = (track.y + ((track.height - thumb.height) * ((_scrollPosition - _minScrollPosition) / (_maxScrollPosition - _minScrollPosition))));
thumb.visible = enabled;
};
}
protected function thumbPressHandler(_arg1:MouseEvent):void{
inDrag = true;
thumbScrollOffset = (mouseY - thumb.y);
thumb.mouseStateLocked = true;
mouseChildren = false;
stage.addEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true);
}
protected function thumbReleaseHandler(_arg1:MouseEvent):void{
inDrag = false;
mouseChildren = true;
thumb.mouseStateLocked = false;
stage.removeEventListener(MouseEvent.MOUSE_MOVE, handleThumbDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler);
}
public function set pageScrollSize(_arg1:Number):void{
if (_arg1 >= 0){
_pageScrollSize = _arg1;
};
}
protected function handleThumbDrag(_arg1:MouseEvent):void{
var _local2:Number;
_local2 = Math.max(0, Math.min((track.height - thumb.height), ((mouseY - track.y) - thumbScrollOffset)));
setScrollPosition((((_local2 / (track.height - thumb.height)) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition));
}
public function set direction(_arg1:String):void{
var _local2:Boolean;
if (_direction == _arg1){
return;
};
_direction = _arg1;
if (isLivePreview){
return;
};
setScaleY(1);
_local2 = (_direction == ScrollBarDirection.HORIZONTAL);
if (((_local2) && (componentInspectorSetting))){
if (rotation == 90){
return;
};
setScaleX(-1);
rotation = -90;
};
if (!componentInspectorSetting){
if (((_local2) && ((rotation == 0)))){
rotation = -90;
setScaleX(-1);
} else {
if (((!(_local2)) && ((rotation == -90)))){
rotation = 0;
setScaleX(1);
};
};
};
invalidate(InvalidationType.SIZE);
}
public function set lineScrollSize(_arg1:Number):void{
if (_arg1 > 0){
_lineScrollSize = _arg1;
};
}
override public function get height():Number{
return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.width : super.height);
}
protected function scrollPressHandler(_arg1:ComponentEvent):void{
var _local2:Number;
var _local3:Number;
_arg1.stopImmediatePropagation();
if (_arg1.currentTarget == upArrow){
setScrollPosition((_scrollPosition - _lineScrollSize));
} else {
if (_arg1.currentTarget == downArrow){
setScrollPosition((_scrollPosition + _lineScrollSize));
} else {
_local2 = (((track.mouseY / track.height) * (_maxScrollPosition - _minScrollPosition)) + _minScrollPosition);
_local3 = ((pageScrollSize)==0) ? pageSize : pageScrollSize;
if (_scrollPosition < _local2){
setScrollPosition(Math.min(_local2, (_scrollPosition + _local3)));
} else {
if (_scrollPosition > _local2){
setScrollPosition(Math.max(_local2, (_scrollPosition - _local3)));
};
};
};
};
}
public function get pageSize():Number{
return (_pageSize);
}
public function set maxScrollPosition(_arg1:Number):void{
setScrollProperties(_pageSize, _minScrollPosition, _arg1);
}
public function get scrollPosition():Number{
return (_scrollPosition);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
var _local1:Number;
if (isInvalid(InvalidationType.SIZE)){
_local1 = super.height;
downArrow.move(0, Math.max(upArrow.height, (_local1 - downArrow.height)));
track.setSize(WIDTH, Math.max(0, (_local1 - (downArrow.height + upArrow.height))));
updateThumb();
};
if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
setStyles();
};
downArrow.drawNow();
upArrow.drawNow();
track.drawNow();
thumb.drawNow();
validate();
}
override protected function configUI():void{
super.configUI();
track = new BaseButton();
track.move(0, 14);
track.useHandCursor = false;
track.autoRepeat = true;
track.focusEnabled = false;
addChild(track);
thumb = new LabelButton();
thumb.label = "";
thumb.setSize(WIDTH, 15);
thumb.move(0, 15);
thumb.focusEnabled = false;
addChild(thumb);
downArrow = new BaseButton();
downArrow.setSize(WIDTH, 14);
downArrow.autoRepeat = true;
downArrow.focusEnabled = false;
addChild(downArrow);
upArrow = new BaseButton();
upArrow.setSize(WIDTH, 14);
upArrow.move(0, 0);
upArrow.autoRepeat = true;
upArrow.focusEnabled = false;
addChild(upArrow);
upArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
downArrow.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
track.addEventListener(ComponentEvent.BUTTON_DOWN, scrollPressHandler, false, 0, true);
thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true);
enabled = false;
}
public function get direction():String{
return (_direction);
}
public function get lineScrollSize():Number{
return (_lineScrollSize);
}
override public function setSize(_arg1:Number, _arg2:Number):void{
if (_direction == ScrollBarDirection.HORIZONTAL){
super.setSize(_arg2, _arg1);
} else {
super.setSize(_arg1, _arg2);
};
}
public function get maxScrollPosition():Number{
return (_maxScrollPosition);
}
override public function get width():Number{
return (((_direction)==ScrollBarDirection.HORIZONTAL) ? super.height : super.width);
}
protected function setStyles():void{
copyStylesToChild(downArrow, DOWN_ARROW_STYLES);
copyStylesToChild(thumb, THUMB_STYLES);
copyStylesToChild(track, TRACK_STYLES);
copyStylesToChild(upArrow, UP_ARROW_STYLES);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 638
//ScrollBarDirection (fl.controls.ScrollBarDirection)
package fl.controls {
public class ScrollBarDirection {
public static const HORIZONTAL:String = "horizontal";
public static const VERTICAL:String = "vertical";
}
}//package fl.controls
Section 639
//ScrollPolicy (fl.controls.ScrollPolicy)
package fl.controls {
public class ScrollPolicy {
public static const OFF:String = "off";
public static const ON:String = "on";
public static const AUTO:String = "auto";
}
}//package fl.controls
Section 640
//Slider (fl.controls.Slider)
package fl.controls {
import flash.display.*;
import flash.events.*;
import fl.managers.*;
import fl.core.*;
import fl.events.*;
import flash.ui.*;
public class Slider extends UIComponent implements IFocusManagerComponent {
protected var _direction:String;
protected var _liveDragging:Boolean;// = false
protected var _value:Number;// = 0
protected var _snapInterval:Number;// = 0
protected var _minimum:Number;// = 0
protected var _maximum:Number;// = 10
protected var track:BaseButton;
protected var _tickInterval:Number;// = 0
protected var tickContainer:Sprite;
protected var thumb:BaseButton;
protected static const TICK_STYLES:Object = {upSkin:"tickSkin"};
protected static const TRACK_STYLES:Object = {upSkin:"sliderTrackSkin", overSkin:"sliderTrackSkin", downSkin:"sliderTrackSkin", disabledSkin:"sliderTrackDisabledSkin"};
protected static const THUMB_STYLES:Object = {upSkin:"thumbUpSkin", overSkin:"thumbOverSkin", downSkin:"thumbDownSkin", disabledSkin:"thumbDisabledSkin"};
protected static var defaultStyles:Object = {thumbUpSkin:"SliderThumb_upSkin", thumbOverSkin:"SliderThumb_overSkin", thumbDownSkin:"SliderThumb_downSkin", thumbDisabledSkin:"SliderThumb_disabledSkin", sliderTrackSkin:"SliderTrack_skin", sliderTrackDisabledSkin:"SliderTrack_disabledSkin", tickSkin:"SliderTick_skin", focusRectSkin:null, focusRectPadding:null};
public function Slider(){
_direction = SliderDirection.HORIZONTAL;
_minimum = 0;
_maximum = 10;
_value = 0;
_tickInterval = 0;
_snapInterval = 0;
_liveDragging = false;
super();
setStyles();
}
public function get minimum():Number{
return (_minimum);
}
public function set minimum(_arg1:Number):void{
_minimum = _arg1;
this.value = Math.max(_arg1, this.value);
invalidate(InvalidationType.DATA);
}
public function get maximum():Number{
return (_maximum);
}
protected function positionThumb():void{
thumb.x = ((((_direction)==SliderDirection.VERTICAL) ? ((maximum - minimum) - value) : (value - minimum) / (maximum - minimum)) * _width);
}
protected function clearTicks():void{
if (((!(tickContainer)) || (!(tickContainer.parent)))){
return;
};
removeChild(tickContainer);
}
protected function onTrackClick(_arg1:MouseEvent):void{
calculateValue(track.mouseX, InteractionInputType.MOUSE, SliderEventClickTarget.TRACK);
if (!liveDragging){
dispatchEvent(new SliderEvent(SliderEvent.CHANGE, value, SliderEventClickTarget.TRACK, InteractionInputType.MOUSE));
};
}
public function set maximum(_arg1:Number):void{
_maximum = _arg1;
this.value = Math.min(_arg1, this.value);
invalidate(InvalidationType.DATA);
}
public function get liveDragging():Boolean{
return (_liveDragging);
}
protected function doDrag(_arg1:MouseEvent):void{
var _local2:Number;
var _local3:Number;
_local2 = (_width / snapInterval);
_local3 = track.mouseX;
calculateValue(_local3, InteractionInputType.MOUSE, SliderEventClickTarget.THUMB);
dispatchEvent(new SliderEvent(SliderEvent.THUMB_DRAG, value, SliderEventClickTarget.THUMB, InteractionInputType.MOUSE));
}
override protected function keyDownHandler(_arg1:KeyboardEvent):void{
var _local2:uint;
var _local3:Number;
var _local4:Boolean;
if (!enabled){
return;
};
_local2 = ((snapInterval)>0) ? snapInterval : 1;
_local4 = (direction == SliderDirection.HORIZONTAL);
if ((((((_arg1.keyCode == Keyboard.DOWN)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.LEFT)) && (_local4))))){
_local3 = (value - _local2);
} else {
if ((((((_arg1.keyCode == Keyboard.UP)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.RIGHT)) && (_local4))))){
_local3 = (value + _local2);
} else {
if ((((((_arg1.keyCode == Keyboard.PAGE_DOWN)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.HOME)) && (_local4))))){
_local3 = minimum;
} else {
if ((((((_arg1.keyCode == Keyboard.PAGE_UP)) && (!(_local4)))) || ((((_arg1.keyCode == Keyboard.END)) && (_local4))))){
_local3 = maximum;
};
};
};
};
if (!isNaN(_local3)){
_arg1.stopPropagation();
doSetValue(_local3, InteractionInputType.KEYBOARD, null, _arg1.keyCode);
};
}
override public function set enabled(_arg1:Boolean):void{
if (enabled == _arg1){
return;
};
super.enabled = _arg1;
track.enabled = (thumb.enabled = _arg1);
}
protected function thumbPressHandler(_arg1:MouseEvent):void{
stage.addEventListener(MouseEvent.MOUSE_MOVE, doDrag, false, 0, true);
stage.addEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler, false, 0, true);
dispatchEvent(new SliderEvent(SliderEvent.THUMB_PRESS, value, InteractionInputType.MOUSE, SliderEventClickTarget.THUMB));
}
public function get snapInterval():Number{
return (_snapInterval);
}
protected function thumbReleaseHandler(_arg1:MouseEvent):void{
stage.removeEventListener(MouseEvent.MOUSE_MOVE, doDrag);
stage.removeEventListener(MouseEvent.MOUSE_UP, thumbReleaseHandler);
dispatchEvent(new SliderEvent(SliderEvent.THUMB_RELEASE, value, InteractionInputType.MOUSE, SliderEventClickTarget.THUMB));
dispatchEvent(new SliderEvent(SliderEvent.CHANGE, value, SliderEventClickTarget.THUMB, InteractionInputType.MOUSE));
}
public function set liveDragging(_arg1:Boolean):void{
_liveDragging = _arg1;
}
public function set value(_arg1:Number):void{
doSetValue(_arg1);
}
public function set direction(_arg1:String):void{
var _local2:Boolean;
_direction = _arg1;
_local2 = (_direction == SliderDirection.VERTICAL);
if (isLivePreview){
if (_local2){
setScaleY(-1);
y = track.height;
} else {
setScaleY(1);
y = 0;
};
positionThumb();
return;
};
if (((_local2) && (componentInspectorSetting))){
if ((rotation % 90) == 0){
setScaleY(-1);
};
};
if (!componentInspectorSetting){
rotation = (_local2) ? 90 : 0;
};
}
public function set tickInterval(_arg1:Number):void{
_tickInterval = _arg1;
invalidate(InvalidationType.SIZE);
}
override public function get enabled():Boolean{
return (super.enabled);
}
override protected function draw():void{
if (isInvalid(InvalidationType.STYLES)){
setStyles();
invalidate(InvalidationType.SIZE, false);
};
if (isInvalid(InvalidationType.SIZE)){
track.setSize(_width, track.height);
track.drawNow();
thumb.drawNow();
};
if (tickInterval > 0){
drawTicks();
} else {
clearTicks();
};
positionThumb();
super.draw();
}
override protected function configUI():void{
super.configUI();
thumb = new BaseButton();
thumb.setSize(13, 13);
thumb.autoRepeat = false;
addChild(thumb);
thumb.addEventListener(MouseEvent.MOUSE_DOWN, thumbPressHandler, false, 0, true);
track = new BaseButton();
track.move(0, 0);
track.setSize(80, 4);
track.autoRepeat = false;
track.useHandCursor = false;
track.addEventListener(MouseEvent.CLICK, onTrackClick, false, 0, true);
addChildAt(track, 0);
}
public function set snapInterval(_arg1:Number):void{
_snapInterval = _arg1;
}
public function get value():Number{
return (_value);
}
public function get direction():String{
return (_direction);
}
public function get tickInterval():Number{
return (_tickInterval);
}
override public function setSize(_arg1:Number, _arg2:Number):void{
if ((((_direction == SliderDirection.VERTICAL)) && (!(isLivePreview)))){
super.setSize(_arg2, _arg1);
} else {
super.setSize(_arg1, _arg2);
};
invalidate(InvalidationType.SIZE);
}
protected function drawTicks():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:uint;
var _local5:DisplayObject;
clearTicks();
tickContainer = new Sprite();
_local1 = ((maximum)<1) ? (tickInterval / 100) : tickInterval;
_local2 = ((maximum - minimum) / _local1);
_local3 = (_width / _local2);
_local4 = 0;
while (_local4 <= _local2) {
_local5 = getDisplayObjectInstance(getStyleValue("tickSkin"));
_local5.x = (_local3 * _local4);
_local5.y = ((track.y - _local5.height) - 2);
tickContainer.addChild(_local5);
_local4++;
};
addChild(tickContainer);
}
protected function calculateValue(_arg1:Number, _arg2:String, _arg3:String, _arg4:int=undefined):void{
var _local5:Number;
_local5 = ((_arg1 / _width) * (maximum - minimum));
if (_direction == SliderDirection.VERTICAL){
_local5 = (maximum - _local5);
} else {
_local5 = (minimum + _local5);
};
doSetValue(_local5, _arg2, _arg3, _arg4);
}
protected function getPrecision(_arg1:Number):Number{
var _local2:String;
_local2 = _arg1.toString();
if (_local2.indexOf(".") == -1){
return (0);
};
return (_local2.split(".").pop().length);
}
protected function doSetValue(_arg1:Number, _arg2:String=null, _arg3:String=null, _arg4:int=undefined):void{
var _local5:Number;
var _local6:Number;
var _local7:Number;
var _local8:Number;
var _local9:Number;
_local5 = _value;
if (((!((_snapInterval == 0))) && (!((_snapInterval == 1))))){
_local6 = Math.pow(10, getPrecision(snapInterval));
_local7 = (_snapInterval * _local6);
_local8 = Math.round((_arg1 * _local6));
_local9 = (Math.round((_local8 / _local7)) * _local7);
_arg1 = (_local9 / _local6);
_value = Math.max(minimum, Math.min(maximum, _arg1));
} else {
_value = Math.max(minimum, Math.min(maximum, Math.round(_arg1)));
};
if (((!((_local5 == _value))) && (((((liveDragging) && (!((_arg3 == null))))) || ((_arg2 == InteractionInputType.KEYBOARD)))))){
dispatchEvent(new SliderEvent(SliderEvent.CHANGE, value, _arg3, _arg2, _arg4));
};
positionThumb();
}
protected function setStyles():void{
copyStylesToChild(thumb, THUMB_STYLES);
copyStylesToChild(track, TRACK_STYLES);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
}
}//package fl.controls
Section 641
//SliderDirection (fl.controls.SliderDirection)
package fl.controls {
public class SliderDirection {
public static var HORIZONTAL:String = "horizontal";
public static var VERTICAL:String = "vertical";
}
}//package fl.controls
Section 642
//ComponentShim (fl.core.ComponentShim)
package fl.core {
import flash.display.*;
public dynamic class ComponentShim extends MovieClip {
}
}//package fl.core
Section 643
//InvalidationType (fl.core.InvalidationType)
package fl.core {
public class InvalidationType {
public static const SIZE:String = "size";
public static const ALL:String = "all";
public static const DATA:String = "data";
public static const SCROLL:String = "scroll";
public static const STATE:String = "state";
public static const STYLES:String = "styles";
public static const SELECTED:String = "selected";
public static const RENDERER_STYLES:String = "rendererStyles";
}
}//package fl.core
Section 644
//UIComponent (fl.core.UIComponent)
package fl.core {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import fl.managers.*;
import fl.events.*;
import flash.system.*;
import flash.text.*;
public class UIComponent extends Sprite {
protected var _enabled:Boolean;// = true
private var _mouseFocusEnabled:Boolean;// = true
protected var startHeight:Number;
protected var _height:Number;
protected var _oldIMEMode:String;// = null
protected var startWidth:Number;
public var focusTarget:IFocusManagerComponent;
protected var errorCaught:Boolean;// = false
protected var uiFocusRect:DisplayObject;
protected var _width:Number;
public var version:String;// = "3.0.0.15"
protected var isFocused:Boolean;// = false
protected var callLaterMethods:Dictionary;
private var _focusEnabled:Boolean;// = true
private var tempText:TextField;
protected var invalidateFlag:Boolean;// = false
protected var _inspector:Boolean;// = false
protected var sharedStyles:Object;
protected var invalidHash:Object;
protected var isLivePreview:Boolean;// = false
protected var _imeMode:String;// = null
protected var instanceStyles:Object;
protected var _x:Number;
protected var _y:Number;
public static var inCallLaterPhase:Boolean = false;
private static var defaultStyles:Object = {focusRectSkin:"focusRectSkin", focusRectPadding:2, textFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), disabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultTextFormat:new TextFormat("_sans", 11, 0, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0), defaultDisabledTextFormat:new TextFormat("_sans", 11, 0x999999, false, false, false, "", "", TextFormatAlign.LEFT, 0, 0, 0, 0)};
public static var createAccessibilityImplementation:Function;
private static var focusManagers:Dictionary = new Dictionary(false);
public function UIComponent(){
version = "3.0.0.15";
isLivePreview = false;
invalidateFlag = false;
_enabled = true;
isFocused = false;
_focusEnabled = true;
_mouseFocusEnabled = true;
_imeMode = null;
_oldIMEMode = null;
errorCaught = false;
_inspector = false;
super();
instanceStyles = {};
sharedStyles = {};
invalidHash = {};
callLaterMethods = new Dictionary();
StyleManager.registerInstance(this);
configUI();
invalidate(InvalidationType.ALL);
tabEnabled = (this is IFocusManagerComponent);
focusRect = false;
if (tabEnabled){
addEventListener(FocusEvent.FOCUS_IN, focusInHandler);
addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler);
addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
};
initializeFocusManager();
addEventListener(Event.ENTER_FRAME, hookAccessibility, false, 0, true);
}
public function drawFocus(_arg1:Boolean):void{
var _local2:Number;
isFocused = _arg1;
if (((!((uiFocusRect == null))) && (contains(uiFocusRect)))){
removeChild(uiFocusRect);
uiFocusRect = null;
};
if (_arg1){
uiFocusRect = (getDisplayObjectInstance(getStyleValue("focusRectSkin")) as Sprite);
if (uiFocusRect == null){
return;
};
_local2 = Number(getStyleValue("focusRectPadding"));
uiFocusRect.x = -(_local2);
uiFocusRect.y = -(_local2);
uiFocusRect.width = (width + (_local2 * 2));
uiFocusRect.height = (height + (_local2 * 2));
addChildAt(uiFocusRect, 0);
};
}
private function callLaterDispatcher(_arg1:Event):void{
var _local2:Dictionary;
var _local3:Object;
if (_arg1.type == Event.ADDED_TO_STAGE){
removeEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher);
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
return;
};
_arg1.target.removeEventListener(Event.RENDER, callLaterDispatcher);
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
return;
};
inCallLaterPhase = true;
_local2 = callLaterMethods;
for (_local3 in _local2) {
_local3();
delete _local2[_local3];
};
inCallLaterPhase = false;
}
private function addedHandler(_arg1:Event):void{
removeEventListener("addedToStage", addedHandler);
initializeFocusManager();
}
protected function getStyleValue(_arg1:String):Object{
return (((instanceStyles[_arg1])==null) ? sharedStyles[_arg1] : instanceStyles[_arg1]);
}
protected function isOurFocus(_arg1:DisplayObject):Boolean{
return ((_arg1 == this));
}
override public function get scaleX():Number{
return ((width / startWidth));
}
override public function get scaleY():Number{
return ((height / startHeight));
}
override public function set height(_arg1:Number):void{
if (_height == _arg1){
return;
};
setSize(width, _arg1);
}
protected function keyDownHandler(_arg1:KeyboardEvent):void{
}
protected function focusInHandler(_arg1:FocusEvent):void{
var _local2:IFocusManager;
if (isOurFocus((_arg1.target as DisplayObject))){
_local2 = focusManager;
if (((_local2) && (_local2.showFocusIndicator))){
drawFocus(true);
isFocused = true;
};
};
}
public function setStyle(_arg1:String, _arg2:Object):void{
if ((((instanceStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
instanceStyles[_arg1] = _arg2;
invalidate(InvalidationType.STYLES);
}
override public function get visible():Boolean{
return (super.visible);
}
public function get componentInspectorSetting():Boolean{
return (_inspector);
}
override public function get x():Number{
return ((isNaN(_x)) ? super.x : _x);
}
override public function get y():Number{
return ((isNaN(_y)) ? super.y : _y);
}
protected function setIMEMode(_arg1:Boolean){
var enabled = _arg1;
if (_imeMode != null){
if (enabled){
IME.enabled = true;
_oldIMEMode = IME.conversionMode;
try {
if (((!(errorCaught)) && (!((IME.conversionMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _imeMode;
};
errorCaught = false;
} catch(e:Error) {
errorCaught = true;
throw (new Error(("IME mode not supported: " + _imeMode)));
};
} else {
if (((!((IME.conversionMode == IMEConversionMode.UNKNOWN))) && (!((_oldIMEMode == IMEConversionMode.UNKNOWN))))){
IME.conversionMode = _oldIMEMode;
};
IME.enabled = false;
};
};
}
public function set enabled(_arg1:Boolean):void{
if (_arg1 == _enabled){
return;
};
_enabled = _arg1;
invalidate(InvalidationType.STATE);
}
public function setSharedStyle(_arg1:String, _arg2:Object):void{
if ((((sharedStyles[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
sharedStyles[_arg1] = _arg2;
if (instanceStyles[_arg1] == null){
invalidate(InvalidationType.STYLES);
};
}
protected function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function set focusEnabled(_arg1:Boolean):void{
_focusEnabled = _arg1;
}
override public function set scaleX(_arg1:Number):void{
setSize((startWidth * _arg1), height);
}
public function get mouseFocusEnabled():Boolean{
return (_mouseFocusEnabled);
}
override public function set scaleY(_arg1:Number):void{
setSize(width, (startHeight * _arg1));
}
protected function getDisplayObjectInstance(_arg1:Object):DisplayObject{
var classDef:Object;
var skin = _arg1;
classDef = null;
if ((skin is Class)){
return ((new (skin) as DisplayObject));
};
if ((skin is DisplayObject)){
(skin as DisplayObject).x = 0;
(skin as DisplayObject).y = 0;
return ((skin as DisplayObject));
};
try {
classDef = getDefinitionByName(skin.toString());
} catch(e:Error) {
try {
classDef = (loaderInfo.applicationDomain.getDefinition(skin.toString()) as Object);
} catch(e:Error) {
};
};
if (classDef == null){
return (null);
};
return ((new (classDef) as DisplayObject));
}
protected function copyStylesToChild(_arg1:UIComponent, _arg2:Object):void{
var _local3:String;
for (_local3 in _arg2) {
_arg1.setStyle(_local3, getStyleValue(_arg2[_local3]));
};
}
protected function beforeComponentParameters():void{
}
protected function callLater(_arg1:Function):void{
if (inCallLaterPhase){
return;
};
callLaterMethods[_arg1] = true;
if (stage != null){
stage.addEventListener(Event.RENDER, callLaterDispatcher, false, 0, true);
stage.invalidate();
} else {
addEventListener(Event.ADDED_TO_STAGE, callLaterDispatcher, false, 0, true);
};
}
protected function createFocusManager():void{
if (focusManagers[stage] == null){
focusManagers[stage] = new FocusManager(stage);
};
}
override public function set visible(_arg1:Boolean):void{
var _local2:String;
if (super.visible == _arg1){
return;
};
super.visible = _arg1;
_local2 = (_arg1) ? ComponentEvent.SHOW : ComponentEvent.HIDE;
dispatchEvent(new ComponentEvent(_local2, true));
}
protected function hookAccessibility(_arg1:Event):void{
removeEventListener(Event.ENTER_FRAME, hookAccessibility);
initializeAccessibility();
}
public function set componentInspectorSetting(_arg1:Boolean):void{
_inspector = _arg1;
if (_inspector){
beforeComponentParameters();
} else {
afterComponentParameters();
};
}
override public function set x(_arg1:Number):void{
move(_arg1, _y);
}
public function drawNow():void{
draw();
}
override public function set y(_arg1:Number):void{
move(_x, _arg1);
}
protected function checkLivePreview():Boolean{
var className:String;
if (parent == null){
return (false);
};
try {
className = getQualifiedClassName(parent);
} catch(e:Error) {
};
return ((className == "fl.livepreview::LivePreviewParent"));
}
protected function focusOutHandler(_arg1:FocusEvent):void{
if (isOurFocus((_arg1.target as DisplayObject))){
drawFocus(false);
isFocused = false;
};
}
public function set mouseFocusEnabled(_arg1:Boolean):void{
_mouseFocusEnabled = _arg1;
}
public function getFocus():InteractiveObject{
if (stage){
return (stage.focus);
};
return (null);
}
protected function validate():void{
invalidHash = {};
}
override public function get height():Number{
return (_height);
}
public function invalidate(_arg1:String="all", _arg2:Boolean=true):void{
invalidHash[_arg1] = true;
if (_arg2){
this.callLater(draw);
};
}
public function get enabled():Boolean{
return (_enabled);
}
protected function getScaleX():Number{
return (super.scaleX);
}
protected function getScaleY():Number{
return (super.scaleY);
}
public function get focusEnabled():Boolean{
return (_focusEnabled);
}
protected function afterComponentParameters():void{
}
protected function draw():void{
if (isInvalid(InvalidationType.SIZE, InvalidationType.STYLES)){
if (((isFocused) && (focusManager.showFocusIndicator))){
drawFocus(true);
};
};
validate();
}
protected function configUI():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
isLivePreview = checkLivePreview();
_local1 = rotation;
rotation = 0;
_local2 = super.width;
_local3 = super.height;
var _local4 = 1;
super.scaleY = _local4;
super.scaleX = _local4;
setSize(_local2, _local3);
move(super.x, super.y);
rotation = _local1;
startWidth = _local2;
startHeight = _local3;
if (numChildren > 0){
removeChildAt(0);
};
}
protected function setScaleX(_arg1:Number):void{
super.scaleX = _arg1;
}
protected function setScaleY(_arg1:Number):void{
super.scaleY = _arg1;
}
private function initializeFocusManager():void{
if (stage == null){
addEventListener(Event.ADDED_TO_STAGE, addedHandler, false, 0, true);
} else {
createFocusManager();
};
}
public function set focusManager(_arg1:IFocusManager):void{
UIComponent.focusManagers[this] = _arg1;
}
public function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
protected function isInvalid(_arg1:String, ... _args):Boolean{
if (((invalidHash[_arg1]) || (invalidHash[InvalidationType.ALL]))){
return (true);
};
while (_args.length > 0) {
if (invalidHash[_args.pop()]){
return (true);
};
};
return (false);
}
public function setSize(_arg1:Number, _arg2:Number):void{
_width = _arg1;
_height = _arg2;
invalidate(InvalidationType.SIZE);
dispatchEvent(new ComponentEvent(ComponentEvent.RESIZE, false));
}
override public function set width(_arg1:Number):void{
if (_width == _arg1){
return;
};
setSize(_arg1, height);
}
public function setFocus():void{
if (stage){
stage.focus = this;
};
}
protected function initializeAccessibility():void{
if (UIComponent.createAccessibilityImplementation != null){
UIComponent.createAccessibilityImplementation(this);
};
}
public function get focusManager():IFocusManager{
var _local1:DisplayObject;
_local1 = this;
while (_local1) {
if (UIComponent.focusManagers[_local1] != null){
return (IFocusManager(UIComponent.focusManagers[_local1]));
};
_local1 = _local1.parent;
};
return (null);
}
override public function get width():Number{
return (_width);
}
public function move(_arg1:Number, _arg2:Number):void{
_x = _arg1;
_y = _arg2;
super.x = Math.round(_arg1);
super.y = Math.round(_arg2);
dispatchEvent(new ComponentEvent(ComponentEvent.MOVE));
}
public function validateNow():void{
invalidate(InvalidationType.ALL, false);
draw();
}
public function getStyle(_arg1:String):Object{
return (instanceStyles[_arg1]);
}
public static function getStyleDefinition():Object{
return (defaultStyles);
}
public static function mergeStyles(... _args):Object{
var _local2:Object;
var _local3:uint;
var _local4:uint;
var _local5:Object;
var _local6:String;
_local2 = {};
_local3 = _args.length;
_local4 = 0;
while (_local4 < _local3) {
_local5 = _args[_local4];
for (_local6 in _local5) {
if (_local2[_local6] != null){
} else {
_local2[_local6] = _args[_local4][_local6];
};
};
_local4++;
};
return (_local2);
}
}
}//package fl.core
Section 645
//ComponentEvent (fl.events.ComponentEvent)
package fl.events {
import flash.events.*;
public class ComponentEvent extends Event {
public static const HIDE:String = "hide";
public static const BUTTON_DOWN:String = "buttonDown";
public static const MOVE:String = "move";
public static const RESIZE:String = "resize";
public static const ENTER:String = "enter";
public static const LABEL_CHANGE:String = "labelChange";
public static const SHOW:String = "show";
public function ComponentEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
override public function toString():String{
return (formatToString("ComponentEvent", "type", "bubbles", "cancelable"));
}
override public function clone():Event{
return (new ComponentEvent(type, bubbles, cancelable));
}
}
}//package fl.events
Section 646
//InteractionInputType (fl.events.InteractionInputType)
package fl.events {
public class InteractionInputType {
public static const MOUSE:String = "mouse";
public static const KEYBOARD:String = "keyboard";
}
}//package fl.events
Section 647
//ScrollEvent (fl.events.ScrollEvent)
package fl.events {
import flash.events.*;
public class ScrollEvent extends Event {
private var _position:Number;
private var _direction:String;
private var _delta:Number;
public static const SCROLL:String = "scroll";
public function ScrollEvent(_arg1:String, _arg2:Number, _arg3:Number){
super(ScrollEvent.SCROLL, false, false);
_direction = _arg1;
_delta = _arg2;
_position = _arg3;
}
override public function clone():Event{
return (new ScrollEvent(_direction, _delta, _position));
}
public function get position():Number{
return (_position);
}
override public function toString():String{
return (formatToString("ScrollEvent", "type", "bubbles", "cancelable", "direction", "delta", "position"));
}
public function get delta():Number{
return (_delta);
}
public function get direction():String{
return (_direction);
}
}
}//package fl.events
Section 648
//SliderEvent (fl.events.SliderEvent)
package fl.events {
import flash.events.*;
public class SliderEvent extends Event {
protected var _triggerEvent:String;
protected var _keyCode:Number;
protected var _value:Number;
protected var _clickTarget:String;
public static const CHANGE:String = "change";
public static const THUMB_PRESS:String = "thumbPress";
public static const THUMB_DRAG:String = "thumbDrag";
public static const THUMB_RELEASE:String = "thumbRelease";
public function SliderEvent(_arg1:String, _arg2:Number, _arg3:String, _arg4:String, _arg5:int=0){
_value = _arg2;
_keyCode = _arg5;
_triggerEvent = _arg4;
_clickTarget = _arg3;
super(_arg1);
}
public function get clickTarget():String{
return (_clickTarget);
}
override public function clone():Event{
return (new SliderEvent(type, _value, _clickTarget, _triggerEvent, _keyCode));
}
override public function toString():String{
return (formatToString("SliderEvent", "type", "value", "bubbles", "cancelable", "keyCode", "triggerEvent", "clickTarget"));
}
public function get triggerEvent():String{
return (_triggerEvent);
}
public function get value():Number{
return (_value);
}
public function get keyCode():Number{
return (_keyCode);
}
}
}//package fl.events
Section 649
//SliderEventClickTarget (fl.events.SliderEventClickTarget)
package fl.events {
public class SliderEventClickTarget {
public static const TRACK:String = "track";
public static const THUMB:String = "thumb";
}
}//package fl.events
Section 650
//FocusManager (fl.managers.FocusManager)
package fl.managers {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import fl.core.*;
import fl.controls.*;
import flash.text.*;
import flash.ui.*;
public class FocusManager implements IFocusManager {
private var focusableObjects:Dictionary;
private var _showFocusIndicator:Boolean;// = true
private var defButton:Button;
private var focusableCandidates:Array;
private var _form:DisplayObjectContainer;
private var _defaultButtonEnabled:Boolean;// = true
private var activated:Boolean;// = false
private var _defaultButton:Button;
private var calculateCandidates:Boolean;// = true
private var lastFocus:InteractiveObject;
private var lastAction:String;
public function FocusManager(_arg1:DisplayObjectContainer){
activated = false;
calculateCandidates = true;
_showFocusIndicator = true;
_defaultButtonEnabled = true;
super();
focusableObjects = new Dictionary(true);
if (_arg1 != null){
_form = _arg1;
addFocusables(DisplayObject(_arg1));
_arg1.addEventListener(Event.ADDED, addedHandler);
_arg1.addEventListener(Event.REMOVED, removedHandler);
activate();
};
}
public function get showFocusIndicator():Boolean{
return (_showFocusIndicator);
}
private function getIndexOfNextObject(_arg1:int, _arg2:Boolean, _arg3:Boolean, _arg4:String):int{
var _local5:int;
var _local6:int;
var _local7:DisplayObject;
var _local8:IFocusManagerGroup;
var _local9:int;
var _local10:DisplayObject;
var _local11:IFocusManagerGroup;
_local5 = focusableCandidates.length;
_local6 = _arg1;
while (true) {
if (_arg2){
_arg1--;
} else {
_arg1++;
};
if (_arg3){
if (((_arg2) && ((_arg1 < 0)))){
break;
};
if (((!(_arg2)) && ((_arg1 == _local5)))){
break;
};
} else {
_arg1 = ((_arg1 + _local5) % _local5);
if (_local6 == _arg1){
break;
};
};
if (isValidFocusCandidate(focusableCandidates[_arg1], _arg4)){
_local7 = DisplayObject(findFocusManagerComponent(focusableCandidates[_arg1]));
if ((_local7 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local7);
_local9 = 0;
while (_local9 < focusableCandidates.length) {
_local10 = focusableCandidates[_local9];
if ((_local10 is IFocusManagerGroup)){
_local11 = IFocusManagerGroup(_local10);
if ((((_local11.groupName == _local8.groupName)) && (_local11.selected))){
_arg1 = _local9;
break;
};
};
_local9++;
};
};
return (_arg1);
};
};
return (_arg1);
}
public function set form(_arg1:DisplayObjectContainer):void{
_form = _arg1;
}
private function addFocusables(_arg1:DisplayObject, _arg2:Boolean=false):void{
var focusable:IFocusManagerComponent;
var io:InteractiveObject;
var doc:DisplayObjectContainer;
var i:int;
var child:DisplayObject;
var o = _arg1;
var skipTopLevel = _arg2;
if (!skipTopLevel){
if ((o is IFocusManagerComponent)){
focusable = IFocusManagerComponent(o);
if (focusable.focusEnabled){
if (((focusable.tabEnabled) && (isTabVisible(o)))){
focusableObjects[o] = true;
calculateCandidates = true;
};
o.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
o.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
} else {
if ((o is InteractiveObject)){
io = (o as InteractiveObject);
if (((((io) && (io.tabEnabled))) && ((findFocusManagerComponent(io) == io)))){
focusableObjects[io] = true;
calculateCandidates = true;
};
io.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
io.addEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
};
};
};
if ((o is DisplayObjectContainer)){
doc = DisplayObjectContainer(o);
o.addEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
if ((((((doc is Stage)) || ((doc.parent is Stage)))) || (doc.tabChildren))){
i = 0;
while (i < doc.numChildren) {
try {
child = doc.getChildAt(i);
if (child != null){
addFocusables(doc.getChildAt(i));
};
} catch(error:SecurityError) {
};
i = (i + 1);
};
};
};
}
private function getChildIndex(_arg1:DisplayObjectContainer, _arg2:DisplayObject):int{
return (_arg1.getChildIndex(_arg2));
}
private function mouseFocusChangeHandler(_arg1:FocusEvent):void{
if ((_arg1.relatedObject is TextField)){
return;
};
_arg1.preventDefault();
}
private function focusOutHandler(_arg1:FocusEvent):void{
var _local2:InteractiveObject;
_local2 = (_arg1.target as InteractiveObject);
}
private function isValidFocusCandidate(_arg1:DisplayObject, _arg2:String):Boolean{
var _local3:IFocusManagerGroup;
if (!isEnabledAndVisible(_arg1)){
return (false);
};
if ((_arg1 is IFocusManagerGroup)){
_local3 = IFocusManagerGroup(_arg1);
if (_arg2 == _local3.groupName){
return (false);
};
};
return (true);
}
public function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject{
var _local2:InteractiveObject;
_local2 = _arg1;
while (_arg1) {
if ((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
};
return (_local2);
}
private function sortFocusableObjectsTabIndex():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))){
focusableCandidates.push(_local2);
};
};
focusableCandidates.sort(sortByTabIndex);
}
private function removeFocusables(_arg1:DisplayObject):void{
var _local2:Object;
var _local3:DisplayObject;
if ((_arg1 is DisplayObjectContainer)){
_arg1.removeEventListener(Event.TAB_CHILDREN_CHANGE, tabChildrenChangeHandler);
_arg1.removeEventListener(Event.TAB_INDEX_CHANGE, tabIndexChangeHandler);
for (_local2 in focusableObjects) {
_local3 = DisplayObject(_local2);
if (DisplayObjectContainer(_arg1).contains(_local3)){
if (_local3 == lastFocus){
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local2];
calculateCandidates = true;
};
};
};
}
private function addedHandler(_arg1:Event):void{
var _local2:DisplayObject;
_local2 = DisplayObject(_arg1.target);
if (_local2.stage){
addFocusables(DisplayObject(_arg1.target));
};
}
private function getTopLevelFocusTarget(_arg1:InteractiveObject):InteractiveObject{
while (_arg1 != InteractiveObject(form)) {
if ((((((((_arg1 is IFocusManagerComponent)) && (IFocusManagerComponent(_arg1).focusEnabled))) && (IFocusManagerComponent(_arg1).mouseFocusEnabled))) && (UIComponent(_arg1).enabled))){
return (_arg1);
};
_arg1 = _arg1.parent;
if (_arg1 == null){
break;
};
};
return (null);
}
private function tabChildrenChangeHandler(_arg1:Event):void{
var _local2:DisplayObjectContainer;
if (_arg1.target != _arg1.currentTarget){
return;
};
calculateCandidates = true;
_local2 = DisplayObjectContainer(_arg1.target);
if (_local2.tabChildren){
addFocusables(_local2, true);
} else {
removeFocusables(_local2);
};
}
public function sendDefaultButtonEvent():void{
defButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
}
public function getFocus():InteractiveObject{
var _local1:InteractiveObject;
_local1 = form.stage.focus;
return (findFocusManagerComponent(_local1));
}
private function isEnabledAndVisible(_arg1:DisplayObject):Boolean{
var _local2:DisplayObjectContainer;
var _local3:TextField;
var _local4:SimpleButton;
_local2 = DisplayObject(form).parent;
while (_arg1 != _local2) {
if ((_arg1 is UIComponent)){
if (!UIComponent(_arg1).enabled){
return (false);
};
} else {
if ((_arg1 is TextField)){
_local3 = TextField(_arg1);
if ((((_local3.type == TextFieldType.DYNAMIC)) || (!(_local3.selectable)))){
return (false);
};
} else {
if ((_arg1 is SimpleButton)){
_local4 = SimpleButton(_arg1);
if (!_local4.enabled){
return (false);
};
};
};
};
if (!_arg1.visible){
return (false);
};
_arg1 = _arg1.parent;
};
return (true);
}
public function set defaultButton(_arg1:Button):void{
var _local2:Button;
_local2 = (_arg1) ? Button(_arg1) : null;
if (_local2 != _defaultButton){
if (_defaultButton){
_defaultButton.emphasized = false;
};
if (defButton){
defButton.emphasized = false;
};
_defaultButton = _local2;
defButton = _local2;
if (_local2){
_local2.emphasized = true;
};
};
}
private function deactivateHandler(_arg1:Event):void{
var _local2:InteractiveObject;
_local2 = InteractiveObject(_arg1.target);
}
public function setFocus(_arg1:InteractiveObject):void{
if ((_arg1 is IFocusManagerComponent)){
IFocusManagerComponent(_arg1).setFocus();
} else {
form.stage.focus = _arg1;
};
}
private function setFocusToNextObject(_arg1:FocusEvent):void{
var _local2:InteractiveObject;
if (!hasFocusableObjects()){
return;
};
_local2 = getNextFocusManagerComponent(_arg1.shiftKey);
if (_local2){
setFocus(_local2);
};
}
private function hasFocusableObjects():Boolean{
var _local1:Object;
for (_local1 in focusableObjects) {
return (true);
};
return (false);
}
private function tabIndexChangeHandler(_arg1:Event):void{
calculateCandidates = true;
}
private function sortFocusableObjects():void{
var _local1:Object;
var _local2:InteractiveObject;
focusableCandidates = [];
for (_local1 in focusableObjects) {
_local2 = InteractiveObject(_local1);
if (((((_local2.tabIndex) && (!(isNaN(Number(_local2.tabIndex)))))) && ((_local2.tabIndex > 0)))){
sortFocusableObjectsTabIndex();
return;
};
focusableCandidates.push(_local2);
};
focusableCandidates.sort(sortByDepth);
}
private function keyFocusChangeHandler(_arg1:FocusEvent):void{
showFocusIndicator = true;
if ((((((_arg1.keyCode == Keyboard.TAB)) || ((_arg1.keyCode == 0)))) && (!(_arg1.isDefaultPrevented())))){
setFocusToNextObject(_arg1);
_arg1.preventDefault();
};
}
private function getIndexOfFocusedObject(_arg1:DisplayObject):int{
var _local2:int;
var _local3:int;
_local2 = focusableCandidates.length;
_local3 = 0;
_local3 = 0;
while (_local3 < _local2) {
if (focusableCandidates[_local3] == _arg1){
return (_local3);
};
_local3++;
};
return (-1);
}
public function hideFocus():void{
}
private function removedHandler(_arg1:Event):void{
var _local2:int;
var _local3:DisplayObject;
var _local4:InteractiveObject;
_local3 = DisplayObject(_arg1.target);
if ((((_local3 is IFocusManagerComponent)) && ((focusableObjects[_local3] == true)))){
if (_local3 == lastFocus){
IFocusManagerComponent(lastFocus).drawFocus(false);
lastFocus = null;
};
_local3.removeEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
delete focusableObjects[_local3];
calculateCandidates = true;
} else {
if ((((_local3 is InteractiveObject)) && ((focusableObjects[_local3] == true)))){
_local4 = (_local3 as InteractiveObject);
if (_local4){
if (_local4 == lastFocus){
lastFocus = null;
};
delete focusableObjects[_local4];
calculateCandidates = true;
};
_local3.addEventListener(Event.TAB_ENABLED_CHANGE, tabEnabledChangeHandler);
};
};
removeFocusables(_local3);
}
private function sortByDepth(_arg1:InteractiveObject, _arg2:InteractiveObject):Number{
var _local3:String;
var _local4:String;
var _local5:int;
var _local6:String;
var _local7:String;
var _local8:String;
var _local9:DisplayObject;
var _local10:DisplayObject;
_local3 = "";
_local4 = "";
_local8 = "0000";
_local9 = DisplayObject(_arg1);
_local10 = DisplayObject(_arg2);
while (((!((_local9 == DisplayObject(form)))) && (_local9.parent))) {
_local5 = getChildIndex(_local9.parent, _local9);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local3 = (_local7 + _local3);
_local9 = _local9.parent;
};
while (((!((_local10 == DisplayObject(form)))) && (_local10.parent))) {
_local5 = getChildIndex(_local10.parent, _local10);
_local6 = _local5.toString(16);
if (_local6.length < 4){
_local7 = (_local8.substring(0, (4 - _local6.length)) + _local6);
};
_local4 = (_local7 + _local4);
_local10 = _local10.parent;
};
return (((_local3 > _local4)) ? 1 : ((_local3 < _local4)) ? -1 : 0);
}
public function get defaultButton():Button{
return (_defaultButton);
}
private function activateHandler(_arg1:Event):void{
var _local2:InteractiveObject;
_local2 = InteractiveObject(_arg1.target);
if (lastFocus){
if ((lastFocus is IFocusManagerComponent)){
IFocusManagerComponent(lastFocus).setFocus();
} else {
form.stage.focus = lastFocus;
};
};
lastAction = "ACTIVATE";
}
public function showFocus():void{
}
public function set defaultButtonEnabled(_arg1:Boolean):void{
_defaultButtonEnabled = _arg1;
}
public function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject{
var _local2:DisplayObject;
var _local3:String;
var _local4:int;
var _local5:Boolean;
var _local6:int;
var _local7:int;
var _local8:IFocusManagerGroup;
if (!hasFocusableObjects()){
return (null);
};
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
_local2 = form.stage.focus;
_local2 = DisplayObject(findFocusManagerComponent(InteractiveObject(_local2)));
_local3 = "";
if ((_local2 is IFocusManagerGroup)){
_local8 = IFocusManagerGroup(_local2);
_local3 = _local8.groupName;
};
_local4 = getIndexOfFocusedObject(_local2);
_local5 = false;
_local6 = _local4;
if (_local4 == -1){
if (_arg1){
_local4 = focusableCandidates.length;
};
_local5 = true;
};
_local7 = getIndexOfNextObject(_local4, _arg1, _local5, _local3);
return (findFocusManagerComponent(focusableCandidates[_local7]));
}
private function mouseDownHandler(_arg1:MouseEvent):void{
var _local2:InteractiveObject;
if (_arg1.isDefaultPrevented()){
return;
};
_local2 = getTopLevelFocusTarget(InteractiveObject(_arg1.target));
if (!_local2){
return;
};
showFocusIndicator = false;
if (((((!((_local2 == lastFocus))) || ((lastAction == "ACTIVATE")))) && (!((_local2 is TextField))))){
setFocus(_local2);
};
lastAction = "MOUSEDOWN";
}
private function isTabVisible(_arg1:DisplayObject):Boolean{
var _local2:DisplayObjectContainer;
_local2 = _arg1.parent;
while (((((_local2) && (!((_local2 is Stage))))) && (!(((_local2.parent) && ((_local2.parent is Stage))))))) {
if (!_local2.tabChildren){
return (false);
};
_local2 = _local2.parent;
};
return (true);
}
public function get nextTabIndex():int{
return (0);
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == Keyboard.TAB){
lastAction = "KEY";
if (calculateCandidates){
sortFocusableObjects();
calculateCandidates = false;
};
};
if (((((((defaultButtonEnabled) && ((_arg1.keyCode == Keyboard.ENTER)))) && (defaultButton))) && (defButton.enabled))){
sendDefaultButtonEvent();
};
}
private function focusInHandler(_arg1:FocusEvent):void{
var _local2:InteractiveObject;
var _local3:Button;
_local2 = InteractiveObject(_arg1.target);
if (form.contains(_local2)){
lastFocus = findFocusManagerComponent(InteractiveObject(_local2));
if ((lastFocus is Button)){
_local3 = Button(lastFocus);
if (defButton){
defButton.emphasized = false;
defButton = _local3;
_local3.emphasized = true;
};
} else {
if (((defButton) && (!((defButton == _defaultButton))))){
defButton.emphasized = false;
defButton = _defaultButton;
_defaultButton.emphasized = true;
};
};
};
}
private function tabEnabledChangeHandler(_arg1:Event):void{
var _local2:InteractiveObject;
var _local3:Boolean;
calculateCandidates = true;
_local2 = InteractiveObject(_arg1.target);
_local3 = (focusableObjects[_local2] == true);
if (_local2.tabEnabled){
if (((!(_local3)) && (isTabVisible(_local2)))){
if (!(_local2 is IFocusManagerComponent)){
_local2.focusRect = false;
};
focusableObjects[_local2] = true;
};
} else {
if (_local3){
delete focusableObjects[_local2];
};
};
}
public function set showFocusIndicator(_arg1:Boolean):void{
_showFocusIndicator = _arg1;
}
public function get form():DisplayObjectContainer{
return (_form);
}
private function sortByTabIndex(_arg1:InteractiveObject, _arg2:InteractiveObject):int{
return (((_arg1.tabIndex > _arg2.tabIndex)) ? 1 : ((_arg1.tabIndex < _arg2.tabIndex)) ? -1 : sortByDepth(_arg1, _arg2));
}
public function activate():void{
if (activated){
return;
};
form.stage.addEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler, false, 0, true);
form.stage.addEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler, false, 0, true);
form.addEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.addEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.addEventListener(Event.ACTIVATE, activateHandler, false, 0, true);
form.stage.addEventListener(Event.DEACTIVATE, deactivateHandler, false, 0, true);
form.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = true;
if (lastFocus){
setFocus(lastFocus);
};
}
public function deactivate():void{
form.stage.removeEventListener(FocusEvent.MOUSE_FOCUS_CHANGE, mouseFocusChangeHandler);
form.stage.removeEventListener(FocusEvent.KEY_FOCUS_CHANGE, keyFocusChangeHandler);
form.removeEventListener(FocusEvent.FOCUS_IN, focusInHandler, true);
form.removeEventListener(FocusEvent.FOCUS_OUT, focusOutHandler, true);
form.stage.removeEventListener(Event.ACTIVATE, activateHandler);
form.stage.removeEventListener(Event.DEACTIVATE, deactivateHandler);
form.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
form.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler, true);
activated = false;
}
public function get defaultButtonEnabled():Boolean{
return (_defaultButtonEnabled);
}
}
}//package fl.managers
Section 651
//IFocusManager (fl.managers.IFocusManager)
package fl.managers {
import flash.display.*;
import fl.controls.*;
public interface IFocusManager {
function getFocus():InteractiveObject;
function deactivate():void;
function set defaultButton(_arg1:Button):void;
function set showFocusIndicator(_arg1:Boolean):void;
function get defaultButtonEnabled():Boolean;
function get nextTabIndex():int;
function get defaultButton():Button;
function get showFocusIndicator():Boolean;
function setFocus(_arg1:InteractiveObject):void;
function activate():void;
function showFocus():void;
function set defaultButtonEnabled(_arg1:Boolean):void;
function hideFocus():void;
function findFocusManagerComponent(_arg1:InteractiveObject):InteractiveObject;
function getNextFocusManagerComponent(_arg1:Boolean=false):InteractiveObject;
}
}//package fl.managers
Section 652
//IFocusManagerComponent (fl.managers.IFocusManagerComponent)
package fl.managers {
public interface IFocusManagerComponent {
function set focusEnabled(_arg1:Boolean):void;
function drawFocus(_arg1:Boolean):void;
function setFocus():void;
function get focusEnabled():Boolean;
function get tabEnabled():Boolean;
function get tabIndex():int;
function get mouseFocusEnabled():Boolean;
}
}//package fl.managers
Section 653
//IFocusManagerGroup (fl.managers.IFocusManagerGroup)
package fl.managers {
public interface IFocusManagerGroup {
function set groupName(_arg1:String):void;
function set selected(_arg1:Boolean):void;
function get groupName():String;
function get selected():Boolean;
}
}//package fl.managers
Section 654
//StyleManager (fl.managers.StyleManager)
package fl.managers {
import flash.utils.*;
import fl.core.*;
import flash.text.*;
public class StyleManager {
private var globalStyles:Object;
private var classToDefaultStylesDict:Dictionary;
private var styleToClassesHash:Object;
private var classToStylesDict:Dictionary;
private var classToInstancesDict:Dictionary;
private static var _instance:StyleManager;
public function StyleManager(){
styleToClassesHash = {};
classToInstancesDict = new Dictionary(true);
classToStylesDict = new Dictionary(true);
classToDefaultStylesDict = new Dictionary(true);
globalStyles = UIComponent.getStyleDefinition();
}
public static function clearComponentStyle(_arg1:Object, _arg2:String):void{
var _local3:Class;
var _local4:Object;
_local3 = getClassDef(_arg1);
_local4 = getInstance().classToStylesDict[_local3];
if (((!((_local4 == null))) && (!((_local4[_arg2] == null))))){
delete _local4[_arg2];
invalidateComponentStyle(_local3, _arg2);
};
}
private static function getClassDef(_arg1:Object):Class{
var component = _arg1;
if ((component is Class)){
return ((component as Class));
};
try {
return ((getDefinitionByName(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
if ((component is UIComponent)){
try {
return ((component.loaderInfo.applicationDomain.getDefinition(getQualifiedClassName(component)) as Class));
} catch(e:Error) {
};
};
};
return (null);
}
public static function clearStyle(_arg1:String):void{
setStyle(_arg1, null);
}
public static function setComponentStyle(_arg1:Object, _arg2:String, _arg3:Object):void{
var _local4:Class;
var _local5:Object;
_local4 = getClassDef(_arg1);
_local5 = getInstance().classToStylesDict[_local4];
if (_local5 == null){
_local5 = (getInstance().classToStylesDict[_local4] = {});
};
if (_local5 == _arg3){
return;
};
_local5[_arg2] = _arg3;
invalidateComponentStyle(_local4, _arg2);
}
private static function setSharedStyles(_arg1:UIComponent):void{
var _local2:StyleManager;
var _local3:Class;
var _local4:Object;
var _local5:String;
_local2 = getInstance();
_local3 = getClassDef(_arg1);
_local4 = _local2.classToDefaultStylesDict[_local3];
for (_local5 in _local4) {
_arg1.setSharedStyle(_local5, getSharedStyle(_arg1, _local5));
};
}
public static function getComponentStyle(_arg1:Object, _arg2:String):Object{
var _local3:Class;
var _local4:Object;
_local3 = getClassDef(_arg1);
_local4 = getInstance().classToStylesDict[_local3];
return (((_local4)==null) ? null : _local4[_arg2]);
}
private static function getInstance(){
if (_instance == null){
_instance = new (StyleManager);
};
return (_instance);
}
private static function invalidateComponentStyle(_arg1:Class, _arg2:String):void{
var _local3:Dictionary;
var _local4:Object;
var _local5:UIComponent;
_local3 = getInstance().classToInstancesDict[_arg1];
if (_local3 == null){
return;
};
for (_local4 in _local3) {
_local5 = (_local4 as UIComponent);
if (_local5 == null){
} else {
_local5.setSharedStyle(_arg2, getSharedStyle(_local5, _arg2));
};
};
}
private static function invalidateStyle(_arg1:String):void{
var _local2:Dictionary;
var _local3:Object;
_local2 = getInstance().styleToClassesHash[_arg1];
if (_local2 == null){
return;
};
for (_local3 in _local2) {
invalidateComponentStyle(Class(_local3), _arg1);
};
}
public static function registerInstance(_arg1:UIComponent):void{
var inst:StyleManager;
var classDef:Class;
var target:Class;
var defaultStyles:Object;
var styleToClasses:Object;
var n:String;
var instance = _arg1;
inst = getInstance();
classDef = getClassDef(instance);
if (classDef == null){
return;
};
if (inst.classToInstancesDict[classDef] == null){
inst.classToInstancesDict[classDef] = new Dictionary(true);
target = classDef;
while (defaultStyles == null) {
if (target["getStyleDefinition"] != null){
defaultStyles = target["getStyleDefinition"]();
break;
};
try {
target = (instance.loaderInfo.applicationDomain.getDefinition(getQualifiedSuperclassName(target)) as Class);
} catch(err:Error) {
try {
target = (getDefinitionByName(getQualifiedSuperclassName(target)) as Class);
} catch(e:Error) {
defaultStyles = UIComponent.getStyleDefinition();
break;
};
};
};
styleToClasses = inst.styleToClassesHash;
for (n in defaultStyles) {
if (styleToClasses[n] == null){
styleToClasses[n] = new Dictionary(true);
};
styleToClasses[n][classDef] = true;
};
inst.classToDefaultStylesDict[classDef] = defaultStyles;
inst.classToStylesDict[classDef] = {};
};
inst.classToInstancesDict[classDef][instance] = true;
setSharedStyles(instance);
}
public static function getStyle(_arg1:String):Object{
return (getInstance().globalStyles[_arg1]);
}
private static function getSharedStyle(_arg1:UIComponent, _arg2:String):Object{
var _local3:Class;
var _local4:StyleManager;
var _local5:Object;
_local3 = getClassDef(_arg1);
_local4 = getInstance();
_local5 = _local4.classToStylesDict[_local3][_arg2];
if (_local5 != null){
return (_local5);
};
_local5 = _local4.globalStyles[_arg2];
if (_local5 != null){
return (_local5);
};
return (_local4.classToDefaultStylesDict[_local3][_arg2]);
}
public static function setStyle(_arg1:String, _arg2:Object):void{
var _local3:Object;
_local3 = getInstance().globalStyles;
if ((((_local3[_arg1] === _arg2)) && (!((_arg2 is TextFormat))))){
return;
};
_local3[_arg1] = _arg2;
invalidateStyle(_arg1);
}
}
}//package fl.managers
Section 655
//BitmapAsset (mx.core.BitmapAsset)
package mx.core {
import flash.display.*;
public class BitmapAsset extends FlexBitmap implements IFlexAsset, IFlexDisplayObject {
mx_internal static const VERSION:String = "3.0.0.0";
public function BitmapAsset(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
super(_arg1, _arg2, _arg3);
}
public function get measuredWidth():Number{
if (bitmapData){
return (bitmapData.width);
};
return (0);
}
public function get measuredHeight():Number{
if (bitmapData){
return (bitmapData.height);
};
return (0);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
}
}//package mx.core
Section 656
//ByteArrayAsset (mx.core.ByteArrayAsset)
package mx.core {
import flash.utils.*;
public class ByteArrayAsset extends ByteArray implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 657
//EdgeMetrics (mx.core.EdgeMetrics)
package mx.core {
public class EdgeMetrics {
public var top:Number;
public var left:Number;
public var bottom:Number;
public var right:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public static const EMPTY:EdgeMetrics = new EdgeMetrics(0, 0, 0, 0);
;
public function EdgeMetrics(_arg1:Number=0, _arg2:Number=0, _arg3:Number=0, _arg4:Number=0){
this.left = _arg1;
this.top = _arg2;
this.right = _arg3;
this.bottom = _arg4;
}
public function clone():EdgeMetrics{
return (new EdgeMetrics(left, top, right, bottom));
}
}
}//package mx.core
Section 658
//FlexBitmap (mx.core.FlexBitmap)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexBitmap extends Bitmap {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexBitmap(_arg1:BitmapData=null, _arg2:String="auto", _arg3:Boolean=false){
var bitmapData = _arg1;
var pixelSnapping = _arg2;
var smoothing = _arg3;
super(bitmapData, pixelSnapping, smoothing);
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 659
//FlexMovieClip (mx.core.FlexMovieClip)
package mx.core {
import flash.display.*;
import mx.utils.*;
public class FlexMovieClip extends MovieClip {
mx_internal static const VERSION:String = "3.0.0.0";
public function FlexMovieClip(){
super();
try {
name = NameUtil.createUniqueName(this);
} catch(e:Error) {
};
}
override public function toString():String{
return (NameUtil.displayObjectToString(this));
}
}
}//package mx.core
Section 660
//IBorder (mx.core.IBorder)
package mx.core {
public interface IBorder {
function get borderMetrics():EdgeMetrics;
}
}//package mx.core
Section 661
//IFlexAsset (mx.core.IFlexAsset)
package mx.core {
public interface IFlexAsset {
}
}//package mx.core
Section 662
//IFlexDisplayObject (mx.core.IFlexDisplayObject)
package mx.core {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
import flash.accessibility.*;
public interface IFlexDisplayObject extends IBitmapDrawable, IEventDispatcher {
function get visible():Boolean;
function get rotation():Number;
function localToGlobal(_arg1:Point):Point;
function get name():String;
function set width(_arg1:Number):void;
function get measuredHeight():Number;
function get blendMode():String;
function get scale9Grid():Rectangle;
function set name(_arg1:String):void;
function set scaleX(_arg1:Number):void;
function set scaleY(_arg1:Number):void;
function get measuredWidth():Number;
function get accessibilityProperties():AccessibilityProperties;
function set scrollRect(_arg1:Rectangle):void;
function get cacheAsBitmap():Boolean;
function globalToLocal(_arg1:Point):Point;
function get height():Number;
function set blendMode(_arg1:String):void;
function get parent():DisplayObjectContainer;
function getBounds(_arg1:DisplayObject):Rectangle;
function get opaqueBackground():Object;
function set scale9Grid(_arg1:Rectangle):void;
function setActualSize(_arg1:Number, _arg2:Number):void;
function set alpha(_arg1:Number):void;
function set accessibilityProperties(_arg1:AccessibilityProperties):void;
function get width():Number;
function hitTestPoint(_arg1:Number, _arg2:Number, _arg3:Boolean=false):Boolean;
function set cacheAsBitmap(_arg1:Boolean):void;
function get scaleX():Number;
function get scaleY():Number;
function get scrollRect():Rectangle;
function get mouseX():Number;
function get mouseY():Number;
function set height(_arg1:Number):void;
function set mask(_arg1:DisplayObject):void;
function getRect(_arg1:DisplayObject):Rectangle;
function get alpha():Number;
function set transform(_arg1:Transform):void;
function move(_arg1:Number, _arg2:Number):void;
function get loaderInfo():LoaderInfo;
function get root():DisplayObject;
function hitTestObject(_arg1:DisplayObject):Boolean;
function set opaqueBackground(_arg1:Object):void;
function set visible(_arg1:Boolean):void;
function get mask():DisplayObject;
function set x(_arg1:Number):void;
function set y(_arg1:Number):void;
function get transform():Transform;
function set filters(_arg1:Array):void;
function get x():Number;
function get y():Number;
function get filters():Array;
function set rotation(_arg1:Number):void;
function get stage():Stage;
}
}//package mx.core
Section 663
//IRepeaterClient (mx.core.IRepeaterClient)
package mx.core {
public interface IRepeaterClient {
function get instanceIndices():Array;
function set instanceIndices(_arg1:Array):void;
function get isDocument():Boolean;
function set repeaters(_arg1:Array):void;
function initializeRepeaterArrays(_arg1:IRepeaterClient):void;
function get repeaters():Array;
function set repeaterIndices(_arg1:Array):void;
function get repeaterIndices():Array;
}
}//package mx.core
Section 664
//MovieClipAsset (mx.core.MovieClipAsset)
package mx.core {
public class MovieClipAsset extends FlexMovieClip implements IFlexAsset, IFlexDisplayObject, IBorder {
private var _measuredHeight:Number;
private var _measuredWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipAsset(){
_measuredWidth = width;
_measuredHeight = height;
}
public function get measuredWidth():Number{
return (_measuredWidth);
}
public function get measuredHeight():Number{
return (_measuredHeight);
}
public function setActualSize(_arg1:Number, _arg2:Number):void{
width = _arg1;
height = _arg2;
}
public function move(_arg1:Number, _arg2:Number):void{
this.x = _arg1;
this.y = _arg2;
}
public function get borderMetrics():EdgeMetrics{
if (scale9Grid == null){
return (EdgeMetrics.EMPTY);
};
return (new EdgeMetrics(scale9Grid.left, scale9Grid.top, Math.ceil((measuredWidth - scale9Grid.right)), Math.ceil((measuredHeight - scale9Grid.bottom))));
}
}
}//package mx.core
Section 665
//MovieClipLoaderAsset (mx.core.MovieClipLoaderAsset)
package mx.core {
import flash.display.*;
import flash.events.*;
import flash.utils.*;
import flash.system.*;
public class MovieClipLoaderAsset extends MovieClipAsset implements IFlexAsset, IFlexDisplayObject {
protected var initialHeight:Number;// = 0
private var loader:Loader;// = null
private var initialized:Boolean;// = false
protected var initialWidth:Number;// = 0
private var requestedHeight:Number;
private var requestedWidth:Number;
mx_internal static const VERSION:String = "3.0.0.0";
public function MovieClipLoaderAsset(){
var _local1:LoaderContext = new LoaderContext();
_local1.applicationDomain = new ApplicationDomain(ApplicationDomain.currentDomain);
if (("allowLoadBytesCodeExecution" in _local1)){
_local1["allowLoadBytesCodeExecution"] = true;
};
loader = new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, completeHandler);
loader.loadBytes(movieClipData, _local1);
addChild(loader);
}
override public function get width():Number{
if (!initialized){
return (initialWidth);
};
return (super.width);
}
override public function set width(_arg1:Number):void{
if (!initialized){
requestedWidth = _arg1;
} else {
loader.width = _arg1;
};
}
override public function get measuredHeight():Number{
return (initialHeight);
}
private function completeHandler(_arg1:Event):void{
initialized = true;
initialWidth = loader.width;
initialHeight = loader.height;
if (!isNaN(requestedWidth)){
loader.width = requestedWidth;
};
if (!isNaN(requestedHeight)){
loader.height = requestedHeight;
};
dispatchEvent(_arg1);
}
override public function set height(_arg1:Number):void{
if (!initialized){
requestedHeight = _arg1;
} else {
loader.height = _arg1;
};
}
override public function get measuredWidth():Number{
return (initialWidth);
}
override public function get height():Number{
if (!initialized){
return (initialHeight);
};
return (super.height);
}
public function get movieClipData():ByteArray{
return (null);
}
}
}//package mx.core
Section 666
//mx_internal (mx.core.mx_internal)
package mx.core {
public namespace mx_internal = "http://www.adobe.com/2006/flex/mx/internal";
}//package mx.core
Section 667
//SoundAsset (mx.core.SoundAsset)
package mx.core {
import flash.media.*;
public class SoundAsset extends Sound implements IFlexAsset {
mx_internal static const VERSION:String = "3.0.0.0";
}
}//package mx.core
Section 668
//NameUtil (mx.utils.NameUtil)
package mx.utils {
import flash.display.*;
import flash.utils.*;
import mx.core.*;
public class NameUtil {
mx_internal static const VERSION:String = "3.0.0.0";
private static var counter:int = 0;
public static function displayObjectToString(_arg1:DisplayObject):String{
var _local2:String;
var _local4:String;
var _local5:Array;
var _local3:DisplayObject = _arg1;
while (_local3 != null) {
if (((((_local3.parent) && (_local3.stage))) && ((_local3.parent == _local3.stage)))){
break;
};
_local4 = _local3.name;
if ((_local3 is IRepeaterClient)){
_local5 = IRepeaterClient(_local3).instanceIndices;
if (_local5){
_local4 = (_local4 + (("[" + _local5.join("][")) + "]"));
};
};
_local2 = ((_local2 == null)) ? _local4 : ((_local4 + ".") + _local2);
_local3 = _local3.parent;
};
return (_local2);
}
public static function createUniqueName(_arg1:Object):String{
if (!_arg1){
return (null);
};
var _local2:String = getQualifiedClassName(_arg1);
var _local3:int = _local2.indexOf("::");
if (_local3 != -1){
_local2 = _local2.substr((_local3 + 2));
};
var _local4:int = _local2.charCodeAt((_local2.length - 1));
if ((((_local4 >= 48)) && ((_local4 <= 57)))){
_local2 = (_local2 + "_");
};
return ((_local2 + counter++));
}
}
}//package mx.utils
Section 669
//Button_disabledSkin (Button_disabledSkin)
package {
import flash.display.*;
public dynamic class Button_disabledSkin extends MovieClip {
}
}//package
Section 670
//Button_downSkin (Button_downSkin)
package {
import flash.display.*;
public dynamic class Button_downSkin extends MovieClip {
}
}//package
Section 671
//Button_emphasizedSkin (Button_emphasizedSkin)
package {
import flash.display.*;
public dynamic class Button_emphasizedSkin extends MovieClip {
}
}//package
Section 672
//Button_overSkin (Button_overSkin)
package {
import flash.display.*;
public dynamic class Button_overSkin extends MovieClip {
}
}//package
Section 673
//Button_selectedDisabledSkin (Button_selectedDisabledSkin)
package {
import flash.display.*;
public dynamic class Button_selectedDisabledSkin extends MovieClip {
}
}//package
Section 674
//Button_selectedDownSkin (Button_selectedDownSkin)
package {
import flash.display.*;
public dynamic class Button_selectedDownSkin extends MovieClip {
}
}//package
Section 675
//Button_selectedOverSkin (Button_selectedOverSkin)
package {
import flash.display.*;
public dynamic class Button_selectedOverSkin extends MovieClip {
}
}//package
Section 676
//Button_selectedUpSkin (Button_selectedUpSkin)
package {
import flash.display.*;
public dynamic class Button_selectedUpSkin extends MovieClip {
}
}//package
Section 677
//Button_upSkin (Button_upSkin)
package {
import flash.display.*;
public dynamic class Button_upSkin extends MovieClip {
}
}//package
Section 678
//focusRectSkin (focusRectSkin)
package {
import flash.display.*;
public dynamic class focusRectSkin extends MovieClip {
}
}//package
Section 679
//GameSave (GameSave)
package {
import com.greyhound.living.avatars.*;
import flash.utils.*;
public class GameSave implements IExternalizable {
private var talentPointsPicked:Array;
private var mapsCleared:Array;
private var avatarType:int;
private var difficulty:int;
public static const EASY:int = 0;
public static const DEATH_KNIGHT_NAME:String = "Death Knight";
public static const CHAOS_RANGER:int = 1;
public static const MEDIUM_NAME:String = "Medium";
public static const CHAOS_RANGER_NAME:String = "Chaos Ranger";
public static const DEATH_KNIGHT:int = 0;
public static const CURRENT_SAVE_VERSION:int = 1;
public static const HARD_NAME:String = "Hard";
public static const HARD:int = 2;
public static const EVIL_WIZARD_NAME:String = "Evil Wizard";
public static const MEDIUM:int = 1;
public static const EVIL_WIZARD:int = 2;
public static const EASY_NAME:String = "Easy";
public function getDifficulty():int{
return (difficulty);
}
public function readExternal(_arg1:IDataInput):void{
var _local3:int;
var _local2:int = _arg1.readUnsignedInt();
if (_local2 == CURRENT_SAVE_VERSION){
avatarType = _arg1.readUnsignedInt();
difficulty = _arg1.readUnsignedInt();
_local3 = _arg1.readUnsignedInt();
mapsCleared = new Array(_local3);
_local3 = 0;
while (_local3 < mapsCleared.length) {
mapsCleared[_local3] = _arg1.readUTF();
_local3++;
};
_local3 = _arg1.readUnsignedInt();
talentPointsPicked = new Array(_local3);
_local3 = 0;
while (_local3 < talentPointsPicked.length) {
talentPointsPicked[_local3] = _arg1.readUTF();
_local3++;
};
} else {
trace(("Unsupported save version:" + _local2));
};
}
public function hasTalenPoint(_arg1:Class):Boolean{
return (!((talentPointsPicked.indexOf(getQualifiedClassName(_arg1)) == -1)));
}
public function clearAllTalentPoints():void{
talentPointsPicked = [];
}
public function createAvatar():Avatar{
switch (avatarType){
case DEATH_KNIGHT:
return (new DeathKnight());
case CHAOS_RANGER:
return (new ChaosRanger());
case EVIL_WIZARD:
return (new EvilWizard());
default:
trace(("Unknown avatar type:" + avatarType));
return (null);
};
}
public function getNumberOfMapsCompleted():int{
return (mapsCleared.length);
}
public function isMapCleared(_arg1:String):Boolean{
return (!((mapsCleared.indexOf(_arg1) == -1)));
}
public function getAvatarType():int{
return (avatarType);
}
public function writeExternal(_arg1:IDataOutput):void{
_arg1.writeUnsignedInt(CURRENT_SAVE_VERSION);
_arg1.writeUnsignedInt(avatarType);
_arg1.writeUnsignedInt(difficulty);
_arg1.writeUnsignedInt(mapsCleared.length);
var _local2:int;
while (_local2 < mapsCleared.length) {
_arg1.writeUTF(mapsCleared[_local2]);
_local2++;
};
_arg1.writeUnsignedInt(talentPointsPicked.length);
_local2 = 0;
while (_local2 < talentPointsPicked.length) {
_arg1.writeUTF(talentPointsPicked[_local2]);
_local2++;
};
}
public function addTalenPoint(_arg1:Class):void{
if (talentPointsPicked.indexOf(getQualifiedClassName(_arg1)) == -1){
talentPointsPicked.push(getQualifiedClassName(_arg1));
} else {
trace((("Tried to add a talent point:" + _arg1) + " twice"));
};
}
public function setMapCleared(_arg1:String):void{
if (mapsCleared.indexOf(_arg1) == -1){
mapsCleared.push(_arg1);
} else {
trace((("Tried to clear a map:" + _arg1) + " twice"));
};
}
public function getAvatarTypeName():String{
switch (avatarType){
case DEATH_KNIGHT:
return (DEATH_KNIGHT_NAME);
case CHAOS_RANGER:
return (CHAOS_RANGER_NAME);
case EVIL_WIZARD:
return (EVIL_WIZARD_NAME);
default:
trace(("Unknown avatar type:" + avatarType));
return ("Error");
};
}
public function getTalentsPicked():int{
return (talentPointsPicked.length);
}
public function getDifficultyName():String{
switch (difficulty){
case EASY:
return (EASY_NAME);
case MEDIUM:
return (MEDIUM_NAME);
case HARD:
return (HARD_NAME);
default:
trace("Unkown difficulty level in getDifficultyName on GameSave");
return ("ERROR");
};
}
public static function createGameSave(_arg1:Avatar, _arg2:int):GameSave{
var _local3:GameSave = new (GameSave);
if ((_arg1 is DeathKnight)){
_local3.avatarType = DEATH_KNIGHT;
} else {
if ((_arg1 is ChaosRanger)){
_local3.avatarType = CHAOS_RANGER;
} else {
if ((_arg1 is EvilWizard)){
_local3.avatarType = EVIL_WIZARD;
} else {
trace(("Created GameSave with unknown avatar:" + _arg1));
};
};
};
_local3.difficulty = _arg2;
_local3.mapsCleared = new Array();
_local3.talentPointsPicked = new Array();
return (_local3);
}
}
}//package
Section 680
//Main (Main)
package {
import flash.display.*;
import flash.events.*;
import com.greyhound.world.maps.mapvariables.*;
import com.greyhound.ui.controlpanel.*;
import com.greyhound.ui.*;
import com.greyhound.living.avatars.*;
import flash.geom.*;
import com.greyhound.world.*;
import com.greyhound.ui.menus.*;
import com.greyhound.world.maps.mapcreators.*;
import com.greyhound.tools.*;
import flash.net.*;
import com.greyhound.common.*;
import flash.media.*;
import flash.text.*;
import com.greyhound.ui.menus.main.*;
import com.greyhound.common.ui.*;
import com.greyhound.*;
public class Main extends Sprite {
private var statusBar:StatusBar;
private var startupMochiBot:MochiBot;
private var world:World;
private var soundClips:Array;
private var mute:Boolean;
private var keyboardHandler:KeyboardHandler;
private var mouseHandler:MouseHandler;
private var controlPanel:ControlPanel;
private var muteButton:Sprite;
private var currentSong:int;
private var mapCreator:IMapCreator;
private var soundChannel:SoundChannel;
private var soundClipStarts:Array;
public static const DevilDanceSound:Class = Main_DevilDanceSound;
public static const ImpsOnTheProwl:Class = Main_ImpsOnTheProwl;
public static const HauntedSmile:Class = Main_HauntedSmile;
public static var HAS_REFERED:Boolean = false;
public function Main(_arg1:Stage){
addEventListener(Event.ADDED_TO_STAGE, addedToStage);
muteButton = new Sprite();
mute = false;
muteButton.x = 600;
muteButton.y = 450;
muteButton.addEventListener(MouseEvent.CLICK, muteClicked);
addCorrectMuteImage();
registerClassAlias("GameSaveAlias", GameSave);
trace("Starting");
keyboardHandler = new KeyboardHandler(_arg1);
mouseHandler = new MouseHandler(_arg1);
SavedData.loadLastInstanceUsed();
soundClips = [new ImpsOnTheProwl(), new DevilDanceSound(), new HauntedSmile()];
soundClipStarts = [30, 30, 0];
currentSong = 0;
soundChannel = soundClips[currentSong].play();
soundChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
}
private function soundComplete(_arg1:Event):void{
if (soundChannel != null){
soundChannel.removeEventListener(Event.SOUND_COMPLETE, soundComplete);
soundChannel = null;
};
if (!mute){
soundChannel = soundClips[currentSong].play(soundClipStarts[currentSong]);
soundChannel.addEventListener(Event.SOUND_COMPLETE, soundComplete);
};
}
public function getStatusBar():StatusBar{
return (statusBar);
}
public function restartMap(_arg1:IMapVariables):void{
world = null;
keyboardHandler.setWorld(null);
mouseHandler.setWorld(null);
beginMap(_arg1);
}
public function showTalents():void{
clearStage();
addChild(new ChooseTalentPanel(showMainMenu));
}
private function muteClicked(_arg1:Event):void{
toggleMute();
}
public function resumeGame():void{
clearStage();
addWorldComponents();
}
public function getControlPanel():ControlPanel{
return (controlPanel);
}
public function isMuted():Boolean{
return (mute);
}
public function start():void{
showMainMenu();
}
public function isGameInProgress():Boolean{
return (!((world == null)));
}
private function addedToStage(_arg1:Event):void{
var _local2:LeaveOnStageContainer;
if (startupMochiBot == null){
_local2 = new LeaveOnStageContainer();
stage.addChild(_local2);
startupMochiBot = MochiBot.track(_local2, "d13d13d6");
};
}
public function beginMap(_arg1:IMapVariables):void{
clearStage();
var _local2:Avatar = SavedData.createAvatar();
world = new World((1000 / MyPreloader.FRAMERATE), _local2, _arg1, this);
addWorldComponents();
if (!mute){
toggleMute();
currentSong++;
if (currentSong >= soundClips.length){
currentSong = 0;
};
toggleMute();
};
}
public function showMainMenu():void{
clearStage();
var _local1:MainMenu = new MainMenu(this);
addChild(_local1);
_local1.show();
addChild(muteButton);
}
private function clearStage():void{
var childrenToRemove:Array;
var i:int;
var di:DisplayObject;
var text:TextField;
keyboardHandler.setWorld(null);
mouseHandler.setWorld(null);
var stage:Stage = stage;
try {
if (stage != null){
childrenToRemove = new Array();
i = 0;
while (i < stage.numChildren) {
if (!(stage.getChildAt(i) is ILeaveOnStage)){
childrenToRemove.push(stage.getChildAt(i));
};
i = (i + 1);
};
for each (di in childrenToRemove) {
if (di.parent != null){
di.parent.removeChild(di);
} else {
trace("null parent");
};
};
stage.addChild(this);
};
while (numChildren > 0) {
removeChildAt(0);
};
} catch(error:Error) {
trace("Error in clearStage");
if (MyPreloader.isKongregate()){
text = TextFieldFactory.createText("Error clearing the screen. If you are playing on kongregate you have the latest version so please mail contact@greyhoundgames.com details of what you were doing. Be as detailed as you can.");
text.wordWrap = true;
text.width = 600;
text.y = 400;
addChild(text);
};
showMainMenu();
};
}
public function showCredits():void{
clearStage();
var _local1:Credits = new Credits(showMainMenu);
addChild(_local1);
_local1.start();
}
private function addWorldComponents():void{
addChild(world.getWorldGraphic());
statusBar = new StatusBar(world.getVault().getGold(), world.getVault().getGems(), this);
addChild(statusBar);
controlPanel = new ControlPanel(world);
controlPanel.x = (World.MAP_WIDTH * World.TILE_DIMENSION);
addChild(controlPanel);
world.getVault().addChangeListener(statusBar);
statusBar.y = (World.MAP_HEIGHT * World.TILE_DIMENSION);
statusBar.setWorld(world);
keyboardHandler.setWorld(world);
mouseHandler.setWorld(world);
mouseHandler.setSelectionManager(controlPanel.getSelectionManager());
stage.focus = stage;
}
private function addCorrectMuteImage():void{
while (muteButton.numChildren > 0) {
muteButton.removeChildAt(0);
};
if (mute){
muteButton.addChild(new ArtLoader.MuteOnIMG());
} else {
muteButton.addChild(new ArtLoader.MuteOffIMG());
};
}
public function toggleMute():void{
mute = !(mute);
if (mute){
if (soundChannel != null){
soundChannel.stop();
};
} else {
soundComplete(null);
};
addCorrectMuteImage();
}
public function beginGame():void{
clearStage();
world = null;
keyboardHandler.setWorld(null);
mouseHandler.setWorld(null);
addChild(new SetupGamePanel(this));
}
public function notifyMapFinished(_arg1:Boolean, _arg2:IMapVariables):void{
var avatarNameString:String;
var text:TextField;
var didWin = _arg1;
var mapVariables = _arg2;
var score:int = (world.getVault().getScore() + world.getVault().getGold());
mapVariables = world.getMapVariables();
avatarNameString = ((world.getAvatar().getName() + " lv ") + world.getAvatar().getLevel());
world = null;
keyboardHandler.setWorld(null);
mouseHandler.setWorld(null);
clearStage();
try {
if (didWin){
addChild(new ChooseTalentPanel(beginGame, score, avatarNameString, mapVariables));
} else {
showMainMenu();
};
} catch(e:Error) {
trace("Caugh an error after clear screen");
showMainMenu();
if (MyPreloader.isKongregate()){
text = TextFieldFactory.createText("You just hit an error. If you are playing on kongregate you have the latest version so please mail contact@greyhoundgames.com details of what you were doing. Be as detailed as you can.");
text.wordWrap = true;
text.width = 600;
text.y = 400;
addChild(text);
};
};
}
public static function errorHandler(_arg1:Event):void{
trace(("Error: " + _arg1));
}
public static function goToKongregate(_arg1:Stage):void{
var mochiBotContainer:LeaveOnStageContainer;
var stage = _arg1;
if (!HAS_REFERED){
HAS_REFERED = true;
try {
mochiBotContainer = new LeaveOnStageContainer();
stage.addChild(mochiBotContainer);
MochiBot.track(mochiBotContainer, "d15f1673");
trace("referal");
} catch(error:Error) {
trace("Error reffering");
};
};
Tools.openWindow("http://www.kongregate.com/?gamereferral=dungeondefender");
Floater.floatTextAt(new Point(350, 250), stage, "If you don't see the window check your popup blocker at the top.");
}
public static function goToKongregateDungeonDefender(_arg1:Stage):void{
var mochiBotContainer:LeaveOnStageContainer;
var stage = _arg1;
if (!HAS_REFERED){
HAS_REFERED = true;
try {
mochiBotContainer = new LeaveOnStageContainer();
stage.addChild(mochiBotContainer);
MochiBot.track(mochiBotContainer, "d15f1673");
trace("referal");
} catch(error:Error) {
trace("Error reffering");
};
};
Tools.openWindow("http://www.kongregate.com/games/kendric/dungeon-defender?gamereferral=dungeondefender");
Floater.floatTextAt(new Point(350, 250), stage, "If you don't see the window check your popup blocker at the top.");
}
}
}//package
Section 681
//Main_DevilDanceSound (Main_DevilDanceSound)
package {
import mx.core.*;
public class Main_DevilDanceSound extends SoundAsset {
}
}//package
Section 682
//Main_HauntedSmile (Main_HauntedSmile)
package {
import mx.core.*;
public class Main_HauntedSmile extends SoundAsset {
}
}//package
Section 683
//Main_ImpsOnTheProwl (Main_ImpsOnTheProwl)
package {
import mx.core.*;
public class Main_ImpsOnTheProwl extends SoundAsset {
}
}//package
Section 684
//MyPreloader (MyPreloader)
package {
import flash.events.*;
import com.greyhound.common.*;
import flash.display.*;
import flash.text.*;
import com.greyhound.ui.*;
import flash.utils.*;
import com.greyhound.common.ui.*;
import com.greyhound.common.kongregate.*;
import com.greyhound.*;
public class MyPreloader extends MovieClip {
private var playButton:Sprite;
private var ad:Sprite;
private var loadingFinished:Boolean;
private var loadingBar:Sprite;
private var timerFinished:Boolean;
public static const FRAMERATE:int = 25;
public static const LongButtonIMG:Class = MyPreloader_LongButtonIMG;
public static const KongPreloadIMG:Class = MyPreloader_KongPreloadIMG;
public static const TitleScreenIMG:Class = MyPreloader_TitleScreenIMG;
private static var demo:Boolean;
private static var kongregate:Boolean;
public function MyPreloader(){
var _local2:APILoader;
var _local3:DisplayObject;
var _local4:DisplayObject;
var _local5:TextField;
var _local6:Timer;
super();
stop();
kongregate = (((root.loaderInfo.url.indexOf("http://chat.kongregate.com") == 0)) || ((root.loaderInfo.url.indexOf("http://www.chat.kongregate.com") == 0)));
demo = !(kongregate);
if (kongregate){
_local2 = new APILoader();
stage.addChild(_local2);
_local2.loadAPI();
};
stage.scaleMode = StageScaleMode.NO_SCALE;
stage.align = StageAlign.TOP_LEFT;
stage.frameRate = FRAMERATE;
root.addEventListener(Event.ENTER_FRAME, onEnterFrame);
ad = new Sprite();
ad.addChild(new TitleScreenIMG());
ad.x = 0;
var _local1:Sprite = new Sprite();
_local1.addChild(new KongPreloadIMG());
_local1.useHandCursor = true;
_local1.buttonMode = true;
ad.addChild(_local1);
if (kongregate){
_local1.x = 200;
_local1.y = 150;
} else {
_local1.x = 420;
_local1.y = 200;
_local3 = AdLoader.LoadAd(1429, 502);
_local3.x = 100;
_local3.y = 200;
ad.addChild(_local3);
playButton = new Sprite();
playButton.useHandCursor = true;
playButton.buttonMode = true;
_local4 = new LongButtonIMG();
playButton.addChild(_local4);
playButton.x = 130;
playButton.y = 452;
playButton.addEventListener(MouseEvent.CLICK, playClicked);
playButton.visible = false;
_local5 = TextFieldFactory.createText("Start Dungeon Defender", 0xFFFFFF, 14);
_local5.x = 50;
_local5.y = 2;
playButton.addChild(_local5);
ad.addChild(playButton);
_local6 = new Timer(3000, 1);
_local6.addEventListener(TimerEvent.TIMER, showPlayButton);
_local6.start();
playButton.mouseChildren = false;
};
_local1.addEventListener(MouseEvent.CLICK, kongClick);
ad.addChild(_local1);
loadingBar = new Sprite();
loadingBar.y = 480;
loadingBar.graphics.beginFill(0xFF0000);
loadingBar.graphics.drawRect(0, 0, 1, 20);
loadingBar.graphics.endFill();
ad.addChild(loadingBar);
addChild(ad);
}
private function showPlayButton(_arg1:Event):void{
timerFinished = true;
if (loadingFinished){
playButton.visible = true;
};
}
private function kongClick(_arg1:Event):void{
var _local2:LeaveOnStageContainer = new LeaveOnStageContainer();
stage.addChild(_local2);
MochiBot.track(_local2, "d15f1673");
Tools.navigateTo("http://www.kongregate.com/?gamereferral=dungeondefender");
}
private function init():void{
var app:Object;
try {
removeChild(ad);
} catch(error:Error) {
trace("error removing add");
};
var mainClass:Class = Class(getDefinitionByName("Main"));
if (mainClass){
app = new mainClass(stage);
stage.addChild((app as DisplayObject));
stage.removeChild(this);
app.start();
};
}
public function onEnterFrame(_arg1:Event):void{
var _local2:Number;
if (framesLoaded == totalFrames){
loadingFinished = true;
_local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
loadingBar.graphics.beginFill(0xFF0000);
loadingBar.graphics.drawRect(0, 0, (700 * _local2), 20);
loadingBar.graphics.endFill();
removeEventListener(Event.ENTER_FRAME, onEnterFrame);
if (kongregate){
nextFrame();
init();
} else {
if (timerFinished){
playButton.visible = true;
};
};
} else {
_local2 = (root.loaderInfo.bytesLoaded / root.loaderInfo.bytesTotal);
loadingBar.graphics.beginFill(0xFF0000);
loadingBar.graphics.drawRect(0, 0, (700 * _local2), 20);
loadingBar.graphics.endFill();
};
}
private function playClicked(_arg1:Event):void{
nextFrame();
init();
}
public static function isKongregate():Boolean{
return (kongregate);
}
public static function isDemoVersion():Boolean{
return (demo);
}
}
}//package
Section 685
//MyPreloader_KongPreloadIMG (MyPreloader_KongPreloadIMG)
package {
import mx.core.*;
public class MyPreloader_KongPreloadIMG extends BitmapAsset {
}
}//package
Section 686
//MyPreloader_LongButtonIMG (MyPreloader_LongButtonIMG)
package {
import mx.core.*;
public class MyPreloader_LongButtonIMG extends BitmapAsset {
}
}//package
Section 687
//MyPreloader_TitleScreenIMG (MyPreloader_TitleScreenIMG)
package {
import mx.core.*;
public class MyPreloader_TitleScreenIMG extends BitmapAsset {
}
}//package
Section 688
//ProgressBar_barSkin (ProgressBar_barSkin)
package {
import flash.display.*;
public dynamic class ProgressBar_barSkin extends MovieClip {
}
}//package
Section 689
//ProgressBar_indeterminateSkin (ProgressBar_indeterminateSkin)
package {
import flash.display.*;
public dynamic class ProgressBar_indeterminateSkin extends MovieClip {
}
}//package
Section 690
//ProgressBar_trackSkin (ProgressBar_trackSkin)
package {
import flash.display.*;
public dynamic class ProgressBar_trackSkin extends MovieClip {
}
}//package
Section 691
//SavedData (SavedData)
package {
import com.greyhound.living.avatars.*;
import flash.net.*;
public class SavedData {
private static const SAVE_DIR:String = "/";
private static var currentSavedGame:GameSave;
private static var currentInstance:int;
public static function loadSave():void{
var _local1:SharedObject = SharedObject.getLocal(("dungeon_defender" + currentInstance), SAVE_DIR);
if (_local1.size == 0){
currentSavedGame = null;
} else {
currentSavedGame = (_local1.data.gameSave as GameSave);
};
_local1.close();
updateActive();
}
public static function getTalentsPicked():int{
if (currentSavedGame != null){
return (currentSavedGame.getTalentsPicked());
};
trace("Tried to getTalentsPicked but there was no save game");
return (0);
}
public static function getAvatarInSaveSlot(_arg1:int):String{
var _local3:String;
var _local2:SharedObject = SharedObject.getLocal(("dungeon_defender" + _arg1), SAVE_DIR);
if (_local2.size == 0){
_local2.close();
return ("None");
};
_local3 = (_local2.data.gameSave as GameSave).getAvatarTypeName();
_local2.close();
return (_local3);
}
public static function dumpSave():void{
var _local1:SharedObject = SharedObject.getLocal(("dungeon_defender" + currentInstance), SAVE_DIR);
_local1.data.gameSave = currentSavedGame;
_local1.close();
updateActive();
}
public static function clearAllTalents():void{
if (currentSavedGame != null){
return (currentSavedGame.clearAllTalentPoints());
};
trace("Tried to clearAllTalents but there was no save game");
}
public static function getAvatarTypeName():String{
if (currentSavedGame != null){
return (currentSavedGame.getAvatarTypeName());
};
return ("None");
}
public static function activeGameExists():Boolean{
return (!((currentSavedGame == null)));
}
public static function getNumberOfMapsCompleted():int{
if (currentSavedGame != null){
return (currentSavedGame.getNumberOfMapsCompleted());
};
return (0);
}
public static function clearGame():void{
currentSavedGame = null;
}
public static function getDifficultyName():String{
if (currentSavedGame != null){
return (currentSavedGame.getDifficultyName());
};
return ("None");
}
public static function getNumberOfMapsCompletedInSaveSlot(_arg1:int):int{
var _local3:int;
var _local2:SharedObject = SharedObject.getLocal(("dungeon_defender" + _arg1), SAVE_DIR);
if (_local2.size == 0){
_local2.close();
return (0);
};
_local3 = (_local2.data.gameSave as GameSave).getNumberOfMapsCompleted();
_local2.close();
return (_local3);
}
public static function hasTalenPoint(_arg1:Class):Boolean{
if (currentSavedGame != null){
return (currentSavedGame.hasTalenPoint(_arg1));
};
return (false);
}
public static function setCurrentInstance(_arg1:int):void{
if ((((_arg1 >= 1)) && ((_arg1 <= 3)))){
currentInstance = _arg1;
} else {
trace(("Tried to setCurrentInstance to:" + _arg1));
};
}
private static function updateActive():void{
var _local1:SharedObject = SharedObject.getLocal("dungeon_defender_active", SAVE_DIR);
_local1.data.lastSave = currentInstance;
_local1.close();
}
public static function getAvatarType():int{
if (currentSavedGame != null){
return (currentSavedGame.getAvatarType());
};
return (-1);
}
public static function getDifficulty():int{
if (currentSavedGame != null){
return (currentSavedGame.getDifficulty());
};
return (0);
}
public static function setMapCleared(_arg1:String):void{
if (currentSavedGame != null){
return (currentSavedGame.setMapCleared(_arg1));
};
trace("Tried to set a map cleared but there was no save game");
}
public static function getDifficultyNameInSaveSlot(_arg1:int):String{
var _local3:String;
var _local2:SharedObject = SharedObject.getLocal(("dungeon_defender" + _arg1), SAVE_DIR);
if (_local2.size == 0){
_local2.close();
return ("None");
};
_local3 = (_local2.data.gameSave as GameSave).getDifficultyName();
_local2.close();
return (_local3);
}
public static function createAvatar():Avatar{
if (currentSavedGame != null){
return (currentSavedGame.createAvatar());
};
trace("Tried to create an avatar but there was no save game");
return (null);
}
public static function addTalenPoint(_arg1:Class):void{
if (currentSavedGame != null){
return (currentSavedGame.addTalenPoint(_arg1));
};
trace("Tried to add talent point but there was no save game");
}
public static function isMapCleared(_arg1:String):Boolean{
if (currentSavedGame != null){
return (currentSavedGame.isMapCleared(_arg1));
};
return (false);
}
public static function saveNewGame(_arg1:GameSave):void{
var _local2:SharedObject = SharedObject.getLocal(("dungeon_defender" + currentInstance), SAVE_DIR);
_local2.data.gameSave = _arg1;
currentSavedGame = _arg1;
_local2.close();
updateActive();
}
public static function loadLastInstanceUsed():void{
var _local1:SharedObject = SharedObject.getLocal("dungeon_defender_active", SAVE_DIR);
if (_local1.size == 0){
currentInstance = 1;
} else {
currentInstance = _local1.data.lastSave;
};
_local1.close();
loadSave();
}
}
}//package
import flash.display.*;
import flash.events.*;
class FlushEventListener extends Sprite {
private function FlushEventListener(){
addEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
}
private function onFlushStatus(_arg1:NetStatusEvent):void{
switch (_arg1.info.code){
case "SharedObject.Flush.Success":
trace("Save complete after getting user permission");
break;
case "SharedObject.Flush.Failed":
trace("User denied save");
break;
};
removeEventListener(NetStatusEvent.NET_STATUS, onFlushStatus);
}
}
Section 692
//ScrollArrowDown_disabledSkin (ScrollArrowDown_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_disabledSkin extends MovieClip {
}
}//package
Section 693
//ScrollArrowDown_downSkin (ScrollArrowDown_downSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_downSkin extends MovieClip {
}
}//package
Section 694
//ScrollArrowDown_overSkin (ScrollArrowDown_overSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_overSkin extends MovieClip {
}
}//package
Section 695
//ScrollArrowDown_upSkin (ScrollArrowDown_upSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowDown_upSkin extends MovieClip {
}
}//package
Section 696
//ScrollArrowUp_disabledSkin (ScrollArrowUp_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_disabledSkin extends MovieClip {
}
}//package
Section 697
//ScrollArrowUp_downSkin (ScrollArrowUp_downSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_downSkin extends MovieClip {
}
}//package
Section 698
//ScrollArrowUp_overSkin (ScrollArrowUp_overSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_overSkin extends MovieClip {
}
}//package
Section 699
//ScrollArrowUp_upSkin (ScrollArrowUp_upSkin)
package {
import flash.display.*;
public dynamic class ScrollArrowUp_upSkin extends MovieClip {
}
}//package
Section 700
//ScrollBar_thumbIcon (ScrollBar_thumbIcon)
package {
import flash.display.*;
public dynamic class ScrollBar_thumbIcon extends MovieClip {
}
}//package
Section 701
//ScrollPane_disabledSkin (ScrollPane_disabledSkin)
package {
import flash.display.*;
public dynamic class ScrollPane_disabledSkin extends MovieClip {
}
}//package
Section 702
//ScrollPane_upSkin (ScrollPane_upSkin)
package {
import flash.display.*;
public dynamic class ScrollPane_upSkin extends MovieClip {
}
}//package
Section 703
//ScrollThumb_downSkin (ScrollThumb_downSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_downSkin extends MovieClip {
}
}//package
Section 704
//ScrollThumb_overSkin (ScrollThumb_overSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_overSkin extends MovieClip {
}
}//package
Section 705
//ScrollThumb_upSkin (ScrollThumb_upSkin)
package {
import flash.display.*;
public dynamic class ScrollThumb_upSkin extends MovieClip {
}
}//package
Section 706
//ScrollTrack_skin (ScrollTrack_skin)
package {
import flash.display.*;
public dynamic class ScrollTrack_skin extends MovieClip {
}
}//package
Section 707
//SliderThumb_disabledSkin (SliderThumb_disabledSkin)
package {
import flash.display.*;
public dynamic class SliderThumb_disabledSkin extends MovieClip {
}
}//package
Section 708
//SliderThumb_downSkin (SliderThumb_downSkin)
package {
import flash.display.*;
public dynamic class SliderThumb_downSkin extends MovieClip {
}
}//package
Section 709
//SliderThumb_overSkin (SliderThumb_overSkin)
package {
import flash.display.*;
public dynamic class SliderThumb_overSkin extends MovieClip {
}
}//package
Section 710
//SliderThumb_upSkin (SliderThumb_upSkin)
package {
import flash.display.*;
public dynamic class SliderThumb_upSkin extends MovieClip {
}
}//package
Section 711
//SliderTick_skin (SliderTick_skin)
package {
import flash.display.*;
public dynamic class SliderTick_skin extends MovieClip {
}
}//package
Section 712
//SliderTrack_disabledSkin (SliderTrack_disabledSkin)
package {
import flash.display.*;
public dynamic class SliderTrack_disabledSkin extends MovieClip {
}
}//package
Section 713
//SliderTrack_skin (SliderTrack_skin)
package {
import flash.display.*;
public dynamic class SliderTrack_skin extends MovieClip {
}
}//package