﻿ACTIONSCRIPT (AS3) FOR FLASH #267990
https://swfchan.com/54/267990/

//wav (attack_punch_1.wav)
package attack_punch_1 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package attack_punch_1 

****************

//wav (attack_punch_2.wav)
package attack_punch_2 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package attack_punch_2 

****************

//wav (attack_swing_1.wav)
package attack_swing_1 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package attack_swing_1 

****************

//wav (attack_swing_2.wav)
package attack_swing_2 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package attack_swing_2 

****************

//wav (attack_whip.wav)
package attack_whip {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package attack_whip 

****************

//wav (bombexplosion.wav)
package bombexplosion {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package bombexplosion 

****************

//wav (boom.wav)
package boom {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package boom 

****************

//wav (breakrock.wav)
package breakrock {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package breakrock 

****************

//wav (breaktarget.wav)
package breaktarget {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package breaktarget 

****************

//wav (breakvase.wav)
package breakvase {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package breakvase 

****************

//wav (bump.wav)
package bump {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package bump 

****************

//wav (cactusdying.wav)
package cactusdying {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package cactusdying 

****************

//GameModule (cactusGame.core.GameModule)
package cactusGame.core {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.data.*;
	import mochi.as3.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.screens.*;
	import cactusGame.managers.*;
	import cactusGame.utils.*;

	public dynamic class GameModule extends MovieClip {

		public var gameDisplay:GameDisplay;
		public var gameCam:GameCam;
		public var dataManager:DataManager;
		public var bitmapManager:BitmapManager;
		public var mapManager:MapManager;
		public var eventManager:EventManager;
		public var challengeManager:ChallengeManager;
		public var hudObj:GameHUD;
		public var playerObj:PlayerChar;
		public var characterType:String;// = "cactus"
		public var gameControls:GameControls;
		public var enemyManager:EnemyManager;
		public var objectManager:ObjectManager;
		public var itemManager:ItemManager;
		public var effectManager:EffectManager;
		public var bulletManager:BulletManager;
		public var soundManager:SoundManager;
		public var userData:UserData;
		public var gameStage:MovieClip;
		public var apiHelper:APIHelper;
		public var gameIntroScreen:GameIntroScreen;
		public var gameOutroScreen:GameOutroScreen;
		public var stageIntroScreen:StageIntroScreen;
		public var stageSelectScreen:StageSelectScreen;
		public var loadingScreen:LoadingScreen;
		public var loadingLevelsScreen:LoadingLevelsScreen;
		public var sponsorLogoScreen:SponsorLogoScreen;
		public var licenseLogoScreen:LicenseLogoScreen;
		public var fliplineLogoScreen:FliplineLogoScreen;
		public var lockScreen:LockScreen;
		public var selectedLevel:Number;// = 0
		public var useInternalLevels:Boolean;// = false
		public var dependentScreens:Array;

		public function GameModule(){
			dependentScreens = [SplashScreen, ScoreTallyScreen, SlotSelectScreen, MainMenuScreen];
			super();
			addFrameScript(0, frame1, 19, frame20);
			var _local1:GameModule = this;
			_local1.addEventListener(Event.ENTER_FRAME, _local1.initGame);
		}
		public function initGame(_arg1:Event=null){
			var _local2:GameModule = this;
			_local2.removeEventListener(Event.ENTER_FRAME, _local2.initGame);
			_local2.gameStage = new MovieClip();
			_local2.addChild(_local2.gameStage);
			_local2.apiHelper = new APIHelper(_local2);
			_local2.apiHelper.initAPI();
			var _local3:MovieClip = new border_overlay();
			_local3.mouseEnabled = false;
			_local3.mouseChildren = false;
			_local2.addChild(_local3);
			_local2.showLoadingScreen();
		}
		public function initializeModule(){
			var _local1:GameModule = this;
			_local1.gotoAndStop("init");
			_local1.stage.stageFocusRect = false;
			_local1.userData = new UserData(_local1);
			_local1.soundManager = new SoundManager(_local1);
			_local1.apiHelper.initMuteListeners(_local1.soundManager);
			_local1.challengeManager = new ChallengeManager(_local1);
			_local1.dataManager = new DataManager(_local1);
			_local1.dataManager.prepareLevelData(false);
		}
		public function showLoadingScreen(){
			var _local1:GameModule = this;
			_local1.loadingScreen = new LoadingScreen(_local1);
		}
		public function removeLoadingScreen(){
			var _local1:GameModule = this;
			if (_local1.loadingScreen){
				_local1.loadingScreen.destroy();
				_local1.loadingScreen = null;
			};
		}
		public function showLoadingLevelsScreen():MovieClip{
			var _local1:GameModule = this;
			_local1.loadingLevelsScreen = new LoadingLevelsScreen(_local1);
			return (_local1.loadingLevelsScreen.clip);
		}
		public function removeLoadingLevelsScreen(){
			var _local1:GameModule = this;
			if (_local1.loadingLevelsScreen){
				_local1.loadingLevelsScreen.destroy();
				_local1.loadingLevelsScreen = null;
			};
		}
		public function showLockScreen(){
			var _local1:GameModule = this;
			_local1.lockScreen = new LockScreen(_local1);
		}
		public function showSponsorLogoScreen(){
			var _local1:GameModule = this;
			_local1.sponsorLogoScreen = new SponsorLogoScreen(_local1);
		}
		public function removeSponsorLogoScreen(){
			var _local1:GameModule = this;
			if (_local1.sponsorLogoScreen){
				_local1.sponsorLogoScreen.destroy();
				_local1.sponsorLogoScreen = null;
			};
		}
		public function showLicenseLogoScreen(){
			var _local1:GameModule = this;
			_local1.licenseLogoScreen = new LicenseLogoScreen(_local1);
		}
		public function removeLicenseLogoScreen(){
			var _local1:GameModule = this;
			if (_local1.licenseLogoScreen){
				_local1.licenseLogoScreen.destroy();
				_local1.licenseLogoScreen = null;
			};
		}
		public function showFliplineLogoScreen(){
			var _local1:GameModule = this;
			_local1.fliplineLogoScreen = new FliplineLogoScreen(_local1);
		}
		public function removeFliplineLogoScreen(){
			var _local1:GameModule = this;
			if (_local1.fliplineLogoScreen){
				_local1.fliplineLogoScreen.destroy();
				_local1.fliplineLogoScreen = null;
			};
		}
		public function showStageIntroScreen(){
			var _local1:GameModule = this;
			_local1.stageIntroScreen = new StageIntroScreen(_local1);
		}
		public function removeStageIntroScreen(){
			var _local1:GameModule = this;
			if (_local1.stageIntroScreen){
				_local1.stageIntroScreen.destroy();
				_local1.stageIntroScreen = null;
			};
			if (_local1.gameControls){
				_local1.gameControls.resetKeyFocus();
			};
		}
		public function showGameIntroScreen(){
			var _local1:GameModule = this;
			_local1.gameIntroScreen = new GameIntroScreen(_local1);
		}
		public function removeGameIntroScreen(){
			var _local1:GameModule = this;
			if (_local1.gameIntroScreen){
				_local1.gameIntroScreen.destroy();
				_local1.gameIntroScreen = null;
			};
			if (_local1.gameControls){
				_local1.gameControls.resetKeyFocus();
			};
		}
		public function showGameOutroScreen(){
			var _local1:GameModule = this;
			_local1.gameOutroScreen = new GameOutroScreen(_local1);
		}
		public function removeGameOutroScreen(){
			var _local1:GameModule = this;
			if (_local1.gameOutroScreen){
				_local1.gameOutroScreen.destroy();
				_local1.gameOutroScreen = null;
			};
			if (_local1.gameControls){
				_local1.gameControls.resetKeyFocus();
			};
		}
		public function showEndingScreen(_arg1:Boolean=false){
		}
		public function removeEndingScreen(){
		}
		public function startGame(){
			var _local1:GameModule = this;
			_local1.gameDisplay.setupBitmapDraw();
			_local1.setupLevel(_local1.selectedLevel);
		}
		public function levelDataReady(){
			var _local1:GameModule = this;
			if (_local1.loadingLevelsScreen){
				_local1.loadingLevelsScreen.showPlayButton();
			};
		}
		public function setupGame(){
			var _local1:GameModule = this;
			if (_local1.characterType == "cactus"){
				_local1.playerObj = new CactusChar(_local1);
			} else {
				_local1.playerObj = new CactusChar(_local1);
			};
			_local1.hudObj = new GameHUD(_local1);
			_local1.bitmapManager = new BitmapManager(_local1);
			_local1.mapManager = new MapManager(_local1);
			_local1.objectManager = new ObjectManager(_local1);
			_local1.enemyManager = new EnemyManager(_local1);
			_local1.itemManager = new ItemManager(_local1);
			_local1.effectManager = new EffectManager(_local1);
			_local1.bulletManager = new BulletManager(_local1);
			_local1.eventManager = new EventManager(_local1);
			_local1.gameDisplay = new GameDisplay(_local1);
			_local1.gameCam = new GameCam(_local1);
			_local1.gameControls = new GameControls(_local1);
			_local1.startGame();
		}
		public function setupLevel(_arg1:Number){
			var _local2:GameModule = this;
			_local2.dataManager.currentLevel = _arg1;
			_local2.userData.resetLives();
			_local2.userData.clearTallies();
			_local2.bitmapManager.clearExtraSprites();
			_local2.dataManager.setupLevelScreens(_arg1);
			_local2.gameDisplay.setupPreBlit();
			_local2.gameDisplay.currentXcoord = 0;
			_local2.gameDisplay.currentYcoord = 0;
			_local2.gameCam.setCameraBounds();
			_local2.hudObj.updateDisplay();
			_local2.hudObj.updateTimer();
			_local2.challengeManager.resetCurrentChallenges();
			_local2.playerObj.startupPlayer(_local2.dataManager.currentScreenData.startPoint[1], _local2.dataManager.currentScreenData.startPoint[2], true);
			_local2.showStageIntroScreen();
		}
		public function startLevel(){
			var _local1:GameModule = this;
			_local1.gameCam.adjustCamera(_local1.playerObj, true);
			_local1.gameDisplay.currentXcoord = 0;
			_local1.gameDisplay.currentYcoord = 0;
			_local1.dataManager.initializeScreenObjects(0);
			_local1.soundManager.startLevelMusic();
			_local1.playerObj.startTrainSound();
			_local1.hudObj.setupLifeHeads();
			_local1.hudObj.updateDisplay();
			_local1.hudObj.showHUD();
			_local1.gameControls.setupControls();
			_local1.gameControls.setupCycleCode();
			_local1.gameDisplay.startTransition("in");
		}
		public function enterRoom(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
			var _local7:GameModule = this;
			var _local8:DataManager = _local7.dataManager;
			_local7.enemyManager.saveEnemies();
			_local7.objectManager.saveObjects();
			_local7.itemManager.saveItems();
			_local7.bulletManager.clearBullets();
			_local7.effectManager.clearEffects();
			_local8.setActiveRoom(_arg1);
			_local7.bitmapManager.clearExtraSprites();
			_local7.gameDisplay.setupPreBlit();
			_local7.gameDisplay.currentXcoord = 0;
			_local7.gameDisplay.currentYcoord = 0;
			_local7.gameCam.setCameraBounds();
			_local7.hudObj.updateDisplay();
			_local7.hudObj.updateTimer();
			var _local9:Number = (_local8.currentScreenData.doorArray[_arg2][0] + _arg5);
			var _local10:Number = ((_local8.currentScreenData.doorArray[_arg2][1] + (_local8.currentScreenData.doorArray[_arg2][3] - 1)) + _arg6);
			_local7.playerObj.startupPlayer(_local9, _local10, false, true);
			_local7.gameCam.adjustCamera(_local7.playerObj, true);
			_local7.gameDisplay.currentXcoord = 0;
			_local7.gameDisplay.currentYcoord = 0;
			_local7.dataManager.initializeScreenObjects(0);
			_local7.hudObj.setupLifeHeads();
			_local7.hudObj.updateDisplay();
			_local7.hudObj.showHUD();
			_local7.gameControls.stopCycle = false;
			_local7.gameDisplay.startTransition("in");
		}
		public function finishLevel(){
			var _local1:GameModule = this;
			_local1.gameControls.stopCycle = true;
			_local1.gameControls.stopControls = true;
			_local1.playerObj.stopTrainSound();
			_local1.apiHelper.api.showScreen("BeatLevel");
		}
		public function playerDied(){
			var _local1:GameModule = this;
			_local1.removeGame();
			_local1.apiHelper.api.showScreen("MainMenu", {section:"map"});
		}
		public function nextLevel(){
			var _local1:GameModule = this;
			if (_local1.dataManager.currentLevel == 0){
				_local1.setupLevel(1);
			} else {
				if (_local1.dataManager.currentLevel == 1){
					_local1.setupLevel(0);
				} else {
					_local1.setupLevel(0);
				};
			};
		}
		public function resetLevel(){
			var _local1:GameModule = this;
			_local1.removeGame();
			_local1.setupGame();
		}
		public function removeGame(){
			var gameObj:GameModule = this;
			try {
				gameObj.dataManager.clearLevelScreens();
				gameObj.hudObj.destroy();
				gameObj.playerObj.destroy();
				gameObj.bitmapManager.destroy();
				gameObj.mapManager.destroy();
				gameObj.objectManager.destroy();
				gameObj.enemyManager.destroy();
				gameObj.itemManager.destroy();
				gameObj.effectManager.destroy();
				gameObj.bulletManager.destroy();
				gameObj.eventManager.destroy();
				gameObj.gameDisplay.destroy();
				gameObj.gameCam.destroy();
				gameObj.gameControls.destroy();
				gameObj.playerObj = null;
				gameObj.hudObj = null;
				gameObj.bitmapManager = null;
				gameObj.mapManager = null;
				gameObj.objectManager = null;
				gameObj.enemyManager = null;
				gameObj.itemManager = null;
				gameObj.effectManager = null;
				gameObj.bulletManager = null;
				gameObj.eventManager = null;
				gameObj.gameDisplay = null;
				gameObj.gameCam = null;
				gameObj.gameControls = null;
			} catch(err) {
			};
		}
		function frame1(){
			stop();
		}
		function frame20(){
			stop();
		}

	}
}//package cactusGame.core 

****************

//Challenge (cactusGame.data.Challenge)
package cactusGame.data {

	public class Challenge {

		public var title:String;// = ""
		public var description:String;// = ""
		public var rewardMoney:Number;// = 0
		public var whichWorld:Number;// = -1
		public var whichChallenge:Number;// = -1
		public var challengeType:String;
		public var tagName:String;// = ""
		public var targetAmount:Number;// = 0
		public var tally:Number;// = 0
		public var whichWeapon:String;// = "any"
		public var weaponType:String;// = "any"
		public var enemyType:Number;// = -1
		public var enemyWeapon:String;// = "any"
		public var enemyWeaponType:String;// = "any"
		public var juggleTimesHit:Number;// = 0
		public var juggleWeaponsAmount:Number;// = 0
		public var juggleStartingWeapon:String;// = "any"
		public var juggleWeapons:Array;
		public var juggleIncludeStarting:Boolean;// = false
		public var upgradeType:String;// = "any"
		public var showTally:Boolean;// = false
		public var params:Object;

		public static const TAGGED = "tagged";
		public static const COMBO = "combo";
		public static const TIMETRIAL = "timetrial";
		public static const ENEMYTALLY = "enemytally";
		public static const ENEMYJUGGLE = "enemyjuggle";
		public static const MULTIJUGGLE = "multijuggle";
		public static const MULTIEXPLOSION = "multiexplosion";
		public static const CUSTOM = "custom";
		public static const CUSTOM_TAG_GOTHIT = "gotHit";
		public static const CUSTOM_TAG_ALLNODYING = "allNoDying";
		public static const CUSTOM_TAG_ENDNODYING = "endNoDying";
		public static const CUSTOM_TAG_NOKILLS = "noKills";
		public static const CUSTOM_TAG_TREASURES = "gotTreasures";
		public static const CUSTOM_TAG_CHALLENGES = "gotChallenges";
		public static const CUSTOM_TAG_UPGRADES = "gotUpgrades";
		public static const CUSTOM_TAG_ALLWEAPONS = "usedAllWeapons";

		public function Challenge(_arg1:Number, _arg2:Number, _arg3:String, _arg4:Object){
			juggleWeapons = ["any"];
			super();
			var _local5:Challenge = this;
			_local5.whichWorld = _arg1;
			_local5.whichChallenge = _arg2;
			_local5.challengeType = _arg3;
			_local5.params = _arg4;
			if (_arg3 == Challenge.TAGGED){
				_local5.setupTagged();
			} else {
				if (_arg3 == Challenge.TIMETRIAL){
					_local5.setupTimeTrial();
				} else {
					if (_arg3 == Challenge.ENEMYTALLY){
						_local5.setupEnemyTally();
					} else {
						if (_arg3 == Challenge.ENEMYJUGGLE){
							_local5.setupEnemyJuggle();
						} else {
							if (_arg3 == Challenge.COMBO){
								_local5.setupCombo();
							} else {
								if (_arg3 == Challenge.MULTIEXPLOSION){
									_local5.setupMultiExplosion();
								} else {
									if (_arg3 == Challenge.MULTIJUGGLE){
										_local5.setupMultiJuggle();
									} else {
										if (_arg3 == Challenge.CUSTOM){
											_local5.setupCustom();
										};
									};
								};
							};
						};
					};
				};
			};
			_local5.setupTitles();
		}
		public function setupTitles(){
			var _local1:Challenge = this;
			if (_local1.params.hasOwnProperty("title")){
				_local1.title = _local1.params.title;
			};
			if (_local1.params.hasOwnProperty("description")){
				_local1.description = _local1.params.description;
			};
			if (_local1.params.hasOwnProperty("rewardMoney")){
				_local1.rewardMoney = _local1.params.rewardMoney;
			} else {
				_local1.rewardMoney = 0;
			};
			if (_local1.params.hasOwnProperty("showTally")){
				_local1.showTally = _local1.params.showTally;
			} else {
				_local1.showTally = false;
			};
		}
		public function setupTagged(){
			var _local1:Challenge = this;
			_local1.tagName = _local1.params.tagName;
			_local1.targetAmount = _local1.params.targetAmount;
		}
		public function setupTimeTrial(){
			var _local1:Challenge = this;
			_local1.targetAmount = _local1.params.targetAmount;
		}
		public function setupCombo(){
			var _local1:Challenge = this;
			_local1.targetAmount = _local1.params.targetAmount;
		}
		public function setupEnemyTally(){
			var _local1:Challenge = this;
			if (_local1.params.hasOwnProperty("whichWeapon")){
				_local1.whichWeapon = _local1.params.whichWeapon;
			};
			if (_local1.params.hasOwnProperty("weaponType")){
				_local1.weaponType = _local1.params.weaponType;
			};
			if (_local1.params.hasOwnProperty("enemyType")){
				_local1.enemyType = _local1.params.enemyType;
			};
			if (_local1.params.hasOwnProperty("enemyWeapon")){
				_local1.enemyWeapon = _local1.params.enemyWeapon;
			};
			if (_local1.params.hasOwnProperty("enemyWeaponType")){
				_local1.enemyWeaponType = _local1.params.enemyWeaponType;
			};
			if (_local1.params.hasOwnProperty("targetAmount")){
				_local1.targetAmount = _local1.params.targetAmount;
				//unresolved jump
			};
		}
		public function setupEnemyJuggle(){
			var _local1:Challenge = this;
			if (_local1.params.hasOwnProperty("juggleTimesHit")){
				_local1.juggleTimesHit = _local1.params.juggleTimesHit;
				//unresolved jump
			};
			if (_local1.params.hasOwnProperty("juggleStartingWeapon")){
				_local1.juggleStartingWeapon = _local1.params.juggleStartingWeapon;
			};
			if (_local1.params.hasOwnProperty("juggleWeaponsAmount")){
				_local1.juggleWeaponsAmount = _local1.params.juggleWeaponsAmount;
			};
			if (_local1.params.hasOwnProperty("juggleWeapons")){
				_local1.juggleWeapons = _local1.params.juggleWeapons.concat();
			};
			if (_local1.params.hasOwnProperty("includeStartingWeapon")){
				_local1.juggleIncludeStarting = _local1.params.includeStartingWeapon;
			};
		}
		public function setupMultiJuggle(){
			var _local1:Challenge = this;
			_local1.targetAmount = _local1.params.targetAmount;
		}
		public function setupMultiExplosion(){
			var _local1:Challenge = this;
			_local1.targetAmount = _local1.params.targetAmount;
		}
		public function setupCustom(){
			var _local1:Challenge = this;
			_local1.tagName = _local1.params.tagName;
			if (_local1.params.hasOwnProperty("targetAmount")){
				_local1.targetAmount = _local1.params.targetAmount;
			} else {
				_local1.targetAmount = 0;
			};
			if (_local1.params.hasOwnProperty("upgradeType")){
				_local1.upgradeType = _local1.params.upgradeType;
			} else {
				_local1.upgradeType = "none";
			};
		}
		public function clearTally(_arg1:Boolean=false){
			if (((!((this.whichWorld == -1))) || (_arg1))){
				this.tally = 0;
			};
		}
		public function setTally(_arg1:Number):Boolean{
			var _local2:Challenge = this;
			_local2.tally = _arg1;
			if (_local2.tally >= _local2.targetAmount){
				return (true);
			};
			return (false);
		}
		public function addToTally(_arg1:Number=1):Boolean{
			var _local2:Challenge = this;
			_local2.tally = (_local2.tally + _arg1);
			if (_local2.tally >= _local2.targetAmount){
				return (true);
			};
			return (false);
		}
		public function meetsJuggleRequirements(_arg1:Number, _arg2:String, _arg3:Array):Boolean{
			var _local6:Boolean;
			var _local7:*;
			var _local4:Challenge = this;
			var _local5:Boolean;
			if (((_local4.juggleIncludeStarting) && ((_arg3.indexOf(_arg2) == -1)))){
				_arg3.push(_arg2);
			};
			if (_local4.juggleTimesHit <= _arg1){
				if ((((((_local4.juggleStartingWeapon == "any")) || ((_local4.juggleStartingWeapon == _arg2)))) || ((((_local4.juggleStartingWeapon == "nopunch")) && (!((_arg2 == "punch"))))))){
					if (_local4.juggleWeaponsAmount <= _arg3.length){
						if ((((_local4.juggleWeapons.length == 0)) || ((((_local4.juggleWeapons.length == 1)) && ((_local4.juggleWeapons[0] == "any")))))){
							_local5 = true;
						} else {
							_local6 = true;
							_local7 = 0;
							while (_local7 < _arg3.length) {
								if (_local4.juggleWeapons.indexOf(_arg3[_local7]) == -1){
									_local6 = false;
									break;
								};
								_local7++;
							};
							if (_local6){
								_local5 = true;
							};
						};
					};
				};
			};
			return (_local5);
		}
		public function meetsEnemyRequirements(_arg1:Number, _arg2:String, _arg3:String, _arg4:String):Boolean{
			var _local5:Challenge = this;
			var _local6:Boolean;
			if ((((_local5.enemyType == _arg1)) || ((_local5.enemyType == -1)))){
				if ((((_local5.enemyWeapon == _arg2)) || ((_local5.enemyWeapon == "any")))){
					if ((((_local5.whichWeapon == _arg3)) || ((_local5.whichWeapon == "any")))){
						if ((((_local5.weaponType == "any")) || ((_local5.weaponType == _arg4)))){
							_local6 = true;
						};
					};
				};
			};
			return (_local6);
		}
		public function getRewardAmount():Number{
			var _local1:Challenge = this;
			return (_local1.rewardMoney);
		}

	}
}//package cactusGame.data 

****************

//DataManager (cactusGame.data.DataManager)
package cactusGame.data {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.net.*;
	import flash.utils.*;
	import cactusGame.managers.*;
	import flash.ui.*;

	public class DataManager {

		public var gameObj:GameModule;
		public var levelDataClass:LevelData;
		public var masterLevelData:XMLList;
		public var worldData:XMLList;
		public var totalLevels:Number;// = 0
		public var totalWorlds:Number;// = 0
		private var urlLoader:URLLoader;
		private var loadLevelsURL:String;// = ""
		public var currentScreens:Array;
		public var currentScreenData:ScreenData;
		public var currentWorldData:WorldData;
		public var firstPlay:Boolean;// = false
		public var randomSeed:Number;// = 2303499
		public var currentLevel:Number;// = 1
		public var currentScreen:Number;// = 0
		public var stalloneBoardID:String;// = "910506203edd7114"
		public var stathamBoardID:String;// = "0e62e1890b1a137f"
		public var jetliBoardID:String;// = "4ca31cad605391a3"
		public var challengeBoardID:String;// = "84a3b03ea292df82"
		private var keyNameMap:Array;
		public var keyConstants:Array;
		public var keyStrings:Array;
		public var loadingClip:MovieClip;
		public var collisionArray:Array;
		public var slopeArray:Array;
		public var thruArray:Array;
		public var grabArray:Array;
		public var maxUpgradeLevel:Number;// = 6
		public var upgradePrices:Array;

		public static const COLLISION_TILE_NUMBER:Number = 999;
		public static const SLOPE_TILE_NUMBER:Number = 9999;
		public static const THRUBLOCK_TILE_NUMBER:Number = 99999;
		public static const KEY_JUMP:String = "keyCodeJump";
		public static const KEY_ATTACK:String = "keyCodeAttack";
		public static const KEY_UP:String = "keyCodeUp";
		public static const KEY_DOWN:String = "keyCodeDown";
		public static const KEY_LEFT:String = "keyCodeLeft";
		public static const KEY_RIGHT:String = "keyCodeRight";
		public static const KEY_DROP:String = "keyCodeDrop";
		public static const STAT_ADDED_PER_UPGRADE:Number = 10;
		public static const PUNCH_STAT:Number = 10;

		public function DataManager(_arg1:GameModule){
			currentScreens = [];
			keyNameMap = [];
			keyConstants = [Keyboard.ENTER, Keyboard.SPACE, Keyboard.SHIFT, Keyboard.CONTROL, Keyboard.DELETE, Keyboard.BACKSPACE, Keyboard.UP, Keyboard.DOWN, Keyboard.LEFT, Keyboard.RIGHT];
			keyStrings = ["enter", "space", "shift", "ctrl", "del", "back", "↑", "↓", "←", "→"];
			collisionArray = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 0, 1, 1, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			slopeArray = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			thruArray = [[0, 0, 0, 0, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 1, 1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			grabArray = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 1, 0, 0, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 2, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			upgradePrices = [[0, 25, 100, 280, 560, 1600], [0, 50, 110, 290, 580, 1750], [0, 60, 120, 300, 600, 1800], [0, 70, 140, 330, 660, 1850], [0, 80, 160, 360, 720, 1900]];
			super();
			var _local2:DataManager = this;
			_local2.gameObj = _arg1;
			_local2.levelDataClass = new LevelData();
			_local2.setupKeyNames();
		}
		public function getLeaderBoardID(_arg1:String):String{
			var _local2:DataManager = this;
			return (_local2[(_arg1 + "BoardID")]);
		}
		public function getPropValue(_arg1:String, _arg2):Number{
			var _local7:*;
			var _local3:DataManager = this;
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			if ((_arg2 is Array)){
				if (_arg2.length > 0){
					_local7 = 0;
					while (_local7 < _arg2.length) {
						_local5 = Math.floor((_arg2[_local7] / collisionArray[0].length));
						_local6 = (_arg2[_local7] % collisionArray[0].length);
						if (_arg2[_local7] == DataManager.COLLISION_TILE_NUMBER){
							if (_arg1 == "collision"){
								_local4 = 1;
							} else {
								_local4 = 0;
							};
						} else {
							if (_arg2[_local7] == DataManager.THRUBLOCK_TILE_NUMBER){
								if (_arg1 == "thrublock"){
									_local4 = 1;
								} else {
									_local4 = 0;
								};
							} else {
								_local4 = _local3[(_arg1 + "Array")][_local5][_local6];
							};
						};
						if (_local4 > 0){
							break;
						};
						_local7++;
					};
				};
			} else {
				_local5 = Math.floor((_arg2 / collisionArray[0].length));
				_local6 = (_arg2 % collisionArray[0].length);
				if (_arg2 == DataManager.COLLISION_TILE_NUMBER){
					if (_arg1 == "collision"){
						_local4 = 1;
					} else {
						_local4 = 0;
					};
				} else {
					_local4 = _local3[(_arg1 + "Array")][_local5][_local6];
				};
			};
			return (_local4);
		}
		private function getMainLoaderInfo():LoaderInfo{
			var _local1:DataManager = this;
			var _local2:LoaderInfo = _local1.gameObj.root.loaderInfo;
			if (_local2.loader != null){
				_local2 = _local2.loader.loaderInfo;
			};
			return (_local2);
		}
		public function prepareLevelData(_arg1:Boolean=false){
			var currtime:Date;
			var currtimecode:*;
			var urlRequest:URLRequest;
			var useInternal = _arg1;
			var manager:DataManager = this;
			if (manager.getMainLoaderInfo().parameters.hasOwnProperty("useDevLevels")){
				useInternal = true;
			} else {
				useInternal = true;
			};
			if (useInternal){
				manager.loadingClip = manager.gameObj.showLoadingLevelsScreen();
				manager.loadingClip.addEventListener(Event.ENTER_FRAME, manager.generateLevelData);
			} else {
				currtime = new Date();
				currtimecode = currtime.getTime();
				urlRequest = new URLRequest(((manager.loadLevelsURL + "?timecode=") + currtimecode));
				urlRequest.method = "GET";
				manager.urlLoader = new URLLoader();
				manager.urlLoader.addEventListener(Event.COMPLETE, manager.levelDataLoaded);
				manager.urlLoader.addEventListener(IOErrorEvent.IO_ERROR, manager.levelDataError);
				try {
					manager.urlLoader.load(urlRequest);
				} catch(error:Error) {
				};
				manager.loadingClip = manager.gameObj.showLoadingLevelsScreen();
			};
		}
		public function generateLevelData(_arg1:Event=null){
			var _local2:DataManager = this;
			_local2.levelDataClass.prepareXML(_local2.levelDataLoaded, _local2.loadingClip.bar);
			_local2.loadingClip.removeEventListener(Event.ENTER_FRAME, _local2.generateLevelData);
		}
		public function levelDataLoaded(_arg1:Event=null, _arg2:Boolean=false){
			var _local4:XML;
			var _local3:DataManager = this;
			if (_arg2){
				_local3.masterLevelData = _local3.levelDataClass.getLevelXMLList();
				_local3.totalLevels = _local3.masterLevelData.length();
				_local3.worldData = _local3.levelDataClass.getWorldXMLList();
				_local3.totalWorlds = _local3.worldData.length();
				_local3.gameObj.levelDataReady();
			} else {
				_local4 = XML(String(_local3.urlLoader.data));
				if (_local4.success == "1"){
					_local3.masterLevelData = _local4.levels.level;
					_local3.totalLevels = _local3.masterLevelData.length();
					_local3.worldData = _local4.worlds.world;
					_local3.totalWorlds = _local3.worldData.length();
					_local3.gameObj.levelDataReady();
					//unresolved jump
				};
			};
		}
		public function levelDataError(_arg1:IOErrorEvent){
			var _local2:DataManager = this;
			_local2.prepareLevelData();
		}
		public function setupLevelScreens(_arg1:Number){
			var manager:DataManager;
			var bitmapManager:BitmapManager;
			var worldXML:XML;
			var whichTileset:*;
			var roomArray:Array;
			var i:*;
			var useXMLList:XMLList;
			var useXML:XML;
			var thisScreen:ScreenData;
			var whichLevel = _arg1;
			manager = this;
			bitmapManager = manager.gameObj.bitmapManager;
			worldXML = XMLList(manager.worldData.(tileset == String(whichLevel)))[0];
			if (worldXML == null){
				whichLevel = 0;
				worldXML = XMLList(manager.worldData.(tileset == String(whichLevel)))[0];
			};
			manager.clearLevelScreens();
			whichTileset = whichLevel;
			manager.currentLevel = whichLevel;
			manager.currentWorldData = new WorldData(manager.gameObj, worldXML);
			manager.currentScreen = manager.currentWorldData.worldStartRoom;
			roomArray = manager.currentWorldData.getWorldRoomIDs();
			i = 0;
			while (i < roomArray.length) {
				useXMLList = manager.masterLevelData.(roomID == String(roomArray[i]));
				useXML = useXMLList[0];
				thisScreen = new ScreenData(manager.gameObj, useXML, whichTileset, i);
				manager.currentScreens.push(thisScreen);
				if (i == manager.currentScreen){
					manager.currentScreenData = thisScreen;
				};
				i = (i + 1);
			};
		}
		public function getWorldTitle(_arg1:Number):String{
			var manager:DataManager;
			var returnName:String;
			var worldXML:XML;
			var whichWorld = _arg1;
			manager = this;
			returnName = "Doesn't Exist Yet!";
			worldXML = XMLList(manager.worldData.(tileset == String(whichWorld)))[0];
			if (worldXML != null){
				returnName = worldXML.worldTitle;
			};
			return (returnName);
		}
		public function setActiveRoom(_arg1:Number){
			var _local2:DataManager = this;
			if (_local2.currentScreenData){
				_local2.currentScreenData.objectsInitialized = false;
				_local2.currentScreenData.clearBitmaps();
			};
			_local2.currentScreenData = _local2.currentScreens[_arg1];
			_local2.currentScreen = _arg1;
		}
		public function clearLevelScreens(){
			var _local2:Number;
			var _local1:DataManager = this;
			if (_local1.currentScreenData != null){
				_local1.currentScreenData.destroy();
				_local1.currentScreenData = null;
			};
			if (_local1.currentWorldData != null){
				_local1.currentWorldData.destroy();
				_local1.currentWorldData = null;
			};
			_local2 = 0;
			while (_local2 < _local1.currentScreens.length) {
				_local1.currentScreens[_local2].destroy();
				_local1.currentScreens[_local2] = null;
				_local2++;
			};
			_local1.currentScreens = null;
			_local1.currentScreens = [];
		}
		public function randomize(_arg1:Boolean=true):Number{
			var _local2:DataManager = this;
			if (_arg1){
				return ((((_local2.randomSeed = ((_local2.randomSeed * 16807) % 2147483647)) / 2147483647) + 2.33E-10));
			};
			return (Math.random());
		}
		public function initializeScreenObjects(_arg1:Number){
			var _local2:DataManager = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ScreenData = _local2.currentScreenData;
			if (!_local4.objectsInitialized){
				_local3.objectManager.clearObjects(_arg1, true);
				_local3.enemyManager.clearEnemies(_arg1, true);
				_local3.itemManager.clearItems(_arg1, true);
				_local3.objectManager.buildObjects(_arg1);
				_local3.enemyManager.buildEnemies(_arg1);
				_local3.itemManager.buildItems(_arg1);
				_local3.eventManager.loadEvents(_arg1);
				//unresolved jump
			};
		}
		public function destroy(){
			var manager:DataManager = this;
			manager.levelDataClass = null;
			manager.masterLevelData = null;
			manager.currentScreenData.destroy();
			manager.currentScreenData = null;
			gameObj.objectManager.clearObjects(manager.currentLevel, true);
			gameObj.enemyManager.clearEnemies(manager.currentLevel, true);
			gameObj.itemManager.clearItems(manager.currentLevel, true);
			if (manager.urlLoader != null){
				try {
					if (manager.urlLoader.hasEventListener(Event.COMPLETE)){
						manager.urlLoader.removeEventListener(Event.COMPLETE, manager.levelDataLoaded);
					};
					if (manager.urlLoader.hasEventListener(IOErrorEvent.IO_ERROR)){
						manager.urlLoader.removeEventListener(IOErrorEvent.IO_ERROR, manager.levelDataError);
					};
				} catch(err) {
				};
				manager.urlLoader = null;
			};
		}
		public function isOnTrain():Boolean{
			var _local1:DataManager = this;
			if ((((((_local1.currentLevel == 2)) || ((_local1.currentLevel == 5)))) || ((_local1.currentLevel == 8)))){
				return (true);
			};
			return (false);
		}
		public function getUpgradeCost(_arg1:String, _arg2:Number):Number{
			var _local3:DataManager = this;
			var _local4:Number = 999999;
			if (_arg2 <= _local3.maxUpgradeLevel){
				if (_arg1 == "punching"){
					_local4 = _local3.upgradePrices[0][(_arg2 - 1)];
				} else {
					if (_arg1 == "swinging"){
						_local4 = _local3.upgradePrices[1][(_arg2 - 1)];
					} else {
						if (_arg1 == "shooting"){
							_local4 = _local3.upgradePrices[2][(_arg2 - 1)];
						} else {
							if (_arg1 == "throwing"){
								_local4 = _local3.upgradePrices[3][(_arg2 - 1)];
							} else {
								if (_arg1 == "whipping"){
									_local4 = _local3.upgradePrices[4][(_arg2 - 1)];
								};
							};
						};
					};
				};
			} else {
				_local4 = -1;
			};
			return (_local4);
		}
		public function setupKeyNames(){
			var _local1:DataManager = this;
			keyNameMap = [];
			keyNameMap[65] = "A";
			keyNameMap[66] = "B";
			keyNameMap[67] = "C";
			keyNameMap[68] = "D";
			keyNameMap[69] = "E";
			keyNameMap[70] = "F";
			keyNameMap[71] = "G";
			keyNameMap[72] = "H";
			keyNameMap[73] = "I";
			keyNameMap[74] = "J";
			keyNameMap[75] = "K";
			keyNameMap[76] = "L";
			keyNameMap[77] = "M";
			keyNameMap[78] = "N";
			keyNameMap[79] = "O";
			keyNameMap[80] = "P";
			keyNameMap[81] = "Q";
			keyNameMap[82] = "R";
			keyNameMap[83] = "S";
			keyNameMap[84] = "T";
			keyNameMap[85] = "U";
			keyNameMap[86] = "V";
			keyNameMap[87] = "W";
			keyNameMap[88] = "X";
			keyNameMap[89] = "Y";
			keyNameMap[90] = "Z";
			keyNameMap[48] = "0";
			keyNameMap[49] = "1";
			keyNameMap[50] = "2";
			keyNameMap[51] = "3";
			keyNameMap[52] = "4";
			keyNameMap[53] = "5";
			keyNameMap[54] = "6";
			keyNameMap[55] = "7";
			keyNameMap[56] = "8";
			keyNameMap[57] = "9";
			keyNameMap[96] = "Num 0";
			keyNameMap[97] = "Num 1";
			keyNameMap[98] = "Num 2";
			keyNameMap[99] = "Num 3";
			keyNameMap[100] = "Num 4";
			keyNameMap[101] = "Num 5";
			keyNameMap[102] = "Num 6";
			keyNameMap[103] = "Num 7";
			keyNameMap[104] = "Num 8";
			keyNameMap[105] = "Num 9";
			keyNameMap[106] = "Num *";
			keyNameMap[107] = "Num +";
			keyNameMap[13] = "Enter";
			keyNameMap[109] = "Num -";
			keyNameMap[110] = "Num .";
			keyNameMap[111] = "Num /";
			keyNameMap[9] = "Tab";
			keyNameMap[8] = "Bksp";
			keyNameMap[19] = "Pause";
			keyNameMap[16] = "Shift";
			keyNameMap[17] = "Ctrl";
			keyNameMap[32] = "Space";
			keyNameMap[33] = "PgUp";
			keyNameMap[34] = "PgDn";
			keyNameMap[35] = "End";
			keyNameMap[36] = "Home";
			keyNameMap[37] = "Left";
			keyNameMap[38] = "Up";
			keyNameMap[39] = "Right";
			keyNameMap[40] = "Down";
			keyNameMap[45] = "Ins";
			keyNameMap[46] = "Del";
			keyNameMap[186] = ";";
			keyNameMap[187] = "+=";
			keyNameMap[189] = "-";
			keyNameMap[191] = "/?";
			keyNameMap[192] = "~";
			keyNameMap[219] = "[";
			keyNameMap[221] = "]";
			keyNameMap[220] = "|";
			keyNameMap[222] = "'";
			keyNameMap[188] = ",";
			keyNameMap[190] = ".";
		}
		public function getKeyLabel(_arg1:String):String{
			var _local2:DataManager = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4 = "???";
			var _local5:Number = 0;
			if (_arg1 == DataManager.KEY_ATTACK){
				_local5 = _local3.keyCodeAttack;
			} else {
				if (_arg1 == DataManager.KEY_JUMP){
					_local5 = _local3.keyCodeJump;
				} else {
					if (_arg1 == DataManager.KEY_DROP){
						_local5 = _local3.keyCodeDrop;
					} else {
						if (_arg1 == DataManager.KEY_RIGHT){
							_local5 = _local3.keyCodeRight;
						} else {
							if (_arg1 == DataManager.KEY_LEFT){
								_local5 = _local3.keyCodeLeft;
							} else {
								if (_arg1 == DataManager.KEY_UP){
									_local5 = _local3.keyCodeUp;
								} else {
									if (_arg1 == DataManager.KEY_DOWN){
										_local5 = _local3.keyCodeDown;
									};
								};
							};
						};
					};
				};
			};
			if ((((((((keyNameMap.length > _local5)) && (!((keyNameMap[_local5] == null))))) && (!((keyNameMap[_local5] == undefined))))) && (!((keyNameMap[_local5] == ""))))){
				_local4 = keyNameMap[_local5];
			};
			return (_local4);
		}
		public function isArrow(_arg1:String):Boolean{
			if ((((((((_arg1 == "Up")) || ((_arg1 == "Down")))) || ((_arg1 == "Left")))) || ((_arg1 == "Right")))){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.data 

****************

//LevelData (cactusGame.data.LevelData)
package cactusGame.data {
	import flash.display.*;
	import flash.events.*;
	import flash.utils.*;

	public class LevelData {

		private var xml:XML;
		private var encodedBitmapName:String;// = "levelMasterBitmap"
		private var colorTable:Array;
		private var textTable:Array;
		private var callbackFunction:Function;
		private var progressBar:MovieClip;
		private var startThreadTime:Number;// = 0
		private var latest_i:Number;// = 0
		private var latest_j:Number;// = 0
		private var target_MS_per_frame:Number;// = 30
		private var bmp:BitmapData;
		private var text:String;

		public function LevelData(){
			colorTable = [0, 14089725, 1023142, 16579589, 890871, 896347, 526934, 16158734, 11390496, 509947, 5704204, 10816013, 16189453, 718087, 985590, 5633289, 5831062, 9894494, 8344567, 11730429, 16274960, 6052364, 11229298, 16274563, 11405944, 15733745, 10593032, 762890, 261323, 11271122, 11116967, 16645165, 460550, 783695, 876119, 10704907, 13171970, 678314, 1270008, 723877, 16284664, 6818727, 6070876, 13761149, 8453318, 11048016, 6773415, 678409, 392444, 16226395, 16711031, 5871609, 16385912, 6026832, 7735287, 13748469, 6290682, 12909643, 3275967, 16566277, 16645321, 6071561, 5637469, 13289219, 4179959, 772791, 16448673, 5660506, 16710909, 8506108, 9762569, 16370048, 13761472, 16631548, 9239804, 9096887, 16579917, 16700240, 10981109, 3210749, 16435245, 719762, 16420776, 11008156, 6463143, 11126780, 11782751, 16172225, 13171753, 13171752];
			textTable = ["", "a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t", "u", "v", "w", "x", "y", "z", "A", "B", "C", "D", "E", "F", "G", "H", "I", "J", "K", "L", "M", "N", "O", "P", "Q", "R", "S", "T", "U", "V", "W", "X", "Y", "Z", "0", "1", "2", "3", "4", "5", "6", "7", "8", "9", "-", "=", "~", "@", "#", "$", "%", "^", "&", "*", "(", ")", "_", "+", "<", ">", ",", ".", ";", ":", "'", "\"", "?", "|", "\\", "/", " "];
			super();
		}
		public function prepareXML(_arg1:Function, _arg2:MovieClip){
			var _local3:LevelData = this;
			_local3.latest_i = 0;
			_local3.latest_j = 0;
			var _local4:Class = (getDefinitionByName(_local3.encodedBitmapName) as Class);
			_local3.bmp = new _local4(0, 0);
			_local3.text = "";
			_local3.startThreadTime = getTimer();
			_local3.callbackFunction = _arg1;
			_local3.progressBar = _arg2;
			_local3.progressBar.addEventListener(Event.ENTER_FRAME, _local3.prepareXMLcycle);
		}
		public function prepareXMLcycle(_arg1:Event){
			var _local6:*;
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local2:LevelData = this;
			var _local3:Number = getTimer();
			var _local4:Boolean;
			var _local5:* = _local2.latest_j;
			while (_local5 < _local2.bmp.height) {
				_local6 = 0;
				while (_local6 < _local2.bmp.width) {
					_local7 = (getTimer() - _local3);
					if ((((_local5 == _local2.latest_j)) && ((_local6 < _local2.latest_i)))){
					} else {
						if (_local7 < _local2.target_MS_per_frame){
							_local2.text = (_local2.text + _local2.getCharacter(_local2.bmp.getPixel(_local6, _local5)));
						} else {
							_local2.latest_i = _local6;
							_local2.latest_j = _local5;
							_local4 = true;
							break;
						};
					};
					_local6++;
				};
				if (_local4){
					break;
				};
				_local5++;
			};
			if (!_local4){
				_local2.xml = new XML(_local2.text);
				_local2.progressBar.removeEventListener(Event.ENTER_FRAME, _local2.prepareXMLcycle);
				_local2.callbackFunction(null, true);
				_local2.bmp.dispose();
				_local2.bmp = null;
			} else {
				_local8 = ((_local2.latest_j * _local2.bmp.width) + _local2.latest_i);
				_local9 = (_local2.bmp.width * _local2.bmp.height);
				_local2.progressBar.scaleX = (_local8 / _local9);
			};
		}
		private function getCharacter(_arg1:uint):String{
			var _local2:LevelData = this;
			var _local3:Number = _local2.colorTable.indexOf(_arg1);
			if (_local3 == -1){
				return ("");
			};
			if (_local2.textTable.length > _local3){
				return (_local2.textTable[_local3]);
			};
			return ("");
		}
		public function getLevelXMLList():XMLList{
			return (this.xml.levels.level);
		}
		public function getWorldXMLList():XMLList{
			return (this.xml.worlds.world);
		}

	}
}//package cactusGame.data 

****************

//ScreenData (cactusGame.data.ScreenData)
package cactusGame.data {
	import flash.display.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public dynamic class ScreenData {

		public var gameObj:GameModule;
		public var tileArray:Array;
		public var eventArray:Array;
		public var doorArray:Array;
		public var startPoint:Array;
		public var enemyArray:Array;
		public var objectArray:Array;
		public var itemArray:Array;
		public var roomID:Number;
		public var whichTileset:Number;// = 0
		public var tileBMP:BitmapData;
		public var bgBMP:BitmapData;
		public var bgClip:MovieClip;
		public var objectsInitialized:Boolean;// = false
		public var objectTotal:Number;// = 0
		public var bgStartX:Number;// = 0
		public var bgSpeed:Number;// = 1
		public var roomIndex:Number;// = -1

		public function ScreenData(_arg1:GameModule, _arg2:XML, _arg3:Number=0, _arg4:Number=-1){
			var _local5:ScreenData = this;
			_local5.gameObj = _arg1;
			var _local6:BitmapManager = _local5.gameObj.bitmapManager;
			_local5.whichTileset = _arg3;
			_local5.objectsInitialized = false;
			_local5.roomIndex = _arg4;
			_local5.populateData(_arg2);
		}
		public function populateData(_arg1:XML){
			var _local10:*;
			var _local11:*;
			var _local12:*;
			var _local2:ScreenData = this;
			var _local3:* = _arg1.tileArray.split("|");
			var _local4:* = _arg1.itemArray.split("|");
			var _local5:* = _arg1.enemyArray.split("|");
			var _local6:* = _arg1.objectArray.split("|");
			var _local7:* = _arg1.eventArray.split("|");
			var _local8:* = _arg1.doorArray.split("|");
			var _local9:* = _arg1.startPoint.split(",");
			_local2.enemyArray = [];
			_local2.itemArray = [];
			_local2.tileArray = [];
			_local2.objectArray = [];
			_local2.eventArray = [];
			_local2.doorArray = [];
			_local2.startPoint = [];
			_local10 = 0;
			while (_local10 < _local3.length) {
				_local2.tileArray[_local10] = _local3[_local10].split(",");
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local4.length) {
				_local2.itemArray[_local10] = _local4[_local10].split(",");
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local5.length) {
				_local2.enemyArray[_local10] = _local5[_local10].split(",");
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local6.length) {
				_local2.objectArray[_local10] = _local6[_local10].split(",");
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local8.length) {
				_local2.doorArray[_local10] = _local8[_local10].split(",");
				_local10++;
			};
			_local2.startPoint = _local9;
			_local10 = 0;
			while (_local10 < _local2.tileArray.length) {
				_local11 = 0;
				while (_local11 < _local2.tileArray[_local10].length) {
					_local2.tileArray[_local10][_local11] = String(_local2.tileArray[_local10][_local11]).split("#");
					_local12 = 0;
					while (_local12 < _local2.tileArray[_local10][_local11].length) {
						_local2.tileArray[_local10][_local11][_local12] = Number(_local2.tileArray[_local10][_local11][_local12]);
						_local12++;
					};
					_local11++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local2.itemArray.length) {
				_local11 = 0;
				while (_local11 < _local2.itemArray[_local10].length) {
					_local2.itemArray[_local10][_local11] = Number(_local2.itemArray[_local10][_local11]);
					_local11++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local2.enemyArray.length) {
				_local11 = 0;
				while (_local11 < _local2.enemyArray[_local10].length) {
					if (_local11 != 4){
						_local2.enemyArray[_local10][_local11] = Number(_local2.enemyArray[_local10][_local11]);
					};
					_local11++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local2.objectArray.length) {
				_local11 = 0;
				while (_local11 < _local2.objectArray[_local10].length) {
					if (_local11 < 4){
						_local2.objectArray[_local10][_local11] = Number(_local2.objectArray[_local10][_local11]);
					};
					_local11++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local2.doorArray.length) {
				_local11 = 0;
				while (_local11 < _local2.doorArray[_local10].length) {
					_local2.doorArray[_local10][_local11] = Number(_local2.doorArray[_local10][_local11]);
					_local11++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local2.startPoint.length) {
				_local2.startPoint[_local10] = Number(_local2.startPoint[_local10]);
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local7.length) {
				_local2.eventArray[_local10] = _local7[_local10].split(",");
				if (_local2.eventArray[_local10].length > 0){
					_local2.eventArray[_local10][0] = _local2.eventArray[_local10][0].split(")");
					_local11 = 0;
					while (_local11 < _local2.eventArray[_local10][0].length) {
						_local2.eventArray[_local10][0][_local11] = _local2.eventArray[_local10][0][_local11].split("-");
						_local11++;
					};
					_local11 = 0;
					while (_local11 < _local2.eventArray[_local10][0].length) {
						_local12 = 0;
						while (_local12 < _local2.eventArray[_local10][0][_local11].length) {
							_local2.eventArray[_local10][0][_local11][_local12] = Number(_local2.eventArray[_local10][0][_local11][_local12]);
							_local12++;
						};
						_local11++;
					};
				};
				if (_local2.eventArray[_local10].length > 1){
					_local2.eventArray[_local10][1] = _local2.eventArray[_local10][1].split(")");
					_local11 = 0;
					while (_local11 < _local2.eventArray[_local10][1].length) {
						_local2.eventArray[_local10][1][_local11] = _local2.eventArray[_local10][1][_local11].split("-");
						_local11++;
					};
					_local11 = 0;
					while (_local11 < _local2.eventArray[_local10][1].length) {
						_local12 = 0;
						while (_local12 < _local2.eventArray[_local10][1][_local11].length) {
							_local2.eventArray[_local10][1][_local11][_local12] = Number(_local2.eventArray[_local10][1][_local11][_local12]);
							_local12++;
						};
						_local11++;
					};
				};
				if (_local2.eventArray[_local10].length > 2){
					_local2.eventArray[_local10][2] = Number(_local2.eventArray[_local10][2]);
				};
				if (_local2.eventArray[_local10].length > 3){
					_local2.eventArray[_local10][3] = Number(_local2.eventArray[_local10][3]);
				};
				if (_local2.eventArray[_local10].length > 4){
					_local2.eventArray[_local10][4] = String(_local2.eventArray[_local10][4]);
				};
				_local10++;
			};
			if (_arg1.itemArray == ""){
				_local2.itemArray = [];
			};
			if (_arg1.enemyArray == ""){
				_local2.enemyArray = [];
			};
			if (_arg1.objectArray == ""){
				_local2.objectArray = [];
			};
			if (_arg1.npcArray == ""){
				_local2.npcArray = [];
			};
			if (_arg1.eventArray == ""){
				_local2.eventArray = [];
			};
			if (_arg1.doorArray == ""){
				_local2.doorArray = [];
			};
			_local2.loadedRoom = true;
			_local2.roomID = _arg1.roomID;
		}
		public function createBitmap(){
			var _local1:ScreenData = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Number = (_local2.tileWidth * _local1.tileArray[0].length);
			var _local4:Number = (_local2.tileWidth * _local1.tileArray.length);
			var _local5:Number = 1;
			if (_local3 > 2880){
				_local5 = Math.ceil((_local3 / 2880));
				_local3 = (_local2.tilesWidePerRow * _local2.tileWidth);
				_local4 = (_local5 * _local4);
			};
			if (_local1.tileBMP){
				_local1.tileBMP.dispose();
				_local1.tileBMP = null;
			};
			_local1.tileBMP = new BitmapData(_local3, _local4, true, 0xFFFFFF);
		}
		public function createBackgroundBitmap(_arg1:Number, _arg2:Number){
			var _local3:ScreenData = this;
			if (_local3.bgBMP){
				_local3.bgBMP.dispose();
				_local3.bgBMP = null;
			};
		}
		public function destroy(){
			var _local1:ScreenData = this;
			tileArray = null;
			enemyArray = null;
			objectArray = null;
			itemArray = null;
			eventArray = null;
			if (_local1.tileBMP){
				_local1.tileBMP.dispose();
				_local1.tileBMP = null;
			};
			if (_local1.bgBMP){
				_local1.bgBMP.dispose();
				_local1.bgBMP = null;
			};
		}
		public function clearBitmaps(){
			var _local1:ScreenData = this;
			if (_local1.tileBMP){
				_local1.tileBMP.dispose();
				_local1.tileBMP = null;
			};
			if (_local1.bgBMP){
				_local1.bgBMP.dispose();
				_local1.bgBMP = null;
			};
		}
		public function checkForDoorID(_arg1:Number, _arg2:Number):Number{
			var _local5:Number;
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local3:ScreenData = this;
			var _local4:Number = -1;
			var _local9:* = 0;
			while (_local9 < _local3.doorArray.length) {
				if ((((((((_arg1 >= _local3.doorArray[_local9][0])) && ((_arg1 < (_local3.doorArray[_local9][0] + _local3.doorArray[_local9][2]))))) && ((_arg2 >= _local3.doorArray[_local9][1])))) && ((_arg2 < (_local3.doorArray[_local9][1] + _local3.doorArray[_local9][3]))))){
					_local4 = _local9;
					break;
				};
				_local9++;
			};
			return (_local4);
		}
		public function updateItems(_arg1:Array){
			var _local2:ScreenData = this;
			_local2.itemArray = null;
			_local2.itemArray = _arg1.concat();
		}
		public function saveObjectState(_arg1:Number, _arg2:Array, _arg3:Boolean=false){
			var _local4:ScreenData = this;
			if (((_arg3) || (((!(_arg3)) && ((_local4.objectArray.length > _arg1)))))){
				_local4.objectArray[_arg1] = _arg2.concat();
			};
		}
		public function saveEnemyState(_arg1:Number, _arg2:Array){
			var _local3:ScreenData = this;
			_local3.enemyArray[_arg1] = _arg2.concat();
		}

	}
}//package cactusGame.data 

****************

//UserData (cactusGame.data.UserData)
package cactusGame.data {
	import cactusGame.core.*;
	import flash.net.*;
	import mochi.as3.*;
	import cactusGame.managers.*;
	import flipline.api.utils.*;
	import flash.ui.*;

	public class UserData {

		public var gameObj:GameModule;
		public var saveSlotPrefix:String;// = "CactusMcCoy_"
		public var whichSlot:Number;// = 1
		public var playerName:String;// = "McCoy"
		public var whichCharacter:String;// = "cactus"
		public var points:MochiDigits;
		public var money:MochiDigits;
		public var livesLost:MochiDigits;
		public var levelTimePlayed:MochiDigits;
		public var killsPerWeapon:Array;
		public var weaponsEquipped:Array;
		public var weaponTypesEquipped:Array;
		public var killsTally:Number;// = 0
		public var gotHurt:Boolean;// = false
		public var alreadyEarned100:Boolean;// = false
		public var startingLives:MochiDigits;
		public var scorePerShortBonus:MochiDigits;
		public var scorePerLongBonus:MochiDigits;
		public var scoreShortCutoff:MochiDigits;
		public var scoreTimeMaximum:MochiDigits;
		public var scoreLostPerLife:MochiDigits;
		public var scoreForNoDeaths:MochiDigits;
		public var scorePerTreasureEarned:MochiDigits;
		public var scorePerChallengeCompeleted:MochiDigits;
		public var timeBonus:MochiDigits;
		public var startingBonus:MochiDigits;
		public var timeBonusMinimums:Array;
		public var scoreLostPerMinuteOver:MochiDigits;
		public var totalScore:MochiDigits;
		public var totalMoney:MochiDigits;
		public var totalLives:MochiDigits;
		public var totalTimePlayed:MochiDigits;
		public var areasUnlocked:Array;
		public var highScores:Array;
		public var bestTimes:Array;
		public var treasuresUnlocked:Array;
		public var challengesCompleted:Array;
		public var medalsEarned:Array;
		public var medalProgress:Array;
		public var upgradeLevels:Array;
		public var totalKillsPerWeapon:Array;
		public var keyCodeLeft:Number;
		public var keyCodeRight:Number;
		public var keyCodeUp:Number;
		public var keyCodeDown:Number;
		public var keyCodeJump:Number;// = 65
		public var keyCodeAttack:Number;// = 83
		public var keyCodeDrop:Number;// = 68
		private var defaultKeyCodeLeft:Number;
		private var defaultKeyCodeRight:Number;
		private var defaultKeyCodeUp:Number;
		private var defaultKeyCodeDown:Number;
		private var defaultKeyCodeJump:Number;// = 65
		private var defaultKeyCodeAttack:Number;// = 83
		private var defaultKeyCodeDrop:Number;// = 68

		public function UserData(_arg1:GameModule){
			points = new MochiDigits(0);
			money = new MochiDigits(0);
			livesLost = new MochiDigits(0);
			levelTimePlayed = new MochiDigits(0);
			killsPerWeapon = [];
			weaponsEquipped = [];
			weaponTypesEquipped = [];
			startingLives = new MochiDigits(5);
			scorePerShortBonus = new MochiDigits(500);
			scorePerLongBonus = new MochiDigits(1000);
			scoreShortCutoff = new MochiDigits(450);
			scoreTimeMaximum = new MochiDigits(2500);
			scoreLostPerLife = new MochiDigits(500);
			scoreForNoDeaths = new MochiDigits(2500);
			scorePerTreasureEarned = new MochiDigits(500);
			scorePerChallengeCompeleted = new MochiDigits(500);
			timeBonus = new MochiDigits(0);
			startingBonus = new MochiDigits(9000);
			timeBonusMinimums = [3000, 2700, 2700, 4500, 4950, 3600, 4200, 5400, 4500, 4650, 8100, 4800];
			scoreLostPerMinuteOver = new MochiDigits(500);
			totalScore = new MochiDigits(0);
			totalMoney = new MochiDigits(0);
			totalLives = new MochiDigits(0);
			totalTimePlayed = new MochiDigits(0);
			areasUnlocked = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			highScores = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			bestTimes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			treasuresUnlocked = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]];
			challengesCompleted = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]];
			medalsEarned = [];
			medalProgress = [];
			upgradeLevels = [1, 1, 1, 1, 1];
			totalKillsPerWeapon = [];
			keyCodeLeft = Keyboard.LEFT;
			keyCodeRight = Keyboard.RIGHT;
			keyCodeUp = Keyboard.UP;
			keyCodeDown = Keyboard.DOWN;
			defaultKeyCodeLeft = Keyboard.LEFT;
			defaultKeyCodeRight = Keyboard.RIGHT;
			defaultKeyCodeUp = Keyboard.UP;
			defaultKeyCodeDown = Keyboard.DOWN;
			super();
			var _local2:UserData = this;
			_local2.gameObj = _arg1;
			_local2.totalLives.setValue(_local2.startingLives.value);
			_local2.clearTallies();
		}
		public function resetLives(){
			var _local1:UserData = this;
			_local1.totalLives.setValue(_local1.startingLives.value);
		}
		public function adjustLives(_arg1:Number):Boolean{
			var _local2:UserData = this;
			_local2.totalLives.addValue(_arg1);
			_local2.gameObj.hudObj.updateDisplay();
			if (_arg1 < 0){
				_local2.livesLost.addValue(Math.abs(_arg1));
			};
			if (_local2.totalLives.value >= 0){
				return (true);
			};
			return (false);
		}
		public function earnPoints(_arg1:Number){
			var _local2:UserData = this;
			_local2.points.addValue(_arg1);
			_local2.gameObj.hudObj.updateDisplay();
		}
		public function earnMoney(_arg1:Number){
			var _local2:UserData = this;
			_local2.money.addValue(_arg1);
			_local2.gameObj.hudObj.updateDisplay();
		}
		public function clearTallies(){
			var _local1:UserData = this;
			_local1.timeBonus.setValue(_local1.startingBonus.value);
			_local1.levelTimePlayed.setValue(0);
			_local1.livesLost.setValue(0);
			_local1.money.setValue(0);
			_local1.points.setValue(0);
			_local1.killsPerWeapon = [];
			_local1.weaponsEquipped = [];
			_local1.weaponTypesEquipped = [];
			_local1.killsTally = 0;
			_local1.gotHurt = false;
		}
		public function addToWeaponsEquipped(_arg1:String, _arg2:String){
			var _local3:UserData = this;
			if (_local3.weaponsEquipped.indexOf(_arg1) == -1){
				_local3.weaponsEquipped.push(_arg1);
			};
			if (_local3.weaponTypesEquipped.indexOf(_arg2) == -1){
				_local3.weaponTypesEquipped.push(_arg2);
			};
		}
		public function getTimeBonus():Number{
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			var _local1:UserData = this;
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			if (_local1.totalLives.value >= 0){
				_local3 = _local1.timeBonusMinimums[_local2];
				_local4 = (_local1.levelTimePlayed.value - _local3);
				_local5 = 0;
				if (_local4 <= 0){
					_local5 = 0;
				} else {
					if (_local4 <= 1800){
						_local5 = 1;
					} else {
						if (_local4 <= 3600){
							_local5 = 2;
						} else {
							if (_local4 <= 5400){
								_local5 = 3;
							} else {
								if (_local4 <= 7200){
									_local5 = 4;
								} else {
									if (_local4 > 7200){
										_local5 = 5;
									};
								};
							};
						};
					};
				};
				return ((_local1.scoreTimeMaximum.value - (_local5 * _local1.scoreLostPerMinuteOver.value)));
				//unresolved jump
			};
			return (0);
		}
		public function getLivesTally():Number{
			var _local1:UserData = this;
			if (_local1.totalLives.value >= 0){
				return (_local1.totalLives.value);
			};
			return (0);
		}
		public function getLivesLostTally():Number{
			var _local1:UserData = this;
			return (_local1.livesLost.value);
		}
		public function getLivesBonus():Number{
			var _local1:UserData = this;
			if (_local1.totalLives.value >= 0){
				if (_local1.livesLost.value == 0){
					return (_local1.scoreForNoDeaths.value);
				};
				return ((_local1.scoreForNoDeaths.value - (_local1.livesLost.value * _local1.scoreLostPerLife.value)));
				//unresolved jump
			};
			return (0);
		}
		public function getTreasureBonus():Number{
			var _local1:UserData = this;
			return ((_local1.getTreasureTally() * _local1.scorePerTreasureEarned.value));
		}
		public function getChallengeBonus():Number{
			var _local1:UserData = this;
			return ((_local1.getChallengeTally() * _local1.scorePerChallengeCompeleted.value));
		}
		public function getTreasureTally():Number{
			var _local4:*;
			var _local1:UserData = this;
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			var _local3:Number = 0;
			if (_local1.treasuresUnlocked.length > _local2){
				_local4 = 0;
				while (_local4 < _local1.treasuresUnlocked[_local2].length) {
					if (_local1.treasuresUnlocked[_local2][_local4] == 1){
						_local3++;
					};
					_local4++;
				};
			};
			return (_local3);
		}
		public function getChallengeTally():Number{
			var _local4:*;
			var _local1:UserData = this;
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			var _local3:Number = 0;
			if (_local1.challengesCompleted.length > _local2){
				_local4 = 0;
				while (_local4 < _local1.challengesCompleted[_local2].length) {
					if (_local1.challengesCompleted[_local2][_local4] == 1){
						_local3++;
					};
					_local4++;
				};
			};
			return (_local3);
		}
		public function unlockNextLevel(){
			var _local1:UserData = this;
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			if (_local1.areasUnlocked.length > (_local2 + 1)){
				if (_local1.areasUnlocked[(_local2 + 1)] == 0){
					_local1.areasUnlocked[(_local2 + 1)] = 1;
				};
			};
		}
		public function updateAndGetLevelScore(_arg1:Boolean=true, _arg2:Boolean=true):Number{
			var _local3:UserData = this;
			var _local4:Number = 0;
			var _local5:Number = (((((_local3.points.value + _local3.getTimeBonus()) + _local3.getLivesBonus()) + _local3.getTreasureBonus()) + _local3.getChallengeBonus()) + _local3.money.value);
			if (_local5 < 0){
				_local5 = 0;
			};
			_local3.saveHighScore(_local5);
			if (_arg1){
				_local4 = _local5;
			} else {
				_local4 = _local3.getLevelHighScore();
			};
			_local3.totalMoney.addValue(_local3.money.value);
			_local3.totalScore.setValue(_local3.getTotalScore());
			_local3.clearTallies();
			if (_arg2){
				_local3.saveProgress();
			};
			return (_local4);
		}
		public function getCurrentPoints():Number{
			var _local1:UserData = this;
			var _local2:Number = _local1.points.value;
			return (_local2);
		}
		public function getCurrentMoney():Number{
			var _local1:UserData = this;
			var _local2:Number = _local1.money.value;
			return (_local2);
		}
		public function getLevelHighScore(_arg1:Number=-1):Number{
			var _local2:UserData = this;
			if (_arg1 == -1){
				_arg1 = _local2.gameObj.dataManager.currentLevel;
			};
			if (_local2.highScores.length > _arg1){
				return (_local2.highScores[_arg1]);
			};
			return (0);
		}
		public function saveHighScore(_arg1:Number, _arg2:Number=-1, _arg3:Boolean=true){
			var _local5:Number;
			var _local4:UserData = this;
			if (_arg2 == -1){
				_arg2 = _local4.gameObj.dataManager.currentLevel;
			};
			if (_local4.highScores.length > _arg2){
				_local5 = _local4.highScores[_arg2];
				if (_local5 == 0){
					_local4.gameObj.apiHelper.api.trackLevelMetric("BeatLevel", (_arg2 + 1));
				};
				if ((((_arg1 > _local5)) || ((_arg3 == false)))){
					_local4.highScores[_arg2] = _arg1;
				};
			};
		}
		public function setLevelTime(_arg1:Number){
			var _local4:Number;
			var _local2:UserData = this;
			var _local3:Number = _local2.gameObj.dataManager.currentLevel;
			if (_local2.bestTimes.length > _local3){
				_local4 = _local2.bestTimes[_local3];
				if ((((_arg1 < _local4)) || ((_local4 == 0)))){
					_local2.bestTimes[_local3] = _arg1;
				};
			};
		}
		public function getLevelBestTime(_arg1:Number=-1):Number{
			var _local2:UserData = this;
			if (_arg1 == -1){
				_arg1 = _local2.gameObj.dataManager.currentLevel;
			};
			if (_local2.bestTimes.length > _arg1){
				return (_local2.bestTimes[_arg1]);
			};
			return (0);
		}
		public function getTotalScore():Number{
			var _local5:*;
			var _local1:UserData = this;
			var _local2:Number = 0;
			var _local3:* = 0;
			while (_local3 < 12) {
				_local2 = (_local2 + _local1.highScores[_local3]);
				_local3++;
			};
			var _local4:ChallengeManager = _local1.gameObj.challengeManager;
			if (_local4){
				_local5 = 0;
				while (_local5 < _local4.badges.length) {
					if (_local1.medalsEarned[_local5] == 1){
						_local2 = (_local2 + Challenge(_local4.badges[_local5]).rewardMoney);
					};
					_local5++;
				};
			};
			return (_local2);
		}
		public function getTotalMoney():Number{
			var _local1:UserData = this;
			return (_local1.totalMoney.value);
		}
		public function hasTreasure(_arg1:Number, _arg2:Number):Boolean{
			var _local3:UserData = this;
			var _local4:Boolean;
			if (_local3.treasuresUnlocked.length > _arg1){
				if (_local3.treasuresUnlocked[_arg1].length > (_arg2 - 1)){
					if (_local3.treasuresUnlocked[_arg1][(_arg2 - 1)] == 1){
						_local4 = true;
					};
				};
			};
			return (_local4);
		}
		public function earnTreasure(_arg1:Number, _arg2:Number){
			var _local3:UserData = this;
			if (_local3.treasuresUnlocked.length > _arg1){
				_local3.treasuresUnlocked[_arg1][(_arg2 - 1)] = 1;
			};
			_local3.gameObj.apiHelper.api.trackLevelMetric(("Treasure " + _arg2), (_arg1 + 1));
			if (((!(_local3.alreadyEarned100)) && (_local3.hasEarnedEverything()))){
				_local3.gameObj.apiHelper.api.trackCustomMetric("100 Percent Complete", "Gameplay", true);
				_local3.alreadyEarned100 = true;
			};
		}
		public function getTotalTreasuresEarned():Number{
			var _local4:*;
			var _local1:UserData = this;
			var _local2:Number = 0;
			var _local3:* = 0;
			while (_local3 < _local1.treasuresUnlocked.length) {
				_local4 = 0;
				while (_local4 < _local1.treasuresUnlocked[_local3].length) {
					if (_local1.treasuresUnlocked[_local3][_local4] == 1){
						_local2++;
					};
					_local4++;
				};
				_local3++;
			};
			return (_local2);
		}
		public function hasCompletedChallenge(_arg1:Number, _arg2:Number):Boolean{
			var _local3:UserData = this;
			var _local4:Boolean;
			if (_local3.challengesCompleted.length > _arg1){
				if (_local3.challengesCompleted[_arg1].length > (_arg2 - 1)){
					if (_local3.challengesCompleted[_arg1][(_arg2 - 1)] == 1){
						_local4 = true;
					};
				};
			};
			return (_local4);
		}
		public function completeChallenge(_arg1:Number, _arg2:Number){
			var _local3:UserData = this;
			if (_local3.challengesCompleted.length > _arg1){
				_local3.challengesCompleted[_arg1][(_arg2 - 1)] = 1;
			};
			_local3.gameObj.apiHelper.api.trackLevelMetric(("Challenge " + _arg2), (_arg1 + 1));
			if (((!(_local3.alreadyEarned100)) && (_local3.hasEarnedEverything()))){
				_local3.gameObj.apiHelper.api.trackCustomMetric("100 Percent Complete", "Gameplay", true);
				_local3.alreadyEarned100 = true;
			};
		}
		public function getTotalChallengesCompleted():Number{
			var _local4:*;
			var _local1:UserData = this;
			var _local2:Number = 0;
			var _local3:* = 0;
			while (_local3 < _local1.challengesCompleted.length) {
				_local4 = 0;
				while (_local4 < _local1.challengesCompleted[_local3].length) {
					if (_local1.challengesCompleted[_local3][_local4] == 1){
						_local2++;
					};
					_local4++;
				};
				_local3++;
			};
			return (_local2);
		}
		public function hasBadge(_arg1:Number):Boolean{
			var _local2:UserData = this;
			var _local3:Boolean;
			if (_local2.medalsEarned.length > _arg1){
				if (_local2.medalsEarned[_arg1] == 1){
					_local3 = true;
				};
			};
			return (_local3);
		}
		public function earnBadge(_arg1:Number, _arg2:String=""){
			var _local3:UserData = this;
			_local3.medalsEarned[_arg1] = 1;
			_local3.gameObj.apiHelper.api.trackCustomMetric(((("Badge " + _arg1) + ": ") + _arg2), "Badges");
			if (((!(_local3.alreadyEarned100)) && (_local3.hasEarnedEverything()))){
				_local3.gameObj.apiHelper.api.trackCustomMetric("100 Percent Complete", "Gameplay", true);
				_local3.alreadyEarned100 = true;
			};
		}
		public function getTotalBadgesEarned():Number{
			var _local1:UserData = this;
			var _local2:Number = 0;
			var _local3:* = 0;
			while (_local3 < _local1.medalsEarned.length) {
				if (_local1.medalsEarned[_local3] == 1){
					_local2++;
				};
				_local3++;
			};
			return (_local2);
		}
		public function loadLabelsForSlot(_arg1:Number):Object{
			var _local4:Number;
			var _local5:Number;
			var _local7:ChallengeManager;
			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:Number;
			var _local20:String;
			var _local21:String;
			var _local22:*;
			var _local2:UserData = this;
			var _local3:Object;
			var _local6:SharedObject = SharedObject.getLocal((saveSlotPrefix + _arg1), "/");
			if (_local6.data.playerName){
				_local3 = {};
				_local3.name = _local6.data.playerName;
				_local3.score = 0;
				_local3.money = _local6.data.totalMoney;
				_local3.character = _local6.data.whichCharacter;
				if (_local6.data.totalTime){
					_local3.time = _local6.data.totalTime;
				} else {
					_local3.time = 0;
				};
				_local4 = 0;
				while (_local4 < _local6.data.highScores.length) {
					_local3.score = (_local3.score + _local6.data.highScores[_local4]);
					_local4++;
				};
				_local7 = _local2.gameObj.challengeManager;
				if (_local7){
					_local22 = 0;
					while (_local22 < _local7.badges.length) {
						if (_local6.data.medalsEarned[_local22] == 1){
							_local3.score = (_local3.score + Challenge(_local7.badges[_local22]).rewardMoney);
						};
						_local22++;
					};
				};
				_local8 = 0;
				_local9 = 0;
				_local10 = 0;
				_local11 = 0;
				_local12 = 0;
				_local13 = 0;
				_local14 = 0;
				_local15 = 0;
				_local4 = 0;
				while (_local4 < _local6.data.highScores.length) {
					_local8++;
					if (_local6.data.highScores[_local4] > 0){
						_local9++;
					};
					_local4++;
				};
				_local4 = 0;
				while (_local4 < _local6.data.treasuresUnlocked.length) {
					_local5 = 0;
					while (_local5 < _local6.data.treasuresUnlocked[_local4].length) {
						_local10++;
						_local11 = (_local11 + _local6.data.treasuresUnlocked[_local4][_local5]);
						_local5++;
					};
					_local4++;
				};
				_local4 = 0;
				while (_local4 < _local6.data.challengesCompleted.length) {
					_local5 = 0;
					while (_local5 < _local6.data.challengesCompleted[_local4].length) {
						_local12++;
						_local13 = (_local13 + _local6.data.challengesCompleted[_local4][_local5]);
						_local5++;
					};
					_local4++;
				};
				if (_local6.data.medalsEarned.length > 0){
					_local4 = 0;
					while (_local4 < _local6.data.medalsEarned.length) {
						_local14++;
						if (_local6.data.medalsEarned[_local4] == 1){
							_local15++;
						};
						_local4++;
					};
				};
				_local16 = ((_local9 / _local8) * 25);
				_local17 = ((_local11 / _local10) * 25);
				_local18 = ((_local13 / _local12) * 25);
				_local19 = 0;
				if (_local14 > 0){
					_local19 = ((_local15 / _local14) * 25);
				};
				_local20 = (("Slot " + _arg1) + ": ");
				_local20 = (_local20 + (((("Areas: " + _local9) + "/") + _local8) + ". "));
				_local20 = (_local20 + (((("Treasures: " + _local11) + "/") + _local10) + ". "));
				_local20 = (_local20 + (((("Challenges: " + _local13) + "/") + _local12) + ". "));
				_local20 = (_local20 + (((("Badges: " + _local15) + "/") + _local14) + ". "));
				_local21 = (String(Math.floor((((_local16 + _local17) + _local18) + _local19))) + "%");
				_local3.completion = _local21;
				_local3.areasCompleted = _local9;
			};
			return (_local3);
		}
		public function hasEarnedEverything():Boolean{
			var _local1:UserData = this;
			var _local2:Number = _local1.getCompletionPercentage();
			if (_local2 == 100){
				return (true);
			};
			return (false);
		}
		public function getCompletionPercentage():Number{
			var _local10:Number;
			var _local11:Number;
			var _local1:UserData = this;
			var _local2:Number = 0;
			var _local3:Number = 0;
			var _local4:Number = 0;
			var _local5:Number = 0;
			var _local6:Number = 0;
			var _local7:Number = 0;
			var _local8:Number = 0;
			var _local9:Number = 0;
			_local10 = 0;
			while (_local10 < _local1.highScores.length) {
				_local2++;
				if (_local1.highScores[_local10] > 0){
					_local3++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local1.treasuresUnlocked.length) {
				_local11 = 0;
				while (_local11 < _local1.treasuresUnlocked[_local10].length) {
					_local4++;
					_local5 = (_local5 + _local1.treasuresUnlocked[_local10][_local11]);
					_local11++;
				};
				_local10++;
			};
			_local10 = 0;
			while (_local10 < _local1.challengesCompleted.length) {
				_local11 = 0;
				while (_local11 < _local1.challengesCompleted[_local10].length) {
					_local6++;
					_local7 = (_local7 + _local1.challengesCompleted[_local10][_local11]);
					_local11++;
				};
				_local10++;
			};
			if (_local1.medalsEarned.length > 0){
				_local10 = 0;
				while (_local10 < _local1.medalsEarned.length) {
					_local8++;
					if (_local1.medalsEarned[_local10] == 1){
						_local9++;
					};
					_local10++;
				};
			};
			var _local12:Number = ((_local3 / _local2) * 25);
			var _local13:Number = ((_local5 / _local4) * 25);
			var _local14:Number = ((_local7 / _local6) * 25);
			var _local15:Number = 0;
			if (_local8 > 0){
				_local15 = ((_local9 / _local8) * 25);
			};
			var _local16:Number = Math.floor((((_local12 + _local13) + _local14) + _local15));
			return (_local16);
		}
		public function createNewSlot(_arg1:Number, _arg2:String, _arg3:String="cactus"){
			var _local4:UserData = this;
			_local4.gameObj.challengeManager.resetAllTallies();
			_local4.whichSlot = _arg1;
			_local4.totalScore.setValue(0);
			_local4.totalMoney.setValue(0);
			_local4.totalLives.setValue(_local4.startingLives.value);
			_local4.totalTimePlayed.setValue(0);
			_local4.playerName = _arg2;
			_local4.whichCharacter = _arg3;
			_local4.areasUnlocked = [1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			_local4.highScores = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			_local4.bestTimes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			_local4.treasuresUnlocked = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]];
			_local4.challengesCompleted = [[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]];
			_local4.medalsEarned = [];
			_local4.medalProgress = [];
			_local4.upgradeLevels = [1, 1, 1, 1, 1];
			_local4.totalKillsPerWeapon = [];
			_local4.alreadyEarned100 = false;
			_local4.keyCodeLeft = _local4.defaultKeyCodeLeft;
			_local4.keyCodeRight = _local4.defaultKeyCodeRight;
			_local4.keyCodeUp = _local4.defaultKeyCodeUp;
			_local4.keyCodeDown = _local4.defaultKeyCodeDown;
			_local4.keyCodeJump = _local4.defaultKeyCodeJump;
			_local4.keyCodeAttack = _local4.defaultKeyCodeAttack;
			_local4.keyCodeDrop = _local4.defaultKeyCodeDrop;
			_local4.checkForCheats(_arg2);
			_local4.saveProgress();
			_local4.clearTallies();
		}
		public function loadData(_arg1:Number){
			var _local2:UserData = this;
			_local2.whichSlot = _arg1;
			_local2.gameObj.challengeManager.resetAllTallies();
			var _local3:SharedObject = SharedObject.getLocal((saveSlotPrefix + _arg1), "/");
			if (_local3.data.playerName){
				_local2.playerName = _local3.data.playerName;
				_local2.whichCharacter = _local3.data.whichCharacter;
				_local2.totalScore.setValue(_local3.data.totalScore);
				_local2.totalMoney.setValue(_local3.data.totalMoney);
				_local2.totalLives.setValue(_local3.data.totalLives);
				_local2.areasUnlocked = _local3.data.areasUnlocked.concat();
				_local2.highScores = _local3.data.highScores.concat();
				_local2.treasuresUnlocked = ArrayUtility.copyMultiArray(_local3.data.treasuresUnlocked);
				_local2.challengesCompleted = ArrayUtility.copyMultiArray(_local3.data.challengesCompleted);
				_local2.medalsEarned = _local3.data.medalsEarned.concat();
				if (_local3.data.bestTimes){
					_local2.bestTimes = _local3.data.bestTimes.concat();
				} else {
					_local2.bestTimes = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
				};
				if (_local3.data.medalProgress){
					_local2.medalProgress = _local3.data.medalProgress.concat();
				} else {
					_local2.medalProgress = [];
				};
				if (_local3.data.totalKillsPerWeapon){
					_local2.totalKillsPerWeapon = _local3.data.totalKillsPerWeapon.concat();
				} else {
					_local2.totalKillsPerWeapon = [];
				};
				if (_local3.data.upgradeLevels){
					_local2.upgradeLevels = _local3.data.upgradeLevels.concat();
				} else {
					_local2.upgradeLevels = [1, 1, 1, 1, 1];
				};
				if (_local2.totalLives.value < 0){
					_local2.totalLives.setValue(_local2.startingLives.value);
				};
				if (_local3.data.keyCodeLeft){
					_local2.keyCodeLeft = _local3.data.keyCodeLeft;
					_local2.keyCodeRight = _local3.data.keyCodeRight;
					_local2.keyCodeUp = _local3.data.keyCodeUp;
					_local2.keyCodeDown = _local3.data.keyCodeDown;
					_local2.keyCodeJump = _local3.data.keyCodeJump;
					_local2.keyCodeAttack = _local3.data.keyCodeAttack;
					_local2.keyCodeDrop = _local3.data.keyCodeDrop;
				} else {
					_local2.keyCodeLeft = _local2.defaultKeyCodeLeft;
					_local2.keyCodeRight = _local2.defaultKeyCodeRight;
					_local2.keyCodeUp = _local2.defaultKeyCodeUp;
					_local2.keyCodeDown = _local2.defaultKeyCodeDown;
					_local2.keyCodeJump = _local2.defaultKeyCodeJump;
					_local2.keyCodeAttack = _local2.defaultKeyCodeAttack;
					_local2.keyCodeDrop = _local2.defaultKeyCodeDrop;
				};
				if (_local3.data.totalTime){
					_local2.totalTimePlayed.setValue(_local3.data.totalTime);
				} else {
					_local2.totalTimePlayed.setValue(0);
				};
				_local2.gameObj.challengeManager.populateMedalProgress(_local2.medalProgress);
				if (_local2.hasEarnedEverything()){
					_local2.alreadyEarned100 = true;
				} else {
					_local2.alreadyEarned100 = false;
				};
			} else {
				_local2.createNewSlot(_arg1, "McCoy");
			};
			_local2.clearTallies();
		}
		public function saveProgress(_arg1:String="all"){
			var saveType = _arg1;
			var ob:UserData = this;
			var so:SharedObject = SharedObject.getLocal((saveSlotPrefix + ob.whichSlot), "/");
			if (saveType == "all"){
				so.data.playerName = ob.playerName;
				so.data.whichCharacter = ob.whichCharacter;
				so.data.totalScore = ob.totalScore.value;
				so.data.totalMoney = ob.totalMoney.value;
				so.data.totalLives = ob.totalLives.value;
				so.data.totalTime = ob.totalTimePlayed.value;
				so.data.areasUnlocked = ob.areasUnlocked.concat();
				so.data.highScores = ob.highScores.concat();
				so.data.bestTimes = ob.bestTimes.concat();
				so.data.treasuresUnlocked = ArrayUtility.copyMultiArray(ob.treasuresUnlocked);
				so.data.challengesCompleted = ArrayUtility.copyMultiArray(ob.challengesCompleted);
				so.data.medalsEarned = ob.medalsEarned.concat();
				so.data.medalProgress = ob.gameObj.challengeManager.getMedalProgressArray();
				so.data.upgradeLevels = ob.upgradeLevels.concat();
				so.data.totalKillsPerWeapon = ob.totalKillsPerWeapon.concat();
				so.data.keyCodeLeft = ob.keyCodeLeft;
				so.data.keyCodeRight = ob.keyCodeRight;
				so.data.keyCodeUp = ob.keyCodeUp;
				so.data.keyCodeDown = ob.keyCodeDown;
				so.data.keyCodeJump = ob.keyCodeJump;
				so.data.keyCodeAttack = ob.keyCodeAttack;
				so.data.keyCodeDrop = ob.keyCodeDrop;
			} else {
				if (saveType == "quitlevel"){
					so.data.playerName = ob.playerName;
					so.data.whichCharacter = ob.whichCharacter;
					so.data.totalScore = ob.totalScore.value;
					so.data.totalMoney = ob.totalMoney.value;
					so.data.totalLives = ob.totalLives.value;
					so.data.treasuresUnlocked = ArrayUtility.copyMultiArray(ob.treasuresUnlocked);
					so.data.challengesCompleted = ArrayUtility.copyMultiArray(ob.challengesCompleted);
					so.data.medalsEarned = ob.medalsEarned.concat();
					so.data.medalProgress = ob.gameObj.challengeManager.getMedalProgressArray();
					so.data.upgradeLevels = ob.upgradeLevels.concat();
					so.data.totalKillsPerWeapon = ob.totalKillsPerWeapon.concat();
				} else {
					if (saveType == "time"){
						so.data.totalTime = ob.totalTimePlayed.value;
					} else {
						if (saveType == "badge"){
							so.data.medalsEarned = ob.medalsEarned.concat();
							so.data.medalProgress = ob.gameObj.challengeManager.getMedalProgressArray();
							so.data.totalKillsPerWeapon = ob.totalKillsPerWeapon.concat();
							so.data.totalMoney = ob.totalMoney.value;
						} else {
							if ((((saveType == "treasure")) || ((saveType == "challenge")))){
								so.data.treasuresUnlocked = ArrayUtility.copyMultiArray(ob.treasuresUnlocked);
								so.data.challengesCompleted = ArrayUtility.copyMultiArray(ob.challengesCompleted);
							} else {
								if (saveType == "controls"){
									so.data.keyCodeLeft = ob.keyCodeLeft;
									so.data.keyCodeRight = ob.keyCodeRight;
									so.data.keyCodeUp = ob.keyCodeUp;
									so.data.keyCodeDown = ob.keyCodeDown;
									so.data.keyCodeJump = ob.keyCodeJump;
									so.data.keyCodeAttack = ob.keyCodeAttack;
									so.data.keyCodeDrop = ob.keyCodeDrop;
								};
							};
						};
					};
				};
			};
			try {
				so.flush();
			} catch(err) {
			};
		}
		public function checkForCheats(_arg1:String){
			var _local3:Number;
			var _local4:Number;
			var _local2:UserData = this;
			if (_arg1 == "unlocklevels"){
				_local3 = 0;
				while (_local3 < 12) {
					_local2.areasUnlocked[_local3] = 1;
					_local2.highScores[_local3] = 55;
					_local3++;
				};
				_local2.totalMoney.setValue(100000);
			} else {
				if (_arg1 == "alltreasures"){
					_local3 = 0;
					while (_local3 < 12) {
						_local2.areasUnlocked[_local3] = 1;
						_local2.highScores[_local3] = 55;
						_local2.treasuresUnlocked[_local3] = [1, 1, 1, 1, 1];
						_local3++;
					};
					_local2.totalMoney.setValue(100000);
				} else {
					if (_arg1 == "allchallenges"){
						_local3 = 0;
						while (_local3 < 12) {
							_local2.areasUnlocked[_local3] = 1;
							_local2.highScores[_local3] = 55;
							_local2.challengesCompleted[_local3] = [1, 1, 1, 1, 1];
							_local3++;
						};
						_local2.totalMoney.setValue(100000);
					} else {
						if (_arg1 == "alleverything"){
							_local3 = 0;
							while (_local3 < 12) {
								_local2.areasUnlocked[_local3] = 1;
								_local2.treasuresUnlocked[_local3] = [1, 1, 1, 1, 1];
								_local2.challengesCompleted[_local3] = [1, 1, 1, 1, 1];
								_local2.highScores[_local3] = 55;
								_local3++;
							};
							_local2.medalsEarned = [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1];
							_local2.upgradeLevels = [6, 6, 6, 6, 6];
							_local2.totalMoney.setValue(100000);
						};
					};
				};
			};
		}
		public function eraseSlot(_arg1:Number){
			var _local2:UserData = this;
			var _local3:SharedObject = SharedObject.getLocal((saveSlotPrefix + _arg1), "/");
			_local3.clear();
		}
		public function getUpgradeLevel(_arg1:String=null, _arg2:Number=-1){
			var _local3:UserData = this;
			var _local4:Number = 1;
			if ((((((_arg1 == "punching")) || ((_arg1 == "gloves")))) || ((_arg1 == "none")))){
				_local4 = _local3.upgradeLevels[0];
			} else {
				if ((((((((_arg1 == "swinging")) || ((_arg1 == "weapon1")))) || ((_arg1 == "weapon2")))) || ((_arg1 == "weapon2b")))){
					_local4 = _local3.upgradeLevels[1];
				} else {
					if ((((((((((_arg1 == "shooting")) || ((_arg1 == "pistol")))) || ((_arg1 == "longgun")))) || ((_arg1 == "bazooka")))) || ((_arg1 == "gatling")))){
						_local4 = _local3.upgradeLevels[2];
					} else {
						if ((((((((_arg1 == "throwing")) || ((_arg1 == "toss")))) || ((_arg1 == "throw")))) || ((_arg1 == "object")))){
							_local4 = _local3.upgradeLevels[3];
						} else {
							if ((((_arg1 == "whipping")) || ((_arg1 == "whip")))){
								_local4 = _local3.upgradeLevels[4];
							} else {
								if ((((_arg1 == "")) || ((((((_arg1 == null)) && ((_arg2 > -1)))) && ((_arg2 < _local3.upgradeLevels.length)))))){
									_local4 = _local3.upgradeLevels[_arg2];
								};
							};
						};
					};
				};
			};
			return (_local4);
		}
		public function upgradeStat(_arg1:String, _arg2:Boolean=true):Boolean{
			var whichType = _arg1;
			var deductMoney = _arg2;
			var ob:UserData = this;
			var success:Boolean;
			var cost:Number = ob.gameObj.dataManager.getUpgradeCost(whichType, (ob.getUpgradeLevel(whichType) + 1));
			if ((((cost > 0)) && ((ob.getTotalMoney() >= cost)))){
				if (whichType == "punching"){
					ob.upgradeLevels[0] = (ob.upgradeLevels[0] + 1);
				} else {
					if (whichType == "swinging"){
						ob.upgradeLevels[1] = (ob.upgradeLevels[1] + 1);
					} else {
						if (whichType == "shooting"){
							ob.upgradeLevels[2] = (ob.upgradeLevels[2] + 1);
						} else {
							if (whichType == "throwing"){
								ob.upgradeLevels[3] = (ob.upgradeLevels[3] + 1);
							} else {
								if (whichType == "whipping"){
									ob.upgradeLevels[4] = (ob.upgradeLevels[4] + 1);
								};
							};
						};
					};
				};
				if (deductMoney){
					ob.totalMoney.setValue((ob.totalMoney.value - cost));
				};
				ob.saveProgress();
				success = true;
				try {
					ob.gameObj.challengeManager.checkCustomChallenges("upgrades");
				} catch(err) {
				};
				if (((!(ob.alreadyEarned100)) && (ob.hasEarnedEverything()))){
					ob.gameObj.apiHelper.api.trackCustomMetric("100 Percent Complete", "Gameplay", true);
					ob.alreadyEarned100 = true;
				};
			};
			return (success);
		}
		public function saveEnemyKill(_arg1:Number, _arg2:String, _arg3:String, _arg4:Number, _arg5:Array, _arg6:Array){
			var _local7:UserData = this;
			var _local8:Number = _local7.gameObj.itemManager.weaponNameToID(_arg3);
			_local7.killsTally++;
			if (_local8 != -1){
				if ((((_local7.killsPerWeapon.length > _local8)) && ((_local7.killsPerWeapon[_local8] is Number)))){
					_local7.killsPerWeapon[_local8] = (_local7.killsPerWeapon[_local8] + 1);
				} else {
					_local7.killsPerWeapon[_local8] = 1;
				};
				if ((((_local7.totalKillsPerWeapon.length > _local8)) && ((_local7.totalKillsPerWeapon[_local8] is Number)))){
					_local7.totalKillsPerWeapon[_local8] = (_local7.totalKillsPerWeapon[_local8] + 1);
				} else {
					_local7.totalKillsPerWeapon[_local8] = 1;
				};
			};
			_local7.gameObj.challengeManager.recordEnemyKill(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6);
		}
		public function setKey(_arg1:Number, _arg2:String):Boolean{
			var _local3:UserData = this;
			var _local4:Boolean;
			var _local5:Boolean;
			if ((((_local3.keyCodeAttack == _arg1)) && (!((_arg2 == "attack"))))){
				_local4 = true;
			} else {
				if ((((_local3.keyCodeJump == _arg1)) && (!((_arg2 == "jump"))))){
					_local4 = true;
				} else {
					if ((((_local3.keyCodeDrop == _arg1)) && (!((_arg2 == "drop"))))){
						_local4 = true;
					} else {
						if ((((_local3.keyCodeDown == _arg1)) && (!((_arg2 == "down"))))){
							_local4 = true;
						} else {
							if ((((_local3.keyCodeUp == _arg1)) && (!((_arg2 == "up"))))){
								_local4 = true;
							} else {
								if ((((_local3.keyCodeLeft == _arg1)) && (!((_arg2 == "left"))))){
									_local4 = true;
								} else {
									if ((((_local3.keyCodeRight == _arg1)) && (!((_arg2 == "right"))))){
										_local4 = true;
									};
								};
							};
						};
					};
				};
			};
			if (!_local4){
				if (_arg2 == "attack"){
					_local3.keyCodeAttack = _arg1;
				} else {
					if (_arg2 == "jump"){
						_local3.keyCodeJump = _arg1;
					} else {
						if (_arg2 == "drop"){
							_local3.keyCodeDrop = _arg1;
						} else {
							if (_arg2 == "down"){
								_local3.keyCodeDown = _arg1;
							} else {
								if (_arg2 == "up"){
									_local3.keyCodeUp = _arg1;
								} else {
									if (_arg2 == "left"){
										_local3.keyCodeLeft = _arg1;
									} else {
										if (_arg2 == "right"){
											_local3.keyCodeRight = _arg1;
										};
									};
								};
							};
						};
					};
				};
				_local3.saveProgress("controls");
				_local5 = true;
			} else {
				_local5 = false;
			};
			return (_local5);
		}

	}
}//package cactusGame.data 

****************

//WorldData (cactusGame.data.WorldData)
package cactusGame.data {
	import cactusGame.core.*;

	public class WorldData {

		public var gameObj:GameModule;
		public var worldID:Number;
		public var worldDoorArray:Array;
		public var worldEventArray:Array;
		public var worldStateArray:Array;
		public var worldStartRoom:Number;
		public var roomNameArray:Array;
		public var worldRoomArray:Array;
		public var worldTitle:String;
		public var tileset:Number;
		public var soundLibrary:String;
		public var soundTrack:String;
		public var mapArray:Array;
		public var mapProgressArray:Array;
		public var roomIDArray:Array;

		public function WorldData(_arg1:GameModule, _arg2:XML){
			roomIDArray = [];
			super();
			var _local3:WorldData = this;
			_local3.gameObj = _arg1;
			_local3.populateData(_arg2);
		}
		public function populateData(_arg1:XML){
			var _local3:*;
			var _local4:*;
			var _local2:WorldData = this;
			_local2.worldDoorArray = [];
			_local2.worldEventArray = [];
			_local2.worldStateArray = [];
			_local2.worldRoomArray = [];
			_local2.roomNameArray = [];
			_local2.mapArray = [];
			_local2.mapProgressArray = [];
			_local2.worldID = Number(_arg1.worldID);
			_local2.worldTitle = String(_arg1.worldTitle);
			if (_arg1.startRoom != ""){
				_local2.worldStartRoom = (Number(_arg1.startRoom) - 1);
			};
			var _local5:Array = String(_arg1.mapArray).split("|");
			_local3 = 0;
			while (_local3 < _local5.length) {
				_local2.mapArray[_local3] = _local5[_local3].split(",");
				_local3++;
			};
			_local3 = 0;
			while (_local3 < _local2.mapArray.length) {
				_local4 = 0;
				while (_local4 < _local2.mapArray[_local3].length) {
					_local2.mapArray[_local3][_local4] = Number(_local2.mapArray[_local3][_local4]);
					_local4++;
				};
				_local3++;
			};
			var _local6:Array = String(_arg1.roomArray).split("|");
			var _local7:* = 0;
			while (_local7 < _local6.length) {
				_local2.worldRoomArray[_local7] = _local6[_local7].split(",");
				_local2.mapProgressArray[_local7] = 0;
				_local7++;
			};
			_local3 = 0;
			while (_local3 < _local2.worldRoomArray.length) {
				_local4 = 0;
				while (_local4 < _local2.worldRoomArray[_local3].length) {
					_local2.worldRoomArray[_local3][_local4] = Number(_local2.worldRoomArray[_local3][_local4]);
					_local4++;
				};
				_local3++;
			};
			var _local8:Array = String(_arg1.nameArray).split(",");
			_local2.roomNameArray = _local8.concat();
			var _local9:Array = String(_arg1.doorArray).split("|");
			_local3 = 0;
			while (_local3 < _local9.length) {
				_local2.worldDoorArray[_local3] = _local9[_local3].split(",");
				_local3++;
			};
			_local3 = 0;
			while (_local3 < _local2.worldDoorArray.length) {
				_local4 = 0;
				while (_local4 < _local2.worldDoorArray[_local3].length) {
					_local2.worldDoorArray[_local3][_local4] = Number(_local2.worldDoorArray[_local3][_local4]);
					_local4++;
				};
				_local3++;
			};
			if (_arg1.doorArray == ""){
				_local2.worldDoorArray = [];
			};
			var _local10:Array = String(_arg1.stateArray).split("|");
			_local3 = 0;
			while (_local3 < _local10.length) {
				_local2.worldStateArray[_local3] = _local10[_local3].split(",");
				_local3++;
			};
			_local3 = 0;
			while (_local3 < _local2.worldStateArray.length) {
				_local4 = 0;
				while (_local4 < _local2.worldStateArray[_local3].length) {
					if (_local4 >= 5){
						_local2.worldStateArray[_local3][_local4] = String(_local2.worldStateArray[_local3][_local4]);
					} else {
						_local2.worldStateArray[_local3][_local4] = Number(_local2.worldStateArray[_local3][_local4]);
					};
					_local4++;
				};
				_local3++;
			};
			if (String(_arg1.stateArray) == ""){
				_local2.worldStateArray = [];
			};
			var _local11:Array = String(_arg1.eventArray).split("|");
			_local3 = 0;
			while (_local3 < _local11.length) {
				_local2.worldEventArray[_local3] = _local11[_local3].split(",");
				_local3++;
			};
			_local3 = 0;
			while (_local3 < _local2.worldEventArray.length) {
				_local4 = 0;
				while (_local4 < _local2.worldEventArray[_local3].length) {
					_local2.worldEventArray[_local3][_local4] = Number(_local2.worldEventArray[_local3][_local4]);
					_local4++;
				};
				_local3++;
			};
			if (_arg1.worldEventArray == ""){
				_local2.worldEventArray = [];
			};
		}
		public function destroy(){
			mapArray = null;
			mapProgressArray = null;
			roomIDArray = null;
			roomNameArray = null;
			worldDoorArray = null;
			worldEventArray = null;
			worldRoomArray = null;
			worldStateArray = null;
		}
		public function getWorldRoomIDs():Array{
			var _local1:WorldData = this;
			var _local2:Array = [];
			var _local3:* = 0;
			while (_local3 < _local1.worldRoomArray.length) {
				_local2.push(_local1.worldRoomArray[_local3][6]);
				_local3++;
			};
			return (_local2);
		}
		public function getDoorArray(_arg1:Number, _arg2:Number):Array{
			var _local3:WorldData = this;
			var _local4:Array;
			var _local5:Array = _local3.gameObj.dataManager.currentScreens[_arg1].doorArray[_arg2];
			var _local6:* = 0;
			while (_local6 < _local3.worldDoorArray.length) {
				if ((((_local3.worldDoorArray[_local6][0] == (_arg1 + 1))) && ((_local3.worldDoorArray[_local6][1] == _arg2)))){
					_local4 = [_local3.worldDoorArray[_local6][2], _local3.worldDoorArray[_local6][3], _local5[2], _local5[3], _local5[4], _local5[5]];
					break;
				} else {
					if ((((_local3.worldDoorArray[_local6][2] == (_arg1 + 1))) && ((_local3.worldDoorArray[_local6][3] == _arg2)))){
						_local4 = [_local3.worldDoorArray[_local6][0], _local3.worldDoorArray[_local6][1], _local5[2], _local5[3], _local5[4], _local5[5]];
						break;
					};
				};
				_local6++;
			};
			return (_local4);
		}

	}
}//package cactusGame.data 

****************

//GameCam (cactusGame.display.GameCam)
package cactusGame.display {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.events.*;

	public class GameCam {

		public var gameObj:GameModule;
		public var x:Number;// = 240
		public var y:Number;// = 672
		public var targetX:Number;// = 240
		public var targetY:Number;// = 672
		public var mouseLookX:Number;// = 240
		public var mouseLookY:Number;// = 672
		public var mouseTargetX:Number;
		public var mouseTargetY:Number;
		public var mouseRealX:Number;
		public var mouseRealY:Number;
		public var chasesteps:Number;// = 2
		public var lockchasesteps:Number;// = 8
		public var pansteps:Number;// = 8
		public var prepanx:Number;// = 0
		public var prepany:Number;// = 0
		public var panstartdelay:Number;// = 15
		public var currstartdelay:Number;// = 0
		public var panenddelay:Number;// = 15
		public var currenddelay:Number;// = 0
		public var jiggle:Boolean;// = false
		public var jiggleamount:Number;// = 0
		public var jiggleduration:Number;// = 0
		public var currentjiggle:Number;// = 0
		public var lastjigglex:Number;// = 1
		public var lastjiggley:Number;// = 1
		public var jiggleTrainAmount:Number;// = 4
		public var jiggleTrainDelay:Number;// = 0
		public var jiggleTrainDelayMax:Number;// = 8
		public var jiggleTrainDelayShort:Number;// = 8
		public var jiggleTrainDelayLong:Number;// = 45
		public var min_x:Number;
		public var max_x:Number;
		public var min_y:Number;
		public var max_y:Number;
		public var last_x:Number;// = 0
		public var last_y:Number;// = 0
		public var mouseRatioToScreen:Number;// = 4
		public var screenbounds_offsetX:Number;
		public var screenbounds_offsetY:Number;
		public var screenbounds_minx:Number;
		public var screenbounds_maxx:Number;
		public var screenbounds_miny:Number;
		public var screenbounds_maxy:Number;
		public var mousePanSpeed:Number;// = 10
		public var cameraOffset:Number;// = 0
		public var maxCameraOffset:Number;// = 160
		public var waitingInPanBoundsTime:Number;// = 0
		public var waitingInPanBoundsTimeMax:Number;// = 3
		public var lockedCamera:Boolean;// = false
		public var wasLockedCamera:Boolean;// = false
		public var lockStoppingPlayer:Boolean;// = false
		public var lockTargetX:Number;// = 0
		public var lockTargetY:Number;// = 0

		public function GameCam(_arg1){
			var _local2:GameCam = this;
			_local2.gameObj = _arg1;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			_local3.getCamera(_local2);
		}
		public function setCameraJiggle(_arg1, _arg2){
			var _local3:GameCam = this;
			_local3.jiggle = true;
			_local3.jiggleamount = _arg1;
			_local3.jiggleduration = _arg2;
			_local3.currentjiggle = 0;
		}
		public function setCameraLock(_arg1:Number, _arg2:Number, _arg3:Boolean=true){
			var _local4:GameCam = this;
			var _local5:GameDisplay = _local4.gameObj.gameDisplay;
			_local4.lockTargetX = ((_arg1 + Math.floor((_local5.screenTileWidth / 2))) * _local5.tileWidth);
			_local4.lockTargetY = ((_arg2 + Math.floor((_local5.screenTileHeight / 2))) * _local5.tileWidth);
			_local4.lockedCamera = true;
			if (_arg3){
				_local4.lockStoppingPlayer = true;
				_local4.gameObj.gameControls.stopActionControls = true;
				_local4.gameObj.playerObj.isWalking = false;
			};
		}
		public function unlockCamera(){
			var _local1:GameCam = this;
			_local1.wasLockedCamera = true;
			_local1.lockedCamera = false;
		}
		public function jiggleCamera(){
			var _local1:GameCam = this;
			var _local2:Boolean = _local1.gameObj.dataManager.isOnTrain();
			_local1.currentjiggle++;
			if (_local1.currentjiggle > _local1.jiggleduration){
				_local1.jiggle = false;
			};
			var _local3:Number = (_local1.jiggleamount - _local1.currentjiggle);
			_local3 = Math.max(1, _local3);
			if (((!(_local1.jiggle)) && (_local2))){
				if (_local1.jiggleamount != 0){
					_local1.jiggleamount--;
				};
				if (_local1.jiggleamount <= (0 - _local1.jiggleTrainAmount)){
					_local1.jiggleamount = _local1.jiggleTrainAmount;
					_local3 = _local1.jiggleamount;
				} else {
					if (_local1.jiggleamount == 0){
						_local3 = 0;
						_local1.jiggleTrainDelay++;
						if (_local1.jiggleTrainDelay >= _local1.jiggleTrainDelayMax){
							_local1.jiggleTrainDelay = 0;
							_local1.jiggleamount--;
							if (_local1.jiggleTrainDelayMax == _local1.jiggleTrainDelayShort){
								_local1.jiggleTrainDelayMax = _local1.jiggleTrainDelayLong;
							} else {
								_local1.jiggleTrainDelayMax = _local1.jiggleTrainDelayShort;
							};
						};
					} else {
						_local3 = Math.abs(_local1.jiggleamount);
						if (_local1.jiggleamount < 0){
							_local1.lastjiggley = -1;
						} else {
							_local1.lastjiggley = 1;
						};
					};
				};
			};
			if (_local1.lastjiggley < 0){
				_local1.y = (_local1.y + _local3);
				_local1.lastjiggley = 1;
			} else {
				_local1.y = (_local1.y - _local3);
				_local1.lastjiggley = -1;
			};
			if (_local1.jiggle){
				_local1.x = (_local1.x + (Math.floor((Math.random() * 3)) - 1));
			};
		}
		public function setCameraBounds(){
			var _local1:GameCam = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:DataManager = _local2.dataManager;
			var _local4:GameDisplay = _local1.gameObj.gameDisplay;
			var _local5:Number = (_local3.currentScreenData.tileArray[0].length * _local2.gameDisplay.tileWidth);
			var _local6:Number = (_local3.currentScreenData.tileArray.length * _local4.tileWidth);
			_local1.min_x = (0 + ((_local4.centerXtile - 1) * _local4.tileWidth));
			_local1.min_y = (0 + ((_local4.centerYtile - 1) * _local4.tileWidth));
			_local1.max_x = (((_local5 - _local4.screen_Xoffset) - (_local4.tileWidth / 2)) - 1);
			_local1.max_y = ((_local6 - _local4.screen_Yoffset) - (_local4.tileWidth / 2));
			_local1.screenbounds_offsetX = 0;
			_local1.screenbounds_offsetY = 0;
			_local1.screenbounds_minx = (0 + _local1.screenbounds_offsetX);
			_local1.screenbounds_miny = (0 + _local1.screenbounds_offsetY);
			_local1.screenbounds_maxx = (_local2.gameStage.stageWidth - _local1.screenbounds_offsetX);
			_local1.screenbounds_maxy = (_local2.gameStage.stageHeight - _local1.screenbounds_offsetY);
			_local1.x = 240;
			_local1.y = 672;
			_local1.targetX = 240;
			_local1.targetY = 672;
			_local1.wasLockedCamera = false;
			_local4.defineScreenBounds();
		}
		public function offsetCamera(_arg1:Number=0, _arg2:Number=0){
			var _local3:GameCam = this;
			if (_arg1 != 0){
				if ((((_arg1 == 1)) && ((_local3.cameraOffset == 0)))){
					_local3.cameraOffset = _local3.maxCameraOffset;
				} else {
					if ((((_arg1 == 1)) && ((_local3.cameraOffset < 0)))){
						_local3.cameraOffset = 0;
					} else {
						if ((((_arg1 == -1)) && ((_local3.cameraOffset == 0)))){
							_local3.cameraOffset = (_local3.maxCameraOffset * -1);
						} else {
							if ((((_arg1 == -1)) && ((_local3.cameraOffset > 0)))){
								_local3.cameraOffset = 0;
							};
						};
					};
				};
			} else {
				if (_arg2 != 0){
					if (_arg2 == 1){
						_local3.cameraOffset = (_local3.maxCameraOffset * -1);
					} else {
						if (_arg2 == 2){
							_local3.cameraOffset = -90;
						} else {
							if (_arg2 == 3){
								_local3.cameraOffset = _local3.maxCameraOffset;
							};
						};
					};
				};
			};
		}
		public function adjustCamera(_arg1, _arg2:Boolean=false){
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local3:GameCam = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:GameDisplay = _local4.gameDisplay;
			var _local6:Number = _local3.mouseRatioToScreen;
			var _local7:Number = 1;
			var _local8:* = Math.floor;
			var _local9:Number = ((_local5.screenPxWidth - (_local5.screenPxWidth / _local6)) / 2);
			var _local10:Number = ((_local5.screenPxHeight - (_local5.screenPxHeight / _local7)) / 2);
			var _local11:Number = _local4.hudObj.gameplayClip.mouseX;
			var _local12:Number = _local4.hudObj.gameplayClip.mouseY;
			var _local13:Number = _local3.cameraOffset;
			if (_local13 < (_local3.maxCameraOffset * -1)){
				_local13 = (_local3.maxCameraOffset * -1);
			} else {
				if (_local13 > _local3.maxCameraOffset){
					_local13 = _local3.maxCameraOffset;
				};
			};
			if (_local11 < _local3.screenbounds_minx){
				_local11 = _local3.screenbounds_minx;
			};
			if (_local11 > _local3.screenbounds_maxx){
				_local11 = _local3.screenbounds_maxx;
			};
			if (_local12 < _local3.screenbounds_miny){
				_local12 = _local3.screenbounds_miny;
			};
			if (_local12 > _local3.screenbounds_maxy){
				_local12 = _local3.screenbounds_maxy;
			};
			_local11 = (_local11 - _local3.screenbounds_offsetX);
			_local12 = (_local12 - _local3.screenbounds_offsetY);
			_local3.mouseRealX = _local11;
			_local3.mouseRealY = _local12;
			var _local14:Number = ((_local11 / _local6) + _local9);
			var _local15:Number = ((_local12 / _local7) + _local10);
			if ((_arg1 is PlayerChar)){
				_local3.targetX = _arg1.x;
				_local3.targetY = (_arg1.y + _local13);
				if (((((PlayerChar(_arg1).jump) && ((PlayerChar(_arg1).jumpspeed >= 0)))) && ((_local3.targetY == _local3.max_y)))){
				} else {
					if (PlayerChar(_arg1).jump){
					} else {
						if (PlayerChar(_arg1).ytile >= 14){
						};
					};
				};
			} else {
				_local3.targetX = _arg1.x;
				_local3.targetY = (_arg1.y - 32);
			};
			if (_local3.lockedCamera){
				_local3.targetX = _local3.lockTargetX;
				_local3.targetY = _local3.lockTargetY;
			};
			var _local16:Number = 0;
			if (_local3.targetX > _local3.max_x){
				_local3.targetX = _local3.max_x;
			};
			if (_local3.targetX < _local3.min_x){
				_local3.targetX = _local3.min_x;
			};
			if (_local3.targetY > _local3.max_y){
				_local16 = (_local3.targetY - _local3.max_y);
				_local3.targetY = _local3.max_y;
			};
			if (_local3.targetY < _local3.min_y){
				_local16 = (_local3.min_y - _local3.targetY);
				_local3.targetY = _local3.min_y;
			};
			if (!_arg2){
				_local19 = (_local3.targetX - _local3.x);
				_local20 = (_local3.targetY - _local3.y);
				_local21 = Math.floor((_local19 / _local3.chasesteps));
				_local22 = Math.floor((_local20 / _local3.chasesteps));
				if (((((_local3.wasLockedCamera) && ((Math.abs(_local19) < 5)))) && ((Math.abs(_local20) < 5)))){
					_local3.wasLockedCamera = false;
				};
				if (((_local3.lockedCamera) || (_local3.wasLockedCamera))){
					_local21 = Math.floor((_local19 / _local3.lockchasesteps));
					_local22 = Math.floor((_local20 / _local3.lockchasesteps));
				};
				_local3.x = (_local3.x + _local21);
				_local3.y = (_local3.y + _local22);
				if (((((((_local3.lockedCamera) && (_local3.lockStoppingPlayer))) && ((Math.abs(_local21) < 3)))) && ((Math.abs(_local22) < 3)))){
					_local3.lockStoppingPlayer = false;
					_local3.gameObj.gameControls.stopActionControls = false;
				};
			} else {
				_local3.x = _local3.targetX;
				_local3.y = _local3.targetY;
			};
			var _local17:Number = (_local8(_local3.x) - (_local8((_local5.screenTileWidth / 2)) * _local5.tileWidth));
			var _local18:Number = (_local8(_local3.y) - (_local8((_local5.screenTileHeight / 2)) * _local5.tileWidth));
			_local3.mouseLookX = _local8((_local17 + _local11));
			_local3.mouseLookY = Math.min(_arg1.y, _local8((_local18 + _local12)));
			_local3.mouseTargetX = _local8((_local17 + _local11));
			_local3.mouseTargetY = _local8((_local18 + _local12));
			if (((_local3.jiggle) || (_local3.gameObj.dataManager.isOnTrain()))){
				_local3.jiggleCamera();
			};
			if (_local3.x > _local3.max_x){
				_local3.x = _local3.max_x;
			};
			if (_local3.x < _local3.min_x){
				_local3.x = _local3.min_x;
			};
			if (_local3.y > _local3.max_y){
				_local3.y = _local3.max_y;
			};
			if (_local3.y < _local3.min_y){
				_local3.y = _local3.min_y;
			};
			_local3.last_x = _local3.x;
			_local3.last_y = _local3.y;
		}
		public function withinPanBounds(_arg1:Number):Number{
			var _local2:GameCam = this;
			if (_arg1 < 32){
				_local2.waitingInPanBoundsTime++;
				if (_local2.waitingInPanBoundsTime >= _local2.waitingInPanBoundsTimeMax){
					return (-1);
				};
				return (0);
				//unresolved jump
			};
			if ((((_arg1 > 320)) && ((_arg1 < _local2.gameObj.gameDisplay.screenPxHeight)))){
				_local2.waitingInPanBoundsTime++;
				if (_local2.waitingInPanBoundsTime >= _local2.waitingInPanBoundsTimeMax){
					return (1);
				};
				return (0);
			} else {
				_local2.waitingInPanBoundsTime = 0;
			};
			return (!NULL!);
		}
		public function panCamera(_arg1, _arg2, _arg3, _arg4:Boolean=false){
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local5:GameCam = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:GameDisplay = _local6.gameDisplay;
			var _local8:* = _local5.mouseRatioToScreen;
			var _local9:* = Math.floor;
			var _local10:Number = _local6.gameStage.mouseX;
			var _local11:Number = _local6.gameStage.mouseY;
			if (_local10 < _local5.screenbounds_minx){
				_local10 = _local5.screenbounds_minx;
			};
			if (_local10 > _local5.screenbounds_maxx){
				_local10 = _local5.screenbounds_maxx;
			};
			if (_local11 < _local5.screenbounds_miny){
				_local11 = _local5.screenbounds_miny;
			};
			if (_local11 > _local5.screenbounds_maxy){
				_local11 = _local5.screenbounds_maxy;
			};
			_local10 = (_local10 - _local5.screenbounds_offsetX);
			_local11 = (_local11 - _local5.screenbounds_offsetY);
			_local5.mouseRealX = _local10;
			_local5.mouseRealY = _local11;
			_local5.targetX = _arg1;
			_local5.targetY = _arg2;
			if (_local5.targetX > _local5.max_x){
				_local5.targetX = _local5.max_x;
			};
			if (_local5.targetX < _local5.min_x){
				_local5.targetX = _local5.min_x;
			};
			if (_local5.targetY > _local5.max_y){
				_local5.targetY = _local5.max_y;
			};
			if (_local5.targetY < _local5.min_y){
				_local5.targetY = _local5.min_y;
			};
			if (!_arg4){
				_local14 = (_local5.targetX - _local5.x);
				_local15 = (_local5.targetY - _local5.y);
				_local16 = Math.floor((_local14 / _local5.pansteps));
				_local17 = Math.floor((_local15 / _local5.pansteps));
				_local5.currstartdelay++;
				if (_local5.currstartdelay >= _local5.panstartdelay){
					_local5.x = (_local5.x + _local16);
					_local5.y = (_local5.y + _local17);
				} else {
					if (_local5.currstartdelay == (_local5.panstartdelay - 1)){
						if (_arg3 == "player"){
						};
					};
				};
			} else {
				_local5.x = _local5.targetX;
				_local5.y = _local5.targetY;
			};
			if ((((_local16 == 0)) && ((_local17 == 0)))){
				_local5.currenddelay++;
				if ((((_local5.currenddelay == _local5.panenddelay)) || ((_arg3 == "player")))){
				};
			};
			var _local12:Number = (_local9(_local5.x) - (_local9((_local7.screenTileWidth / 2)) * _local7.tileWidth));
			var _local13:Number = (_local9(_local5.y) - (_local9((_local7.screenTileHeight / 2)) * _local7.tileWidth));
			_local5.mouseTargetX = _local9((_local12 + _local10));
			_local5.mouseTargetY = _local9((_local13 + _local11));
			if (_local5.jiggle){
				_local5.jiggleCamera();
			};
			if (_local5.x > _local5.max_x){
				_local5.x = _local5.max_x;
			};
			if (_local5.x < _local5.min_x){
				_local5.x = _local5.min_x;
			};
			if (_local5.y > _local5.max_y){
				_local5.y = _local5.max_y;
			};
			if (_local5.y < _local5.min_y){
				_local5.y = _local5.min_y;
			};
		}
		public function destroy(){
			var _local1:GameCam = this;
		}

	}
}//package cactusGame.display 

****************

//GameDisplay (cactusGame.display.GameDisplay)
package cactusGame.display {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.events.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;
	import cactusGame.models.enemies.*;

	public class GameDisplay {

		public var stopBlitting:Boolean;// = false
		public var showBounds:Boolean;// = false
		public var tileWidth:Number;// = 32
		public var screenTileWidth:Number;// = 19
		public var screenTileHeight:Number;// = 15
		public var bgScrollType:String;// = "scroll"
		public var bgScrollSpeedX:Number;// = 3
		public var bgScrollSpeedY:Number;// = 3
		public var clip:Bitmap;
		public var clipMC:MovieClip;
		public var clipX:Number;// = 0
		public var clipY:Number;// = 0
		public var tileSheet:BitmapData;
		public var playerSpriteSheet:BitmapData;
		public var bgSheet:BitmapData;
		public var mgSheet:BitmapData;
		public var tileSheetWidth:Number;// = 19
		public var tileSheetHeight:Number;// = 15
		public var screenBMP:BitmapData;
		public var currentLevel:Number;
		public var currentRoom:Number;
		public var gameObj:GameModule;
		public var camObj:GameCam;
		public var floor;
		public var ceil;
		public var centerXtile:Number;
		public var centerYtile:Number;
		public var screenPxWidth:Number;// = 608
		public var screenPxHeight:Number;// = 480
		public var bgWidth:Number;// = 608
		public var bgHeight:Number;// = 480
		public var screen_Xoffset:Number;
		public var screen_Yoffset:Number;
		public var levelPxWidth:Number;
		public var levelPxHeight:Number;
		public var levelTileWidth:Number;
		public var levelTileHeight:Number;
		public var levelTileArray:Array;
		public var levelMgArray:Array;
		public var levelFillerArray:Array;
		public var levelBackdrop:Number;
		public var levelFiller:Number;
		public var currentXtileLeft:Number;
		public var currentXtileRight:Number;
		public var currentYtileUp:Number;
		public var currentYtileDown:Number;
		public var currentXcoord:Number;// = 0
		public var currentYcoord:Number;// = 0
		public var checkOnScreenOffset:Number;// = 2
		public var spriteFlickerCounter:Number;// = 0
		public var spriteCoopFlickerCounter:Number;// = 0
		public var rightMostScreen:Number;// = -1
		public var skyScreenBMP:BitmapData;
		public var skyBitmap:Bitmap;
		public var cloudX:Number;// = 0
		public var cloudSpeed:Number;// = 1
		public var trainX:Number;// = 0
		public var trainSpeed:Number;// = 25
		public var tilesWidePerRow:Number;// = 90
		public var tilesHighPerRow:Number;// = 30
		public var isTransitioningIn:Boolean;// = false
		public var isTransitionOut:Boolean;// = false
		public var transitionX:Number;// = 0
		public var transitionSpeed:Number;// = 64
		public var deadIrisMC:MovieClip;

		public function GameDisplay(_arg1:GameModule){
			floor = Math.floor;
			ceil = Math.ceil;
			super();
			var _local2:GameDisplay = this;
			_local2.gameObj = _arg1;
			_local2.centerXtile = _local2.ceil((_local2.screenTileWidth / 2));
			_local2.centerYtile = _local2.ceil((_local2.screenTileHeight / 2));
			_local2.screenPxWidth = (_local2.screenTileWidth * _local2.tileWidth);
			_local2.screenPxHeight = (_local2.screenTileHeight * _local2.tileWidth);
			_local2.screen_Xoffset = ((_local2.centerXtile * _local2.tileWidth) - (_local2.tileWidth / 2));
			_local2.screen_Yoffset = ((_local2.centerYtile * _local2.tileWidth) - (_local2.tileWidth / 2));
			_local2.currentLevel = _local2.gameObj.dataManager.currentLevel;
		}
		public function getCamera(_arg1){
			var _local2:GameDisplay = this;
			_local2.camObj = _arg1;
		}
		public function setupBitmapDraw(){
			var _local1:GameDisplay = this;
			var _local2:GameModule = _local1.gameObj;
			_local2.bitmapManager.createPlayerSprite();
			if (_local1.screenBMP){
				_local1.screenBMP.dispose();
			};
			_local1.screenBMP = new BitmapData(_local1.screenPxWidth, _local1.screenPxHeight, true, 0xAAAAAA);
			_local1.clip = new Bitmap(_local1.screenBMP);
			_local1.clipMC = new MovieClip();
			_local1.clipMC.addChild(_local1.clip);
			_local2.hudObj.attachGameDisplay(_local1.clipMC);
		}
		public function setupPreBlit(){
			var _local1:GameDisplay = this;
			var _local2:DataManager = _local1.gameObj.dataManager;
			var _local3:BitmapManager = _local1.gameObj.bitmapManager;
			var _local4:Number = getTimer();
			var _local5:Number = 0;
			var _local6:ScreenData = _local2.currentScreenData;
			_local6.createBitmap();
			_local1.blitLevelTiles(_local6.tileArray, _local3.getTilesheetBitmap(_local6.whichTileset), _local6.tileBMP);
			_local5 = (_local5 + _local1.createBackground(_local6, _local6.whichTileset));
			_local1.currentXcoord = 0;
			_local1.currentYcoord = 0;
			var _local7:Number = getTimer();
		}
		public function switchRoomPreBlit(_arg1, _arg2){
		}
		public function reblitRectangle(_arg1, _arg2, _arg3, _arg4){
			var _local5:GameDisplay = this;
			var _local6:* = _local5.floor;
		}
		public function reblitAnimatedTile(_arg1, _arg2, _arg3){
		}
		public function createBackground(_arg1:ScreenData, _arg2:Number):Number{
			var _local3:GameDisplay = this;
			var _local4:BitmapManager = _local3.gameObj.bitmapManager;
			if (_local3.bgSheet){
				_local3.bgSheet.dispose();
			};
			if (_local3.mgSheet){
				_local3.mgSheet.dispose();
			};
			_local3.bgSheet = _local4.getBackgroundBitmap(_arg2);
			_local3.mgSheet = _local4.getMiddlegroundBitmap(_arg2);
			return (0);
		}
		public function blitLevelTiles(_arg1, _arg2, _arg3){
			var _local8:*;
			var _local9:*;
			var _local10:*;
			var _local11:*;
			var _local12:*;
			var _local13:*;
			var _local14:*;
			var _local15:*;
			var _local16:*;
			var _local17:*;
			var _local18:*;
			var _local19:*;
			var _local20:*;
			var _local21:*;
			var _local22:*;
			var _local23:*;
			var _local24:*;
			var _local25:*;
			var _local26:Number;
			var _local4:GameDisplay = this;
			var _local5:* = _local4.floor;
			var _local6:Number = 1;
			_local4.levelPxWidth = (_arg1[0].length * _local4.tileWidth);
			_local4.levelPxHeight = (_arg1.length * _local4.tileWidth);
			_local4.levelTileWidth = _arg1[0].length;
			_local4.levelTileHeight = _arg1.length;
			if (_arg1[0].length > _local4.tilesWidePerRow){
				_local6 = Math.ceil((_arg1[0].length / _local4.tilesWidePerRow));
			};
			_local4.tilesHighPerRow = _arg1.length;
			var _local7:* = 0;
			while (_local7 < _arg1.length) {
				_local8 = 0;
				while (_local8 < _arg1[0].length) {
					_local9 = 0;
					_local10 = 0;
					_local11 = 0;
					_local12 = 0;
					_local13 = (_local11 - (_local9 * _local4.tileWidth));
					_local14 = (_local12 - (_local10 * _local4.tileWidth));
					_local15 = (_local9 + _local8);
					_local16 = (_local10 + _local7);
					_local17 = _arg1[_local16][_local15];
					if (_local17.length > 0){
						_local18 = 0;
						while (_local18 < _local17.length) {
							_local19 = _arg1[_local16][_local15][_local18];
							_local20 = ((_local19 - (_local5((_local19 / _local4.tileSheetWidth)) * _local4.tileSheetWidth)) * _local4.tileWidth);
							_local21 = (_local5((_local19 / _local4.tileSheetWidth)) * _local4.tileWidth);
							_local22 = ((_local8 * _local4.tileWidth) - _local13);
							_local23 = ((_local7 * _local4.tileWidth) - _local14);
							if (_local8 >= _local4.tilesWidePerRow){
								_local26 = Math.floor((_local8 / _local4.tilesWidePerRow));
								_local22 = (_local22 - ((_local4.tilesWidePerRow * _local4.tileWidth) * _local26));
								_local23 = (_local23 + ((_local26 * _local4.tilesHighPerRow) * _local4.tileWidth));
							};
							_local24 = new Rectangle(_local20, _local21, _local4.tileWidth, _local4.tileWidth);
							_local25 = new Point(_local22, _local23);
							_arg3.copyPixels(_arg2, _local24, _local25, null, null, true);
							_local18++;
						};
					};
					_local8++;
				};
				_local7++;
			};
		}
		public function blitTrimTiles(_arg1, _arg2, _arg3){
			var _local7:*;
			var _local8:*;
			var _local9:*;
			var _local10:*;
			var _local11:*;
			var _local12:*;
			var _local13:*;
			var _local14:*;
			var _local15:*;
			var _local16:*;
			var _local17:*;
			var _local18:Number;
			var _local19:*;
			var _local20:*;
			var _local21:*;
			var _local22:*;
			var _local23:*;
			var _local24:*;
			var _local4:GameDisplay = this;
			var _local5:* = _local4.floor;
			var _local6:* = 0;
			while (_local6 < _arg1.length) {
				_local7 = 0;
				while (_local7 < _arg1[0].length) {
					_local8 = 0;
					_local9 = 0;
					_local10 = 0;
					_local11 = 0;
					_local12 = (_local10 - (_local8 * _local4.tileWidth));
					_local13 = (_local11 - (_local9 * _local4.tileWidth));
					_local14 = (_local8 + _local7);
					_local15 = (_local9 + _local6);
					_local16 = _arg1[_local15][_local14];
					if (_local16.length > 0){
						_local17 = 0;
						while (_local17 < _local16.length) {
							_local18 = _arg1[_local15][_local14][_local17];
							_local19 = ((_local18 - (_local5((_local18 / _local4.tileSheetWidth)) * _local4.tileSheetWidth)) * _local4.tileWidth);
							_local20 = (_local5((_local18 / _local4.tileSheetWidth)) * _local4.tileWidth);
							_local21 = ((_local7 * _local4.tileWidth) - _local12);
							_local22 = ((_local6 * _local4.tileWidth) - _local13);
							_local23 = new Rectangle(_local19, _local20, _local4.tileWidth, _local4.tileWidth);
							_local24 = new Point(_local21, _local22);
							_arg3.copyPixels(_arg2, _local23, _local24, null, null, true);
							_local17++;
						};
					};
					_local7++;
				};
				_local6++;
			};
		}
		public function getTileCoords(_arg1:Number):Point{
			var _local2:GameDisplay = this;
			var _local3:* = (Math.floor((_arg1 / _local2.tileSheetWidth)) * _local2.tileWidth);
			var _local4:* = (Math.floor((_arg1 % _local2.tileSheetWidth)) * _local2.tileWidth);
			return (new Point(_local4, _local3));
		}
		public function redrawScreen(){
			var _local1:GameDisplay = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:BitmapManager = _local2.bitmapManager;
			var _local4:GameControls = _local2.gameControls;
			_local1.defineScreenBounds();
			_local1.reblitSky();
			_local1.reblitBackdrop();
			_local1.reblitTiles();
			_local1.reblitItems(true, false);
			_local1.reblitEffects(false);
			_local1.reblitObjects(false);
			_local1.reblitItems(false, false);
			_local1.reblitEnemies();
			if (!_local2.playerObj.onMovingTile){
				_local1.reblitMultispritePlayer();
			};
			_local1.reblitObjects(true);
			if (_local2.playerObj.onMovingTile){
				_local1.reblitMultispritePlayer();
			};
			_local1.reblitEffects(true);
			_local1.reblitItems(false, true);
			_local1.reblitBullets();
			_local1.blitTransition();
			if (_local1.deadIrisMC){
				if (_local1.deadIrisMC.currentFrame == (_local1.deadIrisMC.totalFrames - 1)){
					if (_local1.gameObj.dataManager.currentLevel == 11){
						_local1.gameObj.showGameOutroScreen();
					} else {
						if (_local1.gameObj.playerObj.isFinishingLevel){
							_local1.gameObj.finishLevel();
						} else {
							_local1.gameObj.playerDied();
						};
					};
				};
			};
		}
		public function blitOverlay(_arg1){
			var _local2:GameDisplay = this;
			var _local3:GameModule = _local2.gameObj;
		}
		public function blitTransition(){
			var _local3:Rectangle;
			var _local1:GameDisplay = this;
			var _local2:BitmapManager = _local1.gameObj.bitmapManager;
			if (((_local1.isTransitioningIn) || (_local1.isTransitionOut))){
				_local1.transitionX = (_local1.transitionX + _local1.transitionSpeed);
				if (_local1.transitionX > _local1.screenPxWidth){
					if (_local1.isTransitionOut){
						_local1.screenBMP.fillRect(_local1.screenBMP.rect, 4278190080);
					};
					_local1.finishTransition();
				} else {
					if (_local1.isTransitioningIn){
						_local1.screenBMP.copyPixels(_local2.transitionInSheet, _local2.transitionInSheet.rect, new Point(_local1.transitionX, 0), null, null, true);
						if ((_local1.transitionX + _local2.transitionInSheet.width) < _local1.screenPxWidth){
							_local3 = new Rectangle((_local1.transitionX + _local2.transitionInSheet.width), 0, (_local1.screenPxWidth - (_local1.transitionX + _local2.transitionInSheet.width)), _local1.screenPxHeight);
							_local1.screenBMP.fillRect(_local3, 4278190080);
						};
					} else {
						if (_local1.isTransitionOut){
							_local1.screenBMP.copyPixels(_local2.transitionOutSheet, _local2.transitionOutSheet.rect, new Point(_local1.transitionX, 0), null, null, true);
							if (_local1.transitionX < _local1.screenPxWidth){
								_local3 = new Rectangle(0, 0, _local1.transitionX, _local1.screenPxHeight);
								_local1.screenBMP.fillRect(_local3, 4278190080);
							};
						};
					};
				};
			};
		}
		public function finishTransition(){
			var _local1:GameDisplay = this;
			var _local2:GameControls = _local1.gameObj.gameControls;
			if (_local1.isTransitioningIn){
				_local1.isTransitioningIn = false;
			} else {
				if (_local1.isTransitionOut){
					_local1.isTransitionOut = false;
					if (_local2.travelingThroughDoor){
						_local1.gameObj.enterRoom(_local2.doorRoomID, _local2.doorDoorID, _local2.doorXoffset, _local2.doorYoffset, _local2.doorDirX, _local2.doorDirY);
						_local1.gameObj.gameControls.travelingThroughDoor = false;
					} else {
						if (_local1.gameObj.userData.totalLives.value < 0){
							_local1.gameObj.playerDied();
						} else {
							_local1.gameObj.finishLevel();
						};
					};
				};
			};
		}
		public function startTransition(_arg1:String){
			var _local2:GameDisplay = this;
			var _local3:BitmapManager = _local2.gameObj.bitmapManager;
			if (_arg1 == "in"){
				_local2.isTransitioningIn = true;
				_local2.transitionX = (0 - _local3.transitionInSheet.width);
				_local2.gameObj.hudObj.showHUD();
			} else {
				if (_arg1 == "out"){
					_local2.isTransitionOut = true;
					_local2.transitionX = (0 - _local3.transitionOutSheet.width);
				};
			};
		}
		public function startMainIrisOut(){
			var _local1:GameDisplay = this;
			if (!_local1.deadIrisMC){
				_local1.deadIrisMC = new deadIrisOut();
				_local1.gameObj.gameStage.addChild(_local1.deadIrisMC);
				_local1.deadIrisMC.x = (_local1.gameObj.playerObj.x - _local1.currentXcoord);
				_local1.deadIrisMC.y = (_local1.gameObj.playerObj.y - _local1.currentYcoord);
				_local1.deadIrisMC.gotoAndPlay(1);
			};
		}
		public function defineScreenBounds(){
			var _local1:GameDisplay = this;
			var _local2:GameCam = _local1.camObj;
			var _local3:* = _local1.floor;
			var _local4:Number = _local1.tileWidth;
			var _local5:Number = Math.floor((_local2.x - (_local3((_local1.screenTileWidth / 2)) * _local1.tileWidth)));
			var _local6:Number = Math.floor((_local2.y - (_local3((_local1.screenTileHeight / 2)) * _local1.tileWidth)));
			_local1.currentXtileLeft = _local3((_local5 / _local4));
			_local1.currentXtileRight = (_local1.currentXtileLeft + _local1.screenTileWidth);
			_local1.currentYtileUp = _local3((_local6 / _local4));
			_local1.currentYtileDown = (_local1.currentYtileUp + _local1.screenTileHeight);
			_local1.currentXcoord = _local5;
			_local1.currentYcoord = _local6;
		}
		public function reblitSky(){
			var _local7:Rectangle;
			var _local8:Point;
			var _local11:Number;
			var _local12:Number;
			var _local1:GameDisplay = this;
			var _local2:BitmapManager = _local1.gameObj.bitmapManager;
			var _local3:DataManager = _local1.gameObj.dataManager;
			_local1.trainX = (_local1.trainX + _local1.trainSpeed);
			_local1.screenBMP.fillRect(_local1.screenBMP.rect, 4294953984);
			var _local4:BitmapData = _local1.bgSheet;
			var _local5:Number = _local4.width;
			var _local6:Number = _local4.height;
			var _local9:Number = _local1.currentXcoord;
			var _local10:Number = _local1.currentYcoord;
			if (_local3.isOnTrain()){
				_local9 = (_local9 + _local1.trainX);
			};
			var _local13:Number = _local4.width;
			var _local14:Number = _local4.height;
			_local11 = Math.round((_local9 / 8));
			_local12 = 0;
			if (_local11 > _local13){
				_local11 = (_local11 % _local13);
			};
			_local11 = (_local13 - _local11);
			var _local15:Number = (_local13 - _local11);
			var _local16:Number = (_local14 - _local12);
			var _local17:Number = (_local13 - _local15);
			var _local18:Number = (_local14 - _local16);
			_local7 = new Rectangle(0, 0, _local15, _local16);
			_local8 = new Point(_local11, _local12);
			_local1.screenBMP.copyPixels(_local4, _local7, _local8);
			if (_local11 > 0){
				_local7 = new Rectangle(_local15, 0, _local17, _local16);
				_local8 = new Point(0, _local12);
				_local1.screenBMP.copyPixels(_local4, _local7, _local8);
			};
		}
		public function reblitClouds(){
		}
		public function reblitBackdrop(){
			var _local7:Rectangle;
			var _local8:Point;
			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:Number;
			var _local20:Number;
			var _local21:Number;
			var _local1:GameDisplay = this;
			var _local2:* = _local1.floor;
			var _local3:GameCam = _local1.camObj;
			var _local4:BitmapData = _local1.mgSheet;
			var _local5:Number = _local4.width;
			var _local6:Number = _local4.height;
			var _local9:Number = _local1.currentXcoord;
			var _local10:Number = _local1.currentYcoord;
			if (_local1.gameObj.dataManager.isOnTrain()){
				_local9 = (_local9 + _local1.trainX);
			};
			if (_local1.bgScrollType == "static"){
				_local7 = new Rectangle(0, 0, _local5, _local6);
				_local8 = new Point(0, 0);
				_local1.screenBMP.copyPixels(_local4, _local7, _local8, null, null, true);
			} else {
				if ((((_local1.bgScrollType == "attached")) || ((_local1.bgScrollType == "scroll")))){
					_local13 = _local4.width;
					_local14 = _local4.height;
					if (_local1.bgScrollType == "attached"){
						_local11 = (_local13 - (_local9 % _local1.mgSheet.width));
						_local12 = (_local14 - (_local10 % _local1.mgSheet.height));
					} else {
						_local11 = Math.round((_local9 / _local1.bgScrollSpeedX));
						_local12 = Math.round((_local10 / _local1.bgScrollSpeedY));
						if (_local11 > _local13){
							_local11 = (_local11 % _local13);
						};
						if (_local12 > _local14){
							_local12 = (_local12 % _local14);
						};
						_local11 = (_local13 - _local11);
						_local12 = (_local14 - _local12);
						if (_local1.bgScrollSpeedX == 0){
							_local11 = (_local13 - (_local9 % _local1.mgSheet.width));
						};
						if (_local1.bgScrollSpeedY == 0){
							_local12 = (_local14 - (_local10 % _local1.mgSheet.height));
						};
					};
					_local15 = (_local1.levelPxHeight - _local1.screenPxHeight);
					if (_local15 < _local1.screenPxHeight){
						_local15 = _local1.screenPxHeight;
					};
					_local16 = Math.min(1, (_local10 / _local15));
					_local17 = (_local1.levelPxHeight - _local14);
					_local12 = Math.floor(((_local16 * _local17) - _local10));
					_local18 = (_local13 - _local11);
					_local19 = (_local14 - _local12);
					_local20 = (_local13 - _local18);
					_local21 = (_local14 - _local19);
					_local7 = new Rectangle(0, 0, _local18, _local19);
					_local8 = new Point(_local11, _local12);
					_local1.screenBMP.copyPixels(_local4, _local7, _local8, null, null, true);
					if (_local11 > 0){
						_local7 = new Rectangle(_local18, 0, _local20, _local19);
						_local8 = new Point(0, _local12);
						_local1.screenBMP.copyPixels(_local4, _local7, _local8, null, null, true);
					};
					if (_local12 > 0){
						_local7 = new Rectangle(0, _local19, _local18, _local21);
						_local8 = new Point(_local11, 0);
						_local1.screenBMP.copyPixels(_local4, _local7, _local8, null, null, true);
						if (_local11 > 0){
							_local7 = new Rectangle(_local18, _local19, _local20, _local21);
							_local8 = new Point(0, 0);
							_local1.screenBMP.copyPixels(_local4, _local7, _local8, null, null, true);
						};
					};
				};
			};
		}
		public function reblitLayer(_arg1, _arg2:BitmapData, _arg3:Number, _arg4:Number, _arg5:BitmapData){
		}
		public function reblitCursor(){
		}
		public function reblitTiles(){
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local1:GameDisplay = this;
			var _local2:DataManager = _local1.gameObj.dataManager;
			var _local3:GameControls = _local1.gameObj.gameControls;
			var _local4:Number = _local1.currentXcoord;
			var _local5:Number = _local1.currentYcoord;
			var _local6:Number = _local1.screenPxWidth;
			var _local7:Number = Math.floor((_local4 / (_local1.tilesWidePerRow * _local1.tileWidth)));
			if (_local7 > 0){
				_local4 = (_local4 - (_local7 * (_local1.tilesWidePerRow * _local1.tileWidth)));
				_local5 = (_local5 + (_local7 * (_local1.tilesHighPerRow * _local1.tileWidth)));
			};
			var _local8:Rectangle = new Rectangle(_local4, _local5, _local1.screenPxWidth, _local1.screenPxHeight);
			var _local9:Point = new Point(0, 0);
			var _local10:BitmapData = _local2.currentScreenData.tileBMP;
			_local1.screenBMP.copyPixels(_local10, _local8, _local9, null, null, true);
			if (((_local4 % 2880) + _local1.screenPxWidth) >= (_local1.tilesWidePerRow * _local1.tileWidth)){
				_local11 = 0;
				_local12 = (_local5 + (_local1.tilesHighPerRow * _local1.tileWidth));
				_local13 = (((_local4 % 2880) + _local1.screenPxWidth) - (_local1.tilesWidePerRow * _local1.tileWidth));
				_local8 = new Rectangle(_local11, _local12, _local13, _local1.screenPxHeight);
				_local9 = new Point((_local1.screenPxWidth - _local13), 0);
				_local1.screenBMP.copyPixels(_local10, _local8, _local9, null, null, true);
			};
		}
		public function reblitSprite(_arg1, _arg2, _arg3){
			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:Number;
			var _local20:Number;
			var _local21:Rectangle;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Number;
			var _local29:Number;
			var _local30:Point;
			var _local4:GameDisplay = this;
			var _local5:* = _local4.floor;
			var _local6:GameCam = _local4.camObj;
			var _local7:GameControls = _local4.gameObj.gameControls;
			var _local8:PlayerChar = _local4.gameObj.playerObj;
			var _local9:Number = 0;
			if (_arg1.isStunned){
				_local4.spriteFlickerCounter++;
				if (_local4.spriteFlickerCounter > 1){
					_local4.spriteFlickerCounter = 0;
				};
			} else {
				_local4.spriteFlickerCounter = 0;
			};
			var _local10:* = _local4.spriteFlickerCounter;
			if (_local10 == 0){
				if (_arg1.facingDir == 1){
					_local9 = 0;
				} else {
					if (_arg1.facingDir == -1){
						_local9 = _arg1.flipBlitOffset;
					};
				};
				_local9 = (_local9 + _arg1.forceGrabYoffset);
				_local11 = _arg1.animationFrame;
				_local12 = _arg1.spritewidth;
				_local13 = _arg1.spriteheight;
				_local14 = _arg1.sheetWidth;
				_local15 = _arg1.sheetHeight;
				_local16 = _arg1.facingDir;
				_local17 = ((_local11 - (_local5((_local11 / _local14)) * _local14)) * _local12);
				_local18 = (_local5((_local11 / _local14)) * _local13);
				_local19 = _local12;
				_local20 = _local13;
				_local21 = new Rectangle(_local17, (_local18 + _local9), _local19, _local20);
				_local22 = _local4.currentXcoord;
				_local23 = _local4.currentYcoord;
				_local24 = (_arg1.spriteTargetX - _arg1.spriteCenterX);
				_local25 = (_arg1.spriteTargetY - _arg1.spriteCenterY);
				_local26 = (_arg1.x - _local24);
				_local27 = (_arg1.y - _local25);
				_local28 = Math.floor(((_local26 - _local22) - (_local19 / 2)));
				_local29 = Math.floor(((_local27 - _local23) - (_local20 / 2)));
				_local30 = new Point(_local28, _local29);
				_arg3.copyPixels(_arg2, _local21, _local30, null, null, true);
				if (_local10 == 1){
				};
				_local4.blitCollisionArea(_arg1, "player", _local22, _local23, 1426128640);
			};
		}
		public function reblitMultispritePlayer(){
			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:Number;
			var _local20:Rectangle;
			var _local21:Point;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Point;
			var _local29:Point;
			var _local30:Point;
			var _local31:Point;
			var _local32:Number;
			var _local1:GameDisplay = this;
			var _local2:* = _local1.floor;
			var _local3:GameCam = _local1.camObj;
			var _local4:GameControls = _local1.gameObj.gameControls;
			var _local5:Number = _local1.currentXcoord;
			var _local6:Number = _local1.currentYcoord;
			var _local7:CactusChar = CactusChar(_local1.gameObj.playerObj);
			var _local8:Number = 0;
			if (_local7.isStunned){
				_local1.spriteFlickerCounter++;
				if (_local1.spriteFlickerCounter > 1){
					_local1.spriteFlickerCounter = 0;
				};
			} else {
				_local1.spriteFlickerCounter = 0;
			};
			var _local9:* = _local1.spriteFlickerCounter;
			if (_local9 == 0){
				_local10 = _local7.facingDir;
				_local22 = (_local7.spriteTargetX - _local7.spriteCenterX);
				_local23 = (_local7.spriteTargetY - _local7.spriteCenterY);
				_local24 = (_local7.x - _local22);
				_local25 = (_local7.y - _local23);
				_local26 = Math.floor(((_local24 - _local5) - (_local7.spritewidth / 2)));
				_local27 = Math.floor(((_local25 - _local6) - (_local7.spriteheight / 2)));
				_local28 = new Point(_local26, _local27);
				_local29 = new Point(_local26, _local27);
				_local30 = new Point(_local26, _local27);
				if (_local7.facingDir == 1){
					_local29.x = (_local29.x + _local7.getTorsoOffsetX());
					_local29.y = (_local29.y + _local7.getTorsoOffsetY());
				} else {
					if (_local7.facingDir == -1){
						_local29.x = (_local29.x - (((_local29.x + _local7.getTorsoOffsetX()) + _local7.torsoSpriteWidth) - (_local29.x + _local7.spritewidth)));
						_local29.y = (_local29.y + _local7.getTorsoOffsetY());
					};
				};
				if (_local7.facingDir == 1){
					_local30.x = (_local30.x + _local7.getCapeOffsetX());
					_local30.y = (_local30.y + _local7.getCapeOffsetY());
				} else {
					if (_local7.facingDir == -1){
						_local30.x = (_local30.x - (((_local30.x + _local7.getCapeOffsetX()) + _local7.capeSpriteWidth) - (_local30.x + _local7.spritewidth)));
						_local30.y = (_local30.y + _local7.getCapeOffsetY());
					};
				};
				_local31 = new Point(_local29.x, _local29.y);
				_local32 = _local7.cycleFrame;
				if (((_local7.whichWeapon) && (_local7.whichWeapon.hasSprite))){
					if (((_local7.weaponCycleData) && ((_local7.weaponCycleData.length == 3)))){
						if (_local7.weaponCycleData[0].length <= _local32){
							_local32 = (_local7.weaponCycleData[0].length - 1);
						};
						if (_local7.facingDir == 1){
							_local31.x = (_local31.x + (_local7.weaponCycleData[1][_local32] + _local7.whichWeapon.xoffset));
							_local31.y = (_local31.y + (_local7.weaponCycleData[2][_local32] + _local7.whichWeapon.yoffset));
						} else {
							if (_local7.facingDir == -1){
								_local31.x = (_local31.x - ((((_local31.x + _local7.weaponCycleData[1][_local32]) + _local7.whichWeapon.xoffset) + _local7.whichWeapon.spritewidth) - (_local31.x + _local7.torsoSpriteWidth)));
								_local31.y = (_local31.y + (_local7.weaponCycleData[2][_local32] + _local7.whichWeapon.yoffset));
							};
						};
					};
				};
				if (((((_local7.whichWeapon) && (_local7.whichWeapon.hasSprite))) && (_local7.isGrabbing))){
					if (_local7.facingDir == 1){
						_local8 = 0;
					} else {
						if (_local7.facingDir == -1){
							_local8 = _local7.whichWeapon.flipBlitOffset;
						};
					};
					if (((_local7.weaponCycleData) && ((_local7.weaponCycleData.length == 3)))){
						_local11 = _local7.weaponCycleData[0][_local32];
						_local12 = _local7.whichWeapon.spritewidth;
						_local13 = _local7.whichWeapon.spriteheight;
						_local14 = _local7.whichWeapon.sheetWidth;
						_local15 = _local7.whichWeapon.sheetHeight;
						_local16 = ((_local11 - (_local2((_local11 / _local14)) * _local14)) * _local12);
						_local17 = (_local2((_local11 / _local14)) * _local13);
						_local18 = _local12;
						_local19 = _local13;
						_local20 = new Rectangle(_local16, (_local17 + _local8), _local18, _local19);
						_local1.screenBMP.copyPixels(_local7.whichWeapon.spritesheet, _local20, _local31, null, null, true);
					};
				};
				if (_local7.facingDir == 1){
					_local8 = 0;
				} else {
					if (_local7.facingDir == -1){
						_local8 = _local7.capeFlipOffset;
					};
				};
				_local11 = _local7.capeAnimationFrame;
				_local12 = _local7.capeSpriteWidth;
				_local13 = _local7.capeSpriteHeight;
				_local14 = _local7.capeSheetWidth;
				_local15 = _local7.capeSheetHeight;
				_local16 = ((_local11 - (_local2((_local11 / _local14)) * _local14)) * _local12);
				_local17 = (_local2((_local11 / _local14)) * _local13);
				_local18 = _local12;
				_local19 = _local13;
				_local20 = new Rectangle(_local16, (_local17 + _local8), _local18, _local19);
				_local1.screenBMP.copyPixels(gameObj.bitmapManager.playerCapeSheet, _local20, _local30, null, null, true);
				if (_local7.facingDir == 1){
					_local8 = 0;
				} else {
					if (_local7.facingDir == -1){
						_local8 = _local7.flipBlitOffset;
					};
				};
				_local11 = _local7.legAnimationFrame;
				_local12 = _local7.spritewidth;
				_local13 = _local7.spriteheight;
				_local14 = _local7.sheetWidth;
				_local15 = _local7.sheetHeight;
				_local16 = ((_local11 - (_local2((_local11 / _local14)) * _local14)) * _local12);
				_local17 = (_local2((_local11 / _local14)) * _local13);
				_local18 = _local12;
				_local19 = _local13;
				_local20 = new Rectangle(_local16, (_local17 + _local8), _local18, _local19);
				_local1.screenBMP.copyPixels(gameObj.bitmapManager.playerLegsSheet, _local20, _local28, null, null, true);
				if (_local7.facingDir == 1){
					_local8 = 0;
				} else {
					if (_local7.facingDir == -1){
						_local8 = _local7.torsoFlipOffset;
					};
				};
				_local11 = _local7.animationFrame;
				_local12 = _local7.torsoSpriteWidth;
				_local13 = _local7.torsoSpriteHeight;
				_local14 = _local7.torsoSheetWidth;
				_local15 = _local7.torsoSheetHeight;
				_local16 = ((_local11 - (_local2((_local11 / _local14)) * _local14)) * _local12);
				_local17 = (_local2((_local11 / _local14)) * _local13);
				_local18 = _local12;
				_local19 = _local13;
				_local20 = new Rectangle(_local16, (_local17 + _local8), _local18, _local19);
				_local1.screenBMP.copyPixels(gameObj.bitmapManager.playerSpriteSheet, _local20, _local29, null, null, true);
				if (((((_local7.whichWeapon) && (_local7.whichWeapon.hasSprite))) && (!(_local7.isGrabbing)))){
					if (_local7.facingDir == 1){
						_local8 = 0;
					} else {
						if (_local7.facingDir == -1){
							_local8 = _local7.whichWeapon.flipBlitOffset;
						};
					};
					if (((_local7.weaponCycleData) && ((_local7.weaponCycleData.length == 3)))){
						_local11 = _local7.weaponCycleData[0][_local32];
						_local12 = _local7.whichWeapon.spritewidth;
						_local13 = _local7.whichWeapon.spriteheight;
						_local14 = _local7.whichWeapon.sheetWidth;
						_local15 = _local7.whichWeapon.sheetHeight;
						_local16 = ((_local11 - (_local2((_local11 / _local14)) * _local14)) * _local12);
						_local17 = (_local2((_local11 / _local14)) * _local13);
						_local18 = _local12;
						_local19 = _local13;
						_local20 = new Rectangle(_local16, (_local17 + _local8), _local18, _local19);
						_local1.screenBMP.copyPixels(_local7.whichWeapon.spritesheet, _local20, _local31, null, null, true);
					};
				};
				if (_local9 == 1){
				};
				_local1.blitCollisionArea(_local7, "player", _local5, _local6, 1426128640);
			};
		}
		public function blitCollisionArea(_arg1, _arg2:String, _arg3:Number, _arg4:Number, _arg5=587137024){
			var _local7:Rectangle;
			var _local8:BitmapData;
			var _local9:Point;
			var _local10:Character;
			var _local11:CactusChar;
			var _local12:Number;
			var _local13:Number;
			var _local14:Enemy1;
			var _local6:GameDisplay = this;
			if (_local6.showBounds){
				_local7 = new Rectangle();
				_local10 = _arg1;
				_local8 = new BitmapData(_local10.collRect.width, _local10.collRect.height, true, 0xFFFFFF);
				new BitmapData(_local10.collRect.width, _local10.collRect.height, true, 0xFFFFFF).fillRect(_local8.rect, 1442775040);
				_local9 = new Point(((_local10.x + _local10.collRect.x) - _arg3), ((_local10.y + _local10.collRect.y) - _arg4));
				_local6.screenBMP.copyPixels(_local8, _local8.rect, _local9, null, null, true);
				_local8.dispose();
				if ((_arg1 is CactusChar)){
					_local11 = CactusChar(_arg1);
					if (((((_local11.isAttacking) && ((_local11.cycleFrame >= _local11.startAttackFrame)))) && ((_local11.cycleFrame <= _local11.endAttackFrame)))){
						_local12 = _local11.attackRect.width;
						_local13 = _local11.attackRect.height;
						_local8 = new BitmapData(_local12, _local13, true, 1442840320);
						_local9 = new Point((((_local11.x + _local11.getTorsoOffsetX()) + _local11.attackRect.x) - _arg3), (((_local11.y + _local11.getTorsoOffsetY()) + _local11.attackRect.y) - _arg4));
						_local6.screenBMP.copyPixels(_local8, _local8.rect, _local9, null, null, true);
					};
				} else {
					if ((_arg1 is Enemy1)){
						_local14 = Enemy1(_arg1);
						if (((((_local14.isAttacking) && ((_local14.cycleFrame >= _local14.startAttackFrame)))) && ((_local14.cycleFrame <= _local14.endAttackFrame)))){
							_local8 = new BitmapData(_local14.attackRect.width, _local14.attackRect.height, true, 1442840320);
							_local9 = new Point(((_local14.x + _local14.attackRect.x) - _arg3), ((_local14.y + _local14.attackRect.y) - _arg4));
							if (_local14.facingDir == -1){
								_local9.x = (((_local14.x - _local14.attackRect.x) - _local14.attackRect.width) - _arg3);
							};
							_local6.screenBMP.copyPixels(_local8, _local8.rect, _local9, null, null, true);
						};
					};
				};
			};
		}
		public function checkOnScreen(_arg1):Boolean{
			var _local2:GameDisplay = this;
			var _local3:* = _local2.checkOnScreenOffset;
			var _local4:Number = (_arg1.widthmultiplier - (1 / 2));
			var _local5:Number = (_arg1.heightmultiplier - (1 / 2));
			if ((_arg1.xtile + _local4) < (_local2.currentXtileLeft - _local3)){
				return (false);
			};
			if (_arg1.xtile > (_local2.currentXtileRight + _local3)){
				return (false);
			};
			if (_arg1.ytile < (_local2.currentYtileUp - _local3)){
				return (false);
			};
			if ((_arg1.ytile - _local5) > (_local2.currentYtileDown + _local3)){
				return (false);
			};
			return (true);
		}
		public function reblitObjects(_arg1:Boolean=true){
			var _local8:GameObject;
			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:Rectangle;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Point;
			var _local29:*;
			var _local30:String;
			var _local31:BitmapData;
			var _local2:GameDisplay = this;
			var _local3:* = _local2.floor;
			var _local4:GameCam = _local2.camObj;
			var _local5:ObjectManager = _local2.gameObj.objectManager;
			var _local6:Number = _local5.objects.length;
			var _local7:* = 0;
			while (_local7 < _local6) {
				_local8 = _local5.objects[_local7];
				if (((_local8.checkOnScreen()) && ((_local8.foreground == _arg1)))){
					_local9 = _local8.animationFrame;
					_local10 = _local8.spritewidth;
					_local11 = _local8.spriteheight;
					_local12 = _local8.sheetWidth;
					_local13 = _local8.sheetHeight;
					_local14 = 0;
					if (_local8.facingDir == -1){
						_local14 = (_local14 + _local8.flipBlitOffset);
					};
					_local15 = ((_local9 - (_local3((_local9 / _local12)) * _local12)) * _local10);
					_local16 = ((_local3((_local9 / _local12)) * _local11) + _local14);
					_local17 = _local10;
					_local18 = _local11;
					_local19 = new Rectangle(_local15, _local16, _local17, _local18);
					_local20 = _local2.currentXcoord;
					_local21 = _local2.currentYcoord;
					_local22 = (_local8.spriteTargetX - _local8.spriteCenterX);
					_local23 = (_local8.spriteTargetY - _local8.spriteCenterY);
					_local24 = (_local8.x - _local22);
					_local25 = (_local8.y - _local23);
					_local26 = Math.floor(((_local24 - _local20) - (_local17 / 2)));
					_local27 = Math.floor(((_local25 - _local21) - (_local18 / 2)));
					_local28 = new Point(_local26, _local27);
					_local29 = _local8.type;
					_local30 = ("objectSheet" + _local29);
					_local31 = _local5[_local30];
					_local2.screenBMP.copyPixels(_local31, _local19, _local28, null, null, true);
					_local2.blitCollisionArea(_local8, "object", _local20, _local21, 1442775040);
					_local8.checkAdditionalBlitting(_arg1);
				} else {
					_local8.checkAdditionalBlitting(_arg1);
				};
				_local7++;
			};
		}
		public function reblitBullets(){
			var _local7:Bullet;
			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:Rectangle;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Point;
			var _local28:*;
			var _local29:String;
			var _local30:BitmapData;
			var _local1:GameDisplay = this;
			var _local2:* = _local1.floor;
			var _local3:GameCam = _local1.gameObj.gameCam;
			var _local4:BulletManager = _local1.gameObj.bulletManager;
			var _local5:Number = _local4.bullets.length;
			var _local6:* = 0;
			while (_local6 < _local5) {
				_local7 = _local4.bullets[_local6];
				if (_local1.checkOnScreen(_local7)){
					_local8 = _local7.animationFrame;
					_local9 = _local7.spritewidth;
					_local10 = _local7.spriteheight;
					_local11 = _local7.sheetWidth;
					_local12 = _local7.sheetHeight;
					_local13 = _local7.grabFlipOffset();
					_local14 = ((_local8 - (_local2((_local8 / _local11)) * _local11)) * _local9);
					_local15 = ((_local2((_local8 / _local11)) * _local10) + _local13);
					_local16 = _local9;
					_local17 = _local10;
					_local18 = new Rectangle(_local14, _local15, _local16, _local17);
					_local19 = _local1.currentXcoord;
					_local20 = _local1.currentYcoord;
					_local21 = (_local7.spriteTargetX - _local7.spriteCenterX);
					_local22 = (_local7.spriteTargetY - _local7.spriteCenterY);
					_local23 = (_local7.x - _local21);
					_local24 = (_local7.y - _local22);
					_local25 = ((_local23 - _local19) - (_local16 / 2));
					_local26 = ((_local24 - _local20) - (_local17 / 2));
					_local27 = new Point(_local25, _local26);
					_local28 = _local7.type;
					_local29 = ("bulletSheet" + _local28);
					_local30 = _local4[_local29];
					_local1.screenBMP.copyPixels(_local30, _local18, _local27, null, null, true);
					_local1.blitCollisionArea(_local7, "bullet", _local19, _local20, 587137279);
				};
				_local6++;
			};
		}
		public function reblitEnemies(_arg1:Boolean=true){
			var _local8:Enemy;
			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:Rectangle;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Point;
			var _local29:*;
			var _local30:String;
			var _local31:BitmapData;
			var _local32:Number;
			var _local33:Point;
			var _local34:Number;
			var _local2:GameDisplay = this;
			var _local3:* = _local2.floor;
			var _local4:GameCam = _local2.camObj;
			var _local5:EnemyManager = _local2.gameObj.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:* = 0;
			while (_local7 < _local6) {
				_local8 = _local5.enemies[_local7];
				if (_local8.checkOnScreen()){
					_local9 = _local8.animationFrame;
					_local10 = _local8.spritewidth;
					_local11 = _local8.spriteheight;
					_local12 = _local8.sheetWidth;
					_local13 = _local8.sheetHeight;
					_local14 = 0;
					if (_local8.facingDir == -1){
						_local14 = (_local14 + _local8.flipBlitOffset);
					};
					_local15 = ((_local9 - (_local3((_local9 / _local12)) * _local12)) * _local10);
					_local16 = ((_local3((_local9 / _local12)) * _local11) + _local14);
					_local17 = _local10;
					_local18 = _local11;
					_local19 = new Rectangle(_local15, _local16, _local17, _local18);
					_local20 = _local2.currentXcoord;
					_local21 = _local2.currentYcoord;
					_local22 = (_local8.spriteTargetX - _local8.spriteCenterX);
					_local23 = (_local8.spriteTargetY - _local8.spriteCenterY);
					_local24 = (_local8.x - _local22);
					_local25 = (_local8.y - _local23);
					_local26 = Math.floor(((_local24 - _local20) - (_local17 / 2)));
					_local27 = Math.floor(((_local25 - _local21) - (_local18 / 2)));
					_local28 = new Point(_local26, _local27);
					_local29 = _local8.type;
					_local30 = ("enemySheet" + _local29);
					_local31 = _local5[_local30];
					_local2.screenBMP.copyPixels(_local31, _local19, _local28, null, null, true);
					_local33 = new Point(_local28.x, _local28.y);
					_local34 = _local8.cycleFrame;
					if (((((_local8.whichWeapon) && (_local8.whichWeapon.hasSprite))) && (!((_local8.whichWeapon.spritesheet == null))))){
						if (((_local8.weaponCycleData) && ((_local8.weaponCycleData.length == 3)))){
							if (_local8.weaponCycleData[0].length <= _local34){
								_local34 = (_local8.weaponCycleData[0].length - 1);
							};
							if (_local8.facingDir == 1){
								_local33.x = (_local33.x + (_local8.weaponCycleData[1][_local34] + _local8.whichWeapon.xoffset));
								_local33.y = (_local33.y + (_local8.weaponCycleData[2][_local34] + _local8.whichWeapon.yoffset));
							} else {
								if (_local8.facingDir == -1){
									_local33.x = (_local33.x - ((((_local33.x + _local8.weaponCycleData[1][_local34]) + _local8.whichWeapon.xoffset) + _local8.whichWeapon.spritewidth) - (_local33.x + _local8.spritewidth)));
									_local33.y = (_local33.y + (_local8.weaponCycleData[2][_local34] + _local8.whichWeapon.yoffset));
								};
							};
							if (_local8.facingDir == 1){
								_local32 = 0;
							} else {
								if (_local8.facingDir == -1){
									_local32 = _local8.whichWeapon.flipBlitOffset;
								};
							};
							_local9 = _local8.weaponCycleData[0][_local34];
							_local10 = _local8.whichWeapon.spritewidth;
							_local11 = _local8.whichWeapon.spriteheight;
							_local12 = _local8.whichWeapon.sheetWidth;
							_local13 = _local8.whichWeapon.sheetHeight;
							_local15 = ((_local9 - (_local3((_local9 / _local12)) * _local12)) * _local10);
							_local16 = (_local3((_local9 / _local12)) * _local11);
							_local17 = _local10;
							_local18 = _local11;
							_local19 = new Rectangle(_local15, (_local16 + _local32), _local17, _local18);
							_local2.screenBMP.copyPixels(_local8.whichWeapon.spritesheet, _local19, _local33, null, null, true);
						};
					};
					_local2.blitCollisionArea(_local8, "enemy", _local20, _local21, 1442775040);
				};
				_local7++;
			};
		}
		public function reblitEffects(_arg1:Boolean=true){
			var _local8:Effect;
			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:Rectangle;
			var _local19:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Point;
			var _local28:*;
			var _local29:String;
			var _local30:BitmapData;
			var _local2:GameDisplay = this;
			var _local3:* = _local2.floor;
			var _local4:GameCam = _local2.camObj;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			var _local6:Number = _local5.effects.length;
			var _local7:* = 0;
			while (_local7 < _local6) {
				_local8 = _local5.effects[_local7];
				if (((_local8.checkOnScreen()) && ((_local8.foreground == _arg1)))){
					_local9 = _local8.animationFrame;
					_local10 = _local8.spritewidth;
					_local11 = _local8.spriteheight;
					_local12 = _local8.sheetWidth;
					_local13 = _local8.sheetHeight;
					_local14 = ((_local9 - (_local3((_local9 / _local12)) * _local12)) * _local10);
					_local15 = (_local3((_local9 / _local12)) * _local11);
					_local16 = _local10;
					_local17 = _local11;
					_local18 = new Rectangle(_local14, _local15, _local16, _local17);
					_local19 = _local2.currentXcoord;
					_local20 = _local2.currentYcoord;
					_local21 = (_local8.spriteTargetX - _local8.spriteCenterX);
					_local22 = (_local8.spriteTargetY - _local8.spriteCenterY);
					_local23 = (_local8.x - _local21);
					_local24 = (_local8.y - _local22);
					_local25 = Math.floor(((_local23 - _local19) - (_local16 / 2)));
					_local26 = Math.floor(((_local24 - _local20) - (_local17 / 2)));
					_local27 = new Point(_local25, _local26);
					_local28 = _local8.type;
					_local29 = ("effectSheet" + _local28);
					_local30 = _local5[_local29];
					if (_local28 == "NumberEffect"){
						_local30 = _local8["spriteSheet"];
					};
					_local2.screenBMP.copyPixels(_local30, _local18, _local27, null, null, true);
				};
				_local7++;
			};
		}
		public function reblitItems(_arg1:Boolean, _arg2:Boolean=false){
			var _local9:GameItem;
			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:Rectangle;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			var _local25:Number;
			var _local26:Number;
			var _local27:Number;
			var _local28:Point;
			var _local29:*;
			var _local30:String;
			var _local31:BitmapData;
			var _local3:GameDisplay = this;
			var _local4:* = _local3.floor;
			var _local5:GameCam = _local3.camObj;
			var _local6:ItemManager = _local3.gameObj.itemManager;
			var _local7:Number = _local6.items.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				_local9 = _local6.items[_local8];
				if (((((_local9.checkOnScreen()) && ((_local9.background == _arg1)))) && ((_local9.foreground == _arg2)))){
					_local10 = _local9.animationFrame;
					_local11 = _local9.spritewidth;
					_local12 = _local9.spriteheight;
					_local13 = _local9.sheetWidth;
					_local14 = _local9.sheetHeight;
					_local15 = ((_local10 - (_local4((_local10 / _local13)) * _local13)) * _local11);
					_local16 = (_local4((_local10 / _local13)) * _local12);
					_local17 = _local11;
					_local18 = _local12;
					_local19 = new Rectangle(_local15, _local16, _local17, _local18);
					_local20 = _local3.currentXcoord;
					_local21 = _local3.currentYcoord;
					_local22 = (_local9.spriteTargetX - _local9.spriteCenterX);
					_local23 = (_local9.spriteTargetY - _local9.spriteCenterY);
					_local24 = (_local9.x - _local22);
					_local25 = (_local9.y - _local23);
					_local26 = Math.floor(((_local24 - _local20) - (_local17 / 2)));
					_local27 = Math.floor(((_local25 - _local21) - (_local18 / 2)));
					_local28 = new Point(_local26, _local27);
					_local29 = _local9.type;
					_local30 = ("itemSheet" + _local29);
					_local31 = _local6[_local30];
					_local3.screenBMP.copyPixels(_local31, _local19, _local28, null, null, true);
					_local3.blitCollisionArea(_local9, "item", _local20, _local21, 1442840320);
				};
				_local8++;
			};
		}
		public function destroy(){
			var _local1:GameDisplay = this;
			if (_local1.screenBMP){
				_local1.screenBMP.dispose();
				_local1.screenBMP = null;
			};
			if (_local1.playerSpriteSheet){
				_local1.playerSpriteSheet.dispose();
			};
			if (_local1.tileSheet){
				_local1.tileSheet.dispose();
			};
			_local1.clipMC.removeChild(_local1.clip);
			_local1.clip = null;
		}

	}
}//package cactusGame.display 

****************

//EventManager (cactusGame.events.EventManager)
package cactusGame.events {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public dynamic class EventManager {

		public var gameObj:GameModule;
		public var displayObj:GameDisplay;
		public var playerObj:PlayerChar;
		public var counter:Number;// = 0
		public var events:Array;
		public var eventType:String;// = ""

		public function EventManager(_arg1){
			events = [];
			super();
			var _local2:EventManager = this;
			_local2.gameObj = _arg1;
			_local2.displayObj = _local2.gameObj.gameDisplay;
		}
		public function addEvent(_arg1:Array, _arg2:Array, _arg3:Number, _arg4:Number, _arg5:Number){
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local6:EventManager = this;
			var _local7:GameModule = _local6.gameObj;
			var _local8:Number = _arg1.length;
			_local11 = 0;
			while (_local11 < _arg1.length) {
				_local9 = _arg1[_local11][0];
				_local10 = _arg1[_local11][1];
				if (_local10 == 1){
					_local7.objectManager.setEvent(_arg5, _local9, _arg2, _arg3, _arg4);
				} else {
					if (_local10 == 2){
						_local7.enemyManager.setEvent(_arg5, _local9, _arg2, _arg3, _arg4);
					};
				};
				_local11++;
			};
			_local11 = 0;
			while (_local11 < _arg2.length) {
				_local9 = _arg2[_local11][0];
				_local10 = _arg2[_local11][1];
				if (_local10 == 1){
					_local7.objectManager.setEventTriggers(_arg5, _local9, _local8, _arg1);
				} else {
					if (_local10 == 2){
						_local7.enemyManager.setEventTriggers(_arg5, _local9, _local8, _arg1);
					};
				};
				_local11++;
			};
		}
		public function loadEvents(_arg1:Number){
			var _local7:Array;
			var _local8:Array;
			var _local9:Number;
			var _local10:Number;
			var _local2:EventManager = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ScreenData = _local3.dataManager.currentScreenData;
			var _local5:Number = _local4.eventArray.length;
			var _local6:* = 0;
			while (_local6 < _local5) {
				_local7 = _local4.eventArray[_local6][0];
				_local8 = _local4.eventArray[_local6][1];
				_local9 = _local4.eventArray[_local6][2];
				_local10 = 1;
				if (_local4.eventArray[_local6].length > 3){
					_local10 = _local4.eventArray[_local6][3];
				};
				_local2.addEvent(_local7, _local8, _local9, _local10, _arg1);
				_local6++;
			};
		}
		public function destroy(){
		}

	}
}//package cactusGame.events 

****************

//GameControls (cactusGame.events.GameControls)
package cactusGame.events {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import flash.ui.*;
	import flash.system.*;

	public class GameControls {

		public var gameObj:GameModule;
		public var playerObj:PlayerChar;
		public var camObj:GameCam;
		public var displayObj:GameDisplay;
		public var stopControls:Boolean;// = false
		public var stopHurtControls:Boolean;// = false
		public var stopActionControls:Boolean;// = false
		public var stopCycle:Boolean;// = false
		public var cameraPanTargetX:Number;
		public var cameraPanTargetY:Number;
		public var cameraPanID:Number;
		public var cameraPanType;
		public var cameraPan:Boolean;// = false
		public var playerIsDead:Boolean;// = false
		public var deadPlayer:PlayerChar;
		public var hudBorder:Number;// = 326
		public var cameraAnchor;// = 0
		public var overrideKeyInput:Boolean;// = false
		public var gameplayTimer:Number;// = 0
		public var shiftIsDown:Boolean;// = false
		public var keyPressedJump:Boolean;// = false
		public var keyPressedAction:Boolean;// = false
		public var keyPressedLeft:Boolean;// = false
		public var keyPressedRight:Boolean;// = false
		public var keyPressedUp:Boolean;// = false
		public var keyPressedDown:Boolean;// = false
		public var coopKeyPressedJump:Boolean;// = false
		public var coopKeyPressedAction:Boolean;// = false
		public var coopKeyPressedLeft:Boolean;// = false
		public var coopKeyPressedRight:Boolean;// = false
		public var coopKeyPressedUp:Boolean;// = false
		public var coopKeyPressedDown:Boolean;// = false
		public var canPressTab:Boolean;// = true
		public var keysArray:Array;
		public var keyChangeListener;
		public var releasedArrow:Boolean;// = false
		public var pressedArrow:Boolean;// = false
		public var releasedArrowDirection:Number;// = 1
		public var sendQueue:Array;
		public var lastCycleTime:Number;// = 0
		public var speedCheckTimer:Number;// = -60
		public var speedCheckTimerMax:Number;// = 10
		public var keyPause:Number;
		public var bonusTimer:Number;// = 0
		public var bonusTimerMax:Number;// = 2700
		public var debugMode:Number;// = 1
		public var travelingThroughDoor:Boolean;// = false
		public var doorDirX:Number;// = 0
		public var doorDirY:Number;// = 0
		public var doorRoomID:Number;// = 0
		public var doorDoorID:Number;// = 0
		public var doorXoffset:Number;// = 0
		public var doorYoffset:Number;// = 0
		public var isPaused:Boolean;// = false

		public function GameControls(_arg1){
			keysArray = [];
			sendQueue = [];
			keyPause = Keyboard.ENTER;
			super();
			var _local2:GameControls = this;
			_local2.gameObj = _arg1;
			_local2.playerObj = _local2.gameObj.playerObj;
			_local2.camObj = _local2.gameObj.gameCam;
			_local2.displayObj = _local2.gameObj.gameDisplay;
		}
		public function setupControls(){
			var _local1:GameControls = this;
			_local1.gameplayTimer = 0;
			_local1.gameObj.stage.focus = _local1.gameObj.stage;
			_local1.gameObj.stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
			_local1.gameObj.stage.addEventListener(KeyboardEvent.KEY_UP, keyUpListener);
		}
		public function resetKeyFocus(){
			var _local1:GameControls = this;
			_local1.gameObj.stage.focus = _local1.gameObj.stage;
		}
		public function setupCycleCode(){
			var _local1:GameControls = this;
			if (!_local1.gameObj.hasEventListener(Event.ENTER_FRAME)){
				_local1.gameObj.addEventListener(Event.ENTER_FRAME, detectKeys);
			};
			_local1.stopCycle = false;
			_local1.stopControls = false;
			_local1.stopActionControls = false;
		}
		public function destroy(){
			var controls:GameControls = this;
			try {
				controls.gameObj.userData.totalTimePlayed.addValue(controls.gameplayTimer);
				controls.gameObj.userData.saveProgress("time");
			} catch(err) {
			};
			controls.gameObj.stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownListener);
			controls.gameObj.stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpListener);
			controls.gameObj.removeEventListener(Event.ENTER_FRAME, detectKeys);
		}
		public function convertToRadians(_arg1:Number):Number{
			return ((_arg1 * (Math.PI / 180)));
		}
		public function convertToDegrees(_arg1:Number):Number{
			return ((_arg1 * (180 / Math.PI)));
		}
		public function keyDownListener(_arg1:KeyboardEvent):void{
			var _local2:GameControls = this;
			var _local3:* = _local2.playerObj;
			var _local4:UserData = _local2.gameObj.userData;
			if (_arg1.keyCode == Keyboard.SHIFT){
				_local2.shiftIsDown = true;
			};
			if (!_local2.overrideKeyInput){
				if (_arg1.keyCode == _local4.keyCodeJump){
					if (!keyPressedJump){
						keyPressedJump = true;
					};
				} else {
					if (_arg1.keyCode == _local4.keyCodeAttack){
						if (!keyPressedAction){
							keyPressedAction = true;
						};
					} else {
						if (_arg1.keyCode == _local4.keyCodeLeft){
							if (!keyPressedLeft){
								keyPressedLeft = true;
							};
						} else {
							if (_arg1.keyCode == _local4.keyCodeRight){
								if (!keyPressedRight){
									keyPressedRight = true;
								};
							} else {
								if (_arg1.keyCode == _local4.keyCodeUp){
									if (!keyPressedUp){
										keyPressedUp = true;
									};
								} else {
									if (_arg1.keyCode == _local4.keyCodeDown){
										if (!keyPressedDown){
											keyPressedDown = true;
										};
									} else {
										if (_arg1.keyCode == _local2.keyPause){
										};
									};
								};
							};
						};
					};
				};
			} else {
				if (_local2.overrideKeyInput){
				};
			};
		}
		public function keyUpListener(_arg1:KeyboardEvent=null, _arg2:Number=-1):void{
			var _local3:GameControls = this;
			var _local4:PlayerChar = _local3.playerObj;
			var _local5:UserData = _local3.gameObj.userData;
			var _local6:Number = 0;
			var _local7:Number = 0;
			if (_arg1){
				_local7 = _arg1.keyCode;
				if (_arg1.keyCode == Keyboard.SHIFT){
					_local3.shiftIsDown = false;
				};
			} else {
				if (_arg2 > -1){
					_local7 = _arg2;
				};
			};
			if (_local7 == _local5.keyCodeJump){
				if (keyPressedJump){
					keyPressedJump = false;
				};
			} else {
				if (_local7 == _local5.keyCodeAttack){
					if (keyPressedAction){
						keyPressedAction = false;
					};
				} else {
					if (_local7 == _local5.keyCodeDrop){
						if (((((_local4.isCarryingObject) && (!(_local4.isThrowingObject)))) && (!(_local4.isGrabbingObject)))){
							_local4.throwCarriedObject(0, true);
							_local4.isThrowingObject = false;
						} else {
							_local4.dropWeapon();
						};
					} else {
						if (_local7 == _local5.keyCodeLeft){
							if (keyPressedLeft){
								keyPressedLeft = false;
							};
						} else {
							if (_local7 == _local5.keyCodeRight){
								if (keyPressedRight){
									keyPressedRight = false;
								};
							} else {
								if (_local7 == _local5.keyCodeUp){
									if (keyPressedUp){
										keyPressedUp = false;
									};
								} else {
									if (_local7 == _local5.keyCodeDown){
										if (keyPressedDown){
											keyPressedDown = false;
										};
									} else {
										if (_local7 == Keyboard.TAB){
										} else {
											if (_local7 == 73){
											} else {
												if (_local7 == 80){
												} else {
													if (_local7 == 187){
													} else {
														if ((((_local7 == Keyboard.SPACE)) || ((_local7 == Keyboard.ENTER)))){
														} else {
															if (_local7 == 49){
															} else {
																if (_local7 == 50){
																} else {
																	if (_local7 == 51){
																	} else {
																		if (_local7 == 52){
																		} else {
																			if (_local7 == 53){
																			} else {
																				if (_local7 == 54){
																				} else {
																					if (_local7 == 55){
																					} else {
																						if (_local7 == 56){
																						} else {
																							if (_local7 == 57){
																							} else {
																								if (_local7 == 48){
																								} else {
																									if (_local7 == 96){
																									} else {
																										if (_local7 == 97){
																										} else {
																											if (_local7 == 192){
																											};
																										};
																									};
																								};
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
		}
		public function resetKeys(){
			var _local1:GameControls = this;
			keyPressedAction = false;
			keyPressedJump = false;
			keyPressedLeft = false;
			keyPressedRight = false;
			keyPressedUp = false;
			keyPressedDown = false;
		}
		public function travelThroughDoor(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number){
			var _local7:GameControls = this;
			_local7.doorRoomID = _arg1;
			_local7.doorDoorID = _arg2;
			_local7.doorXoffset = _arg3;
			_local7.doorYoffset = _arg4;
			_local7.doorDirX = _arg5;
			_local7.doorDirY = _arg6;
			_local7.travelingThroughDoor = true;
			_local7.gameObj.gameDisplay.startTransition("out");
			_local7.gameObj.gameControls.stopCycle = true;
		}
		public function setCameraPan(_arg1, _arg2, _arg3, _arg4){
			var _local5:GameControls = this;
			var _local6:GameCam = _local5.camObj;
			_local5.cameraPanTargetX = _arg1;
			_local5.cameraPanTargetY = _arg2;
			_local5.cameraPanID = _arg4;
			_local5.cameraPanType = _arg3;
			_local5.cameraPan = true;
			_local5.stopCycle = true;
			_local5.stopControls = true;
			_local6.currstartdelay = 0;
			_local6.currenddelay = 0;
			if (((((!((_arg3 == "player"))) && ((_local6.prepanx == 0)))) && ((_local6.prepany == 0)))){
				_local6.prepanx = _local6.x;
				_local6.prepany = _local6.y;
			};
		}
		public function playerHasDied(_arg1:PlayerChar){
		}
		public function finishCameraPan(){
			var _local1:GameControls = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:GameCam = _local1.camObj;
			var _local4:* = _local1.cameraPanType;
			var _local5:* = _local1.cameraPanID;
			if (_local4 == "player"){
				_local1.stopCycle = false;
				_local1.stopControls = false;
				_local1.cameraPan = false;
				_local3.prepanx = 0;
				_local3.prepany = 0;
			} else {
				if (_local4 == 1){
					_local2.objectManager.stopCameraPan(_local5);
				} else {
					if (_local4 == 2){
						_local2.enemyManager.stopCameraPan(_local5);
					};
				};
			};
		}
		public function setCameraAnchor(_arg1){
			var _local2:GameControls = this;
			var _local3:GameCam = _local2.camObj;
			if (((((!(_arg1)) || ((_arg1 == 0)))) || ((_arg1 == undefined)))){
				_local2.cameraAnchor = 0;
			} else {
				_local2.cameraAnchor = _arg1;
			};
			_local3.prepanx = 0;
			_local3.prepany = 0;
		}
		public function adjustFramerate(_arg1:Number){
			var _local2:GameControls = this;
			_local2.gameObj.hudObj.interfaceClip.fps_txt.text = String((_arg1 + " fps"));
			_local2.gameObj.hudObj.interfaceClip.memory_txt.text = (String(Math.round(((System.totalMemory / 0x0400) / 0x0400))) + " MB");
		}
		public function pauseGame(){
			var controls:GameControls = this;
			controls.isPaused = true;
			controls.gameObj.soundManager.muteSound(false);
			try {
				controls.gameObj.hudObj.interfaceClip.pausedMC.visible = true;
			} catch(err) {
			};
		}
		public function resumeGame(_arg1:Boolean=false){
			var keysWereChanged = _arg1;
			var controls:GameControls = this;
			controls.isPaused = false;
			if (controls.gameObj.soundManager.isMute == false){
				controls.gameObj.soundManager.unmuteSound(false);
			};
			if (keysWereChanged){
				try {
					controls.gameObj.objectManager.updateTrainingSigns();
				} catch(err) {
				};
			};
			try {
				controls.gameObj.hudObj.interfaceClip.pausedMC.visible = false;
			} catch(err) {
			};
		}
		public function detectKeys(_arg1:Event){
			var _local17:*;
			var _local18:CactusChar;
			var _local2:GameControls = this;
			var _local3:* = getTimer();
			var _local4:Number = getTimer();
			var _local5:Number = (_local4 - _local2.lastCycleTime);
			var _local6:Number = Math.round((1000 / _local5));
			_local2.adjustFramerate(_local6);
			_local2.lastCycleTime = _local4;
			var _local7:GameModule = _local2.gameObj;
			var _local8:PlayerChar = _local2.playerObj;
			var _local9:GameCam = _local2.camObj;
			var _local10:GameDisplay = _local2.displayObj;
			var _local11:ItemManager = _local2.gameObj.itemManager;
			var _local12:EnemyManager = _local2.gameObj.enemyManager;
			var _local13:EffectManager = _local2.gameObj.effectManager;
			var _local14:ObjectManager = _local2.gameObj.objectManager;
			var _local15:BulletManager = _local2.gameObj.bulletManager;
			var _local16:Boolean = _local8.jump;
			if (!_local2.isPaused){
				if (!_local2.stopCycle){
					if (!_local8.isFinishingLevel){
						_local2.gameplayTimer++;
					};
					if (((!(_local8.isPausingAfterMiniboss)) && (!(_local8.isFinishingLevel)))){
						_local7.userData.timeBonus.addValue(-1);
						_local7.userData.levelTimePlayed.addValue(1);
					};
					if (((_local8.isShoved) && ((((((_local8.walkingDir == 1)) && (keyPressedRight))) || ((((_local8.walkingDir == -1)) && (keyPressedLeft))))))){
						_local8.isShoved = false;
						_local8.walkingDir = _local8.facingDir;
					};
					if (((((!(_local2.stopControls)) && (!(_local2.stopHurtControls)))) && (!(_local2.stopActionControls)))){
						if (_local7.characterType == "cactus"){
							_local2.keyCheckCactus(CactusChar(_local8));
						} else {
							_local2.keyCheckCactus(CactusChar(_local8));
						};
					};
					if (_local8.jump){
						_local8.duck = false;
						_local8.isDucking = false;
						_local8.jumpChar();
					};
					if (_local7.characterType == "cactus"){
						_local18 = CactusChar(_local8);
						if (((((((_local16) && (!(_local18.jump)))) && (!(_local18.isWalking)))) && (!((_local18.skidSpeed == 0))))){
							_local18.skidSpeed = 0;
						};
						if (((((!(_local18.isWalking)) && (_local18.jump))) && (!((_local18.skidSpeed == 0))))){
							_local18.skidSpeed = 0;
						};
						if (((_local16) && (!(_local8.jump)))){
							_local8.walkingDir = _local8.facingDir;
							_local8.isTurning = false;
							if (_local8.speed < 0){
								_local8.speed = (_local8.speed * -1);
							};
							if (_local18.skidSpeed > _local18.speed){
								_local18.skidSpeed = _local18.speed;
							};
						};
					};
					if (_local8.triggerjumpx){
						_local8.moveChar(_local8.walkingDir, 0, 0);
					};
					if (((_local8.isDead) && (_local8.jump))){
						if (_local8.fellOffTrain){
							_local8.setSpeed(30);
							_local8.moveChar(_local8.walkingDir, 0, 0, false, false, false);
						} else {
							_local8.setSpeed(_local8.walkspeed);
							_local8.moveChar(_local8.walkingDir, 0, 0);
						};
					};
					if (((!(_local8.isDead)) && (((_local8.isHit) || (_local8.isShoved))))){
						if (_local8.speed > 0){
							_local8.speed--;
							_local8.moveChar(_local8.walkingDir, 0, 0);
						};
					};
					_local8.updateObject();
					_local11.processItems();
					_local15.processBullets();
					_local12.processEnemies();
					_local13.processEffects();
					_local14.processObjects();
					_local17 = _local2.cameraAnchor;
					if (_local17 == 0){
						_local17 = _local8;
					};
					_local9.adjustCamera(_local17);
					_local7.hudObj.updateTimer();
					_local10.redrawScreen();
				} else {
					if (playerIsDead){
					} else {
						if (_local2.cameraPan){
							if (_local2.cameraPanType == 1){
								_local14[("TargetObject" + _local2.cameraPanID)].updateObject();
							} else {
								if (_local2.cameraPanType == 2){
									_local12[("Enemy" + _local2.cameraPanID)].updateObject();
								};
							};
							_local7.effectManager.processEffects();
							_local9.panCamera(_local2.cameraPanTargetX, _local2.cameraPanTargetY, _local2.cameraPanType);
							_local10.redrawScreen();
						} else {
							if (((((_local2.displayObj.isTransitioningIn) || (_local2.displayObj.isTransitionOut))) || (!((_local2.displayObj.deadIrisMC == null))))){
								_local2.displayObj.redrawScreen();
							};
						};
					};
				};
			};
		}
		public function keyCheckCactus(_arg1:CactusChar){
			var _local4:*;
			var _local5:*;
			var _local6:*;
			var _local7:*;
			var _local8:*;
			var _local9:*;
			var _local10:*;
			var _local2:GameControls = this;
			var _local3:GameModule = _local2.gameObj;
			_local4 = _local2.keyPressedAction;
			_local5 = _local2.keyPressedJump;
			_local6 = _local2.keyPressedLeft;
			_local7 = _local2.keyPressedRight;
			_local9 = _local2.keyPressedUp;
			_local8 = _local2.keyPressedDown;
			var _local11:* = _arg1.aiming;
			_arg1.unaimAngleDown = _arg1.aimAngleDown;
			_arg1.unaimAngleForward = _arg1.aimAngleForward;
			_arg1.unaimAngleUp = _arg1.aimAngleUp;
			if (_local9){
				_arg1.aimAngleUp = true;
			} else {
				_arg1.aimAngleUp = false;
			};
			if (_local8){
				_arg1.aimAngleDown = true;
			} else {
				_arg1.aimAngleDown = false;
			};
			if (((_local7) && ((_arg1.walkingDir == 1)))){
				_arg1.aimAngleForward = true;
			} else {
				if (((_local6) && ((_arg1.walkingDir == -1)))){
					_arg1.aimAngleForward = true;
				} else {
					_arg1.aimAngleForward = false;
				};
			};
			if (((((((!(_arg1.isWalking)) && (_local9))) && (!(_arg1.duck)))) && (((_arg1.usingGun()) || ((_arg1.hasWeaponType == "toss")))))){
				_arg1.aiming = true;
			} else {
				if (((_arg1.aiming) && (((((!(_local9)) || (_arg1.isGrabbing))) || (_arg1.duck))))){
					_arg1.aiming = false;
				};
			};
			_local2.jumpCactus(_arg1);
			if (((((((((_local8) && (!(_arg1.jump)))) && (!(_local6)))) && (!(_local7)))) && (_arg1.canPressDown))){
				if (_arg1.isCarryingObject){
					if (((!(_arg1.isThrowingObject)) && (!(_arg1.isGrabbingObject)))){
						_arg1.throwCarriedObject(0, true);
						_arg1.isThrowingObject = false;
					};
				} else {
					if (!_arg1.checkForGrabbingObjects()){
						_arg1.startDucking();
					};
				};
				_arg1.canPressDown = false;
			} else {
				if (!_local8){
					if (_arg1.duck){
						_arg1.duck = false;
					};
					_arg1.canPressDown = true;
				};
			};
			if (((_local6) && (_arg1.canPressLeft))){
				if (((((_arg1.duck) || (_arg1.isGrabbingObject))) || (_arg1.aiming))){
					_arg1.walkingDir = -1;
					_arg1.facingDir = -1;
					_arg1.isWalking = false;
				} else {
					if (((_arg1.isAttacking) && ((_arg1.facingDir == 1)))){
						if (_arg1.usingGun()){
						} else {
							_arg1.cancelAttack();
						};
						_arg1.setSpeed(_arg1.walkspeed);
						_arg1.walkingDir = -1;
						_arg1.facingDir = -1;
						_local10 = _arg1.moveChar(-1, 0, 0);
					} else {
						if (((((((_arg1.isAttacking) && ((_arg1.facingDir == -1)))) && (!(_arg1.canDealDamage)))) && (!(_arg1.jump)))){
							_arg1.walkingDir = -1;
							_arg1.facingDir = -1;
							_arg1.isWalking = false;
							_arg1.canPressLeft = false;
							_arg1.postAttackDelayTimer = 0;
						} else {
							if (_arg1.isGrabbing){
								if (!_arg1.isStartingGrabbing){
									if (_arg1.checkIfCanGrab(_arg1.leftX, (_arg1.ytile + _arg1.grabTileYOffset))){
										_arg1.setSpeed(_arg1.grabSpeed);
										_arg1.walkingDir = -1;
										_arg1.facingDir = -1;
										_local10 = _arg1.moveChar(-1, 0, 0);
									} else {
										_arg1.isWalking = false;
									};
								};
							} else {
								if (((_arg1.jump) && (_arg1.isWalking))){
									if (_arg1.walkingDir == -1){
										if (_arg1.speed < _arg1.walkspeed){
											_arg1.speed = (_arg1.speed + 2);
										};
										if (_arg1.speed > _arg1.walkspeed){
											_arg1.setSpeed(_arg1.walkspeed);
										};
									} else {
										if (_arg1.walkingDir == 1){
											if (_arg1.speed > (_arg1.walkspeed * -1)){
												_arg1.speed = (_arg1.speed - 2);
											};
											if (_arg1.speed < (_arg1.walkspeed * -1)){
												_arg1.setSpeed((_arg1.walkspeed * -1));
											};
										};
									};
									_arg1.facingDir = -1;
									_local10 = _arg1.moveChar(_arg1.walkingDir, 0, 0);
								} else {
									if ((((((_arg1.walkingDir == 1)) && (!(_arg1.jump)))) && (!(_arg1.isShoved)))){
										_arg1.isTurning = true;
									};
									_arg1.setSpeed(_arg1.walkspeed);
									_arg1.walkingDir = -1;
									_arg1.facingDir = -1;
									_local10 = _arg1.moveChar(-1, 0, 0);
								};
							};
						};
					};
				};
			} else {
				if (((_local7) && (_arg1.canPressRight))){
					if (((((_arg1.duck) || (_arg1.isGrabbingObject))) || (_arg1.aiming))){
						_arg1.walkingDir = 1;
						_arg1.facingDir = 1;
						_arg1.isWalking = false;
					} else {
						if (((_arg1.isAttacking) && ((_arg1.facingDir == -1)))){
							if (_arg1.usingGun()){
							} else {
								_arg1.cancelAttack();
							};
							_arg1.setSpeed(_arg1.walkspeed);
							_arg1.walkingDir = 1;
							_arg1.facingDir = 1;
							_local10 = _arg1.moveChar(1, 0, 0);
						} else {
							if (((((((_arg1.isAttacking) && ((_arg1.facingDir == 1)))) && (!(_arg1.canDealDamage)))) && (!(_arg1.jump)))){
								_arg1.walkingDir = 1;
								_arg1.facingDir = 1;
								_arg1.isWalking = false;
								_arg1.canPressRight = false;
								_arg1.postAttackDelayTimer = 0;
							} else {
								if (_arg1.isGrabbing){
									if (!_arg1.isStartingGrabbing){
										if (_arg1.checkIfCanGrab(_arg1.rightX, (_arg1.ytile + _arg1.grabTileYOffset))){
											_arg1.setSpeed(_arg1.grabSpeed);
											_arg1.walkingDir = 1;
											_arg1.facingDir = 1;
											_local10 = _arg1.moveChar(1, 0, 0);
										} else {
											_arg1.isWalking = false;
										};
									};
								} else {
									if (((_arg1.jump) && (_arg1.isWalking))){
										if (_arg1.walkingDir == 1){
											if (_arg1.speed < _arg1.walkspeed){
												_arg1.speed = (_arg1.speed + 2);
											};
											if (_arg1.speed > _arg1.walkspeed){
												_arg1.setSpeed(_arg1.walkspeed);
											};
										} else {
											if (_arg1.walkingDir == -1){
												if (_arg1.speed > (_arg1.walkspeed * -1)){
													_arg1.speed = (_arg1.speed - 2);
												};
												if (_arg1.speed < (_arg1.walkspeed * -1)){
													_arg1.setSpeed((_arg1.walkspeed * -1));
												};
											};
										};
										_arg1.facingDir = 1;
										_local10 = _arg1.moveChar(_arg1.walkingDir, 0, 0);
									} else {
										if ((((((_arg1.walkingDir == -1)) && (!(_arg1.jump)))) && (!(_arg1.isShoved)))){
											_arg1.isTurning = true;
										};
										_arg1.setSpeed(_arg1.walkspeed);
										_arg1.walkingDir = 1;
										_arg1.facingDir = 1;
										_local10 = _arg1.moveChar(1, 0, 0);
									};
								};
							};
						};
					};
				} else {
					if (_arg1.speed < 0){
						_arg1.speed = (_arg1.speed * -1);
						_arg1.walkingDir = (_arg1.walkingDir * -1);
					};
					if (((((_arg1.jump) && (_arg1.isWalking))) && (!(_arg1.isGrabbing)))){
						if (_arg1.speed >= 2){
							if ((((_arg1.speed > 2)) && (((gameplayTimer % 2) == 0)))){
								_arg1.speed--;
							};
							if (_arg1.skidSpeed > _arg1.speed){
								_arg1.skidSpeed = _arg1.speed;
							};
							_local10 = _arg1.moveChar(_arg1.walkingDir, 0, 0);
						};
					} else {
						if (((!(_arg1.jump)) && (!(_arg1.isShoved)))){
							_arg1.isWalking = false;
						} else {
							if (((((_arg1.isShoved) && (!(keyPressedRight)))) && (!(keyPressedLeft)))){
								_arg1.isWalking = false;
							};
						};
					};
					if (((((_arg1.isShoved) && (_arg1.isAttacking))) && (!(_arg1.canDealDamage)))){
						_arg1.isShoved = false;
						_arg1.postAttackDelayTimer = 0;
						_arg1.isWalking = false;
						if (_arg1.facingDir == 1){
							_arg1.canPressRight = false;
							_arg1.canPressLeft = true;
						} else {
							if (_arg1.facingDir == -1){
								_arg1.canPressRight = true;
								_arg1.canPressLeft = false;
							};
						};
					};
					if (((((_arg1.isSkidding) && (!(_arg1.isGrabbing)))) && (!(_arg1.isShoved)))){
						_arg1.setSpeed(_arg1.skidSpeed);
						_local10 = _arg1.moveChar(_arg1.walkingDir, 0, 0);
					};
				};
			};
			if (_local4){
				if (_arg1.isCarryingObject){
					if (((((_arg1.canPressAction) && (!(_arg1.isThrowingObject)))) && (!(_arg1.isGrabbingObject)))){
						_arg1.startThrowingObject();
						_arg1.canPressAction = false;
					};
				} else {
					if (((((((((_arg1.canAttack) && (!(_arg1.isCarryingObject)))) && (!(_arg1.isGrabbingObject)))) && (!(_arg1.isThrowingObject)))) && (_arg1.canPressAction))){
						_arg1.startAttacking();
						_arg1.canPressAction = false;
					};
				};
			} else {
				if (((!(_local4)) && (!(_arg1.canPressAction)))){
					_arg1.canPressAction = true;
				};
			};
		}
		public function jumpCactus(_arg1){
			var _local5:*;
			var _local6:*;
			var _local2:CactusChar = CactusChar(_arg1);
			var _local3:GameControls = this;
			var _local4:GameModule = _local3.gameObj;
			_local5 = _local3.keyPressedJump;
			_local6 = _local3.keyPressedDown;
			if (((((_local6) && (!(_local2.jump)))) && (_local2.isGrabbing))){
				_local2.jump = true;
				_local2.jumpspeed = 2;
				_local2.y = (_local2.y + 22);
				_local2.ytile = Math.floor((_local2.y / displayObj.tileWidth));
				_local2.gravity = _local2.normalgravity;
				_local2.duck = false;
				_local2.isDucking = false;
				_local2.isGrabbing = false;
				_local2.isStartingGrabbing = false;
				_local2.isWalking = false;
			};
			if (((((((_local5) && (((!(_local2.jump)) || (_local2.canFudgeJump()))))) && (!(_local2.isGrabbingObject)))) && (_local2.canPressJump))){
				if (((_local6) && (((_local2.checkDropThruCloud()) || (_local2.isGrabbing))))){
					if ((((((_local2.checkForCloudToBottom(_local2.leftX, (_local2.downY + 1)) == true)) || ((_local2.checkForCloudToBottom(_local2.rightX, (_local2.downY + 1)) == true)))) || (_local2.isGrabbing))){
						_local2.jump = true;
						_local2.jumpspeed = 0;
						_local2.y = (_local2.y + 16);
						if (_local2.isGrabbing){
							_local2.y = (_local2.y + 6);
							_local2.jumpspeed = 2;
						};
						_local2.ytile = Math.floor((_local2.y / displayObj.tileWidth));
						_local2.gravity = _local2.normalgravity;
						_local2.duck = false;
						_local2.isDucking = false;
					};
				} else {
					_local2.jump = true;
					_local2.jumpspeed = _local2.jumpstart;
					_local2.gravity = _local2.jumpgravity;
					_local2.duck = false;
					_local2.isDucking = false;
					if (_local2.whichJumpSound == 1){
						_local4.soundManager.playSound("whoosh1.wav");
						_local2.whichJumpSound = 2;
					} else {
						_local4.soundManager.playSound("whoosh2.wav");
						_local2.whichJumpSound = 1;
					};
				};
				_local2.isGrabbing = false;
				_local2.isStartingGrabbing = false;
				_local2.canPressJump = false;
				_local2.lastSafeTime = 0;
			} else {
				if (((((((!(_local5)) && (_local2.jump))) && ((_local2.jumpspeed < _local2.shortjump)))) && (!(_local2.triggerjump)))){
					_local2.jumpspeed = _local2.shortjump;
					_local2.canPressJump = true;
					_local2.lastSafeTime = 0;
				} else {
					if (((!(_local5)) && (!(_local2.jump)))){
						_local2.canPressJump = true;
					};
				};
			};
		}

	}
}//package cactusGame.events 

****************

//BitmapManager (cactusGame.managers.BitmapManager)
package cactusGame.managers {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;

	public class BitmapManager {

		public var gameObj:GameModule;
		public var playerSpriteSheet:BitmapData;
		public var playerLegsSheet:BitmapData;
		public var playerCapeSheet:BitmapData;
		public var transitionInSheet:BitmapData;
		public var transitionOutSheet:BitmapData;
		public var tilesetNames:Array;
		public var bgNames:Array;
		public var tilesheet:BitmapData;
		public var mgsheet:BitmapData;
		public var bgsheet:BitmapData;

		public function BitmapManager(_arg1:GameModule){
			tilesetNames = ["canyon", "mines", "train", "ghosttown", "mountain", "train", "canyon", "mines", "train", "ghosttown", "temple", "temple"];
			bgNames = ["canyon", "mines", "canyon", "ghosttown", "mountain", "ghosttown", "canyon", "mines", "mountain", "ghosttown2", "temple", "temple"];
			super();
			var _local2:BitmapManager = this;
			_local2.gameObj = _arg1;
			_local2.setupGameBitmaps();
		}
		public function setupGameBitmaps(){
			var _local1:BitmapManager = this;
			_local1.setupTilesheets();
			_local1.transitionInSheet = new transition_in_effect(0, 0);
			_local1.transitionOutSheet = new transition_out_effect(0, 0);
		}
		public function setupTilesheets(){
			var _local1:Number = getTimer();
			var _local2:BitmapManager = this;
			var _local3:Number = (getTimer() - _local1);
		}
		public function destroy(){
			var _local1:BitmapManager = this;
			_local1.transitionInSheet.dispose();
			_local1.transitionOutSheet.dispose();
			_local1.playerSpriteSheet.dispose();
			_local1.playerLegsSheet.dispose();
			_local1.playerCapeSheet.dispose();
		}
		public function getTilesheetBitmap(_arg1:Number):BitmapData{
			var _local2:BitmapManager = this;
			if (_local2.tilesheet != null){
				_local2.tilesheet.dispose();
			};
			_local2.tilesheet = _local2.loadBitmap((_local2.tilesetNames[_arg1] + "_tiles"));
			return (_local2.tilesheet);
		}
		public function getMiddlegroundBitmap(_arg1:Number):BitmapData{
			var _local2:BitmapManager = this;
			if (_local2.mgsheet != null){
				_local2.mgsheet.dispose();
			};
			_local2.mgsheet = _local2.loadBitmap((_local2.bgNames[_arg1] + "_mg"));
			return (_local2.mgsheet);
		}
		public function getBackgroundBitmap(_arg1:Number):BitmapData{
			var _local2:BitmapManager = this;
			if (_local2.bgsheet != null){
				_local2.bgsheet.dispose();
			};
			_local2.bgsheet = _local2.loadBitmap((_local2.bgNames[_arg1] + "_bg"));
			return (_local2.bgsheet);
		}
		public function loadBitmap(_arg1:String):BitmapData{
			var _local2:Class = (getDefinitionByName(_arg1) as Class);
			var _local3:BitmapData = new _local2(0, 0);
			return (_local3);
		}
		public function loadMovieClip(_arg1:String):MovieClip{
			var _local2:Class = (getDefinitionByName(_arg1) as Class);
			var _local3:MovieClip = new (_local2);
			return (_local3);
		}
		public function createPlayerSprite(){
			var _local1:BitmapManager = this;
			var _local2:DataManager = _local1.gameObj.dataManager;
			if (_local1.gameObj.characterType == "cactus"){
				_local1.playerSpriteSheet = new cactus_torso_sheet(0, 0);
				_local1.playerLegsSheet = new cactus_legs_sheet(0, 0);
				_local1.playerCapeSheet = new cactus_cape_sheet(0, 0);
			};
		}
		public function clearExtraSprites(){
			var _local1:BitmapManager = this;
		}
		public function createEnemySprite(_arg1:Number):BitmapData{
			var _local2:BitmapManager = this;
			return (null);
		}

	}
}//package cactusGame.managers 

****************

//BulletManager (cactusGame.managers.BulletManager)
package cactusGame.managers {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.models.bullets.*;

	public dynamic class BulletManager {

		public var gameObj:GameModule;
		public var displayObj:GameDisplay;
		public var playerObj:PlayerChar;
		public var counter:Number;// = 0
		public var bullets:Array;
		var forcedBullets:Array;

		public function BulletManager(_arg1){
			bullets = [];
			forcedBullets = [PlayingCardBullet, DartBullet, DaggerBullet, BadgeBullet, RomanCandleBullet, TomahawkBullet, BazookaRocket, BlunderbussBullet, SquirtGunBullet, FlamethrowerBullet, ScorpionBullet, TNTBullet, TearGasBullet, LanternBullet, GrenadeBullet, CherryBombBullet, GenericBullet, CrossbowArrow, Harpoon];
			super();
			var _local2:BulletManager = this;
			_local2.gameObj = _arg1;
			_local2.displayObj = _local2.gameObj.gameDisplay;
		}
		public function addBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6:String="", _arg7:Boolean=true, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			var _local17:*;
			var _local11:BulletManager = this;
			var _local12:GameModule = _local11.gameObj;
			_local11.counter++;
			if (_local11.counter > 200){
				_local11.counter = 1;
			};
			var _local13:Number = _local11.counter;
			var _local14:String = ("Bullet" + _local13);
			if (_arg6 == ""){
				_arg6 = "cactusGame.models.bullets.";
			};
			var _local15:String = _arg5;
			var _local16:Class = (getDefinitionByName((_arg6 + _local15)) as Class);
			_local11[_local14] = new _local16(_local12, _arg1, _arg2, _arg3, _arg4, _arg5, _local13, _arg8, _arg9, _arg10);
			_local11.bullets.push(_local11[_local14]);
			if (_local11[("bulletSheet" + _arg5)] == undefined){
				_local17 = _local11[_local14].sheetname;
				_local11[("bulletSheet" + _arg5)] = _local12.bitmapManager.loadBitmap(_local17);
			};
		}
		public function processBullets(){
			var _local4:Bullet;
			var _local1:BulletManager = this;
			var _local2:Number = _local1.bullets.length;
			var _local3:* = 0;
			while (_local3 < _local2) {
				if (_local1.bullets[_local3]){
					_local4 = _local1.bullets[_local3];
					_local4.updateObject();
				};
				_local3++;
			};
		}
		public function clearBullets(){
			var ob:Bullet;
			var mytype:*;
			var manager:BulletManager = this;
			var totalbullets:Number = manager.bullets.length;
			var gameObj:GameModule = manager.gameObj;
			var i:* = 0;
			while (i < totalbullets) {
				ob = manager.bullets[i];
				mytype = ob.type;
				if (manager[("bulletSheet" + mytype)]){
					manager[("bulletSheet" + mytype)].dispose();
					manager[("bulletSheet" + mytype)] = null;
				};
				try {
					if (ob){
						ob.destroy();
					};
				} catch(e) {
				};
				ob = null;
				i = (i + 1);
			};
			manager.counter = 0;
			manager.bullets = [];
		}
		public function destroy(){
			var _local1:BulletManager = this;
			_local1.clearBullets();
		}
		public function removeBullet(_arg1, _arg2:Boolean=false){
			var bulletid = _arg1;
			var nosplice = _arg2;
			var manager:BulletManager = this;
			var player:PlayerChar = manager.gameObj.playerObj;
			var hud:GameHUD = manager.gameObj.hudObj;
			var name:* = ("Bullet" + bulletid);
			var which:Number = -1;
			var totalbullets:Number = manager.bullets.length;
			var i:* = 0;
			while (i < totalbullets) {
				if (manager.bullets[i] == manager[name]){
					which = i;
				};
				i = (i + 1);
			};
			if (which != -1){
				manager.bullets[which] = 0;
				if (!nosplice){
					manager.bullets.splice(which, 1);
				};
			};
			try {
				if (manager[name]){
					manager[name].destroy();
				};
			} catch(e) {
			};
			try {
				if (manager[name]){
					manager[name] = null;
				};
			} catch(e) {
			};
		}

	}
}//package cactusGame.managers 

****************

//ChallengeManager (cactusGame.managers.ChallengeManager)
package cactusGame.managers {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;

	public class ChallengeManager {

		public var gameObj:GameModule;
		public var challenges:Array;
		public var badges:Array;

		public function ChallengeManager(_arg1:GameModule){
			challenges = [new Challenge(0, 1, Challenge.TAGGED, {tagName:"wantedPoster", targetAmount:10, showTally:true, title:"Unwanted", description:"Take down all 10 Wanted Posters"}), new Challenge(0, 2, Challenge.TIMETRIAL, {targetAmount:3000, title:"Fast Learner", description:"Beat the level in 1:40"}), new Challenge(0, 3, Challenge.ENEMYTALLY, {targetAmount:17, title:"Brawler", description:"Kill of the Enemigos in the area"}), new Challenge(0, 4, Challenge.TAGGED, {tagName:"brambleBreak", targetAmount:8, showTally:true, title:"Bramble Breaker", description:"Remove all bramble bushes in the area"}), new Challenge(0, 5, Challenge.ENEMYTALLY, {targetAmount:5, whichWeapon:"Badge", showTally:true, title:"Marshall McCoy", description:"Kill 5 Enemigos using Sheriff Badges"}), new Challenge(1, 1, Challenge.TAGGED, {tagName:"waterTorch", targetAmount:10, title:"Firefighter", showTally:true, description:"Put out all of the torches using a Squirt Gun"}), new Challenge(1, 2, Challenge.TIMETRIAL, {targetAmount:2700, title:"Impatient Miner", description:"Beat the level in 1:30"}), new Challenge(1, 3, Challenge.ENEMYTALLY, {targetAmount:29, whichWeapon:"punch", title:"Bare Knuckle Brawl", description:"Kill all of the Enemigos using only your fists"}), new Challenge(1, 4, Challenge.TAGGED, {tagName:"crateOnEnemy", targetAmount:5, showTally:true, title:"Crate Carnage", description:"Break 5 Crates by throwing them at Enemigos"}), new Challenge(1, 5, Challenge.ENEMYJUGGLE, {juggleTimesHit:5, title:"Keep It Going", description:"Hit an Enemigo into the air five times as he's dying"}), new Challenge(2, 1, Challenge.TAGGED, {tagName:"openedLuggage", targetAmount:18, showTally:true, title:"Luggage Bandit", description:"Rummage through all the suitcases"}), new Challenge(2, 2, Challenge.TIMETRIAL, {targetAmount:2700, title:"High-Speed Train", description:"Beat the level in 1:30"}), new Challenge(2, 3, Challenge.TAGGED, {tagName:"enteredTrainCar", targetAmount:10, showTally:true, title:"Train Inspector", description:"Explore all of the train cars"}), new Challenge(2, 4, Challenge.ENEMYTALLY, {whichWeapon:"CherryBomb", targetAmount:20, showTally:true, title:"Cherrybomber", description:"Kill 20 Enemigos using Cherry Bombs"}), new Challenge(2, 5, Challenge.COMBO, {targetAmount:50, title:"Combo Train", description:"Get a x50 Combo while fighting"}), new Challenge(3, 1, Challenge.TAGGED, {tagName:"chickenInCoop", targetAmount:8, showTally:true, title:"Chicken Wrangler", description:"Get all of the Chickens in the coop"}), new Challenge(3, 2, Challenge.TIMETRIAL, {targetAmount:4500, title:"Quick Escape", description:"Beat the level in 2:30"}), new Challenge(3, 3, Challenge.ENEMYTALLY, {targetAmount:20, whichWeapon:"RomanCandle", showTally:true, title:"Fireworks", description:"Kill 20 Enemigos using only a Roman Candle"}), new Challenge(3, 4, Challenge.ENEMYJUGGLE, {juggleTimesHit:6, juggleStartingWeapon:"nopunch", juggleWeaponsAmount:0, juggleWeapons:["punch"], title:"Tenderizer", description:"Kill an Enemigo with a weapon, then juggle him 5 times with your fists"}), new Challenge(3, 5, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_ENDNODYING, targetAmount:0, title:"Sneaky McCoy", description:"Reach the end of the level without dying"}), new Challenge(4, 1, Challenge.TAGGED, {tagName:"explodeBoulder", targetAmount:10, showTally:true, title:"Boulder Bane", description:"Blow up 10 Boulders with TNT Barrels"}), new Challenge(4, 2, Challenge.TIMETRIAL, {targetAmount:4950, title:"Mountain Marathon", description:"Beat the level in 2:45"}), new Challenge(4, 3, Challenge.TAGGED, {tagName:"gorgeEnemy", targetAmount:10, showTally:true, title:"King of the Hill", description:"Kill all Enemigos in the Bottomless Gorge area"}), new Challenge(4, 4, Challenge.TAGGED, {tagName:"crossedGorge", targetAmount:1, title:"Expert Climber", description:"Cross the Bottomless Gorge without falling"}), new Challenge(4, 5, Challenge.MULTIJUGGLE, {targetAmount:3, title:"Juggler", description:"Keep three enemies in the air at once while they're dying"}), new Challenge(5, 1, Challenge.TAGGED, {tagName:"finishedRumble", targetAmount:1, title:"Chicken Train Rumble", description:"Reach the train following yours, and finish the Rumble with the Enemigos"}), new Challenge(5, 2, Challenge.TIMETRIAL, {targetAmount:3600, title:"Full Steam Ahead", description:"Beat the level in 2:00"}), new Challenge(5, 3, Challenge.ENEMYTALLY, {whichWeapon:"Banjo", enemyWeapon:"Guitar", targetAmount:8, showTally:true, title:"Break up the Band", description:"Kill all Guitar Enemigos with Banjos"}), new Challenge(5, 4, Challenge.ENEMYTALLY, {weaponType:"whip", enemyType:8, targetAmount:3, showTally:true, title:"Crack That Whip", description:"Take out 3 whip-wielding Enemigos with whips"}), new Challenge(5, 5, Challenge.TAGGED, {tagName:"luggageLost", targetAmount:11, showTally:true, title:"Check Your Luggage", description:"Throw all luggage trunks off the train"}), new Challenge(6, 1, Challenge.TAGGED, {tagName:"scorpionBroken", targetAmount:10, showTally:true, title:"Scorpion March", description:"Break the Scorpion Targets using a Scorpion"}), new Challenge(6, 2, Challenge.TIMETRIAL, {targetAmount:4200, title:"Race to the Finish", description:"Beat the level in 2:20"}), new Challenge(6, 3, Challenge.ENEMYTALLY, {whichWeapon:"Rattlesnake", targetAmount:25, showTally:true, title:"Snake Charmer", description:"Kill 25 Enemigos using Rattlesnakes"}), new Challenge(6, 4, Challenge.TAGGED, {tagName:"shotTarget", targetAmount:12, showTally:true, title:"Target Practice", description:"Shoot all of the Gun Targets with a Derringer"}), new Challenge(6, 5, Challenge.ENEMYJUGGLE, {juggleTimesHit:3, juggleStartingWeapon:"any", juggleWeaponsAmount:3, juggleWeapons:["any"], includeStartingWeapon:true, title:"Weapon of Choice", description:"Juggle one dying Enemigo with three different weapons"}), new Challenge(7, 1, Challenge.TAGGED, {tagName:"goldMined", targetAmount:9, showTally:true, title:"Mine For Gems", description:"Mine for gems in the ore rocks using a Pickaxe"}), new Challenge(7, 2, Challenge.TIMETRIAL, {targetAmount:5400, title:"No Time To Mine", description:"Beat the level in 3:00"}), new Challenge(7, 3, Challenge.TAGGED, {tagName:"finishedRumble", targetAmount:1, title:"Rumble Room", description:"Find the Enemigos' hideout in the Mines and finish the Rumble"}), new Challenge(7, 4, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_ENDNODYING, targetAmount:0, title:"Bullet Dodger", description:"Get to the end of the level without dying"}), new Challenge(7, 5, Challenge.ENEMYTALLY, {targetAmount:10, showTally:true, whichWeapon:"Scythe", title:"Grim Reaper", description:"Kill 10 Enemigos using a Scythe"}), new Challenge(8, 1, Challenge.TAGGED, {tagName:"thrownSeat", targetAmount:21, showTally:true, title:"De-Thrown", description:"Throw all of the seats from train cars"}), new Challenge(8, 2, Challenge.TIMETRIAL, {targetAmount:4500, title:"Locomotion", description:"Beat the level in 2:30"}), new Challenge(8, 3, Challenge.ENEMYTALLY, {whichWeapon:"Lantern", enemyWeapon:"Flamethrower", targetAmount:6, showTally:true, title:"Fight Fire with Fire", description:"Use Lanterns to defeat the Flamethrower Enemigos"}), new Challenge(8, 4, Challenge.ENEMYTALLY, {targetAmount:12, whichWeapon:"punch", enemyWeapon:"Gatling", showTally:true, title:"Punch Your Ticket", description:"Kill all Gatling Gunner Enemigos with your bare fists"}), new Challenge(8, 5, Challenge.TAGGED, {tagName:"grenadeTNTBarrel", targetAmount:1, title:"Hazardous Cargo", description:"Destroy all TNT Barrels in the freight car using a Grenade"}), new Challenge(9, 1, Challenge.TAGGED, {tagName:"torchLit", targetAmount:12, showTally:true, title:"Light the Torches", description:"Use a Flamethrower to light all of the torches"}), new Challenge(9, 2, Challenge.TIMETRIAL, {targetAmount:4650, title:"Run Outta Town", description:"Beat the level in 2:35"}), new Challenge(9, 3, Challenge.ENEMYTALLY, {targetAmount:20, whichWeapon:"TearGas", showTally:true, title:"Cry Babies", description:"Kill 20 Enemigos by using Tear Gas"}), new Challenge(9, 4, Challenge.MULTIEXPLOSION, {targetAmount:3, title:"Big Bang", description:"Kill three Enemigos with the same explosion"}), new Challenge(9, 5, Challenge.TAGGED, {tagName:"chickenChest", targetAmount:1, title:"Chest of Chicken", description:"Carry a chicken to the Map Chest at the end of the level"}), new Challenge(10, 1, Challenge.TAGGED, {tagName:"brokenVase", targetAmount:17, showTally:true, title:"Temple Crasher", description:"Break all of the vases in the Temple"}), new Challenge(10, 2, Challenge.TIMETRIAL, {targetAmount:8100, title:"Temple Trekker", description:"Beat the level in 4:30"}), new Challenge(10, 3, Challenge.TAGGED, {tagName:"totemOnPedestal", targetAmount:9, showTally:true, title:"Idol Hands", description:"Place 9 Idol Statues on their Pedestals"}), new Challenge(10, 4, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_ENDNODYING, targetAmount:0, title:"Shadow Walker", description:"Reach the end of the level without dying"}), new Challenge(10, 5, Challenge.ENEMYTALLY, {whichWeapon:"Morningstar", enemyWeapon:"Longsword", targetAmount:3, showTally:true, title:"Going Medieval", description:"Kill three Longsword Enemigos using a Morningstar"}), new Challenge(11, 1, Challenge.TAGGED, {tagName:"waterTorch", targetAmount:13, title:"Sidetracked", showTally:true, description:"Find the Squirt Gun in the Temple, and put out all of the torches"}), new Challenge(11, 2, Challenge.TIMETRIAL, {targetAmount:4800, title:"Let's Get This Over With", description:"Beat the level in 2:40"}), new Challenge(11, 3, Challenge.TAGGED, {tagName:"bossPunch", targetAmount:1, title:"Fisticuffs Finale", description:"Kill the boss using only your bare hands"}), new Challenge(11, 4, Challenge.COMBO, {targetAmount:60, title:"Combo Master", description:"Get a x60 Combo while fighting"}), new Challenge(11, 5, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_ENDNODYING, targetAmount:0, title:"Showdown Survivor", description:"Defeat the boss without dying"})];
			badges = [new Challenge(-1, -1, Challenge.ENEMYJUGGLE, {juggleTimesHit:10, title:"Juggler Apprentice", description:"Juggle a dying enemy in the air 10 times in a row", rewardMoney:300}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_ALLWEAPONS, targetAmount:10, title:"Resourceful", showTally:true, description:"Use 10 different weapons to kill Enemigos", rewardMoney:150}), new Challenge(-1, -1, Challenge.TAGGED, {tagName:"cutGrass", targetAmount:20, showTally:true, title:"Harvester", description:"Cut down 20 swaths of tall grass", rewardMoney:200}), new Challenge(-1, -1, Challenge.TAGGED, {tagName:"explodeMetalCrate", targetAmount:10, showTally:true, title:"Box Bomber", description:"Destroy 10 metal crates with explosive weapons", rewardMoney:200}), new Challenge(-1, -1, Challenge.TAGGED, {tagName:"chickenKill", targetAmount:11, showTally:true, title:"Eleven Herbs and Spices", description:"Kill 11 Enemigos with a chicken", rewardMoney:400}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_TREASURES, targetAmount:10, title:"Treasure Seeker", description:"Find 10 Secret Treasures", rewardMoney:150}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_TREASURES, targetAmount:30, title:"Treasure Hunter", description:"Find 30 Secret Treasures", rewardMoney:300}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_TREASURES, targetAmount:60, title:"Treasure Completionist", description:"Find All of the Treasures", rewardMoney:600}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Blunderbuss", targetAmount:30, showTally:true, title:"Blunderbuster", description:"Kill 30 Enemigos with a Blunderbuss", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Shovel", targetAmount:30, showTally:true, title:"Grave Digger", description:"Kill 30 Enemigos with a Shovel", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Iron", targetAmount:30, showTally:true, title:"Wrinkle-Free", description:"Kill 30 Enemigos with an Iron", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Pickaxe", targetAmount:30, showTally:true, title:"Prospector", description:"Kill 30 Enemigos with a Pickaxe", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"PoolCue", targetAmount:30, showTally:true, title:"Rack 'em Up", description:"Kill 30 Enemigos with a Pool Cue", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Scythe", targetAmount:30, showTally:true, title:"Fear the Reaper", description:"Kill 30 Enemigos with a Scythe", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Bat", targetAmount:20, showTally:true, title:"Homerun Derby", description:"Kill 20 Enemigos with a Bat", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Shotgun", targetAmount:30, showTally:true, title:"Double Barrel", description:"Kill 30 Enemigos with a Shotgun", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Club", targetAmount:15, showTally:true, title:"Prehistoric", description:"Kill 15 Enemigos with a Club", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Bone", targetAmount:30, showTally:true, title:"Bone Crusher", description:"Kill 30 Enemigos with a Bone", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Axe", targetAmount:30, showTally:true, title:"Heeeere's McCoy", description:"Kill 30 Enemigos with an Axe", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Badge", targetAmount:20, showTally:true, title:"New Sheriff in Town", description:"Kill 20 Enemigos with Sheriff Badges", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Banjo", targetAmount:30, showTally:true, title:"Dueling Banjos", description:"Kill 30 Enemigos with a Banjo", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"BarbedWire", targetAmount:30, showTally:true, title:"Wired", description:"Kill 30 Enemigos with Barbed Wire", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Bazooka", targetAmount:30, showTally:true, title:"Rockets' Red Glare", description:"Kill 30 Enemigos with a Bazooka", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"BoxingGloves", targetAmount:30, showTally:true, title:"KO", description:"Kill 30 Enemigos with Boxing Gloves", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"BrassKnuckles", targetAmount:30, showTally:true, title:"Beat 'em Up", description:"Kill 30 Enemigos with Brass Knuckles", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"BullWhip", targetAmount:20, showTally:true, title:"Whip Cracker", description:"Kill 20 Enemigos with a Bullwhip", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Cactus", targetAmount:15, showTally:true, title:"Prickly", description:"Kill 15 Enemigos with a Cactus", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"CatOfNineTails", targetAmount:30, showTally:true, title:"Hundred Lashes", description:"Kill 30 Enemigos with a Cat o' Nine Tails", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"ChainWhip", targetAmount:30, showTally:true, title:"Chain Gang", description:"Kill 30 Enemigos with a Chain", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"CherryBomb", targetAmount:40, showTally:true, title:"Cherry Picker", description:"Kill 40 Enemigos with Cherry Bombs", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Crossbow", targetAmount:30, showTally:true, title:"Archer", description:"Kill 30 Enemigos with a Crossbow", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Crowbar", targetAmount:20, showTally:true, title:"Prize Prier", description:"Kill 20 Enemigos with a Crowbar", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Cutlass", targetAmount:30, showTally:true, title:"Boarding Party", description:"Kill 30 Enemigos with a Cutlass", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Dagger", targetAmount:25, showTally:true, title:"Swifts Daggers", description:"Kill 25 Enemigos with Daggers", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Dart", targetAmount:20, showTally:true, title:"Bullseye", description:"Kill 20 Enemigos with Darts", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Derringer", targetAmount:40, showTally:true, title:"Pocket Pistoleer", description:"Kill 40 Enemigos with a Derringer", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Flamethrower", targetAmount:40, showTally:true, title:"Enemigo BBQ", description:"Kill 40 Enemigos with a Flamethrower", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Gatling", targetAmount:50, showTally:true, title:"Rapid Fire", description:"Kill 50 Enemigos with a Gatling Gun", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Grenade", targetAmount:40, showTally:true, title:"Fire in the Hole", description:"Kill 40 Enemigos with Grenades", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Guitar", targetAmount:30, showTally:true, title:"Deadly Mariachi", description:"Kill 30 Enemigos with a Guitar", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"HarpoonGun", targetAmount:20, showTally:true, title:"Avast!", description:"Kill 20 Enemigos with a Harpoon Gun", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Katana", targetAmount:40, showTally:true, title:"Desert Samurai", description:"Kill 40 Enemigos with a Katana", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Lantern", targetAmount:30, showTally:true, title:"Kerosene Cactus", description:"Kill 30 Enemigos with Lanterns", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Longsword", targetAmount:30, showTally:true, title:"Medieval", description:"Kill 30 Enemigos with a Longsword", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Machete", targetAmount:30, showTally:true, title:"Hack and Slash", description:"Kill 30 Enemigos with a Machete", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Mallet", targetAmount:30, showTally:true, title:"Strong Man", description:"Kill 30 Enemigos with a Mallet", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Meteor", targetAmount:30, showTally:true, title:"Ball and Chain", description:"Kill 30 Enemigos with a Meteor", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Morningstar", targetAmount:30, showTally:true, title:"Bludgeoner", description:"Kill 30 Enemigos with a Morningstar", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Nightstick", targetAmount:30, showTally:true, title:"Night Watchman", description:"Kill 30 Enemigos with a Nightstick", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Pipe", targetAmount:20, showTally:true, title:"Faulty Plumbing", description:"Kill 20 Enemigos with a Pipe", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"PlayingCard", targetAmount:52, showTally:true, title:"52 Pickup", description:"Kill 52 Enemigos with Playing Cards", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Rattlesnake", targetAmount:40, showTally:true, title:"Rattle and Rumble", description:"Kill 40 Enemigos with a Rattlesnake", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Revolver", targetAmount:40, showTally:true, title:"Six Shooter", description:"Kill 40 Enemigos with a Revolver", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"RomanCandle", targetAmount:40, showTally:true, title:"Fireworks Show", description:"Kill 40 Enemigos with a Roman Candle", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Rope", targetAmount:20, showTally:true, title:"Happy Trails", description:"Kill 20 Enemigos with a Rope", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Scorpion", targetAmount:30, showTally:true, title:"Creepy Crawler", description:"Kill 30 Enemigos with Scorpions", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Sickle", targetAmount:30, showTally:true, title:"Harvest Season", description:"Kill 30 Enemigos with a Sickle", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Stick", targetAmount:20, showTally:true, title:"Nature Calls", description:"Kill 20 Enemigos with a Stick", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"SubMachineGun", targetAmount:40, showTally:true, title:"Gangster Gunner", description:"Kill 40 Enemigos with a Submachine Gun", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"TearGas", targetAmount:40, showTally:true, title:"I'm Not Crying", description:"Kill 40 Enemigos with Tear Gas", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"ThornWhip", targetAmount:30, showTally:true, title:"Desert Thorn", description:"Kill 30 Enemigos with a Thorn Whip", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"TNT", targetAmount:30, showTally:true, title:"Demolition Man", description:"Kill 30 Enemigos with TNT", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"Tomahawk", targetAmount:30, showTally:true, title:"Flying Hatchets", description:"Kill 30 Enemigos with Tomahawks", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"TowChain", targetAmount:30, showTally:true, title:"Triple A", description:"Kill 30 Enemigos with a Tow Chain", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"TwoByFour", targetAmount:30, showTally:true, title:"Carpentry", description:"Kill 30 Enemigos with a 2x4", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"SquirtGun", targetAmount:1, showTally:true, title:"Slow Drowning", description:"Kill 1 Enemigo with a Squirt Gun", rewardMoney:300}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"punch", targetAmount:150, showTally:true, title:"Sock it to 'em", description:"Kill 150 Enemigos with your bare fists", rewardMoney:400}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_UPGRADES, targetAmount:6, upgradeType:"shooting", title:"Upgraded Gunner", description:"Max out your Shooting Upgrade", rewardMoney:400}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_UPGRADES, targetAmount:6, upgradeType:"swinging", title:"Upgraded Swinger", description:"Max out your Swinging Upgrade", rewardMoney:400}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_UPGRADES, targetAmount:6, upgradeType:"punching", title:"Upgraded Puncher", description:"Max out your Punching Upgrade", rewardMoney:400}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_UPGRADES, targetAmount:6, upgradeType:"throwing", title:"Upgraded Thrower", description:"Max out your Throwing Upgrade", rewardMoney:400}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_UPGRADES, targetAmount:6, upgradeType:"whipping", title:"Upgraded Whipper", description:"Max out your Whipping Upgrade", rewardMoney:400}), new Challenge(-1, -1, Challenge.ENEMYJUGGLE, {juggleTimesHit:4, juggleStartingWeapon:"any", juggleWeaponsAmount:4, juggleWeapons:["any"], includeStartingWeapon:true, title:"Swap and Juggle", description:"Juggle a dying enemy with 4 different weapons", rewardMoney:500}), new Challenge(-1, -1, Challenge.MULTIJUGGLE, {targetAmount:5, title:"Five in the Air", description:"Juggle 5 dying enemies at once", rewardMoney:500}), new Challenge(-1, -1, Challenge.TAGGED, {tagName:"barrelEnemy", targetAmount:20, showTally:true, title:"Powderkegger", description:"Kill 20 Enemigos with TNT Barrels", rewardMoney:200}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {whichWeapon:"BoxingGloves", enemyWeapon:"BoxingGloves", targetAmount:30, showTally:true, title:"Ring King", description:"Kill 30 Boxing Enemigos with Boxing Gloves", rewardMoney:350}), new Challenge(-1, -1, Challenge.ENEMYTALLY, {weaponType:"pistol", enemyType:6, targetAmount:50, showTally:true, title:"Pistols at Dawn", description:"Shoot 50 pistol-wielding Enemigos with any pistols", rewardMoney:350}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_CHALLENGES, targetAmount:30, title:"Challenger", description:"Complete 30 Area Challenges", rewardMoney:300}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_CHALLENGES, targetAmount:60, title:"Challenge Champion", description:"Complete All of the Area Challenges", rewardMoney:600}), new Challenge(-1, -1, Challenge.CUSTOM, {tagName:Challenge.CUSTOM_TAG_ALLWEAPONS, targetAmount:59, title:"Full Armory", showTally:true, description:"Use every weapon to kill an Enemigo (including fists and Squirt Gun)", rewardMoney:750})];
			super();
			this.gameObj = _arg1;
		}
		public function destroy(){
		}
		public function getChallengeTitle(_arg1:Number, _arg2:Number, _arg3:Number=-1):String{
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Challenge;
			var _local4:ChallengeManager = this;
			var _local5 = "";
			if (_arg1 > -1){
				_local6 = 0;
				while (_local6 < _local4.challenges.length) {
					_local7 = _local4.challenges[_local6];
					if ((((_local7.whichWorld == _arg1)) && ((_local7.whichChallenge == _arg2)))){
						_local5 = _local7.title;
						break;
					};
					_local6++;
				};
			} else {
				if (_arg3 > -1){
					if (_arg3 < _local4.badges.length){
						_local8 = _local4.badges[_arg3];
						_local5 = _local8.title;
					};
				};
			};
			return (_local5);
		}
		public function getChallengeDescription(_arg1:Number, _arg2:Number, _arg3:Number=-1):String{
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Challenge;
			var _local4:ChallengeManager = this;
			var _local5 = "";
			if (_arg1 > -1){
				_local6 = 0;
				while (_local6 < _local4.challenges.length) {
					_local7 = _local4.challenges[_local6];
					if ((((_local7.whichWorld == _arg1)) && ((_local7.whichChallenge == _arg2)))){
						_local5 = _local7.description;
						break;
					};
					_local6++;
				};
			} else {
				if (_arg3 > -1){
					if (_arg3 < _local4.badges.length){
						_local8 = _local4.badges[_arg3];
						_local5 = _local8.description;
					};
				};
			};
			return (_local5);
		}
		public function getChallengeRewardAmount(_arg1:Number, _arg2:Number, _arg3:Number=-1):Number{
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Challenge;
			var _local4:ChallengeManager = this;
			var _local5:Number = 0;
			if (_arg1 > -1){
				_local6 = 0;
				while (_local6 < _local4.challenges.length) {
					_local7 = _local4.challenges[_local6];
					if ((((_local7.whichWorld == _arg1)) && ((_local7.whichChallenge == _arg2)))){
						_local5 = _local7.rewardMoney;
						break;
					};
					_local6++;
				};
			} else {
				if (_arg3 > -1){
					if (_arg3 < _local4.badges.length){
						_local8 = _local4.badges[_arg3];
						_local5 = _local8.rewardMoney;
					};
				};
			};
			return (_local5);
		}
		public function getChallengeTallyString(_arg1:Number, _arg2:Number):String{
			var _local5:Number;
			var _local6:Challenge;
			var _local3:ChallengeManager = this;
			var _local4 = "";
			if (_arg1 > -1){
				_local5 = 0;
				while (_local5 < _local3.challenges.length) {
					_local6 = _local3.challenges[_local5];
					if ((((_local6.whichWorld == _arg1)) && ((_local6.whichChallenge == _arg2)))){
						if (_local6.showTally){
							if (_local6.tally < _local6.targetAmount){
								_local4 = (((("(" + _local6.tally) + "/") + _local6.targetAmount) + ")");
							};
						};
					};
					_local5++;
				};
			};
			return (_local4);
		}
		public function getBadgeTallyString(_arg1:Number):String{
			var _local4:Challenge;
			var _local2:ChallengeManager = this;
			var _local3 = "";
			if (_arg1 < _local2.badges.length){
				_local4 = _local2.badges[_arg1];
				if (_local4.showTally){
					if (_local4.tally < _local4.targetAmount){
						_local3 = (((("(" + _local4.tally) + "/") + _local4.targetAmount) + ")");
					};
				};
			};
			return (_local3);
		}
		public function getNumberOfBadges():Number{
			var _local1:ChallengeManager = this;
			return (_local1.badges.length);
		}
		public function recordTag(_arg1:String){
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Boolean;
			var _local9:Challenge;
			var _local10:Boolean;
			var _local2:ChallengeManager = this;
			var _local3:DataManager = _local2.gameObj.dataManager;
			var _local4:UserData = _local2.gameObj.userData;
			var _local5:GameHUD = _local2.gameObj.hudObj;
			_local6 = 0;
			while (_local6 < _local2.challenges.length) {
				_local7 = _local2.challenges[_local6];
				if (_local7.whichWorld == _local3.currentLevel){
					if ((((_local7.challengeType == Challenge.TAGGED)) && ((_local7.tagName == _arg1)))){
						_local8 = _local7.addToTally();
						if (((!(_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge))) && (_local7.showTally))){
							_local5.showTally(_local7.tally, _local7.targetAmount);
						};
						if (((_local8) && (!(_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge))))){
							_local4.completeChallenge(_local7.whichWorld, _local7.whichChallenge);
							if (_local5){
								_local5.updateDisplay();
								_local5.showCompletedChallenge(_local7.whichChallenge);
							};
							_local2.checkCustomChallenges("challenges");
							_local4.saveProgress("challenge");
						};
					};
				};
				_local6++;
			};
			_local6 = 0;
			while (_local6 < _local2.badges.length) {
				_local9 = _local2.badges[_local6];
				if ((((_local9.challengeType == Challenge.TAGGED)) && ((_local9.tagName == _arg1)))){
					_local10 = _local9.addToTally();
					if (((_local10) && (!(_local4.hasBadge(_local6))))){
						_local4.earnBadge(_local6, _local9.title);
						if (_local9.rewardMoney > 0){
							_local4.totalMoney.addValue(_local9.rewardMoney);
						};
						_local4.saveProgress("badge");
						if (_local5){
							_local5.updateDisplay();
							_local5.showEarnedBadge(_local6);
						};
					};
				};
				_local6++;
			};
		}
		public function recordMultiExplosion(_arg1:Number){
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Boolean;
			var _local9:Challenge;
			var _local10:Boolean;
			var _local2:ChallengeManager = this;
			var _local3:DataManager = _local2.gameObj.dataManager;
			var _local4:UserData = _local2.gameObj.userData;
			var _local5:GameHUD = _local2.gameObj.hudObj;
			_local6 = 0;
			while (_local6 < _local2.challenges.length) {
				_local7 = _local2.challenges[_local6];
				if (_local7.whichWorld == _local3.currentLevel){
					if ((((_local7.challengeType == Challenge.MULTIEXPLOSION)) && ((_local7.targetAmount <= _arg1)))){
						_local8 = _local7.setTally(_arg1);
						if (((_local8) && (!(_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge))))){
							_local4.completeChallenge(_local7.whichWorld, _local7.whichChallenge);
							if (_local5){
								_local5.updateDisplay();
								_local5.showCompletedChallenge(_local7.whichChallenge);
							};
							_local2.checkCustomChallenges("challenges");
							_local4.saveProgress("challenge");
						};
					};
				};
				_local6++;
			};
			_local6 = 0;
			while (_local6 < _local2.badges.length) {
				_local9 = _local2.badges[_local6];
				if ((((_local9.challengeType == Challenge.MULTIEXPLOSION)) && ((_local9.targetAmount <= _arg1)))){
					_local10 = _local9.setTally(_arg1);
					if (((_local10) && (!(_local4.hasBadge(_local6))))){
						_local4.earnBadge(_local6, _local9.title);
						if (_local9.rewardMoney > 0){
							_local4.totalMoney.addValue(_local9.rewardMoney);
						};
						_local4.saveProgress("badge");
						if (_local5){
							_local5.updateDisplay();
							_local5.showEarnedBadge(_local6);
						};
					};
				};
				_local6++;
			};
		}
		public function recordMultiJuggle(_arg1:Number){
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Boolean;
			var _local9:Challenge;
			var _local10:Boolean;
			var _local2:ChallengeManager = this;
			var _local3:DataManager = _local2.gameObj.dataManager;
			var _local4:UserData = _local2.gameObj.userData;
			var _local5:GameHUD = _local2.gameObj.hudObj;
			_local6 = 0;
			while (_local6 < _local2.challenges.length) {
				_local7 = _local2.challenges[_local6];
				if (_local7.whichWorld == _local3.currentLevel){
					if ((((_local7.challengeType == Challenge.MULTIJUGGLE)) && ((_local7.targetAmount <= _arg1)))){
						_local8 = _local7.setTally(_arg1);
						if (((_local8) && (!(_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge))))){
							_local4.completeChallenge(_local7.whichWorld, _local7.whichChallenge);
							if (_local5){
								_local5.updateDisplay();
								_local5.showCompletedChallenge(_local7.whichChallenge);
							};
							_local2.checkCustomChallenges("challenges");
							_local4.saveProgress("challenge");
						};
					};
				};
				_local6++;
			};
			_local6 = 0;
			while (_local6 < _local2.badges.length) {
				_local9 = _local2.badges[_local6];
				if ((((_local9.challengeType == Challenge.MULTIJUGGLE)) && ((_local9.targetAmount <= _arg1)))){
					_local10 = _local9.setTally(_arg1);
					if (((_local10) && (!(_local4.hasBadge(_local6))))){
						_local4.earnBadge(_local6, _local9.title);
						if (_local9.rewardMoney > 0){
							_local4.totalMoney.addValue(_local9.rewardMoney);
						};
						_local4.saveProgress("badge");
						if (_local5){
							_local5.updateDisplay();
							_local5.showEarnedBadge(_local6);
						};
					};
				};
				_local6++;
			};
		}
		public function recordCombo(_arg1:Number){
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Boolean;
			var _local9:Challenge;
			var _local10:Boolean;
			var _local2:ChallengeManager = this;
			var _local3:DataManager = _local2.gameObj.dataManager;
			var _local4:UserData = _local2.gameObj.userData;
			var _local5:GameHUD = _local2.gameObj.hudObj;
			_local6 = 0;
			while (_local6 < _local2.challenges.length) {
				_local7 = _local2.challenges[_local6];
				if (_local7.whichWorld == _local3.currentLevel){
					if ((((_local7.challengeType == Challenge.COMBO)) && ((_local7.targetAmount <= _arg1)))){
						_local8 = _local7.setTally(_arg1);
						if (((_local8) && (!(_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge))))){
							_local4.completeChallenge(_local7.whichWorld, _local7.whichChallenge);
							if (_local5){
								_local5.updateDisplay();
								_local5.showCompletedChallenge(_local7.whichChallenge);
							};
							_local2.checkCustomChallenges("challenges");
							_local4.saveProgress("challenge");
						};
					};
				};
				_local6++;
			};
			_local6 = 0;
			while (_local6 < _local2.badges.length) {
				_local9 = _local2.badges[_local6];
				if ((((_local9.challengeType == Challenge.COMBO)) && ((_local9.targetAmount <= _arg1)))){
					_local10 = _local9.setTally(_arg1);
					if (((_local10) && (!(_local4.hasBadge(_local6))))){
						_local4.earnBadge(_local6, _local9.title);
						if (_local9.rewardMoney > 0){
							_local4.totalMoney.addValue(_local9.rewardMoney);
						};
						_local4.saveProgress("badge");
						if (_local5){
							_local5.updateDisplay();
							_local5.showEarnedBadge(_local6);
						};
					};
				};
				_local6++;
			};
		}
		public function recordCompletionTime(_arg1:Number){
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Challenge;
			var _local2:ChallengeManager = this;
			var _local3:DataManager = _local2.gameObj.dataManager;
			var _local4:UserData = _local2.gameObj.userData;
			var _local5:GameHUD = _local2.gameObj.hudObj;
			_local6 = 0;
			while (_local6 < _local2.challenges.length) {
				_local7 = _local2.challenges[_local6];
				if (_local7.whichWorld == _local3.currentLevel){
					if ((((_local7.challengeType == Challenge.TIMETRIAL)) && ((_arg1 <= _local7.targetAmount)))){
						if (!_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge)){
							_local4.completeChallenge(_local7.whichWorld, _local7.whichChallenge);
							if (_local5){
								_local5.updateDisplay();
								_local5.showCompletedChallenge(_local7.whichChallenge);
							};
							_local2.checkCustomChallenges("challenges");
							_local4.saveProgress("challenge");
						};
					};
				};
				_local6++;
			};
			_local6 = 0;
			while (_local6 < _local2.badges.length) {
				_local8 = _local2.badges[_local6];
				if ((((_local8.challengeType == Challenge.TIMETRIAL)) && ((_arg1 <= _local8.targetAmount)))){
					if (!_local4.hasBadge(_local6)){
						_local4.earnBadge(_local6, _local8.title);
						if (_local8.rewardMoney > 0){
							_local4.totalMoney.addValue(_local8.rewardMoney);
						};
						_local4.saveProgress("badge");
						if (_local5){
							_local5.updateDisplay();
							_local5.showEarnedBadge(_local6);
						};
					};
				};
				_local6++;
			};
		}
		public function recordEnemyKill(_arg1:Number, _arg2:String, _arg3:String, _arg4:Number, _arg5:Array, _arg6:Array){
			var _local11:Number;
			var _local13:Challenge;
			var _local14:Challenge;
			var _local15:Boolean;
			var _local16:Number;
			var _local17:Number;
			var _local18:Boolean;
			var _local7:ChallengeManager = this;
			var _local8:DataManager = _local7.gameObj.dataManager;
			var _local9:UserData = _local7.gameObj.userData;
			var _local10:GameHUD = _local7.gameObj.hudObj;
			var _local12:Boolean;
			_local11 = 0;
			while (_local11 < _local7.challenges.length) {
				_local13 = _local7.challenges[_local11];
				if (_local13.whichWorld == _local8.currentLevel){
					if (_local13.challengeType == Challenge.ENEMYTALLY){
						if (_local13.meetsEnemyRequirements(_arg1, _arg2, _arg3, _local7.gameObj.objectManager.getWeaponType(_arg3))){
							_local12 = _local13.addToTally(1);
							if (((!(_local9.hasCompletedChallenge(_local13.whichWorld, _local13.whichChallenge))) && (_local13.showTally))){
								_local10.showTally(_local13.tally, _local13.targetAmount);
							};
							if (((_local12) && (!(_local9.hasCompletedChallenge(_local13.whichWorld, _local13.whichChallenge))))){
								_local9.completeChallenge(_local13.whichWorld, _local13.whichChallenge);
								if (_local10){
									_local10.updateDisplay();
									_local10.showCompletedChallenge(_local13.whichChallenge);
								};
								_local7.checkCustomChallenges("challenges");
								_local9.saveProgress("challenge");
							};
						};
					} else {
						if (_local13.challengeType == Challenge.ENEMYJUGGLE){
							if (_local13.meetsJuggleRequirements(_arg4, _arg3, _arg6)){
								if (!_local9.hasCompletedChallenge(_local13.whichWorld, _local13.whichChallenge)){
									_local9.completeChallenge(_local13.whichWorld, _local13.whichChallenge);
									if (_local10){
										_local10.updateDisplay();
										_local10.showCompletedChallenge(_local13.whichChallenge);
									};
									_local7.checkCustomChallenges("challenges");
									_local9.saveProgress("challenge");
								};
							};
						};
					};
				};
				_local11++;
			};
			_local11 = 0;
			while (_local11 < _local7.badges.length) {
				_local14 = _local7.badges[_local11];
				if (_local14.challengeType == Challenge.ENEMYTALLY){
					if (_local14.meetsEnemyRequirements(_arg1, _arg2, _arg3, _local7.gameObj.objectManager.getWeaponType(_arg3))){
						_local15 = _local14.addToTally(1);
						if (((_local15) && (!(_local9.hasBadge(_local11))))){
							_local9.earnBadge(_local11, _local14.title);
							if (_local14.rewardMoney > 0){
								_local9.totalMoney.addValue(_local14.rewardMoney);
							};
							_local9.saveProgress("badge");
							if (_local10){
								_local10.updateDisplay();
								_local10.showEarnedBadge(_local11);
							};
						};
					};
				} else {
					if (_local14.challengeType == Challenge.ENEMYJUGGLE){
						if (_local14.meetsJuggleRequirements(_arg4, _arg3, _arg6)){
							if (!_local9.hasBadge(_local11)){
								_local9.earnBadge(_local11, _local14.title);
								if (_local14.rewardMoney > 0){
									_local9.totalMoney.addValue(_local14.rewardMoney);
								};
								_local9.saveProgress("badge");
								if (_local10){
									_local10.updateDisplay();
									_local10.showEarnedBadge(_local11);
								};
							};
						};
					};
				};
				if ((((_local14.challengeType == Challenge.CUSTOM)) && ((_local14.tagName == Challenge.CUSTOM_TAG_ALLWEAPONS)))){
					_local16 = 0;
					_local17 = 0;
					while (_local17 < 59) {
						if ((((_local9.totalKillsPerWeapon.length > _local17)) && ((_local9.totalKillsPerWeapon[_local17] > 0)))){
							_local16++;
						};
						_local17++;
					};
					_local18 = _local14.setTally(_local16);
					if (((_local18) && (!(_local9.hasBadge(_local11))))){
						_local9.earnBadge(_local11, _local14.title);
						if (_local14.rewardMoney > 0){
							_local9.totalMoney.addValue(_local14.rewardMoney);
						};
						_local9.saveProgress("badge");
						if (_local10){
							_local10.updateDisplay();
							_local10.showEarnedBadge(_local11);
						};
					};
				};
				_local11++;
			};
		}
		public function checkCustomChallenges(_arg1:String="all"){
			var _local6:Number;
			var _local7:Challenge;
			var _local8:Boolean;
			var _local9:Challenge;
			var _local10:Boolean;
			var _local2:ChallengeManager = this;
			var _local3:DataManager = _local2.gameObj.dataManager;
			var _local4:UserData = _local2.gameObj.userData;
			var _local5:GameHUD = _local2.gameObj.hudObj;
			if (_arg1 == "all"){
				_local6 = 0;
				while (_local6 < _local2.challenges.length) {
					_local7 = _local2.challenges[_local6];
					if (_local7.whichWorld == _local3.currentLevel){
						if (_local7.challengeType == Challenge.CUSTOM){
							_local8 = false;
							if (_local7.tagName == Challenge.CUSTOM_TAG_GOTHIT){
								if (_local4.gotHurt == false){
									_local8 = true;
								};
							} else {
								if (_local7.tagName == Challenge.CUSTOM_TAG_ALLNODYING){
									if ((((_local4.killsTally >= _local7.targetAmount)) && ((_local4.livesLost.value == 0)))){
										_local8 = true;
									};
								} else {
									if (_local7.tagName == Challenge.CUSTOM_TAG_ENDNODYING){
										if (_local4.livesLost.value == 0){
											_local8 = true;
										};
									} else {
										if (_local7.tagName == Challenge.CUSTOM_TAG_NOKILLS){
											if (_local4.killsTally <= 1){
												_local8 = true;
											};
										};
									};
								};
							};
							if (((_local8) && (!(_local4.hasCompletedChallenge(_local7.whichWorld, _local7.whichChallenge))))){
								_local4.completeChallenge(_local7.whichWorld, _local7.whichChallenge);
								if (_local5){
									_local5.updateDisplay();
									_local5.showCompletedChallenge(_local7.whichChallenge);
								};
								_local2.checkCustomChallenges("challenges");
								_local4.saveProgress("challenge");
							};
						};
					};
					_local6++;
				};
			};
			_local6 = 0;
			while (_local6 < _local2.badges.length) {
				_local9 = _local2.badges[_local6];
				if (_local9.challengeType == Challenge.CUSTOM){
					_local10 = false;
					if ((((_local9.tagName == Challenge.CUSTOM_TAG_TREASURES)) && ((_arg1 == "treasures")))){
						if (_local4.getTotalTreasuresEarned() >= _local9.targetAmount){
							_local10 = true;
						};
					} else {
						if ((((_local9.tagName == Challenge.CUSTOM_TAG_CHALLENGES)) && ((_arg1 == "challenges")))){
							if (_local4.getTotalChallengesCompleted() >= _local9.targetAmount){
								_local10 = true;
							};
						} else {
							if ((((_local9.tagName == Challenge.CUSTOM_TAG_UPGRADES)) && ((_arg1 == "upgrades")))){
								if (((!((_local9.upgradeType == "none"))) && ((_local4.getUpgradeLevel(_local9.upgradeType) >= _local9.targetAmount)))){
									_local10 = true;
								};
							};
						};
					};
					if (((_local10) && (!(_local4.hasBadge(_local6))))){
						_local4.earnBadge(_local6, _local9.title);
						if (_local9.rewardMoney > 0){
							_local4.totalMoney.addValue(_local9.rewardMoney);
						};
						if (_local5){
							_local5.updateDisplay();
							_local5.showEarnedBadge(_local6);
						};
						_local4.saveProgress("badge");
					};
				};
				_local6++;
			};
		}
		public function getMedalProgressArray():Array{
			var _local4:Challenge;
			var _local1:ChallengeManager = this;
			var _local2:Array = [];
			var _local3:* = 0;
			while (_local3 < _local1.badges.length) {
				_local4 = _local1.badges[_local3];
				_local2[_local3] = _local4.tally;
				_local3++;
			};
			return (_local2);
		}
		public function populateMedalProgress(_arg1:Array){
			var _local4:Number;
			var _local5:Challenge;
			var _local2:ChallengeManager = this;
			var _local3:* = 0;
			while (_local3 < _arg1.length) {
				_local4 = 0;
				if (_arg1[_local3]){
					_local4 = _arg1[_local3];
				};
				if (_local2.badges.length > _local3){
					_local5 = _local2.badges[_local3];
					_local5.setTally(_local4);
				};
				_local3++;
			};
		}
		public function resetCurrentChallenges(){
			var _local4:Challenge;
			var _local1:ChallengeManager = this;
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			var _local3:* = 0;
			while (_local3 < _local1.challenges.length) {
				_local4 = _local1.challenges[_local3];
				if (_local4.whichWorld == _local2){
					_local4.clearTally();
				};
				_local3++;
			};
		}
		public function resetAllTallies(){
			var _local2:Number;
			var _local3:Challenge;
			var _local4:Challenge;
			var _local1:ChallengeManager = this;
			_local2 = 0;
			while (_local2 < _local1.badges.length) {
				_local3 = _local1.badges[_local2];
				_local3.clearTally(true);
				_local2++;
			};
			_local2 = 0;
			while (_local2 < _local1.challenges.length) {
				_local4 = _local1.challenges[_local2];
				_local4.clearTally(true);
				_local2++;
			};
		}

	}
}//package cactusGame.managers 

****************

//EffectManager (cactusGame.managers.EffectManager)
package cactusGame.managers {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.utils.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.models.effects.*;

	public dynamic class EffectManager {

		public var gameObj:GameModule;
		public var playerObj:PlayerChar;
		public var counter:Number;// = 0
		public var effects:Array;
		public var spriteSheets:Array;
		var forceEffects:Array;

		public function EffectManager(_arg1){
			effects = [];
			spriteSheets = [];
			forceEffects = [ExplosionEffect, ImpactEffect, BigImpactEffect, HurtNeedleEffect, HurtSymbolEffect, SmokeEffect, RomanCandleSparkEffect, TearGasEffect, FireFlameEffect, MapPieceEffect, ItemGlowEffect, Treasure1Effect, Treasure2Effect, Treasure3Effect, Treasure4Effect, Treasure5Effect, MetalCrateBreakEffect, TempleBlockBreakEffect, CrateBreakEffect, BrambleBreakEffect, BarrelBreakEffect, TNTBarrelBreakEffect, TempleVaseBreakEffect, BoulderBreakEffect, MineCartBreakEffect, TallGrassBreakEffect, WaterDropletEffect, DerringerTargetBreakEffect, ScorpionTargetBreakEffect, TorchFlameEffect, DustEffect, FeatherEffect, ChickenCoopFront, OreBoulderBreakEffect, ShimmerEffect, MoneyCopperEffect, MoneySilverEffect, MoneyGoldEffect, MoneyRubyEffect, MoneyEmeraldEffect, MoneyDiamondEffect, TrainSmokeEffect, GrabWeaponEffect, ThornedEmeraldEffect, BossBubbleEffect];
			super();
			var _local2:EffectManager = this;
			_local2.gameObj = _arg1;
		}
		public function addEffect(_arg1:Number, _arg2:Number, _arg3:String, _arg4:String="", _arg5:Boolean=false, _arg6:Number=0, _arg7:Number=0):Number{
			var _local13:*;
			var _local8:EffectManager = this;
			var _local9:GameModule = _local8.gameObj;
			_local8.counter++;
			var _local10:* = _local8.counter;
			var _local11:* = ("Effect" + _local10);
			var _local12:Class = (getDefinitionByName(("cactusGame.models.effects." + _arg3)) as Class);
			_local8[_local11] = new _local12(_local9, _arg1, _arg2, _local10, _arg4, _arg5, _arg6, _arg7);
			if (_local8[("effectSheet" + _arg3)] == undefined){
				_local13 = _local8[_local11].sheetname;
				_local8[("effectSheet" + _arg3)] = _local9.bitmapManager.loadBitmap(_local13);
			};
			_local8.effects.push(_local8[_local11]);
			return (_local10);
		}
		public function processEffects(){
			var _local4:Effect;
			var _local1:EffectManager = this;
			var _local2:Number = _local1.effects.length;
			var _local3:* = (_local2 - 1);
			while (_local3 >= 0) {
				if (_local1.effects[_local3]){
					if (_local1.effects[_local3] != 0){
						_local4 = _local1.effects[_local3];
						_local4.updateObject();
					};
				};
				_local3--;
			};
		}
		public function clearEffects(){
			var _local4:Effect;
			var _local5:*;
			var _local1:EffectManager = this;
			var _local2:Number = _local1.effects.length;
			var _local3:* = 0;
			while (_local3 < _local2) {
				if (_local1.effects[_local3] != 0){
					_local4 = _local1.effects[_local3];
					_local5 = _local4.type;
					if (_local5){
						if (_local1[("effectSheet" + _local5)]){
							_local1[("effectSheet" + _local5)].dispose();
							_local1[("effectSheet" + _local5)] = null;
						};
					};
					_local4.destroy();
					_local4 = null;
				};
				_local3++;
			};
			_local1.counter = 0;
			_local1.effects = [];
		}
		public function destroy(){
			this.clearEffects();
		}
		public function removeEffect(_arg1, _arg2:Boolean=false){
			var _local5:Number;
			var _local3:EffectManager = this;
			var _local4:String = ("Effect" + _arg1);
			var _local6:* = _local3.effects.length;
			var _local7:* = 0;
			while (_local7 < _local6) {
				if (_local3.effects[_local7] == _local3[_local4]){
					_local5 = _local7;
				};
				_local7++;
			};
			_local3.effects[_local5] = 0;
			if (!_arg2){
				_local3.effects.splice(_local5, 1);
			};
			_local3[_local4].destroy();
			_local3[_local4] = null;
		}
		public function getEffect(_arg1:Number):Effect{
			var _local6:Effect;
			var _local2:EffectManager = this;
			var _local3:Number = _local2.effects.length;
			var _local4:Effect;
			var _local5:* = 0;
			while (_local5 < _local3) {
				if ((((_local5 < _local2.effects.length)) && ((_local2.effects[_local5] is Effect)))){
					_local6 = _local2.effects[_local5];
					if (_local6.id == _arg1){
						_local4 = _local6;
						break;
					};
				};
				_local5++;
			};
			return (_local4);
		}

	}
}//package cactusGame.managers 

****************

//EnemyManager (cactusGame.managers.EnemyManager)
package cactusGame.managers {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.utils.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.models.enemies.*;

	public dynamic class EnemyManager {

		public var gameObj:GameModule;
		public var playerObj:PlayerChar;
		public var counter:Number;// = 0
		public var enemies:Array;
		public var spriteSheets:Array;
		public var weaponSheetNames:Array;
		public var weaponSheets:Array;
		public var jugglingEnemies:Number;// = 0
		var forceEnemies:Array;

		public function EnemyManager(_arg1){
			enemies = [];
			spriteSheets = [];
			weaponSheetNames = [];
			weaponSheets = [];
			forceEnemies = [Enemy1, Enemy2, Enemy3, Enemy4, Enemy5, Enemy6, Enemy7, Enemy8, Enemy9, Enemy10, Enemy11, Enemy12];
			super();
			var _local2:EnemyManager = this;
			_local2.gameObj = _arg1;
			_local2.displayObj = _local2.gameObj.gameDisplay;
		}
		public function addEnemy(_arg1, _arg2, _arg3, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array=null):Number{
			var ClassReference:Class;
			var sheetname:*;
			var xtile = _arg1;
			var ytile = _arg2;
			var type = _arg3;
			var whichScreen = _arg4;
			var whichTileset = _arg5;
			var screenObjID = _arg6;
			var extraParams = _arg7;
			var manager:EnemyManager = this;
			var gameObj:GameModule = manager.gameObj;
			manager.counter++;
			var enemyid:* = manager.counter;
			var name:* = ("Enemy" + enemyid);
			try {
				ClassReference = (getDefinitionByName(("cactusGame.models.enemies.Enemy" + type)) as Class);
				manager[name] = new ClassReference(gameObj, xtile, ytile, enemyid, whichScreen, whichTileset, screenObjID, extraParams);
				if (manager[("enemySheet" + type)] == undefined){
					sheetname = manager[name].sheetname;
					manager[("enemySheet" + type)] = gameObj.bitmapManager.loadBitmap(sheetname);
				};
				manager.enemies.push(manager[name]);
			} catch(err) {
			};
			return (enemyid);
		}
		public function activateObject(_arg1:Number, _arg2, _arg3, _arg4, _arg5){
			var whichScreen = _arg1;
			var which = _arg2;
			var cam = _arg3;
			var amount = _arg4;
			var beforeblit = _arg5;
			var manager:EnemyManager = this;
			var name:String = ("Enemy" + which);
			try {
				if (manager[name]){
					manager[name].sendTriggered(amount, cam, beforeblit);
				};
			} catch(err) {
			};
		}
		public function stopCameraPan(_arg1){
			var _local2:EnemyManager = this;
			var _local3:String = ("Enemy" + _arg1);
			_local2[_local3].stopCameraPan();
		}
		public function processEnemies(){
			var _local4:Enemy;
			var _local1:EnemyManager = this;
			var _local2:Number = _local1.enemies.length;
			var _local3:* = 0;
			while (_local3 < _local2) {
				if (_local1.enemies[_local3]){
					if (_local1.enemies[_local3] != 0){
						_local4 = _local1.enemies[_local3];
						_local4.updateObject();
					};
				};
				_local3++;
			};
		}
		public function setEvent(_arg1:Number, _arg2, _arg3, _arg4, _arg5){
			var _local6:EnemyManager = this;
			var _local7:* = _local6.enemies.length;
			var _local8:String = ("Enemy" + _arg2);
			if (_local6[_local8]){
				_local6[_local8].setEventData(_arg3, _arg4, _arg5);
			};
		}
		public function setEventTriggers(_arg1:Number, _arg2, _arg3, _arg4:Array=null){
			var _local5:EnemyManager = this;
			var _local6:String = ("Enemy" + _arg2);
			if (_local5[_local6]){
				_local5[_local6].setEventTriggers(_arg3, _arg4);
			};
		}
		public function allowReactions(_arg1){
			var _local2:EnemyManager = this;
			var _local3:String = ("Enemy" + _arg1);
			if (_local2[_local3]){
				_local2[_local3].allowReactions();
			};
		}
		public function clearEnemies(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=true){
			var _local7:Enemy;
			var _local8:*;
			var _local4:EnemyManager = this;
			var _local5:Number = _local4.enemies.length;
			var _local6:* = (_local5 - 1);
			while (_local6 >= 0) {
				if (_local4.enemies[_local6] != 0){
					_local7 = _local4.enemies[_local6];
					if ((((_local7.whichScreen == _arg1)) || (_arg2))){
						_local8 = _local7.type;
						if (_local8){
							_local4.clearEnemySheet(_local8);
						};
						_local7.destroy();
						_local7 = null;
						_local4.enemies.splice(_local6, 1);
					};
				};
				_local6--;
			};
			if (_arg3){
				_local4.counter = _local4.enemies.length;
			} else {
				if (_arg2){
					_local4.counter = 0;
					_local4.enemies = [];
				};
			};
			_local4.clearWeaponSheets();
		}
		public function clearEnemySheet(_arg1:Number){
			var _local2:EnemyManager = this;
			if (_local2[("enemySheet" + _arg1)]){
				_local2[("enemySheet" + _arg1)].dispose();
				_local2[("enemySheet" + _arg1)] = null;
			};
		}
		public function destroy(){
			this.clearEnemies(1, true);
		}
		public function saveEnemies(){
			var _local1:EnemyManager = this;
			_local1.clearEnemies(1, true);
		}
		public function preblitEnemySheets(){
		}
		public function buildEnemies(_arg1:Number){
			var _local11:*;
			var _local12:*;
			var _local13:*;
			var _local14:Array;
			var _local15:*;
			var _local2:EnemyManager = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:DataManager = _local3.dataManager;
			var _local5:GameDisplay = _local3.gameDisplay;
			var _local6:Number = (_arg1 * _local5.screenTileWidth);
			var _local7:ScreenData = _local4.currentScreenData;
			var _local8:Number = 1;
			var _local9:Number = _local7.enemyArray.length;
			var _local10:* = 0;
			while (_local10 < _local9) {
				_local11 = _local7.enemyArray[_local10][0];
				if (_local11 != 0){
					_local12 = (_local6 + _local7.enemyArray[_local10][1]);
					_local13 = _local7.enemyArray[_local10][2];
					_local14 = null;
					if (_local7.enemyArray[_local10].length > 3){
						_local14 = new Array();
						_local15 = 3;
						while (_local15 < _local7.enemyArray[_local10].length) {
							_local14.push(_local7.enemyArray[_local10][_local15]);
							_local15++;
						};
					};
					_local2.addEnemy(_local12, _local13, _local11, _arg1, _local8, (_local10 + 1), _local14);
				} else {
					_local2.counter++;
				};
				_local10++;
			};
		}
		public function removeEnemy(_arg1, _arg2:Boolean=false){
			var which:Number;
			var enemyid = _arg1;
			var nosplice = _arg2;
			var manager:EnemyManager = this;
			var name:String = ("Enemy" + enemyid);
			var totalenemies:* = manager.enemies.length;
			var i:* = 0;
			while (i < totalenemies) {
				if (manager.enemies[i] == manager[name]){
					which = i;
				};
				i = (i + 1);
			};
			manager.enemies[which] = 0;
			if (!nosplice){
				manager.enemies.splice(which, 1);
			};
			try {
				manager[name].destroy();
			} catch(err) {
			};
			manager[name] = null;
		}
		public function getWeaponSheet(_arg1:String):BitmapData{
			var _local2:EnemyManager = this;
			if (_local2.weaponSheetNames.indexOf(_arg1) == -1){
				_local2.weaponSheetNames.push(_arg1);
				_local2.weaponSheets.push(_local2.gameObj.bitmapManager.loadBitmap(_arg1));
			};
			return (_local2.weaponSheets[_local2.weaponSheetNames.indexOf(_arg1)]);
		}
		public function clearWeaponSheets(){
			var _local1:EnemyManager = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:* = (_local1.weaponSheetNames.length - 1);
			while (_local3 >= 0) {
				_local1.weaponSheets[_local3].dispose();
				_local1.weaponSheets[_local3] = null;
				_local3--;
			};
			_local1.weaponSheets = null;
			_local1.weaponSheetNames = null;
			_local1.weaponSheets = [];
			_local1.weaponSheetNames = [];
		}
		public function getCurrentEnemyTotal():Number{
			var _local1:EnemyManager = this;
			var _local2:Number = 0;
			var _local3:* = 0;
			while (_local3 < _local1.enemies.length) {
				if (_local1.enemies[_local3]){
					if (_local1.enemies[_local3] != 0){
						_local2++;
					};
				};
				_local3++;
			};
			return (_local2);
		}
		public function anyEnemiesAttacking():Boolean{
			var _local3:*;
			var _local4:Enemy;
			var _local5:*;
			var _local6:Enemy;
			var _local1:EnemyManager = this;
			var _local2:Boolean;
			if (_local1.gameObj.gameControls.debugMode == 2){
				_local3 = 0;
				while (_local3 < _local1.enemies.length) {
					if (_local1.enemies[_local3]){
						if (_local1.enemies[_local3] != 0){
							_local4 = _local1.enemies[_local3];
							if (_local4.isAttacking){
								_local2 = true;
								break;
							};
						};
					};
					_local3++;
				};
			} else {
				if (_local1.gameObj.gameControls.debugMode == 3){
					_local5 = 0;
					while (_local5 < _local1.enemies.length) {
						if (_local1.enemies[_local5]){
							if (_local1.enemies[_local5] != 0){
								_local6 = _local1.enemies[_local5];
								if (((_local6.isHit) && (!(_local6.isDead)))){
									_local2 = true;
									break;
								};
							};
						};
						_local5++;
					};
				};
			};
			return (_local2);
		}
		public function checkForceNoDrop(_arg1:Number, _arg2:String):Boolean{
			var _local3:EnemyManager = this;
			var _local4:DataManager = _local3.gameObj.dataManager;
			var _local5:Boolean;
			if ((((_local4.currentLevel == 0)) && ((_arg2 == "BoxingGloves")))){
				_local5 = true;
			} else {
				if ((((_local4.currentLevel == 1)) && ((_arg2 == "Pickaxe")))){
					_local5 = true;
				} else {
					if ((((_local4.currentLevel == 2)) && ((_arg2 == "Shotgun")))){
						_local5 = true;
					} else {
						if ((((_local4.currentLevel == 3)) && ((_arg2 == "Rope")))){
							_local5 = true;
						} else {
							if ((((_local4.currentLevel == 4)) && ((_arg2 == "Blunderbuss")))){
								_local5 = true;
							} else {
								if ((((_local4.currentLevel == 5)) && ((_arg2 == "Rattlesnake")))){
									_local5 = true;
								} else {
									if ((((_local4.currentLevel == 6)) && ((_arg2 == "SubMachineGun")))){
										_local5 = true;
									} else {
										if ((((_local4.currentLevel == 7)) && ((_arg2 == "Flamethrower")))){
											_local5 = true;
										} else {
											if ((((_local4.currentLevel == 8)) && ((_arg2 == "Bazooka")))){
												_local5 = true;
											} else {
												if ((((_local4.currentLevel == 9)) && ((_arg2 == "CatOfNineTails")))){
													_local5 = true;
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local5);
		}

	}
}//package cactusGame.managers 

****************

//ItemManager (cactusGame.managers.ItemManager)
package cactusGame.managers {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.models.items.*;

	public dynamic class ItemManager {

		public var gameObj:GameModule;
		public var playerObj:PlayerChar;
		public var counter:Number;// = 0
		public var items:Array;
		public var spriteSheets:Array;
		public var maxCoinsPerMoneyDrop:Number;// = 4
		public var weaponIDsToNames:Array;
		var forceItems:Array;

		public function ItemManager(_arg1){
			items = [];
			spriteSheets = [];
			weaponIDsToNames = ["", "Mallet", "Revolver", "Guitar", "Cutlass", "BoxingGloves", "Blunderbuss", "Gatling", "Bazooka", "TowChain", "TwoByFour", "CatOfNineTails", "Axe", "Banjo", "BarbedWire", "Bat", "Bone", "BrassKnuckles", "BullWhip", "Cactus", "ChainWhip", "Club", "Crossbow", "Crowbar", "PoolCue", "Derringer", "Flamethrower", "HarpoonGun", "Iron", "Katana", "Longsword", "Machete", "Meteor", "Morningstar", "Nightstick", "Pickaxe", "Pipe", "Rattlesnake", "RomanCandle", "Rope", "Scythe", "Shotgun", "Shovel", "Sickle", "Stick", "SubMachineGun", "ThornWhip", "PlayingCard", "Dart", "Dagger", "Badge", "TNT", "Lantern", "CherryBomb", "Tomahawk", "Grenade", "Scorpion", "TearGas", "SquirtGun", "HatfieldPistol"];
			forceItems = [GameItem_MoneyCopper, GameItem_MoneySilver, GameItem_MoneyGold, GameItem_MoneyRuby, GameItem_MoneyEmerald, GameItem_MoneyDiamond, GameItem_Mallet, GameItem_Revolver, GameItem_Cutlass, GameItem_Blunderbuss, GameItem_Guitar, GameItem_BoxingGloves, GameItem_Gatling, GameItem_Bazooka, GameItem_TowChain, GameItem_PlayingCard, GameItem_Banjo, GameItem_TwoByFour, GameItem_Bat, GameItem_Shovel, GameItem_CatOfNineTails, GameItem_Axe, GameItem_BarbedWire, GameItem_Bone, GameItem_BrassKnuckles, GameItem_BullWhip, GameItem_Cactus, GameItem_ChainWhip, GameItem_Club, GameItem_Crossbow, GameItem_Crowbar, GameItem_PoolCue, GameItem_Derringer, GameItem_Flamethrower, GameItem_HarpoonGun, GameItem_Iron, GameItem_Katana, GameItem_Longsword, GameItem_Machete, GameItem_Meteor, GameItem_Morningstar, GameItem_Nightstick, GameItem_Pickaxe, GameItem_Pipe, GameItem_Rattlesnake, GameItem_RomanCandle, GameItem_Rope, GameItem_Scythe, GameItem_Shotgun, GameItem_Sickle, GameItem_Stick, GameItem_SubMachineGun, GameItem_ThornWhip, GameItem_Dart, GameItem_Dagger, GameItem_Badge, GameItem_TNT, GameItem_CherryBomb, GameItem_Tomahawk, GameItem_Grenade, GameItem_Scorpion, GameItem_TearGas, GameItem_Lantern, GameItem_SquirtGun, GameItem_HatfieldPistol];
			super();
			var _local2:ItemManager = this;
			_local2.gameObj = _arg1;
		}
		public function checkForCollecting(_arg1:Rectangle){
			var _local4:GameItem;
			var _local2:ItemManager = this;
			var _local3:* = 0;
			while (_local3 < _local2.items.length) {
				_local4 = _local2.items[_local3];
				if (_local4.checkOnScreen()){
					if (((_local4.canPickUp()) && (_local4.checkSpriteCollision(_arg1)))){
						_local4.collectItem();
					};
				};
				_local3++;
			};
		}
		public function getCorrectItemName(_arg1):String{
			var _local2:ItemManager = this;
			var _local3:String = String(_arg1);
			if ((((_arg1 is Number)) && ((Number(_arg1) < _local2.weaponIDsToNames.length)))){
				_local3 = _local2.weaponIDsToNames[Number(_arg1)];
			};
			return (_local3);
		}
		public function weaponNameToID(_arg1:String):Number{
			var _local2:ItemManager = this;
			var _local3:Number = _local2.weaponIDsToNames.indexOf(_arg1);
			if (_arg1 == "punch"){
				_local3 = 0;
			};
			return (_local3);
		}
		public function addItem(_arg1, _arg2, _arg3, _arg4:Number, _arg5:Array=null, _arg6:Boolean=false):Number{
			var _local9:Number;
			var _local10:*;
			var _local11:*;
			var _local12:Class;
			var _local13:*;
			var _local7:ItemManager = this;
			var _local8:GameModule = _local7.gameObj;
			if (String(_arg3).indexOf("$") == 0){
				_local9 = Number(String(_arg3).substr(1));
				_local7.dropMoney(_local9, _arg1, _arg2);
				return (0);
			};
			_local7.counter++;
			_local10 = _local7.counter;
			_local11 = ("GameItem" + _local10);
			_arg3 = _local7.getCorrectItemName(_arg3);
			_local12 = (getDefinitionByName(("cactusGame.models.items.GameItem_" + _arg3)) as Class);
			_local7[_local11] = new _local12(_local8, _arg1, _arg2, _local10, _arg4, _arg5, _arg6);
			if (_local7[("itemSheet_" + _arg3)] == undefined){
				_local13 = _local7[_local11].sheetname;
				_local7[("itemSheet_" + _arg3)] = _local8.bitmapManager.loadBitmap(_local13);
			};
			_local7.items.push(_local7[_local11]);
			return (_local10);
		}
		public function processItems(){
			var _local4:GameItem;
			var _local1:ItemManager = this;
			var _local2:Number = _local1.items.length;
			var _local3:* = 0;
			while (_local3 < _local2) {
				if (_local1.items[_local3]){
					if (_local1.items[_local3] != 0){
						_local4 = _local1.items[_local3];
						_local4.updateObject();
					};
				};
				_local3++;
			};
		}
		public function destroy(){
			this.clearItems(1, true);
		}
		public function saveItems(){
			var _local5:GameItem;
			var _local6:*;
			var _local1:ItemManager = this;
			var _local2:Number = _local1.items.length;
			var _local3:Array = [];
			var _local4:* = (_local2 - 1);
			while (_local4 >= 0) {
				if (_local1.items[_local4] != 0){
					_local5 = _local1.items[_local4];
					_local6 = _local5.type;
					if (_local6){
						if (((_local5.isWeapon) && (!(_local5.isEmpty)))){
							_local3.push(_local5.getItemData());
						};
						if (_local1[("itemSheet" + _local6)]){
							_local1[("itemSheet" + _local6)].dispose();
							_local1[("itemSheet" + _local6)] = null;
						};
						_local5 = null;
						_local1.items.splice(_local4, 1);
					};
				};
				_local4--;
			};
			_local1.counter = 0;
			_local1.items = null;
			_local1.items = [];
			_local1.gameObj.dataManager.currentScreenData.updateItems(_local3);
		}
		public function clearItems(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=true){
			var _local7:GameItem;
			var _local8:*;
			var _local4:ItemManager = this;
			var _local5:Number = _local4.items.length;
			var _local6:* = (_local5 - 1);
			while (_local6 >= 0) {
				if (_local4.items[_local6] != 0){
					_local7 = _local4.items[_local6];
					if ((((_local7.whichScreen == _arg1)) || (_arg2))){
						_local8 = _local7.type;
						if (_local8){
							if (_local4[("itemSheet" + _local8)]){
								_local4[("itemSheet" + _local8)].dispose();
								_local4[("itemSheet" + _local8)] = null;
							};
						};
						_local7 = null;
						_local4.items.splice(_local6, 1);
					};
				};
				_local6--;
			};
			if (_arg3){
				_local4.counter = _local4.items.length;
			};
			if (_arg2){
				_local4.counter = 0;
				_local4.items = null;
				_local4.items = [];
			};
		}
		public function buildItems(_arg1:Number){
			var _local10:*;
			var _local11:*;
			var _local12:*;
			var _local13:Array;
			var _local14:*;
			var _local2:ItemManager = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:DataManager = _local3.dataManager;
			var _local5:GameDisplay = _local3.gameDisplay;
			var _local6:Number = (_arg1 * _local5.screenTileWidth);
			var _local7:ScreenData = _local4.currentScreenData;
			var _local8:Number = _local7.itemArray.length;
			var _local9:* = 0;
			while (_local9 < _local8) {
				_local10 = _local7.itemArray[_local9][0];
				if (_local10 != 0){
					_local11 = (_local6 + _local7.itemArray[_local9][1]);
					_local12 = _local7.itemArray[_local9][2];
					_local13 = null;
					if (_local7.itemArray[_local9].length > 3){
						_local13 = new Array();
						_local14 = 3;
						while (_local14 < _local7.itemArray[_local9].length) {
							_local13.push(_local7.itemArray[_local9][_local14]);
							_local14++;
						};
					};
					_local2.addItem(_local11, _local12, _local10, _arg1, _local13);
				} else {
					_local2.counter++;
				};
				_local9++;
			};
		}
		public function removeItem(_arg1, _arg2:Boolean=false){
			var _local5:Number;
			var _local3:ItemManager = this;
			var _local4:String = ("GameItem" + _arg1);
			var _local6:* = _local3.items.length;
			var _local7:* = 0;
			while (_local7 < _local6) {
				if (_local3.items[_local7] == _local3[_local4]){
					_local5 = _local7;
				};
				_local7++;
			};
			_local3.items[_local5] = 0;
			if (!_arg2){
				_local3.items.splice(_local5, 1);
			};
			_local3[_local4] = null;
		}
		public function dropMoney(_arg1:Number, _arg2:Number, _arg3:Number){
			var _local4:ItemManager = this;
			var _local5:Number = 0;
			var _local6:Number = _arg1;
			var _local7:Boolean;
			if (_local4.gameObj.mapManager.getTileProperty(_arg2, _arg3, "collision")){
				if (_local4.gameObj.mapManager.getTileProperty(_arg2, (_arg3 - 1), "collision")){
					if (_local4.gameObj.mapManager.getTileProperty((_arg2 + 1), _arg3, "collision")){
						if (_local4.gameObj.mapManager.getTileProperty((_arg2 - 1), _arg3, "collision")){
							if (_local4.gameObj.mapManager.getTileProperty(_arg2, (_arg3 + 1), "collision")){
								_local7 = true;
							} else {
								_arg3 = (_arg3 + 1);
							};
						} else {
							_arg2--;
						};
					} else {
						_arg2 = (_arg2 + 1);
					};
				} else {
					_arg3--;
				};
			};
			if (!_local7){
				while (_local5 < _local4.maxCoinsPerMoneyDrop) {
					if (_local6 >= 50){
						_local4.addItem(_arg2, _arg3, "MoneyDiamond", 1);
						_local6 = (_local6 - 50);
					} else {
						if (_local6 >= 35){
							_local4.addItem(_arg2, _arg3, "MoneyEmerald", 1);
							_local6 = (_local6 - 35);
						} else {
							if (_local6 >= 20){
								_local4.addItem(_arg2, _arg3, "MoneyRuby", 1);
								_local6 = (_local6 - 20);
							} else {
								if (_local6 >= 10){
									_local4.addItem(_arg2, _arg3, "MoneyGold", 1);
									_local6 = (_local6 - 10);
								} else {
									if (_local6 >= 5){
										_local4.addItem(_arg2, _arg3, "MoneySilver", 1);
										_local6 = (_local6 - 5);
									} else {
										if (_local6 >= 1){
											_local4.addItem(_arg2, _arg3, "MoneyCopper", 1);
											_local6--;
										} else {
											break;
										};
									};
								};
							};
						};
					};
				};
			};
		}

	}
}//package cactusGame.managers 

****************

//MapManager (cactusGame.managers.MapManager)
package cactusGame.managers {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;

	public class MapManager {

		private var gameObj:GameModule;

		public function MapManager(_arg1:GameModule){
			var _local2:MapManager = this;
			_local2.gameObj = _arg1;
		}
		public function setProperty(_arg1:Number, _arg2:Number, _arg3:String, _arg4:Boolean=false){
			var _local8:*;
			var _local5:MapManager = this;
			var _local6:GameDisplay = _local5.gameObj.gameDisplay;
			var _local7:DataManager = _local5.gameObj.dataManager;
			var _local9:Number = Math.floor((_arg1 / _local6.screenTileWidth));
			var _local10:Number = _arg1;
			var _local11:Number = _arg2;
			var _local12:ScreenData = _local7.currentScreenData;
			if (_arg3 == "collision"){
				if ((((((((_local10 >= 0)) && ((_local11 >= 0)))) && ((_local10 < _local12.tileArray[0].length)))) && ((_local11 < _local12.tileArray.length)))){
					_local12.tileArray[_local11][_local10].push(DataManager.COLLISION_TILE_NUMBER);
				};
			} else {
				if (_arg3 == "slope"){
					if ((((((((_local10 >= 0)) && ((_local11 >= 0)))) && ((_local10 < _local12.tileArray[0].length)))) && ((_local11 < _local12.tileArray.length)))){
						_local12.tileArray[_local11][_local10].push(DataManager.SLOPE_TILE_NUMBER);
					};
				} else {
					if (_arg3 == "thrublock"){
						if ((((((((_local10 >= 0)) && ((_local11 >= 0)))) && ((_local10 < _local12.tileArray[0].length)))) && ((_local11 < _local12.tileArray.length)))){
							_local12.tileArray[_local11][_local10].push(DataManager.THRUBLOCK_TILE_NUMBER);
						};
					};
				};
			};
		}
		public function unsetProperty(_arg1:Number, _arg2:Number, _arg3:String, _arg4:Boolean=false){
			var _local8:*;
			var _local5:MapManager = this;
			var _local6:GameDisplay = _local5.gameObj.gameDisplay;
			var _local7:DataManager = _local5.gameObj.dataManager;
			var _local9:Number = Math.floor((_arg1 / _local6.screenTileWidth));
			var _local10:Number = _arg1;
			var _local11:Number = _arg2;
			var _local12:Number = -1;
			var _local13:ScreenData = _local7.currentScreenData;
			if (_arg3 == "collision"){
				if ((((((((_local10 >= 0)) && ((_local11 >= 0)))) && ((_local10 < _local13.tileArray[0].length)))) && ((_local11 < _local13.tileArray.length)))){
					_local12 = _local13.tileArray[_local11][_local10].indexOf(DataManager.COLLISION_TILE_NUMBER);
					if (_local12 > -1){
						_local13.tileArray[_local11][_local10].splice(_local12, 1);
					};
				};
			} else {
				if (_arg3 == "slope"){
					if ((((((((_local10 >= 0)) && ((_local11 >= 0)))) && ((_local10 < _local13.tileArray[0].length)))) && ((_local11 < _local13.tileArray.length)))){
						_local12 = _local13.tileArray[_local11][_local10].indexOf(DataManager.SLOPE_TILE_NUMBER);
						if (_local12 > -1){
							_local13.tileArray[_local11][_local10].splice(_local12, 1);
						};
					};
				} else {
					if (_arg3 == "thrublock"){
						if ((((((((_local10 >= 0)) && ((_local11 >= 0)))) && ((_local10 < _local13.tileArray[0].length)))) && ((_local11 < _local13.tileArray.length)))){
							_local12 = _local13.tileArray[_local11][_local10].indexOf(DataManager.THRUBLOCK_TILE_NUMBER);
							if (_local12 > -1){
								_local13.tileArray[_local11][_local10].splice(_local12, 1);
							};
						};
					};
				};
			};
		}
		public function destroy(){
		}
		public function isWithinBounds(_arg1:Number, _arg2:Number):Boolean{
			var _local3:MapManager = this;
			if ((((((((_arg1 >= 0)) && ((_arg2 >= 0)))) && ((_arg1 < _local3.gameObj.dataManager.currentScreenData.tileArray[0].length)))) && ((_arg2 < _local3.gameObj.dataManager.currentScreenData.tileArray.length)))){
				return (true);
			};
			return (false);
		}
		public function getTileProperty(_arg1:Number, _arg2:Number, _arg3:String, _arg4:Boolean=false){
			var _local13:Number;
			var _local5:MapManager = this;
			var _local6:GameDisplay = _local5.gameObj.gameDisplay;
			var _local7:DataManager = _local5.gameObj.dataManager;
			var _local8:* = false;
			var _local9:Number = Math.floor((_arg1 / _local6.screenTileWidth));
			var _local10:Number = _arg1;
			var _local11:Number = _arg2;
			var _local12:ScreenData = _local7.currentScreenData;
			if (_arg3 == "collision"){
				if (isWithinBounds(_local10, _local11)){
					_local8 = _local7.getPropValue("collision", _local12.tileArray[_local11][_local10]);
				} else {
					_local8 = false;
				};
			} else {
				if (_arg3 == "slope"){
					if (isWithinBounds(_local10, _local11)){
						_local8 = _local7.getPropValue("slope", _local12.tileArray[_local11][_local10]);
					} else {
						_local8 = false;
					};
				} else {
					if (_arg3 == "thrublock"){
						if (isWithinBounds(_local10, _local11)){
							_local8 = _local7.getPropValue("thru", _local12.tileArray[_local11][_local10]);
						} else {
							_local8 = false;
						};
					} else {
						if (_arg3 == "grab"){
							if (isWithinBounds(_local10, _local11)){
								_local8 = _local7.getPropValue("grab", _local12.tileArray[_local11][_local10]);
							} else {
								_local8 = false;
							};
						} else {
							if (_arg3 == "door"){
								if (isWithinBounds(_local10, _local11)){
									_local13 = _local12.checkForDoorID(_local10, _local11);
									if (_local13 > -1){
										_local8 = _local5.gameObj.dataManager.currentWorldData.getDoorArray(_local5.gameObj.dataManager.currentScreen, _local13);
									} else {
										_local8 = false;
									};
								} else {
									_local8 = false;
								};
							};
						};
					};
				};
			};
			return (_local8);
		}

	}
}//package cactusGame.managers 

****************

//ObjectManager (cactusGame.managers.ObjectManager)
package cactusGame.managers {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.utils.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.models.weapons.*;
	import cactusGame.models.objects.*;

	public dynamic class ObjectManager {

		public var gameObj:GameModule;
		public var playerObj:PlayerChar;
		public var counter:Number;// = 0
		public var objects:Array;
		public var spriteSheets:Array;
		var forceObjects:Array;
		var forcedWeapons:Array;
		public var weapons_weapon1:Array;
		public var weapons_weapon2:Array;
		public var weapons_weapon2b:Array;
		public var weapons_gloves:Array;
		public var weapons_longgun:Array;
		public var weapons_pistol:Array;
		public var weapons_whip:Array;
		public var weapons_toss:Array;

		public function ObjectManager(_arg1){
			objects = [];
			spriteSheets = [];
			forceObjects = [GameObject1, GameObject2, GameObject3, GameObject4, GameObject5, GameObject6, GameObject7, GameObject8, GameObject9, GameObject10, GameObject11, GameObject12, GameObject13, GameObject14, GameObject15, GameObject16, GameObject17, GameObject18, GameObject19, GameObject20, GameObject21, GameObject22, GameObject23, GameObject24, GameObject25, GameObject26, GameObject27, GameObject28, GameObject29, GameObject30, GameObject31, GameObject32, GameObject33, GameObject34, GameObject35, GameObject36, GameObject37, GameObject38, GameObject39, GameObject40, GameObject41, GameObject42, GameObject43, GameObject44, GameObject45, GameObject46, GameObject47, GameObject48, GameObject49, GameObject50, GameObject51, GameObject52, GameObject53, GameObject54, GameObject55, GameObject56, GameObject57, GameObject58, GameObject59, GameObject60, GameObject61, GameObject62, GameObject63, GameObject64, GameObject65, GameObject66, GameObject67];
			forcedWeapons = [WeaponMallet, WeaponCutlass, WeaponGuitar, WeaponBoxingGloves, WeaponBlunderbuss, WeaponRevolver, WeaponGatling, WeaponBazooka, WeaponTowChain, WeaponPlayingCard, WeaponBanjo, WeaponTwoByFour, WeaponBat, WeaponShovel, WeaponBone, WeaponClub, WeaponCactus, WeaponBrassKnuckles, WeaponIron, WeaponSubMachineGun, WeaponCatOfNineTails, WeaponChainWhip, WeaponBullWhip, WeaponThornWhip, WeaponChainWhip, WeaponMeteor, WeaponBarbedWire, WeaponRope, WeaponRattlesnake, WeaponAxe, WeaponPickaxe, WeaponMorningstar, WeaponLongsword, WeaponKatana, WeaponScythe, WeaponPoolCue, WeaponCrowbar, WeaponMachete, WeaponNightstick, WeaponPipe, WeaponSickle, WeaponStick, WeaponDerringer, WeaponRomanCandle, WeaponCrossbow, WeaponFlamethrower, WeaponHarpoonGun, WeaponShotgun, WeaponDart, WeaponDagger, WeaponBadge, WeaponTomahawk, WeaponTNT, WeaponGrenade, WeaponCherryBomb, WeaponTearGas, WeaponLantern, WeaponScorpion, WeaponSquirtGun, WeaponHatfieldPistol];
			weapons_weapon1 = ["Machete", "Crowbar", "Pipe", "Cutlass", "Nightstick", "Sickle", "Stick"];
			weapons_weapon2 = ["Mallet", "Pickaxe", "Axe", "Scythe", "PoolCue", "Morningstar"];
			weapons_weapon2b = ["Banjo", "Guitar", "Bat", "Shovel", "TwoByFour", "Cactus", "Club", "Bone", "Katana", "Longsword"];
			weapons_gloves = ["BrassKnuckles", "BoxingGloves", "Iron"];
			weapons_longgun = ["Blunderbuss", "Shotgun", "Flamethrower", "Crossbow", "HarpoonGun", "SubMachineGun"];
			weapons_pistol = ["Revolver", "Derringer", "RomanCandle", "SquirtGun", "HatfieldPistol"];
			weapons_whip = ["BullWhip", "BarbedWire", "CatOfNineTails", "ChainWhip", "Meteor", "Rattlesnake", "Rope", "ThornWhip", "TowChain"];
			weapons_toss = ["Dagger", "PlayingCard", "Dart", "Badge", "TNT", "Lantern", "CherryBomb", "Tomahawk", "Grenade", "Scorpion", "TearGas"];
			super();
			var _local2:ObjectManager = this;
			_local2.gameObj = _arg1;
		}
		public function getObject(_arg1:Number, _arg2:Number):GameObject{
			var _local7:GameObject;
			var _local3:ObjectManager = this;
			var _local4:Number = _local3.objects.length;
			var _local5:GameObject;
			var _local6:* = 0;
			while (_local6 < _local4) {
				if ((_local3.objects[_local6] is GameObject)){
					_local7 = _local3.objects[_local6];
					if ((((_local7.screenObjID == _arg1)) && ((_local7.whichScreen == _arg2)))){
						_local5 = _local7;
						break;
					};
				};
				_local6++;
			};
			return (_local5);
		}
		public function checkSteppingOnObjects(_arg1:Character){
			var _local4:*;
			var _local2:ObjectManager = this;
			if (_arg1.onMovingTile){
				_arg1.checkMovingTiles(1);
			};
			var _local3:* = 0;
			while (_local3 < _local2.objects.length) {
				if (_local2.objects[_local3] != 0){
					_local4 = _local2.objects[_local3];
					if (_local4.isSteppable){
						_local4.checkStartStepping(_arg1);
					};
				};
				_local3++;
			};
		}
		public function addObject(_arg1, _arg2, _arg3, _arg4:Number, _arg5:Number, _arg6:Array=null):Number{
			var ClassReference:Class;
			var sheetname:*;
			var xtile = _arg1;
			var ytile = _arg2;
			var type = _arg3;
			var whichScreen = _arg4;
			var screenObjID = _arg5;
			var extraParams = _arg6;
			var manager:ObjectManager = this;
			var gameObj:GameModule = manager.gameObj;
			manager.counter++;
			var objectid:* = manager.counter;
			var name:* = ("GameObject" + objectid);
			try {
				ClassReference = (getDefinitionByName(("cactusGame.models.objects.GameObject" + type)) as Class);
				manager[name] = new ClassReference(gameObj, xtile, ytile, objectid, whichScreen, screenObjID, extraParams);
				if (manager[("objectSheet" + type)] == undefined){
					sheetname = manager[name].sheetname;
					manager[("objectSheet" + type)] = gameObj.bitmapManager.loadBitmap(sheetname);
				};
				manager.objects.push(manager[name]);
			} catch(err) {
			};
			return (objectid);
		}
		public function recreateCarriedObject(){
			var ob:GameObject;
			var objectid:*;
			var name:*;
			var sheetname:*;
			var manager:ObjectManager = this;
			var player:PlayerChar = manager.gameObj.playerObj;
			if (((((player) && (player.isCarryingObject))) && (((!((player.whichObjectGrabbed == null))) && ((player.whichObjectGrabbed is GameObject)))))){
				ob = player.whichObjectGrabbed;
				manager.counter++;
				objectid = manager.counter;
				name = ("GameObject" + objectid);
				try {
					manager[name] = ob;
					if (manager[("objectSheet" + ob.type)] == undefined){
						sheetname = manager[name].sheetname;
						manager[("objectSheet" + ob.type)] = gameObj.bitmapManager.loadBitmap(sheetname);
					};
					manager.objects.push(manager[name]);
					ob.id = objectid;
					ob.gameObj.dataManager.currentScreenData.objectTotal = manager.objects.length;
				} catch(err) {
				};
			};
		}
		public function activateObject(_arg1:Number, _arg2, _arg3, _arg4, _arg5){
			var _local9:GameObject;
			var _local6:ObjectManager = this;
			var _local7:Number = _local6.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((_local6.objects[_local8] is GameObject)){
					_local9 = _local6.objects[_local8];
					if ((((_local9.screenObjID == _arg2)) && ((_local9.whichScreen == _arg1)))){
						_local9.sendTriggered(_arg4, _arg3, _arg5);
						break;
					};
				};
				_local8++;
			};
		}
		public function stopCameraPan(_arg1){
			var _local2:ObjectManager = this;
			var _local3:String = ("GameObject" + _arg1);
			_local2[_local3].stopCameraPan();
		}
		public function processObjects(){
			var _local4:GameObject;
			var _local1:ObjectManager = this;
			var _local2:Number = _local1.objects.length;
			var _local3:* = 0;
			while (_local3 < _local2) {
				if (_local1.objects[_local3]){
					if (_local1.objects[_local3] != 0){
						_local4 = _local1.objects[_local3];
						_local4.updateObject();
					};
				};
				_local3++;
			};
		}
		public function updateTrainingSigns(){
			var _local4:GameObject;
			var _local1:ObjectManager = this;
			var _local2:Number = _local1.objects.length;
			var _local3:* = 0;
			while (_local3 < _local2) {
				if (_local1.objects[_local3] != 0){
					_local4 = _local1.objects[_local3];
					_local4.updateTrainingSign();
				};
				_local3++;
			};
		}
		public function setEvent(_arg1:Number, _arg2, _arg3, _arg4, _arg5){
			var _local9:GameObject;
			var _local6:ObjectManager = this;
			var _local7:* = _local6.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((_local6.objects[_local8] is GameObject)){
					_local9 = _local6.objects[_local8];
					if ((((_local9.screenObjID == _arg2)) && ((_local9.whichScreen == _arg1)))){
						_local9.setEventData(_arg3, _arg4, _arg5);
						break;
					};
				};
				_local8++;
			};
		}
		public function setEventTriggers(_arg1:Number, _arg2, _arg3, _arg4:Array=null){
			var _local9:GameObject;
			var _local5:ObjectManager = this;
			var _local6:String = ("GameObject" + _arg2);
			var _local7:Number = _local5.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((_local5.objects[_local8] is GameObject)){
					_local9 = _local5.objects[_local8];
					if ((((_local9.screenObjID == _arg2)) && ((_local9.whichScreen == _arg1)))){
						_local9.setEventTriggers(_arg3, _arg4);
						break;
					};
				};
				_local8++;
			};
		}
		public function allowReactions(_arg1){
			var _local2:ObjectManager = this;
			var _local3:String = ("GameObject" + _arg1);
			if (_local2[_local3]){
				_local2[_local3].allowReactions();
			};
		}
		public function destroy(){
			this.clearObjects(1, true, false, true);
		}
		public function clearObjects(_arg1:Number, _arg2:Boolean=false, _arg3:Boolean=true, _arg4:Boolean=false){
			var ob:GameObject;
			var mytype:*;
			var myid:*;
			var myname:String;
			var whichScreen = _arg1;
			var clearAll = _arg2;
			var leaveLastCheckpoint = _arg3;
			var destroying = _arg4;
			var manager:ObjectManager = this;
			var totalobjects:Number = manager.objects.length;
			var i:* = (totalobjects - 1);
			while (i >= 0) {
				if (manager.objects[i] != 0){
					ob = manager.objects[i];
					if ((((manager.objects[i].whichScreen == whichScreen)) || (clearAll))){
						mytype = manager.objects[i].type;
						myid = manager.objects[i].id;
						myname = ("GameObject" + myid);
						if (mytype){
							if (manager[("objectSheet" + mytype)]){
								manager[("objectSheet" + mytype)].dispose();
								manager[("objectSheet" + mytype)] = null;
							};
						};
						try {
							if (((ob.isGrabbed) && (!(destroying)))){
								if (ob.originalScreenIndex == -1){
									ob.originalScreenIndex = manager.gameObj.dataManager.currentScreenData.roomIndex;
								};
								manager.gameObj.dataManager.currentScreenData.saveObjectState((ob.id - 1), [0]);
							} else {
								ob.destroy();
							};
						} catch(err) {
						};
						manager[myname] = null;
						manager.objects.splice(i, 1);
					};
				};
				i = (i - 1);
			};
			if (clearAll){
				manager.counter = 0;
				manager.objects = null;
				manager.objects = [];
			};
		}
		public function saveObjects(){
			var _local1:ObjectManager = this;
			_local1.clearObjects(1, true);
		}
		public function buildObjects(_arg1:Number){
			var _local11:*;
			var _local12:*;
			var _local13:*;
			var _local14:Array;
			var _local15:*;
			var _local2:ObjectManager = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:DataManager = _local3.dataManager;
			var _local5:GameDisplay = _local3.gameDisplay;
			var _local6:Number = (_arg1 * _local5.screenTileWidth);
			var _local7:ScreenData = _local4.currentScreenData;
			var _local8:Number = _local7.objectArray.length;
			var _local9 = "";
			var _local10:* = 0;
			while (_local10 < _local8) {
				_local11 = _local7.objectArray[_local10][0];
				_local9 = (_local9 + (_local11 + ","));
				if (_local11 != 0){
					_local12 = (_local6 + _local7.objectArray[_local10][1]);
					_local13 = _local7.objectArray[_local10][2];
					_local14 = null;
					if (_local7.objectArray[_local10].length > 4){
						_local14 = new Array();
						_local15 = 4;
						while (_local15 < _local7.objectArray[_local10].length) {
							_local14.push(_local7.objectArray[_local10][_local15]);
							_local15++;
						};
					};
					_local2.addObject(_local12, _local13, _local11, _arg1, (_local10 + 1), _local14);
				} else {
					_local2.counter++;
				};
				_local10++;
			};
			_local7.objectTotal = _local8;
			_local2.recreateCarriedObject();
		}
		public function removeObject(_arg1, _arg2:Boolean=false){
			var _local3:ObjectManager = this;
			var _local4:String = ("GameObject" + _arg1);
			var _local5:Number = -1;
			var _local6:* = _local3.objects.length;
			var _local7:* = 0;
			while (_local7 < _local6) {
				if (_local3.objects[_local7] == _local3[_local4]){
					_local5 = _local7;
				};
				_local7++;
			};
			if (_local5 > -1){
				_local3.objects[_local5] = 0;
				if (!_arg2){
					_local3.objects.splice(_local5, 1);
				};
				_local3[_local4].destroy();
				_local3[_local4] = null;
			};
		}
		public function getWeaponType(_arg1:String):String{
			var _local2:ObjectManager = this;
			var _local3 = "punch";
			if (_local2.weapons_weapon1.indexOf(_arg1) > -1){
				_local3 = "weapon1";
			} else {
				if (_local2.weapons_weapon2.indexOf(_arg1) > -1){
					_local3 = "weapon2";
				} else {
					if (_local2.weapons_weapon2b.indexOf(_arg1) > -1){
						_local3 = "weapon2b";
					} else {
						if (_local2.weapons_gloves.indexOf(_arg1) > -1){
							_local3 = "gloves";
						} else {
							if (_local2.weapons_longgun.indexOf(_arg1) > -1){
								_local3 = "longgun";
							} else {
								if (_local2.weapons_pistol.indexOf(_arg1) > -1){
									_local3 = "pistol";
								} else {
									if (_local2.weapons_whip.indexOf(_arg1) > -1){
										_local3 = "whip";
									} else {
										if (_local2.weapons_toss.indexOf(_arg1) > -1){
											_local3 = "toss";
										} else {
											if (_arg1 == "Gatling"){
												_local3 = "gatling";
											} else {
												if (_arg1 == "Bazooka"){
													_local3 = "bazooka";
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local3);
		}

	}
}//package cactusGame.managers 

****************

//SoundManager (cactusGame.managers.SoundManager)
package cactusGame.managers {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.utils.*;
	import flash.media.*;

	public class SoundManager extends EventDispatcher {

		public var gameObj:GameModule;
		public var isMute:Boolean;// = false
		public var maxvolume:Number;// = 1
		public var lastVolume:Number;// = 100
		public var availableTracks:Array;
		public var currentTrack:String;// = ""
		public var musicTrack:SoundChannel;
		public var introTrack:SoundChannel;
		public var musicMode:String;// = "level"

		public function SoundManager(_arg1:GameModule){
			availableTracks = ["Track1", "Track2"];
			super();
			var _local2:SoundManager = this;
			_local2.gameObj = _arg1;
			_local2.setupEngine();
		}
		public function setupEngine(){
			var _local1:SoundManager = this;
			_local1.musicTrack = new SoundChannel();
			_local1.introTrack = new SoundChannel();
			_local1.gameObj.apiHelper.api.addEventListener("muteSound", _local1.apiMutedSound);
			_local1.gameObj.apiHelper.api.addEventListener("unmuteSound", _local1.apiUnmutedSound);
		}
		public function startLevelMusic(){
			var _local1:SoundManager = this;
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			if ((((((((((_local2 == 1)) || ((_local2 == 3)))) || ((_local2 == 7)))) || ((_local2 == 10)))) || ((_local2 == 11)))){
				_local1.playTrack("MinesTrack", int.MAX_VALUE);
			} else {
				_local1.playTrack("AlternateTrack", int.MAX_VALUE);
			};
		}
		public function chooseNewTrack(_arg1=null){
			var _local3:String;
			var _local2:SoundManager = this;
			if (_local2.musicMode == "level"){
				_local3 = _local2.availableTracks[Math.floor((Math.random() * _local2.availableTracks.length))];
			};
			_local2.playTrack(_local3);
		}
		public function playTrack(_arg1:String, _arg2:Number=1, _arg3:Number=0){
			var SoundReference:Class;
			var soundObject:Sound;
			var trackName = _arg1;
			var loop = _arg2;
			var offset = _arg3;
			var manager:SoundManager = this;
			manager.currentTrack = trackName;
			var noSound:Boolean;
			if (trackName == ""){
				noSound = true;
			} else {
				try {
					SoundReference = (getDefinitionByName(trackName) as Class);
					soundObject = new (SoundReference);
				} catch(e) {
					noSound = true;
				};
			};
			if (manager.musicTrack){
				manager.musicTrack.stop();
			};
			var loopNumber:Number = loop;
			manager.musicTrack = soundObject.play(offset, int.MAX_VALUE);
		}
		public function playIntroTrack(){
			var _local1:SoundManager = this;
			var _local2:Class = (getDefinitionByName("IntroTrack") as Class);
			var _local3:Sound = new (_local2);
			if (_local1.introTrack){
				_local1.introTrack.stop();
			};
			var _local4:SoundTransform = new SoundTransform();
			_local4.volume = 0;
			_local1.musicTrack.soundTransform = _local4;
			_local1.introTrack = _local3.play(0, 1);
			_local1.introTrack.addEventListener(Event.SOUND_COMPLETE, introTrackFinished);
		}
		public function endMusic(){
			var _local1:SoundManager = this;
			if (_local1.musicTrack){
				_local1.musicTrack.stop();
			};
			if (_local1.introTrack){
				_local1.introTrack.stop();
			};
			_local1.currentTrack = "none";
		}
		public function pauseMusic(_arg1:Boolean){
			var _local2:SoundManager = this;
			var _local3:SoundTransform = new SoundTransform();
			if (_arg1){
				_local2.lastVolume = SoundMixer.soundTransform.volume;
				_local3.volume = 0;
			} else {
				_local3.volume = _local2.lastVolume;
			};
			SoundMixer.soundTransform = _local3;
		}
		public function introTrackFinished(_arg1=null){
			var _local2:SoundManager = this;
			_local2.playTrack("MainLoop", int.MAX_VALUE);
		}
		public function toggleMute(_arg1:Event=null){
			var _local2:SoundManager = this;
			if (!_local2.isMute){
				_local2.isMute = true;
			} else {
				_local2.isMute = false;
			};
			var _local3:SoundTransform = new SoundTransform();
			if (_local2.isMute){
				_local3.volume = 0;
			} else {
				_local3.volume = _local2.maxvolume;
			};
			SoundMixer.soundTransform = _local3;
		}
		public function muteSound(_arg1:Boolean=false){
			var _local2:SoundManager = this;
			if (_arg1){
				_local2.isMute = true;
			};
			var _local3:SoundTransform = new SoundTransform();
			_local3.volume = 0;
			SoundMixer.soundTransform = _local3;
			if (_arg1){
				dispatchEvent(new Event("soundIsMuted", true));
			};
		}
		public function unmuteSound(_arg1:Boolean=false){
			var _local2:SoundManager = this;
			if (_arg1){
				_local2.isMute = false;
			};
			var _local3:SoundTransform = new SoundTransform();
			_local3.volume = _local2.maxvolume;
			SoundMixer.soundTransform = _local3;
			if (_arg1){
				dispatchEvent(new Event("soundIsNotMuted", true));
			};
		}
		public function apiMutedSound(_arg1:Event=null){
			var e = _arg1;
			var manager:SoundManager = this;
			manager.muteSound(true);
			try {
				if (manager.gameObj.hudObj){
					manager.gameObj.hudObj.updateMuteButton();
				};
			} catch(err) {
			};
		}
		public function apiUnmutedSound(_arg1:Event=null){
			var e = _arg1;
			var manager:SoundManager = this;
			manager.unmuteSound(true);
			try {
				if (manager.gameObj.hudObj){
					manager.gameObj.hudObj.updateMuteButton();
				};
			} catch(err) {
			};
		}
		public function playSound(_arg1:String, _arg2:Boolean=false, _arg3:Number=-1, _arg4:Number=0):SoundChannel{
			var SoundReference:Class;
			var transform:SoundTransform;
			var loopNumber:Number;
			var which = _arg1;
			var loop = _arg2;
			var targetVolume = _arg3;
			var targetPan = _arg4;
			var engine:SoundManager = this;
			var soundObject:Sound;
			var soundChannel:SoundChannel;
			try {
				SoundReference = (getDefinitionByName(which) as Class);
				soundObject = new (SoundReference);
				transform = new SoundTransform();
				transform.pan = targetPan;
				if (engine.isMute){
					transform.volume = 0;
				} else {
					if (targetVolume == -1){
						transform.volume = engine.maxvolume;
					} else {
						transform.volume = targetVolume;
					};
				};
				loopNumber = 0;
				if (loop){
					loopNumber = int.MAX_VALUE;
				};
				soundChannel = soundObject.play(0, loopNumber, transform);
			} catch(e:Error) {
			};
			return (soundChannel);
		}

	}
}//package cactusGame.managers 

****************

//BadgeBullet (cactusGame.models.bullets.BadgeBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BadgeBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0

		public function BadgeBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [2, 1, 0]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [0, 1, 2]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:BadgeBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
		}
		override public function defineVars(){
			sheetname = "bullet_badge_sheet";
			shotname = "Badge";
			width = 5;
			height = 5;
			spritewidth = 16;
			spriteheight = 16;
			spriteCenterX = 8;
			spriteCenterY = 8;
			spriteTargetX = 8;
			spriteTargetY = 8;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 8;
			vspeed = 8;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:BadgeBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:BadgeBullet = this;
			if (_local1.speed < 0){
				_local2 = _local1.leftCycleFrames;
			} else {
				_local2 = _local1.rightCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:BadgeBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:BadgeBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:BadgeBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//BazookaRocket (cactusGame.models.bullets.BazookaRocket)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BazookaRocket extends Bullet {

		public var useAngle:Number;// = 0
		public var fire_upCycleFrames:Array;
		public var fire_up45rightCycleFrames:Array;
		public var fire_rightCycleFrames:Array;
		public var fire_down45rightCycleFrames:Array;
		public var fire_downCycleFrames:Array;
		public var fire_down45leftCycleFrames:Array;
		public var fire_leftCycleFrames:Array;
		public var fire_up45leftCycleFrames:Array;
		public var forwardCollRect:Rectangle;
		public var upCollRect:Rectangle;
		public var diagonalCollRect:Rectangle;
		public var smokeTimer:Number;// = 0
		public var smokeTimerInterval:Number;// = 2
		public var whichSmokeType:Number;// = 1
		public var blastRect:Rectangle;
		public var hitEnemyID:Number;// = -1

		public function BazookaRocket(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			fire_upCycleFrames = ["fire_up", 2, 1, 0, 0, [4]];
			fire_up45rightCycleFrames = ["fire_up45right", 2, 1, 0, 0, [1]];
			fire_rightCycleFrames = ["fire_right", 2, 1, 0, 0, [0]];
			fire_down45rightCycleFrames = ["fire_down45right", 2, 1, 0, 0, [2]];
			fire_downCycleFrames = ["fire_down", 2, 1, 0, 0, [3]];
			fire_down45leftCycleFrames = ["fire_down45left", 2, 1, 0, 0, [6]];
			fire_leftCycleFrames = ["fire_left", 2, 1, 0, 0, [7]];
			fire_up45leftCycleFrames = ["fire_up45left", 2, 1, 0, 0, [5]];
			forwardCollRect = new Rectangle(-20, -5, 40, 10);
			upCollRect = new Rectangle(-5, -20, 10, 40);
			diagonalCollRect = new Rectangle(-20, -20, 40, 40);
			blastRect = new Rectangle(-40, -40, 80, 80);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:BazookaRocket = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			var _local12:Array = _local11.grabAnimationCycle();
			_local11.animationFrame = _local12[5];
		}
		override public function defineVars(){
			sheetname = "bazooka_rocket_sheet";
			shotname = "BazookaRocket";
			width = 3;
			height = 3;
			spritewidth = 58;
			spriteheight = 58;
			spriteCenterX = 29;
			spriteCenterY = 29;
			spriteTargetX = 29;
			spriteTargetY = 29;
			sheetWidth = 8;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 19;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:BazookaRocket = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:BazookaRocket = this;
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1.fire_up45rightCycleFrames;
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1.fire_down45rightCycleFrames;
					} else {
						_local2 = _local1.fire_rightCycleFrames;
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1.fire_up45leftCycleFrames;
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1.fire_down45leftCycleFrames;
						} else {
							_local2 = _local1.fire_leftCycleFrames;
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1.fire_upCycleFrames;
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1.fire_downCycleFrames;
						} else {
							_local2 = _local1.fire_rightCycleFrames;
						};
					};
				};
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:BazookaRocket = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local7:String;
			var _local1:BazookaRocket = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				if ((_local1.smokeTimer % _local1.smokeTimerInterval) == 0){
					_local7 = "anim1";
					if (_local1.whichSmokeType == 1){
						_local7 = "anim1";
						_local1.whichSmokeType = 2;
					} else {
						_local7 = "anim2";
						_local1.whichSmokeType = 1;
					};
					_local1.gameObj.effectManager.addEffect((_local1.x - (10 * _local1.facingDir)), (_local1.y + 4), "SmokeEffect", _local7);
				};
				_local1.smokeTimer++;
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				if ((((_local1.cycleName == "fire_up")) || ((_local1.cycleName == "fire_down")))){
					_local1.collRect = _local1.upCollRect;
				} else {
					if ((((((((_local1.cycleName == "fire_up45left")) || ((_local1.cycleName == "fire_up45right")))) || ((_local1.cycleName == "fire_down45left")))) || ((_local1.cycleName == "fire_down45right")))){
						_local1.collRect = _local1.diagonalCollRect;
					} else {
						_local1.collRect = _local1.forwardCollRect;
					};
				};
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				} else {
					_local1.fadeShot();
				};
			};
		}
		override public function fadeShot(){
			var _local1:BazookaRocket = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local1.collRect = _local1.blastRect;
			if (_local1.fromEnemy){
				_local1.checkHittingPlayers();
			} else {
				_local1.checkHittingEnemies();
				_local1.checkHittingObjects();
			};
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local2.addEffect((_local1.x - 12), (_local1.y + 6), "ExplosionEffect", "delay1");
			_local2.addEffect((_local1.x + 12), (_local1.y - 6), "ExplosionEffect", "delay2");
			_local2.addEffect((_local1.x - 16), (_local1.y - 8), "ExplosionEffect", "delay3");
			_local1.gameObj.gameCam.setCameraJiggle(8, 10);
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local10:Enemy;
			var _local11:Rectangle;
			var _local12:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:Number = 0;
			var _local9:* = 0;
			while (_local9 < _local6) {
				_local10 = _local5.enemies[_local9];
				_local11 = new Rectangle();
				_local11.x = (_local3.x + _local3.collRect.x);
				_local11.y = (_local3.y + _local3.collRect.y);
				_local11.width = _local3.collRect.width;
				_local11.height = _local3.collRect.height;
				if (_local10.checkSpriteCollision(_local11)){
					if (((!((_local10.id == hitEnemyID))) && (((_local10.isDead) || (((!(_local10.isHit)) && (!(_local10.resistBullets)))))))){
						_local12 = _local10.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local12);
						_local7 = true;
						hitEnemyID = _local10.id;
						if (_local10.isDead){
							_local8++;
						};
						if (!_local3.isFading){
							break;
						};
					} else {
						if (_local10.id == hitEnemyID){
							if (_local10.isDead){
								_local8++;
							};
						};
					};
				};
				_local9++;
			};
			if (_local7){
			};
			if (_local3.isFading){
				_local3.gameObj.challengeManager.recordMultiExplosion(_local8);
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit(_local2.statAttack);
						_local6 = true;
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:BazookaRocket = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//BlunderbussBullet (cactusGame.models.bullets.BlunderbussBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BlunderbussBullet extends Bullet {

		public var useAngle:Number;// = 0
		public var animCycleFrames:Array;

		public function BlunderbussBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:BlunderbussBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			var _local12:Number = ((_local11.x - _local11.gameObj.playerObj.x) + (_local11.speed * 2));
			var _local13:Number = ((_local11.y - _local11.gameObj.playerObj.y) + (_local11.vspeed * 2));
			_local11.gameObj.effectManager.addEffect(_local11.x, _local11.y, "SmokeEffect", "", true, _local12, _local13);
		}
		override public function defineVars(){
			sheetname = "blunderbuss_shot_sheet";
			shotname = "Blunderbuss Bullet";
			width = 4;
			height = 4;
			spritewidth = 8;
			spriteheight = 8;
			spriteCenterX = 4;
			spriteCenterY = 4;
			spriteTargetX = 4;
			spriteTargetY = 4;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 14;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:BlunderbussBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local1:BlunderbussBullet = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:BlunderbussBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = ((_local12 * Math.cos(_arg4)) * -1);
			var _local14:Number = ((_local12 * Math.sin(_arg4)) * -1);
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:BlunderbussBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:BlunderbussBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//CherryBombBullet (cactusGame.models.bullets.CherryBombBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class CherryBombBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""
		public var blastRect:Rectangle;
		public var hitEnemyID:Number;// = -1

		public function CherryBombBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [0, 1, 2, 3]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [4, 5, 6, 7]];
			blastRect = new Rectangle(-20, -20, 40, 40);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:CherryBombBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_cherrybomb_sheet";
			shotname = "Cherry Bomb";
			width = 6;
			height = 6;
			spritewidth = 24;
			spriteheight = 24;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 4;
			sheetHeight = 1;
			collRect = new Rectangle(-8, -8, 16, 16);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:CherryBombBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:CherryBombBullet = this;
			if (_local1.facingDirX == 1){
				_local2 = _local1.rightCycleFrames;
			} else {
				_local2 = _local1.leftCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:CherryBombBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:CherryBombBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				if (_local1.throwType == "forward"){
					if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
						_local1.vspeed++;
					};
				} else {
					if (_local1.throwType == "45up"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed = (_local1.vspeed + 2);
							};
						};
					};
				};
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if (((_local1.x + _local1.spritewidth) + 80) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
							_local1.fadeShot();
						} else {
							if (_local1.y > _local1.gameObj.gameDisplay.levelPxHeight){
								_local1.fadeShot();
							} else {
								if (_local3){
									_local1.fadeShot();
								};
							};
						};
					};
				} else {
					_local1.fadeShot();
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:CherryBombBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
				_local9 = true;
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}
		override public function fadeShot(){
			var _local1:CherryBombBullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local1.collRect = _local1.blastRect;
			if (_local1.fromEnemy){
				_local1.checkHittingPlayers();
			} else {
				_local1.checkHittingEnemies();
				_local1.checkHittingObjects();
			};
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local10:Enemy;
			var _local11:Rectangle;
			var _local12:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:Number = 1;
			var _local9:* = 0;
			while (_local9 < _local6) {
				_local10 = _local5.enemies[_local9];
				_local11 = new Rectangle();
				_local11.x = (_local3.x + _local3.collRect.x);
				_local11.y = (_local3.y + _local3.collRect.y);
				_local11.width = _local3.collRect.width;
				_local11.height = _local3.collRect.height;
				if (_local10.checkSpriteCollision(_local11)){
					if (((!((_local10.id == hitEnemyID))) && (((_local10.isDead) || (((!(_local10.isHit)) && (!(_local10.resistBullets)))))))){
						_local12 = _local10.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local12);
						_local7 = true;
						hitEnemyID = _local10.id;
						if (_local10.isDead){
							_local8++;
						};
						if (!_local3.isFading){
							break;
						};
					} else {
						if (_local10.id == hitEnemyID){
							if (_local10.isDead){
								_local8++;
							};
						};
					};
				};
				_local9++;
			};
			if (_local7){
			};
			if (_local3.isFading){
				_local3.gameObj.challengeManager.recordMultiExplosion(_local8);
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit(_local2.statAttack);
						_local6 = true;
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}

	}
}//package cactusGame.models.bullets 

****************

//CrossbowArrow (cactusGame.models.bullets.CrossbowArrow)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class CrossbowArrow extends Bullet {

		public var useAngle:Number;// = 0
		public var fire_upCycleFrames:Array;
		public var fire_up45rightCycleFrames:Array;
		public var fire_rightCycleFrames:Array;
		public var fire_down45rightCycleFrames:Array;
		public var fire_downCycleFrames:Array;
		public var fire_down45leftCycleFrames:Array;
		public var fire_leftCycleFrames:Array;
		public var fire_up45leftCycleFrames:Array;
		public var forwardCollRect:Rectangle;
		public var upCollRect:Rectangle;
		public var diagonalCollRect:Rectangle;

		public function CrossbowArrow(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			fire_upCycleFrames = ["fire_up", 2, 1, 0, 0, [4]];
			fire_up45rightCycleFrames = ["fire_up45right", 2, 1, 0, 0, [1]];
			fire_rightCycleFrames = ["fire_right", 2, 1, 0, 0, [0]];
			fire_down45rightCycleFrames = ["fire_down45right", 2, 1, 0, 0, [2]];
			fire_downCycleFrames = ["fire_down", 2, 1, 0, 0, [3]];
			fire_down45leftCycleFrames = ["fire_down45left", 2, 1, 0, 0, [6]];
			fire_leftCycleFrames = ["fire_left", 2, 1, 0, 0, [7]];
			fire_up45leftCycleFrames = ["fire_up45left", 2, 1, 0, 0, [5]];
			forwardCollRect = new Rectangle(-10, -5, 20, 10);
			upCollRect = new Rectangle(-5, -10, 10, 20);
			diagonalCollRect = new Rectangle(-10, -10, 20, 20);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:CrossbowArrow = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			var _local12:Array = _local11.grabAnimationCycle();
			_local11.animationFrame = _local12[5];
		}
		override public function defineVars(){
			sheetname = "crossbow_arrow_sheet";
			shotname = "Crossbow Arrow";
			width = 3;
			height = 3;
			spritewidth = 42;
			spriteheight = 42;
			spriteCenterX = 21;
			spriteCenterY = 21;
			spriteTargetX = 21;
			spriteTargetY = 21;
			sheetWidth = 8;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 19;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:CrossbowArrow = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:CrossbowArrow = this;
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1.fire_up45rightCycleFrames;
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1.fire_down45rightCycleFrames;
					} else {
						_local2 = _local1.fire_rightCycleFrames;
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1.fire_up45leftCycleFrames;
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1.fire_down45leftCycleFrames;
						} else {
							_local2 = _local1.fire_leftCycleFrames;
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1.fire_upCycleFrames;
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1.fire_downCycleFrames;
						} else {
							_local2 = _local1.fire_rightCycleFrames;
						};
					};
				};
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:CrossbowArrow = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:CrossbowArrow = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if ((((_local1.cycleName == "fire_up")) || ((_local1.cycleName == "fire_down")))){
					_local1.collRect = _local1.upCollRect;
				} else {
					if ((((((((_local1.cycleName == "fire_up45left")) || ((_local1.cycleName == "fire_up45right")))) || ((_local1.cycleName == "fire_down45left")))) || ((_local1.cycleName == "fire_down45right")))){
						_local1.collRect = _local1.diagonalCollRect;
					} else {
						_local1.collRect = _local1.forwardCollRect;
					};
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:CrossbowArrow = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//DaggerBullet (cactusGame.models.bullets.DaggerBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class DaggerBullet extends Bullet {

		public var cardType:Number;// = 1
		public var card1_upCycleFrames:Array;
		public var card1_up45rightCycleFrames:Array;
		public var card1_rightCycleFrames:Array;
		public var card1_down45rightCycleFrames:Array;
		public var card1_downCycleFrames:Array;
		public var card1_down45leftCycleFrames:Array;
		public var card1_leftCycleFrames:Array;
		public var card1_up45leftCycleFrames:Array;
		public var wackyCycleFrames:Array;
		public var useAngle:Number;// = 0

		public function DaggerBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			var _local11:DaggerBullet;
			card1_upCycleFrames = ["card1_up", 2, 1, 0, 0, [0]];
			card1_up45rightCycleFrames = ["card1_up45right", 2, 1, 0, 0, [1]];
			card1_rightCycleFrames = ["card1_right", 2, 1, 0, 0, [2]];
			card1_down45rightCycleFrames = ["card1_down45right", 2, 1, 0, 0, [3]];
			card1_downCycleFrames = ["card1_down", 2, 1, 0, 0, [4]];
			card1_down45leftCycleFrames = ["card1_down45left", 2, 1, 0, 0, [5]];
			card1_leftCycleFrames = ["card1_left", 2, 1, 0, 0, [6]];
			card1_up45leftCycleFrames = ["card1_up45left", 2, 1, 0, 0, [7]];
			wackyCycleFrames = ["wacky", 2, 1, 0, 0, [0, 2, 4, 6, 16, 18, 20, 22]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			_local11 = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.cardType = 1;
			_local11.animationFrame = 0;
			_local11.cycleFrame = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
		}
		override public function defineVars(){
			sheetname = "bullet_dagger_sheet";
			shotname = "Dagger";
			width = 5;
			height = 5;
			spritewidth = 34;
			spriteheight = 34;
			spriteCenterX = 17;
			spriteCenterY = 17;
			spriteTargetX = 17;
			spriteTargetY = 17;
			sheetWidth = 24;
			sheetHeight = 1;
			collRect = new Rectangle(-8, -8, 16, 16);
			heightmultiplier = 1;
			speed = 8;
			vspeed = 8;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:DaggerBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:DaggerBullet = this;
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1[(("card" + _local1.cardType) + "_up45rightCycleFrames")];
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_down45rightCycleFrames")];
					} else {
						_local2 = _local1[(("card" + _local1.cardType) + "_rightCycleFrames")];
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_up45leftCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(("card" + _local1.cardType) + "_down45leftCycleFrames")];
						} else {
							_local2 = _local1[(("card" + _local1.cardType) + "_leftCycleFrames")];
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_upCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(("card" + _local1.cardType) + "_downCycleFrames")];
						} else {
							_local2 = _local1.wackyCycleFrames;
						};
					};
				};
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:DaggerBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:DaggerBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:DaggerBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//DartBullet (cactusGame.models.bullets.DartBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class DartBullet extends Bullet {

		public var cardType:Number;// = 1
		public var cardOptions:Number;// = 2
		public var card1_upCycleFrames:Array;
		public var card1_up45rightCycleFrames:Array;
		public var card1_rightCycleFrames:Array;
		public var card1_down45rightCycleFrames:Array;
		public var card1_downCycleFrames:Array;
		public var card1_down45leftCycleFrames:Array;
		public var card1_leftCycleFrames:Array;
		public var card1_up45leftCycleFrames:Array;
		public var card2_upCycleFrames:Array;
		public var card2_up45rightCycleFrames:Array;
		public var card2_rightCycleFrames:Array;
		public var card2_down45rightCycleFrames:Array;
		public var card2_downCycleFrames:Array;
		public var card2_down45leftCycleFrames:Array;
		public var card2_leftCycleFrames:Array;
		public var card2_up45leftCycleFrames:Array;
		public var wackyCycleFrames:Array;
		public var useAngle:Number;// = 0

		public function DartBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			card1_upCycleFrames = ["card1_up", 2, 1, 0, 0, [0]];
			card1_up45rightCycleFrames = ["card1_up45right", 2, 1, 0, 0, [1]];
			card1_rightCycleFrames = ["card1_right", 2, 1, 0, 0, [2]];
			card1_down45rightCycleFrames = ["card1_down45right", 2, 1, 0, 0, [3]];
			card1_downCycleFrames = ["card1_down", 2, 1, 0, 0, [4]];
			card1_down45leftCycleFrames = ["card1_down45left", 2, 1, 0, 0, [5]];
			card1_leftCycleFrames = ["card1_left", 2, 1, 0, 0, [6]];
			card1_up45leftCycleFrames = ["card1_up45left", 2, 1, 0, 0, [7]];
			card2_upCycleFrames = ["card2_up", 2, 1, 0, 0, [8]];
			card2_up45rightCycleFrames = ["card2_up45right", 2, 1, 0, 0, [9]];
			card2_rightCycleFrames = ["card2_right", 2, 1, 0, 0, [10]];
			card2_down45rightCycleFrames = ["card2_down45right", 2, 1, 0, 0, [11]];
			card2_downCycleFrames = ["card2_down", 2, 1, 0, 0, [12]];
			card2_down45leftCycleFrames = ["card2_down45left", 2, 1, 0, 0, [13]];
			card2_leftCycleFrames = ["card2_left", 2, 1, 0, 0, [14]];
			card2_up45leftCycleFrames = ["card2_up45left", 2, 1, 0, 0, [15]];
			wackyCycleFrames = ["wacky", 2, 1, 0, 0, [0, 2, 4, 6, 16, 18, 20, 22]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:DartBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.cardType = Math.ceil((Math.random() * _local11.cardOptions));
			_local11.animationFrame = (_local11.cardType * 8);
			_local11.cycleFrame = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
		}
		override public function defineVars(){
			sheetname = "bullet_dart_sheet";
			shotname = "Dart";
			width = 5;
			height = 5;
			spritewidth = 24;
			spriteheight = 24;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 24;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 8;
			vspeed = 8;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:DartBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:DartBullet = this;
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1[(("card" + _local1.cardType) + "_up45rightCycleFrames")];
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_down45rightCycleFrames")];
					} else {
						_local2 = _local1[(("card" + _local1.cardType) + "_rightCycleFrames")];
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_up45leftCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(("card" + _local1.cardType) + "_down45leftCycleFrames")];
						} else {
							_local2 = _local1[(("card" + _local1.cardType) + "_leftCycleFrames")];
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_upCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(("card" + _local1.cardType) + "_downCycleFrames")];
						} else {
							_local2 = _local1.wackyCycleFrames;
						};
					};
				};
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local8:GameDisplay;
			var _local5:DartBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			_local8 = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:DartBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:DartBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//FlamethrowerBullet (cactusGame.models.bullets.FlamethrowerBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class FlamethrowerBullet extends Bullet {

		public var useAngle:Number;// = 0
		public var animCycleFrames:Array;
		public var originalXspeed:Number;// = 0
		public var startedWhenRunning:Boolean;// = false
		public var startedDecaying:Boolean;// = false

		public function FlamethrowerBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			animCycleFrames = ["anim", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:FlamethrowerBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((_local11.gameObj.playerObj.isWalking) && (!(_arg9)))){
				_local11.startedWhenRunning = true;
				_local11.speed = (_local11.speed + (_local11.gameObj.playerObj.walkspeed * _local11.gameObj.playerObj.facingDir));
			};
		}
		override public function defineVars(){
			sheetname = "bullet_flamethrower_sheet";
			shotname = "Flamethrower Flames";
			width = 3;
			height = 3;
			spritewidth = 52;
			spriteheight = 52;
			spriteCenterX = 26;
			spriteCenterY = 26;
			spriteTargetX = 26;
			spriteTargetY = 36;
			sheetWidth = 20;
			sheetHeight = 1;
			collRect = new Rectangle(-10, -15, 20, 20);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 6;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:FlamethrowerBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local1:FlamethrowerBullet = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:FlamethrowerBullet = this;
			_local1.fadeShot();
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:FlamethrowerBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = ((_local12 * Math.cos(_arg4)) * -1);
			var _local14:Number = ((_local12 * Math.sin(_arg4)) * -1);
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
			_local5.originalXspeed = _local13;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:FlamethrowerBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				if (((_local1.startedWhenRunning) && (!(_local1.startedDecaying)))){
					if (!_local1.gameObj.playerObj.isWalking){
						_local1.startedDecaying = true;
					} else {
						if ((((_local1.speed > 0)) && (!(_local1.gameObj.gameControls.keyPressedRight)))){
							_local1.startedDecaying = true;
						} else {
							if ((((_local1.speed < 0)) && (!(_local1.gameObj.gameControls.keyPressedLeft)))){
								_local1.startedDecaying = true;
							};
						};
					};
				};
				if (_local1.startedDecaying){
					if ((((speed > 0)) && ((_local1.originalXspeed < speed)))){
						_local1.speed = (_local1.speed - ((speed - _local1.originalXspeed) / 3));
						if (_local1.speed < _local1.originalXspeed){
							_local1.speed = _local1.originalXspeed;
						};
					} else {
						if ((((speed < 0)) && ((_local1.originalXspeed > speed)))){
							_local1.speed = (_local1.speed + ((_local1.originalXspeed - speed) / 3));
							if (_local1.speed > _local1.originalXspeed){
								_local1.speed = _local1.originalXspeed;
							};
						};
					};
				};
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:FlamethrowerBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//GenericBullet (cactusGame.models.bullets.GenericBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GenericBullet extends Bullet {

		public var useAngle:Number;// = 0
		public var animCycleFrames:Array;

		public function GenericBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			var _local12:Number;
			var _local13:Number;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:GenericBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (_arg10 == "Shotgun"){
				_local12 = ((_local11.x - _local11.gameObj.playerObj.x) + (_local11.speed * 2));
				_local13 = ((_local11.y - _local11.gameObj.playerObj.y) + (_local11.vspeed * 2));
				_local11.gameObj.effectManager.addEffect(_local11.x, _local11.y, "SmokeEffect", "", true, _local12, _local13);
			};
		}
		override public function defineVars(){
			sheetname = "generic_bullet_sheet";
			shotname = "Generic Bullet";
			width = 3;
			height = 3;
			spritewidth = 6;
			spriteheight = 6;
			spriteCenterX = 3;
			spriteCenterY = 3;
			spriteTargetX = 3;
			spriteTargetY = 3;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 14;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:GenericBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local1:GenericBullet = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:GenericBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = ((_local12 * Math.cos(_arg4)) * -1);
			var _local14:Number = ((_local12 * Math.sin(_arg4)) * -1);
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:GenericBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:GenericBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//GrenadeBullet (cactusGame.models.bullets.GrenadeBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import cactusGame.models.objects.*;

	public class GrenadeBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""
		public var blastRect:Rectangle;
		public var hitEnemyID:Number;// = -1

		public function GrenadeBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			blastRect = new Rectangle(-40, -40, 80, 80);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:GrenadeBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_grenade_sheet";
			shotname = "Grenade";
			width = 6;
			height = 6;
			spritewidth = 24;
			spriteheight = 24;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 10;
			sheetHeight = 1;
			collRect = new Rectangle(-8, -8, 16, 16);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:GrenadeBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GrenadeBullet = this;
			if (_local1.facingDirX == 1){
				_local2 = _local1.rightCycleFrames;
			} else {
				_local2 = _local1.leftCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:GrenadeBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:GrenadeBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				if (_local1.throwType == "forward"){
					if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
						_local1.vspeed++;
					};
				} else {
					if (_local1.throwType == "45up"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed = (_local1.vspeed + 2);
							};
						};
					};
				};
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if (((_local1.x + _local1.spritewidth) + 80) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
							_local1.fadeShot();
						} else {
							if (_local1.y > _local1.gameObj.gameDisplay.levelPxHeight){
								_local1.fadeShot();
							} else {
								if (_local3){
									_local1.fadeShot();
								};
							};
						};
					};
				} else {
					_local1.fadeShot();
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:GrenadeBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
				_local9 = true;
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}
		override public function fadeShot(){
			var _local1:GrenadeBullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local1.collRect = _local1.blastRect;
			if (_local1.fromEnemy){
				_local1.checkHittingPlayers();
			} else {
				_local1.checkHittingEnemies();
				_local1.checkHittingObjects();
			};
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local2.addEffect((_local1.x - 12), (_local1.y + 6), "ExplosionEffect", "delay1");
			_local2.addEffect((_local1.x + 12), (_local1.y - 6), "ExplosionEffect", "delay2");
			_local2.addEffect((_local1.x - 16), (_local1.y - 8), "ExplosionEffect", "delay3");
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local10:Enemy;
			var _local11:Rectangle;
			var _local12:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:Number = 1;
			var _local9:* = 0;
			while (_local9 < _local6) {
				_local10 = _local5.enemies[_local9];
				_local11 = new Rectangle();
				_local11.x = (_local3.x + _local3.collRect.x);
				_local11.y = (_local3.y + _local3.collRect.y);
				_local11.width = _local3.collRect.width;
				_local11.height = _local3.collRect.height;
				if (_local10.checkSpriteCollision(_local11)){
					if (((!((_local10.id == hitEnemyID))) && (((_local10.isDead) || (((!(_local10.isHit)) && (!(_local10.resistBullets)))))))){
						_local12 = _local10.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local12);
						_local7 = true;
						hitEnemyID = _local10.id;
						if (_local10.isDead){
							_local8++;
						};
						if (!_local3.isFading){
							break;
						};
					} else {
						if (_local10.id == hitEnemyID){
							if (_local10.isDead){
								_local8++;
							};
						};
					};
				};
				_local9++;
			};
			if (_local7){
			};
			if (_local3.isFading){
				_local3.gameObj.challengeManager.recordMultiExplosion(_local8);
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit(_local2.statAttack);
						_local6 = true;
						if ((_local9 is GameObject60)){
							_local9.gameObj.challengeManager.recordTag("grenadeTNTBarrel");
						};
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}

	}
}//package cactusGame.models.bullets 

****************

//Harpoon (cactusGame.models.bullets.Harpoon)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Harpoon extends Bullet {

		public var useAngle:Number;// = 0
		public var fire_upCycleFrames:Array;
		public var fire_up45rightCycleFrames:Array;
		public var fire_rightCycleFrames:Array;
		public var fire_down45rightCycleFrames:Array;
		public var fire_downCycleFrames:Array;
		public var fire_down45leftCycleFrames:Array;
		public var fire_leftCycleFrames:Array;
		public var fire_up45leftCycleFrames:Array;
		public var forwardCollRect:Rectangle;
		public var upCollRect:Rectangle;
		public var diagonalCollRect:Rectangle;

		public function Harpoon(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			fire_upCycleFrames = ["fire_up", 2, 1, 0, 0, [4]];
			fire_up45rightCycleFrames = ["fire_up45right", 2, 1, 0, 0, [1]];
			fire_rightCycleFrames = ["fire_right", 2, 1, 0, 0, [0]];
			fire_down45rightCycleFrames = ["fire_down45right", 2, 1, 0, 0, [2]];
			fire_downCycleFrames = ["fire_down", 2, 1, 0, 0, [3]];
			fire_down45leftCycleFrames = ["fire_down45left", 2, 1, 0, 0, [6]];
			fire_leftCycleFrames = ["fire_left", 2, 1, 0, 0, [7]];
			fire_up45leftCycleFrames = ["fire_up45left", 2, 1, 0, 0, [5]];
			forwardCollRect = new Rectangle(-20, -5, 40, 10);
			upCollRect = new Rectangle(-5, -20, 10, 40);
			diagonalCollRect = new Rectangle(-20, -20, 40, 40);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:Harpoon = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			var _local12:Array = _local11.grabAnimationCycle();
			_local11.animationFrame = _local12[5];
		}
		override public function defineVars(){
			sheetname = "harpoongun_harpoon_sheet";
			shotname = "Harpoon";
			width = 3;
			height = 3;
			spritewidth = 58;
			spriteheight = 58;
			spriteCenterX = 29;
			spriteCenterY = 29;
			spriteTargetX = 29;
			spriteTargetY = 29;
			sheetWidth = 8;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 19;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:Harpoon = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Harpoon = this;
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1.fire_up45rightCycleFrames;
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1.fire_down45rightCycleFrames;
					} else {
						_local2 = _local1.fire_rightCycleFrames;
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1.fire_up45leftCycleFrames;
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1.fire_down45leftCycleFrames;
						} else {
							_local2 = _local1.fire_leftCycleFrames;
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1.fire_upCycleFrames;
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1.fire_downCycleFrames;
						} else {
							_local2 = _local1.fire_rightCycleFrames;
						};
					};
				};
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:Harpoon = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:Harpoon = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if ((((_local1.cycleName == "fire_up")) || ((_local1.cycleName == "fire_down")))){
					_local1.collRect = _local1.upCollRect;
				} else {
					if ((((((((_local1.cycleName == "fire_up45left")) || ((_local1.cycleName == "fire_up45right")))) || ((_local1.cycleName == "fire_down45left")))) || ((_local1.cycleName == "fire_down45right")))){
						_local1.collRect = _local1.diagonalCollRect;
					} else {
						_local1.collRect = _local1.forwardCollRect;
					};
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:Harpoon = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//LanternBullet (cactusGame.models.bullets.LanternBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class LanternBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""
		public var blastRect:Rectangle;
		public var hitWallX:Number;// = 0
		public var hitWallY:Number;// = 0

		public function LanternBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [19, 18, 17, 16, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			blastRect = new Rectangle(-40, -40, 80, 80);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:LanternBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_lantern_sheet";
			shotname = "Lantern";
			width = 6;
			height = 6;
			spritewidth = 36;
			spriteheight = 36;
			spriteCenterX = 18;
			spriteCenterY = 18;
			spriteTargetX = 18;
			spriteTargetY = 18;
			sheetWidth = 20;
			sheetHeight = 1;
			collRect = new Rectangle(-8, -8, 16, 16);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:LanternBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:LanternBullet = this;
			if (_local1.facingDirX == 1){
				_local2 = _local1.rightCycleFrames;
			} else {
				_local2 = _local1.leftCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local14:Number;
			var _local5:LanternBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			_local14 = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:LanternBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				if (_local1.throwType == "forward"){
					if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
						_local1.vspeed++;
					};
				} else {
					if (_local1.throwType == "45up"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed = (_local1.vspeed + 2);
							};
						};
					};
				};
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if (((_local1.x + _local1.spritewidth) + 80) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
							_local1.fadeShot();
						} else {
							if (_local1.y > _local1.gameObj.gameDisplay.levelPxHeight){
								_local1.fadeShot();
							} else {
								if (_local3){
									_local1.addFireEffects(_local1.hitWallX, _local1.hitWallY);
									_local1.fadeShot();
								};
							};
						};
					};
				} else {
					_local1.addFireEffects(0, 0, true);
					_local1.fadeShot();
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:LanternBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
				_local6.hitWallX = 1;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
					_local6.hitWallX = -1;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
				_local6.hitWallY = 1;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
					_local6.hitWallY = -1;
				};
			};
			if (_local6.checkIfOnCloud()){
				_local9 = true;
				_local6.hitWallY = 1;
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}
		public function addFireEffects(_arg1:Number, _arg2:Number, _arg3:Boolean=false){
			var _local4:LanternBullet = this;
			var _local5:EffectManager = _local4.gameObj.effectManager;
			_local5.addEffect(_local4.x, _local4.y, "ExplosionEffect");
			if (_arg1 != 0){
				_local5.addEffect(_local4.x, _local4.y, "FireFlameEffect");
				_local5.addEffect((_local4.x - 10), (_local4.y + 6), "FireFlameEffect", "delay1");
				_local5.addEffect((_local4.x + 10), (_local4.y + 6), "FireFlameEffect", "delay2");
			} else {
				if (_arg2 != 0){
					_local5.addEffect(_local4.x, _local4.y, "FireFlameEffect");
					_local5.addEffect((_local4.x - 20), (_local4.y + 6), "FireFlameEffect", "delay1");
					_local5.addEffect((_local4.x + 20), (_local4.y + 6), "FireFlameEffect", "delay2");
				} else {
					if (_arg3){
						_local5.addEffect(_local4.x, _local4.y, "FireFlameEffect", "", true);
						_local5.addEffect((_local4.x + 2), (_local4.y - 20), "FireFlameEffect", "delay1", true);
						_local5.addEffect((_local4.x - 2), (_local4.y + 20), "FireFlameEffect", "delay2", true);
					};
				};
			};
		}
		override public function fadeShot(){
			var _local1:LanternBullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local11:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (((_local9.isDead) || (((!(_local9.isHit)) && (!(_local9.resistBullets)))))){
						_local11 = _local9.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local11);
						_local7 = true;
						if (!_local3.isFading){
							break;
						};
					};
				};
				_local8++;
			};
			if (_local7){
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if (_local4.objects[_local8] != 0){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit();
						_local6 = true;
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}

	}
}//package cactusGame.models.bullets 

****************

//PlayingCardBullet (cactusGame.models.bullets.PlayingCardBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class PlayingCardBullet extends Bullet {

		public var cardType:Number;// = 1
		public var cardOptions:Number;// = 3
		public var card1_upCycleFrames:Array;
		public var card1_up45rightCycleFrames:Array;
		public var card1_rightCycleFrames:Array;
		public var card1_down45rightCycleFrames:Array;
		public var card1_downCycleFrames:Array;
		public var card1_down45leftCycleFrames:Array;
		public var card1_leftCycleFrames:Array;
		public var card1_up45leftCycleFrames:Array;
		public var card2_upCycleFrames:Array;
		public var card2_up45rightCycleFrames:Array;
		public var card2_rightCycleFrames:Array;
		public var card2_down45rightCycleFrames:Array;
		public var card2_downCycleFrames:Array;
		public var card2_down45leftCycleFrames:Array;
		public var card2_leftCycleFrames:Array;
		public var card2_up45leftCycleFrames:Array;
		public var card3_upCycleFrames:Array;
		public var card3_up45rightCycleFrames:Array;
		public var card3_rightCycleFrames:Array;
		public var card3_down45rightCycleFrames:Array;
		public var card3_downCycleFrames:Array;
		public var card3_down45leftCycleFrames:Array;
		public var card3_leftCycleFrames:Array;
		public var card3_up45leftCycleFrames:Array;
		public var wackyCycleFrames:Array;
		public var useAngle:Number;// = 0

		public function PlayingCardBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			card1_upCycleFrames = ["card1_up", 2, 1, 0, 0, [0]];
			card1_up45rightCycleFrames = ["card1_up45right", 2, 1, 0, 0, [1]];
			card1_rightCycleFrames = ["card1_right", 2, 1, 0, 0, [2]];
			card1_down45rightCycleFrames = ["card1_down45right", 2, 1, 0, 0, [3]];
			card1_downCycleFrames = ["card1_down", 2, 1, 0, 0, [4]];
			card1_down45leftCycleFrames = ["card1_down45left", 2, 1, 0, 0, [5]];
			card1_leftCycleFrames = ["card1_left", 2, 1, 0, 0, [6]];
			card1_up45leftCycleFrames = ["card1_up45left", 2, 1, 0, 0, [7]];
			card2_upCycleFrames = ["card2_up", 2, 1, 0, 0, [8]];
			card2_up45rightCycleFrames = ["card2_up45right", 2, 1, 0, 0, [9]];
			card2_rightCycleFrames = ["card2_right", 2, 1, 0, 0, [10]];
			card2_down45rightCycleFrames = ["card2_down45right", 2, 1, 0, 0, [11]];
			card2_downCycleFrames = ["card2_down", 2, 1, 0, 0, [12]];
			card2_down45leftCycleFrames = ["card2_down45left", 2, 1, 0, 0, [13]];
			card2_leftCycleFrames = ["card2_left", 2, 1, 0, 0, [14]];
			card2_up45leftCycleFrames = ["card2_up45left", 2, 1, 0, 0, [15]];
			card3_upCycleFrames = ["card3_up", 2, 1, 0, 0, [16]];
			card3_up45rightCycleFrames = ["card3_up45right", 2, 1, 0, 0, [17]];
			card3_rightCycleFrames = ["card3_right", 2, 1, 0, 0, [18]];
			card3_down45rightCycleFrames = ["card3_down45right", 2, 1, 0, 0, [19]];
			card3_downCycleFrames = ["card3_down", 2, 1, 0, 0, [20]];
			card3_down45leftCycleFrames = ["card3_down45left", 2, 1, 0, 0, [21]];
			card3_leftCycleFrames = ["card3_left", 2, 1, 0, 0, [22]];
			card3_up45leftCycleFrames = ["card3_up45left", 2, 1, 0, 0, [23]];
			wackyCycleFrames = ["wacky", 2, 1, 0, 0, [0, 2, 4, 6, 16, 18, 20, 22]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:PlayingCardBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.cardType = Math.ceil((Math.random() * _local11.cardOptions));
			_local11.animationFrame = (_local11.cardType * 8);
			_local11.cycleFrame = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
		}
		override public function defineVars(){
			sheetname = "bullet_playingcard_sheet";
			shotname = "Playing Card";
			width = 5;
			height = 5;
			spritewidth = 24;
			spriteheight = 24;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 24;
			sheetHeight = 1;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 8;
			vspeed = 8;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:PlayingCardBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:PlayingCardBullet = this;
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1[(("card" + _local1.cardType) + "_up45rightCycleFrames")];
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_down45rightCycleFrames")];
					} else {
						_local2 = _local1[(("card" + _local1.cardType) + "_rightCycleFrames")];
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_up45leftCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(("card" + _local1.cardType) + "_down45leftCycleFrames")];
						} else {
							_local2 = _local1[(("card" + _local1.cardType) + "_leftCycleFrames")];
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1[(("card" + _local1.cardType) + "_upCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(("card" + _local1.cardType) + "_downCycleFrames")];
						} else {
							_local2 = _local1.wackyCycleFrames;
						};
					};
				};
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:PlayingCardBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:PlayingCardBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:PlayingCardBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//RomanCandleBullet (cactusGame.models.bullets.RomanCandleBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class RomanCandleBullet extends Bullet {

		public var useAngle:Number;// = 0
		public var color1CycleFrames:Array;
		public var color2CycleFrames:Array;
		public var color3CycleFrames:Array;
		public var whichColor:Number;// = 1
		public var effectTimer:Number;// = 0
		public var effectMax:Number;// = 3

		public function RomanCandleBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			var _local11:RomanCandleBullet;
			color1CycleFrames = ["color1", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 6, 7, 8, 9, 6, 7, 8, 9, 1, 0]];
			color2CycleFrames = ["color2", 2, 1, 0, -1, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 16, 17, 18, 19, 16, 17, 18, 19, 11, 10]];
			color3CycleFrames = ["color3", 2, 1, 0, -1, [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 26, 27, 28, 29, 26, 27, 28, 29, 21, 20]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			_local11 = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			_local11.whichColor = Math.ceil((Math.random() * 3));
			var _local12:Array = _local11.grabAnimationCycle();
			_local11.animationFrame = _local12[5];
			var _local13:EffectManager = _local11.gameObj.effectManager;
			_local13.addEffect(_local11.x, _local11.y, "RomanCandleSparkEffect", ("color" + _local11.whichColor), false, _local11.speed, -1);
			_local13.addEffect(_local11.x, _local11.y, "RomanCandleSparkEffect", ("color" + _local11.whichColor), false, _local11.speed, 1);
			_local13.addEffect(_local11.x, _local11.y, "RomanCandleSparkEffect", "color1", false, _local11.speed, -1);
			_local13.addEffect(_local11.x, _local11.y, "RomanCandleSparkEffect", "color2", false, _local11.speed, 1);
			_local13.addEffect(_local11.x, _local11.y, "RomanCandleSparkEffect", "color3", false, _local11.speed, -1);
		}
		override public function defineVars(){
			sheetname = "romancandle_bullet_sheet";
			shotname = "Roman Candle Shot";
			width = 3;
			height = 3;
			spritewidth = 45;
			spriteheight = 45;
			spriteCenterX = 22;
			spriteCenterY = 22;
			spriteTargetX = 22;
			spriteTargetY = 22;
			sheetWidth = 10;
			sheetHeight = 3;
			collRect = new Rectangle(-15, -15, 30, 30);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 19;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:RomanCandleBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local1:RomanCandleBullet = this;
			var _local2:Array = _local1[(("color" + _local1.whichColor) + "CycleFrames")];
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:RomanCandleBullet = this;
			_local1.fadeShot();
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local8:GameDisplay;
			var _local5:RomanCandleBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			_local8 = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local5:Boolean;
			var _local6:Boolean;
			var _local7:Boolean;
			var _local1:RomanCandleBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local1.effectTimer++;
				if ((_local1.effectTimer % _local1.effectMax) == 0){
					_local3.addEffect(_local1.x, _local1.y, "RomanCandleSparkEffect", ("color" + _local1.whichColor), false, _local1.speed, _local1.vspeed);
					_local3.addEffect(_local1.x, _local1.y, "SmokeEffect", ("anim" + Math.ceil((Math.random() * 2))));
				};
				_local4 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local5 = false;
				_local6 = false;
				_local7 = false;
				if (_local1.fromEnemy){
					_local7 = _local1.checkHittingPlayers();
				} else {
					_local5 = _local1.checkHittingEnemies();
					_local6 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local5)) && (!(_local6)))) && (!(_local7)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local4){
								_local1.fadeShot();
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:RomanCandleBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//ScorpionBullet (cactusGame.models.bullets.ScorpionBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class ScorpionBullet extends Bullet {

		public var tossCycleFrames:Array;
		public var walkForwardCycleFrames:Array;
		public var walkUpCycleFrames:Array;
		public var walkDownCycleFrames:Array;
		public var finishClimbingUpCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""
		public var blastRect:Rectangle;
		public var hitWallX:Number;// = 0
		public var hitWallY:Number;// = 0
		public var isTossing:Boolean;// = true
		public var foundEnemy:Boolean;// = false
		public var isClimbingUp:Boolean;// = false
		public var isFinishingClimbingUp:Boolean;// = false

		public function ScorpionBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			tossCycleFrames = ["toss", 2, 1, 0, 0, [0, 1, 2, 3]];
			walkForwardCycleFrames = ["walkForward", 2, 1, 0, 0, [0, 1, 2, 3]];
			walkUpCycleFrames = ["walkUp", 2, 1, 0, 2, [4, 5, 6, 7, 8, 9]];
			walkDownCycleFrames = ["walkDown", 2, 1, 0, 2, [10, 11, 12, 13, 14, 15]];
			finishClimbingUpCycleFrames = ["finishClimbingUp", 2, 1, 0, -1, [6, 5, 4, 0]];
			blastRect = new Rectangle(-40, -40, 80, 80);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:ScorpionBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_scorpion_sheet";
			shotname = "Scorpion";
			width = 6;
			height = 6;
			spritewidth = 24;
			spriteheight = 24;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 16;
			sheetHeight = 2;
			collRect = new Rectangle(-8, -8, 16, 16);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 24;
			animationFrame = 0;
			walkspeed = 3;
		}
		override public function grabFlipOffset():Number{
			var _local1:ScorpionBullet = this;
			if (_local1.dirx == 1){
				return (0);
			};
			return (_local1.flipBlitOffset);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:ScorpionBullet = this;
			if (_local1.isTossing){
				_local2 = _local1.tossCycleFrames;
			} else {
				if (_local1.isFinishingClimbingUp){
					_local2 = _local1.finishClimbingUpCycleFrames;
				} else {
					if (_local1.isClimbingUp){
						_local2 = _local1.walkUpCycleFrames;
					} else {
						_local2 = _local1.walkForwardCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ScorpionBullet = this;
			if (_local1.cycleName == "finishClimbingUp"){
				_local1.isFinishingClimbingUp = false;
				_local1.isClimbingUp = false;
			};
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local14:Number;
			var _local5:ScorpionBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			_local14 = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local5:Boolean;
			var _local6:Boolean;
			var _local7:Boolean;
			var _local8:Number;
			var _local1:ScorpionBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			var _local4:Number = _local1.y;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				if (_local1.isTossing){
					_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
					if (_local1.throwType == "forward"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "45up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed++;
							};
						} else {
							if (_local1.throwType == "up"){
								if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
									_local1.vspeed = (_local1.vspeed + 2);
								};
							};
						};
					};
					if (_local3){
						_local1.dirx = _local1.facingDirX;
						_local1.isTossing = false;
						_local1.fallChar();
					};
				} else {
					if (((!(_local1.jump)) && (!(_local1.foundEnemy)))){
						_local1.lookForEnemy();
						_local1.foundEnemy = true;
					};
					if (_local1.jump){
						_local1.jumpChar();
					};
					_local8 = _local1.dirx;
					_local1.speed = _local1.walkspeed;
					_local1.moveChar(_local1.dirx, 0, 0);
					if (_local1.dirx == 0){
						_local1.dirx = _local8;
						_local1.moveChar(0, -1, 0);
						_local1.isClimbingUp = true;
					} else {
						if (_local1.isClimbingUp){
							_local1.isClimbingUp = false;
							_local1.isFinishingClimbingUp = true;
						};
					};
					if (!_local1.isClimbingUp){
						_local1.fallChar();
					};
				};
				_local1.updateSprite();
				_local5 = false;
				_local6 = false;
				_local7 = false;
				if (_local1.fromEnemy){
					_local7 = _local1.checkHittingPlayers();
				} else {
					_local5 = _local1.checkHittingEnemies();
					_local6 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local5)) && (!(_local6)))) && (!(_local7)))){
					if (_local1.y >= _local1.gameObj.gameDisplay.levelPxHeight){
						_local1.fadeShot();
					} else {
						if (((_local1.isClimbingUp) && ((_local1.y == _local4)))){
							_local1.gameObj.effectManager.addEffect(_local1.x, _local1.y, "ImpactEffect");
							_local1.fadeShot();
						};
					};
				} else {
					_local1.fadeShot();
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:ScorpionBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners((_local6.x + _local10), (_local6.y + _local11));
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
				_local6.hitWallX = 1;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
					_local6.hitWallX = -1;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
				_local6.hitWallY = 1;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
					_local6.hitWallY = -1;
				};
			};
			if (_local6.checkIfOnCloud()){
				_local9 = true;
				_local6.hitWallY = 1;
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local6.gameObj.mapManager.getTileProperty(_local6.xtile, _local6.ytile, "collision")){
				if ((((_local6.vspeed >= 0)) && (!(_local6.gameObj.mapManager.getTileProperty(_local6.xtile, (_local6.ytile - 1), "collision"))))){
					_local6.ytile = (_local6.ytile - 1);
					_local6.y = (_local6.y - _local8);
				} else {
					if ((((_local6.speed > 0)) && (!(_local6.gameObj.mapManager.getTileProperty((_local6.xtile - 1), _local6.ytile, "collision"))))){
						_local6.xtile = (_local6.xtile - 1);
						_local6.x = (_local6.x - _local8);
					} else {
						if ((((_local6.speed < 0)) && (!(_local6.gameObj.mapManager.getTileProperty((_local6.xtile + 1), _local6.ytile, "collision"))))){
							_local6.xtile = (_local6.xtile + 1);
							_local6.x = (_local6.x + _local8);
						} else {
							if ((((_local6.vspeed <= 0)) && (!(_local6.gameObj.mapManager.getTileProperty(_local6.xtile, (_local6.ytile + 1), "collision"))))){
								_local6.ytile = (_local6.ytile + 1);
								_local6.y = (_local6.y + _local8);
							} else {
								_local6.gameObj.effectManager.addEffect(_local6.x, _local6.y, "ImpactEffect");
								_local6.fadeShot();
							};
						};
					};
				};
			};
			if (_local9){
				return (true);
			};
			return (false);
		}
		public function addFireEffects(_arg1:Number, _arg2:Number, _arg3:Boolean=false){
			var _local4:ScorpionBullet = this;
			var _local5:EffectManager = _local4.gameObj.effectManager;
			_local5.addEffect(_local4.x, _local4.y, "ExplosionEffect");
			if (_arg1 != 0){
				_local5.addEffect(_local4.x, (_local4.y - 10), "FireFlameEffect");
				_local5.addEffect((_local4.x - 10), (_local4.y + 10), "FireFlameEffect", "delay1");
				_local5.addEffect((_local4.x + 10), (_local4.y + 10), "FireFlameEffect", "delay2");
			} else {
				if (_arg2 != 0){
					_local5.addEffect(_local4.x, _local4.y, "FireFlameEffect");
					_local5.addEffect((_local4.x - 20), (_local4.y + 6), "FireFlameEffect", "delay1");
					_local5.addEffect((_local4.x + 20), (_local4.y + 6), "FireFlameEffect", "delay2");
				} else {
					if (_arg3){
						_local5.addEffect(_local4.x, _local4.y, "FireFlameEffect", "", true);
						_local5.addEffect(_local4.x, (_local4.y - 20), "FireFlameEffect", "delay1", true);
						_local5.addEffect(_local4.x, (_local4.y + 20), "FireFlameEffect", "delay2", true);
					};
				};
			};
		}
		override public function fadeShot(){
			var _local1:ScorpionBullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		public function lookForEnemy(){
			var _local7:*;
			var _local8:Enemy;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local2.enemyManager;
			var _local4:Number = _local3.enemies.length;
			var _local5:Number = int.MAX_VALUE;
			var _local6:Number = _local1.dirx;
			if (_local1.fromEnemy){
				if (_local1.gameObj.playerObj.x < _local1.x){
					_local6 = -1;
				} else {
					_local6 = 1;
				};
			} else {
				_local7 = 0;
				while (_local7 < _local4) {
					_local8 = _local3.enemies[_local7];
					_local9 = (_local8.x - _local1.x);
					_local10 = (_local8.y - _local1.y);
					_local11 = Math.sqrt(((_local9 * _local9) + (_local10 * _local10)));
					if (((_local8.checkOnScreen()) && ((_local8.ytile == _local1.ytile)))){
						if (_local11 < _local5){
							_local5 = _local11;
							if (_local8.x < _local1.x){
								_local6 = -1;
							} else {
								_local6 = 1;
							};
						};
					} else {
						if (((_local8.checkOnScreen()) && (!(_local8.checkIfOnCloud())))){
							if (_local11 < _local5){
								_local5 = _local11;
								if (_local8.x < _local1.x){
									_local6 = -1;
								} else {
									_local6 = 1;
								};
							};
						};
					};
					_local7++;
				};
			};
			_local1.dirx = _local6;
			if (_local5 < int.MAX_VALUE){
				//unresolved jump
			};
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local11:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (((_local9.isDead) || (((!(_local9.isHit)) && (!(_local9.resistBullets)))))){
						_local11 = _local9.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local11);
						_local7 = true;
						if (!_local3.isFading){
							break;
						};
					};
				};
				_local8++;
			};
			if (_local7){
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit();
						_local6 = true;
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}

	}
}//package cactusGame.models.bullets 

****************

//SquirtGunBullet (cactusGame.models.bullets.SquirtGunBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class SquirtGunBullet extends Bullet {

		public var useAngle:Number;// = 0
		public var fire_upCycleFrames:Array;
		public var fire_up45rightCycleFrames:Array;
		public var fire_rightCycleFrames:Array;
		public var fire_down45rightCycleFrames:Array;
		public var fire_downCycleFrames:Array;
		public var fire_down45leftCycleFrames:Array;
		public var fire_leftCycleFrames:Array;
		public var fire_up45leftCycleFrames:Array;
		public var fade_upCycleFrames:Array;
		public var fade_up45rightCycleFrames:Array;
		public var fade_rightCycleFrames:Array;
		public var fade_down45rightCycleFrames:Array;
		public var fade_downCycleFrames:Array;
		public var fade_down45leftCycleFrames:Array;
		public var fade_leftCycleFrames:Array;
		public var fade_up45leftCycleFrames:Array;
		public var forwardCollRect:Rectangle;
		public var upCollRect:Rectangle;
		public var diagonalCollRect:Rectangle;

		public function SquirtGunBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			fire_upCycleFrames = ["fire_up", 2, 1, 0, 0, [4]];
			fire_up45rightCycleFrames = ["fire_up45right", 2, 1, 0, 0, [1]];
			fire_rightCycleFrames = ["fire_right", 2, 1, 0, 0, [0]];
			fire_down45rightCycleFrames = ["fire_down45right", 2, 1, 0, 0, [2]];
			fire_downCycleFrames = ["fire_down", 2, 1, 0, 0, [3]];
			fire_down45leftCycleFrames = ["fire_down45left", 2, 1, 0, 0, [6]];
			fire_leftCycleFrames = ["fire_left", 2, 1, 0, 0, [7]];
			fire_up45leftCycleFrames = ["fire_up45left", 2, 1, 0, 0, [5]];
			fade_upCycleFrames = ["fade_up", 2, 1, 0, -1, [4, 12, 20, 28, 36, 999]];
			fade_up45rightCycleFrames = ["fade_up45right", 2, 1, 0, -1, [1, 9, 17, 25, 33, 999]];
			fade_rightCycleFrames = ["fade_right", 2, 1, 0, -1, [0, 8, 16, 24, 32, 999]];
			fade_down45rightCycleFrames = ["fade_down45right", 2, 1, 0, -1, [2, 10, 18, 26, 34, 999]];
			fade_downCycleFrames = ["fade_down", 2, 1, 0, -1, [311, 19, 27, 35, 999]];
			fade_down45leftCycleFrames = ["fade_down45left", 2, 1, 0, -1, [6, 14, 22, 30, 38, 999]];
			fade_leftCycleFrames = ["fade_left", 2, 1, 0, -1, [7, 15, 23, 31, 39, 999]];
			fade_up45leftCycleFrames = ["fade_up45left", 2, 1, 0, -1, [5, 13, 21, 29, 37, 999]];
			forwardCollRect = new Rectangle(-10, -5, 20, 10);
			upCollRect = new Rectangle(-5, -10, 10, 20);
			diagonalCollRect = new Rectangle(-10, -10, 20, 20);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:SquirtGunBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			var _local12:Array = _local11.grabAnimationCycle();
			_local11.animationFrame = _local12[5];
		}
		override public function defineVars(){
			sheetname = "bullet_squirtgun_sheet";
			shotname = "Squirt Gun Water Bullet";
			width = 3;
			height = 3;
			spritewidth = 42;
			spriteheight = 42;
			spriteCenterX = 21;
			spriteCenterY = 21;
			spriteTargetX = 21;
			spriteTargetY = 21;
			sheetWidth = 8;
			sheetHeight = 5;
			collRect = new Rectangle(-5, -5, 10, 10);
			heightmultiplier = 1;
			speed = 7;
			vspeed = 7;
			basespeed = 19;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:SquirtGunBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:SquirtGunBullet = this;
			var _local3 = "fire";
			if (_local1.isFading){
				_local3 = "fade";
			};
			if (_local1.speed > 0){
				if (_local1.vspeed < 0){
					_local2 = _local1[(_local3 + "_up45rightCycleFrames")];
				} else {
					if (_local1.vspeed > 0){
						_local2 = _local1[(_local3 + "_down45rightCycleFrames")];
					} else {
						_local2 = _local1[(_local3 + "_rightCycleFrames")];
					};
				};
			} else {
				if (_local1.speed < 0){
					if (_local1.vspeed < 0){
						_local2 = _local1[(_local3 + "_up45leftCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(_local3 + "_down45leftCycleFrames")];
						} else {
							_local2 = _local1[(_local3 + "_leftCycleFrames")];
						};
					};
				} else {
					if (_local1.vspeed < 0){
						_local2 = _local1[(_local3 + "_upCycleFrames")];
					} else {
						if (_local1.vspeed > 0){
							_local2 = _local1[(_local3 + "_downCycleFrames")];
						} else {
							_local2 = _local1[(_local3 + "_rightCycleFrames")];
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:SquirtGunBullet = this;
			if (_local1.isFading){
				_local1.gameObj.bulletManager.removeBullet(_local1.id);
			};
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:SquirtGunBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:SquirtGunBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (!_local1.isFading){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if ((((_local1.cycleName == "fire_up")) || ((_local1.cycleName == "fire_down")))){
					_local1.collRect = _local1.upCollRect;
				} else {
					if ((((((((_local1.cycleName == "fire_up45left")) || ((_local1.cycleName == "fire_up45right")))) || ((_local1.cycleName == "fire_down45left")))) || ((_local1.cycleName == "fire_down45right")))){
						_local1.collRect = _local1.diagonalCollRect;
					} else {
						_local1.collRect = _local1.forwardCollRect;
					};
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if ((_local1.x + (_local1.spritewidth / 2)) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + (_local1.spritewidth / 2))){
							_local1.fadeShot();
						} else {
							if (_local3){
								_local1.fadeShot();
							};
						};
					};
				};
			} else {
				_local1.updateSprite();
			};
		}
		override public function fadeShot(){
			var _local1:Bullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			_local2.addEffect(_local1.x, _local1.y, "WaterDropletEffect", "piece1");
			_local2.addEffect((_local1.x + 4), (_local1.y + 4), "WaterDropletEffect", "piece2");
			_local2.addEffect((_local1.x + 7), (_local1.y - 5), "WaterDropletEffect", "piece3");
			_local2.addEffect((_local1.x + 3), (_local1.y - 2), "WaterDropletEffect", "piece4");
			_local2.addEffect((_local1.x - 2), (_local1.y + 1), "WaterDropletEffect", "piece4");
			_local2.addEffect((_local1.x + 4), (_local1.y - 6), "WaterDropletEffect", "piece4");
			if (_local1.gameObj.gameDisplay.checkOnScreen(_local1)){
				_local1.gameObj.soundManager.playSound("watersplash.wav");
			};
			_local1.isFading = true;
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:SquirtGunBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//TearGasBullet (cactusGame.models.bullets.TearGasBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TearGasBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""
		public var blastRect:Rectangle;

		public function TearGasBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			blastRect = new Rectangle(-40, -40, 80, 80);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:TearGasBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_teargas_sheet";
			shotname = "Tear Gas";
			width = 6;
			height = 6;
			spritewidth = 24;
			spriteheight = 24;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 10;
			sheetHeight = 1;
			collRect = new Rectangle(-8, -8, 16, 16);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:TearGasBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TearGasBullet = this;
			if (_local1.facingDirX == 1){
				_local2 = _local1.rightCycleFrames;
			} else {
				_local2 = _local1.leftCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:TearGasBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:TearGasBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				if (_local1.throwType == "forward"){
					if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
						_local1.vspeed++;
					};
				} else {
					if (_local1.throwType == "45up"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed = (_local1.vspeed + 2);
							};
						};
					};
				};
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if (((_local1.x + _local1.spritewidth) + 80) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
							_local1.fadeShot();
						} else {
							if (_local1.y > _local1.gameObj.gameDisplay.levelPxHeight){
								_local1.fadeShot();
							} else {
								if (_local3){
									_local1.fadeShot();
								};
							};
						};
					};
				} else {
					_local1.fadeShot();
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:TearGasBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
				_local9 = true;
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}
		override public function fadeShot(){
			var _local1:TearGasBullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local2.addEffect(_local1.x, _local1.y, "TearGasEffect", "", _local1.fromEnemy);
			_local2.addEffect((_local1.x - 20), (_local1.y + 6), "TearGasEffect", "delay1", _local1.fromEnemy);
			_local2.addEffect((_local1.x + 20), (_local1.y - 6), "TearGasEffect", "delay2", _local1.fromEnemy);
			_local2.addEffect((_local1.x - 16), (_local1.y - 30), "TearGasEffect", "delay3", _local1.fromEnemy);
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local11:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (((_local9.isDead) || (((!(_local9.isHit)) && (!(_local9.resistBullets)))))){
						_local11 = _local9.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local11);
						_local7 = true;
						if (!_local3.isFading){
							break;
						};
					};
				};
				_local8++;
			};
			if (_local7){
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit();
						_local6 = true;
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}

	}
}//package cactusGame.models.bullets 

****************

//TNTBullet (cactusGame.models.bullets.TNTBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TNTBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""
		public var blastRect:Rectangle;
		public var hitEnemyID:Number;// = -1

		public function TNTBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			blastRect = new Rectangle(-40, -40, 80, 80);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:TNTBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_tnt_sheet";
			shotname = "TNT";
			width = 6;
			height = 6;
			spritewidth = 38;
			spriteheight = 38;
			spriteCenterX = 19;
			spriteCenterY = 19;
			spriteTargetX = 19;
			spriteTargetY = 19;
			sheetWidth = 10;
			sheetHeight = 1;
			collRect = new Rectangle(-10, -10, 20, 20);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:TNTBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TNTBullet = this;
			if (_local1.facingDirX == 1){
				_local2 = _local1.rightCycleFrames;
			} else {
				_local2 = _local1.leftCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:TNTBullet;
			_local5 = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:TNTBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				if (_local1.throwType == "forward"){
					if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
						_local1.vspeed++;
					};
				} else {
					if (_local1.throwType == "45up"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed = (_local1.vspeed + 2);
							};
						};
					};
				};
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if (((_local1.x + _local1.spritewidth) + 80) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
							_local1.fadeShot();
						} else {
							if (_local1.y > _local1.gameObj.gameDisplay.levelPxHeight){
								_local1.fadeShot();
							} else {
								if (_local3){
									_local1.fadeShot();
								};
							};
						};
					};
				} else {
					_local1.fadeShot();
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:TNTBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
				_local9 = true;
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}
		override public function fadeShot(){
			var _local1:TNTBullet = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:PlayerChar = _local1.gameObj.playerObj;
			_local1.isFading = true;
			_local1.collRect = _local1.blastRect;
			if (_local1.fromEnemy){
				_local1.checkHittingPlayers();
			} else {
				_local1.checkHittingEnemies();
				_local1.checkHittingObjects();
			};
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local2.addEffect((_local1.x - 12), (_local1.y + 6), "ExplosionEffect", "delay1");
			_local2.addEffect((_local1.x + 12), (_local1.y - 6), "ExplosionEffect", "delay2");
			_local2.addEffect((_local1.x - 16), (_local1.y - 8), "ExplosionEffect", "delay3");
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local10:Enemy;
			var _local11:Rectangle;
			var _local12:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:Number = 1;
			var _local9:* = 0;
			while (_local9 < _local6) {
				_local10 = _local5.enemies[_local9];
				_local11 = new Rectangle();
				_local11.x = (_local3.x + _local3.collRect.x);
				_local11.y = (_local3.y + _local3.collRect.y);
				_local11.width = _local3.collRect.width;
				_local11.height = _local3.collRect.height;
				if (_local10.checkSpriteCollision(_local11)){
					if (((!((_local10.id == hitEnemyID))) && (((_local10.isDead) || (((!(_local10.isHit)) && (!(_local10.resistBullets)))))))){
						_local12 = _local10.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local12);
						_local7 = true;
						hitEnemyID = _local10.id;
						if (_local10.isDead){
							_local8++;
						};
						if (!_local3.isFading){
							break;
						};
					} else {
						if (_local10.id == hitEnemyID){
							if (_local10.isDead){
								_local8++;
							};
						};
					};
				};
				_local9++;
			};
			if (_local7){
			};
			if (_local3.isFading){
				_local3.gameObj.challengeManager.recordMultiExplosion(_local8);
			};
			return (_local7);
		}
		override public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit(_local2.statAttack);
						_local6 = true;
						if (!_local2.isFading){
							break;
						};
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local6 = true;
							if (!_local2.isFading){
								break;
							};
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		override public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}

	}
}//package cactusGame.models.bullets 

****************

//TomahawkBullet (cactusGame.models.bullets.TomahawkBullet)
package cactusGame.models.bullets {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TomahawkBullet extends Bullet {

		public var rightCycleFrames:Array;
		public var leftCycleFrames:Array;
		public var useAngle:Number;// = 0
		public var throwType:String;// = ""

		public function TomahawkBullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			rightCycleFrames = ["right", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]];
			leftCycleFrames = ["left", 2, 1, 0, 0, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10);
			var _local11:TomahawkBullet = this;
			_local11.facingDirX = _arg4;
			_local11.facingDirY = 0;
			_local11.useAngle = _arg5;
			_local11.fireBullet(_arg2, _arg3, _arg4, useAngle);
			if (((!((_local11.speed == 0))) && ((_local11.vspeed == 0)))){
				_local11.throwType = "forward";
			} else {
				if ((((_local11.vspeed < 0)) && (!((_local11.speed == 0))))){
					_local11.throwType = "45up";
				} else {
					if ((((_local11.vspeed > 0)) && (!((_local11.speed == 0))))){
						_local11.throwType = "45down";
					} else {
						if ((((_local11.vspeed < 0)) && ((_local11.speed == 0)))){
							_local11.throwType = "up";
						} else {
							if ((((_local11.vspeed > 0)) && ((_local11.speed == 0)))){
								_local11.throwType = "down";
							};
						};
					};
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullet_tomahawk_sheet";
			shotname = "Tomahawk";
			width = 6;
			height = 6;
			spritewidth = 38;
			spriteheight = 38;
			spriteCenterX = 19;
			spriteCenterY = 19;
			spriteTargetX = 19;
			spriteTargetY = 19;
			sheetWidth = 10;
			sheetHeight = 1;
			collRect = new Rectangle(-10, -10, 20, 20);
			heightmultiplier = 1;
			jumpspeed = 0;
			jumpstart = -20;
			gravity = 2;
			normalgravity = 2;
			speed = 9;
			vspeed = 7;
			basespeed = 18;
			flipBlitOffset = 0;
			animationFrame = 0;
		}
		override public function grabFlipOffset():Number{
			var _local1:TomahawkBullet = this;
			return (0);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TomahawkBullet = this;
			if (_local1.facingDirX == 1){
				_local2 = _local1.rightCycleFrames;
			} else {
				_local2 = _local1.leftCycleFrames;
			};
			return (_local2);
		}
		public function fireBullet(_arg1, _arg2, _arg3, _arg4){
			var _local5:TomahawkBullet = this;
			var _local6:GameModule = _local5.gameObj;
			var _local7:PlayerChar = _local6.playerObj;
			var _local8:GameDisplay = _local6.gameDisplay;
			var _local9:* = Math.floor;
			var _local10:GameControls = _local6.gameControls;
			var _local11:EffectManager = _local6.effectManager;
			_local5.x = _arg1;
			_local5.y = _arg2;
			_local5.dirx = _arg3;
			_local5.diry = diry;
			_local5.xtile = _local9((_arg1 / _local8.tileWidth));
			_local5.ytile = _local9((_arg2 / _local8.tileWidth));
			var _local12:* = _local5.basespeed;
			var _local13:Number = Math.round(((_local12 * Math.cos(_arg4)) * -1));
			var _local14:Number = Math.round(((_local12 * Math.sin(_arg4)) * -1));
			_local5.maxspeedx = _local13;
			_local5.maxspeedy = _local14;
			_local5.speed = _local13;
			_local5.vspeed = _local14;
		}
		override public function updateObject(){
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Boolean;
			var _local1:TomahawkBullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				_local3 = _local1.flyChar(_local1.dirx, _local1.diry, 0);
				if (_local1.throwType == "forward"){
					if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 3) == 0)))){
						_local1.vspeed++;
					};
				} else {
					if (_local1.throwType == "45up"){
						if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
							_local1.vspeed++;
						};
					} else {
						if (_local1.throwType == "up"){
							if ((((_local1.vspeed < 14)) && (((_local1.gameObj.gameControls.gameplayTimer % 1) == 0)))){
								_local1.vspeed = (_local1.vspeed + 2);
							};
						};
					};
				};
				_local1.updateSprite();
				_local4 = false;
				_local5 = false;
				_local6 = false;
				if (_local1.fromEnemy){
					_local6 = _local1.checkHittingPlayers();
				} else {
					_local4 = _local1.checkHittingEnemies();
					_local5 = _local1.checkHittingObjects(true);
				};
				if (((((!(_local4)) && (!(_local5)))) && (!(_local6)))){
					if (((_local1.x + _local1.spritewidth) + 80) < _local1.gameObj.gameDisplay.currentXcoord){
						_local1.fadeShot();
					} else {
						if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
							_local1.fadeShot();
						} else {
							if (_local1.y > _local1.gameObj.gameDisplay.levelPxHeight){
								_local1.fadeShot();
							} else {
								if (_local3){
									_local1.fadeShot();
								};
							};
						};
					};
				};
			};
		}
		public function flyChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false):Boolean{
			var _local6:TomahawkBullet = this;
			var _local7:GameDisplay = _local6.gameObj.gameDisplay;
			var _local8:Number = _local7.tileWidth;
			var _local9:Boolean;
			var _local10:Number = _local6.speed;
			var _local11:Number = _local6.vspeed;
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			_local6.y = (_local6.y + _local11);
			_local6.x = (_local6.x + _local10);
			_local6.getMyCorners(_local6.x, _local6.y);
			if ((((_local6.speed > 0)) && (((((_local6.HitUpRight) || (_local6.HitMidRight))) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.speed < 0)) && (((((_local6.HitUpLeft) || (_local6.HitMidLeft))) || (_local6.HitDownLeft))))){
					_local9 = true;
				};
			};
			if ((((_local6.vspeed > 0)) && (((_local6.HitDownLeft) || (_local6.HitDownRight))))){
				_local9 = true;
			} else {
				if ((((_local6.vspeed < 0)) && (((_local6.HitUpLeft) || (_local6.HitUpRight))))){
					_local9 = true;
				};
			};
			if (_local6.checkIfOnCloud()){
			};
			var _local14:Number = 0;
			var _local15:Number = (_local7.levelTileWidth * _local7.tileWidth);
			var _local16:Number = 0;
			var _local17:Number = (_local7.levelTileHeight * _local7.tileWidth);
			if (_local6.x < _local14){
				_local6.x = _local14;
				_local9 = true;
			};
			if (_local6.x > _local15){
				_local6.x = _local15;
				_local9 = true;
			};
			if (_local6.y < _local16){
				_local6.y = _local16;
				_local9 = true;
			};
			if (_local6.y > _local17){
				_local6.y = _local17;
				_local9 = true;
			};
			_local6.xtile = Math.floor((_local6.x / _local8));
			_local6.ytile = Math.floor((_local6.y / _local8));
			if (_local9){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.bullets 

****************

//CactusChar (cactusGame.models.characters.CactusChar)
package cactusGame.models.characters {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import cactusGame.models.weapons.*;
	import cactusGame.models.enemies.*;

	public class CactusChar extends PlayerChar {

		public var standCycleFrames:Array;
		public var runCycleFrames:Array;
		public var skidCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var fallCycleFrames:Array;
		public var turnaroundCycleFrames:Array;
		public var duckCycleFrames:Array;
		public var unduckCycleFrames:Array;
		public var hitCycleFrames:Array;
		public var gloves_hitCycleFrames:Array;
		public var shovedCycleFrames:Array;
		public var punch1CycleFrames:Array;
		public var punch2CycleFrames:Array;
		public var uppercutCycleFrames:Array;
		public var stand_weapon1CycleFrames:Array;
		public var run_weapon1CycleFrames:Array;
		public var swing1_weapon1CycleFrames:Array;
		public var swing2_weapon1CycleFrames:Array;
		public var uppercut_weapon1CycleFrames:Array;
		public var duck_weapon1CycleFrames:Array;
		public var unduck_weapon1CycleFrames:Array;
		public var turnaround_weapon1CycleFrames:Array;
		public var stand_weapon2CycleFrames:Array;
		public var stand_weapon2bCycleFrames:Array;
		public var run_weapon2CycleFrames:Array;
		public var run_weapon2bCycleFrames:Array;
		public var swing1_weapon2CycleFrames:Array;
		public var swing2_weapon2CycleFrames:Array;
		public var uppercut_weapon2CycleFrames:Array;
		public var swing1_weapon2bCycleFrames:Array;
		public var swing2_weapon2bCycleFrames:Array;
		public var uppercut_weapon2bCycleFrames:Array;
		public var duck_weapon2CycleFrames:Array;
		public var unduck_weapon2CycleFrames:Array;
		public var duck_weapon2bCycleFrames:Array;
		public var unduck_weapon2bCycleFrames:Array;
		public var turnaround_weapon2CycleFrames:Array;
		public var turnaround_weapon2bCycleFrames:Array;
		public var aim_longgun_forwardCycleFrames:Array;
		public var aim_longgun_45CycleFrames:Array;
		public var aim_longgun_45downCycleFrames:Array;
		public var aim_longgun_downCycleFrames:Array;
		public var aim_longgun_upCycleFrames:Array;
		public var shoot_longgun_forwardCycleFrames:Array;
		public var shoot_longgun_45CycleFrames:Array;
		public var shoot_longgun_45downCycleFrames:Array;
		public var shoot_longgun_downCycleFrames:Array;
		public var shoot_longgun_upCycleFrames:Array;
		public var duck_longgunCycleFrames:Array;
		public var unduck_longgunCycleFrames:Array;
		public var turnaround_longgunCycleFrames:Array;
		public var aim_pistol_forwardCycleFrames:Array;
		public var aim_pistol_45CycleFrames:Array;
		public var aim_pistol_upCycleFrames:Array;
		public var aim_pistol_45downCycleFrames:Array;
		public var aim_pistol_downCycleFrames:Array;
		public var stand_pistolCycleFrames:Array;
		public var run_pistolCycleFrames:Array;
		public var shoot_pistol_forwardCycleFrames:Array;
		public var shoot_pistol_45CycleFrames:Array;
		public var shoot_pistol_upCycleFrames:Array;
		public var shoot_pistol_45downCycleFrames:Array;
		public var shoot_pistol_downCycleFrames:Array;
		public var duck_pistolCycleFrames:Array;
		public var unduck_pistolCycleFrames:Array;
		public var turnaround_pistolCycleFrames:Array;
		public var aim_bazooka_forwardCycleFrames:Array;
		public var aim_bazooka_45CycleFrames:Array;
		public var aim_bazooka_upCycleFrames:Array;
		public var aim_bazooka_45downCycleFrames:Array;
		public var aim_bazooka_downCycleFrames:Array;
		public var shoot_bazooka_forwardCycleFrames:Array;
		public var shoot_bazooka_45CycleFrames:Array;
		public var shoot_bazooka_upCycleFrames:Array;
		public var shoot_bazooka_45downCycleFrames:Array;
		public var shoot_bazooka_downCycleFrames:Array;
		public var duck_bazookaCycleFrames:Array;
		public var unduck_bazookaCycleFrames:Array;
		public var turnaround_bazookaCycleFrames:Array;
		public var aim_gatling_forwardCycleFrames:Array;
		public var aim_gatling_45CycleFrames:Array;
		public var aim_gatling_upCycleFrames:Array;
		public var aim_gatling_45downCycleFrames:Array;
		public var aim_gatling_downCycleFrames:Array;
		public var shoot_gatling_forwardCycleFrames:Array;
		public var shoot_gatling_45CycleFrames:Array;
		public var shoot_gatling_upCycleFrames:Array;
		public var shoot_gatling_45downCycleFrames:Array;
		public var shoot_gatling_downCycleFrames:Array;
		public var duck_gatlingCycleFrames:Array;
		public var unduck_gatlingCycleFrames:Array;
		public var turnaround_gatlingCycleFrames:Array;
		public var throw_grenadeCycleFrames:Array;
		public var aim_tosser_45CycleFrames:Array;
		public var aim_tosser_45downCycleFrames:Array;
		public var aim_tosser_downCycleFrames:Array;
		public var aim_tosser_upCycleFrames:Array;
		public var stand_objectCycleFrames:Array;
		public var run_objectCycleFrames:Array;
		public var throw_objectCycleFrames:Array;
		public var pickup_objectCycleFrames:Array;
		public var turnaround_objectCycleFrames:Array;
		public var pickup_mapCycleFrames:Array;
		public var stand_whipCycleFrames:Array;
		public var run_whipCycleFrames:Array;
		public var jump_whipCycleFrames:Array;
		public var fall_whipCycleFrames:Array;
		public var attack_whipCycleFrames:Array;
		public var duck_whipCycleFrames:Array;
		public var unduck_whipCycleFrames:Array;
		public var turnaround_whipCycleFrames:Array;
		public var stand_glovesCycleFrames:Array;
		public var run_glovesCycleFrames:Array;
		public var jump_glovesCycleFrames:Array;
		public var fall_glovesCycleFrames:Array;
		public var turnaround_glovesCycleFrames:Array;
		public var duck_glovesCycleFrames:Array;
		public var unduck_glovesCycleFrames:Array;
		public var punch1_glovesCycleFrames:Array;
		public var punch2_glovesCycleFrames:Array;
		public var uppercut_glovesCycleFrames:Array;
		public var grabCycleFrames:Array;
		public var grabbingCycleFrames:Array;
		public var monkeybarsCycleFrames:Array;
		public var fall_dieCycleFrames:Array;
		public var deadCycleFrames:Array;
		public var legs_standCycleFrames:Array;
		public var legs_runCycleFrames:Array;
		public var legs_skidCycleFrames:Array;
		public var legs_jumpCycleFrames:Array;
		public var legs_fallCycleFrames:Array;
		public var legs_turnaroundCycleFrames:Array;
		public var legs_duckCycleFrames:Array;
		public var legs_unduckCycleFrames:Array;
		public var legs_hitCycleFrames:Array;
		public var legs_shovedCycleFrames:Array;
		public var legs_punch1CycleFrames:Array;
		public var legs_punch2CycleFrames:Array;
		public var legs_uppercutCycleFrames:Array;
		public var legs_swing1_weapon1CycleFrames:Array;
		public var legs_swing2_weapon1CycleFrames:Array;
		public var legs_uppercut_weapon1CycleFrames:Array;
		public var legs_swing1_weapon2CycleFrames:Array;
		public var legs_swing2_weapon2CycleFrames:Array;
		public var legs_uppercut_weapon2CycleFrames:Array;
		public var legs_swing1_weapon2bCycleFrames:Array;
		public var legs_swing2_weapon2bCycleFrames:Array;
		public var legs_uppercut_weapon2bCycleFrames:Array;
		public var legs_pickup_objectCycleFrames:Array;
		public var legs_grabCycleFrames:Array;
		public var legs_grabbingCycleFrames:Array;
		public var legs_monkeybarsCycleFrames:Array;
		public var legs_fall_dieCycleFrames:Array;
		public var legs_deadCycleFrames:Array;
		public var weapon_weapon2_stand:Array;
		public var weapon_weapon2_run:Array;
		public var weapon_weapon2_swing1:Array;
		public var weapon_weapon2_swing2:Array;
		public var weapon_weapon2_uppercut:Array;
		public var weapon_weapon2_duck:Array;
		public var weapon_weapon2_unduck:Array;
		public var weapon_weapon2_turnaround:Array;
		public var weapon_weapon2_hang:Array;
		public var weapon_weapon2_grab:Array;
		public var weapon_weapon2_monkeybars:Array;
		public var weapon_weapon2b_stand:Array;
		public var weapon_weapon2b_run:Array;
		public var weapon_weapon2b_swing1:Array;
		public var weapon_weapon2b_swing2:Array;
		public var weapon_weapon2b_uppercut:Array;
		public var weapon_weapon2b_duck:Array;
		public var weapon_weapon2b_unduck:Array;
		public var weapon_weapon2b_turnaround:Array;
		public var weapon_weapon2b_hang:Array;
		public var weapon_weapon2b_grab:Array;
		public var weapon_weapon2b_monkeybars:Array;
		public var weapon_weapon1_stand:Array;
		public var weapon_weapon1_run:Array;
		public var weapon_weapon1_swing1:Array;
		public var weapon_weapon1_swing2:Array;
		public var weapon_weapon1_uppercut:Array;
		public var weapon_weapon1_duck:Array;
		public var weapon_weapon1_unduck:Array;
		public var weapon_weapon1_turnaround:Array;
		public var weapon_weapon1_hang:Array;
		public var weapon_weapon1_grab:Array;
		public var weapon_weapon1_monkeybars:Array;
		public var weapon_gloves_stand:Array;
		public var weapon_gloves_run:Array;
		public var weapon_gloves_jump:Array;
		public var weapon_gloves_turnaround:Array;
		public var weapon_gloves_duck:Array;
		public var weapon_gloves_unduck:Array;
		public var weapon_gloves_punch1:Array;
		public var weapon_gloves_punch2:Array;
		public var weapon_gloves_uppercut:Array;
		public var weapon_gloves_hang:Array;
		public var weapon_gloves_grab:Array;
		public var weapon_gloves_monkeybars:Array;
		public var weapon_longgun_aimforward:Array;
		public var weapon_longgun_aim45:Array;
		public var weapon_longgun_aim45down:Array;
		public var weapon_longgun_aimdown:Array;
		public var weapon_longgun_aimup:Array;
		public var weapon_longgun_shootforward:Array;
		public var weapon_longgun_shoot45:Array;
		public var weapon_longgun_shoot45down:Array;
		public var weapon_longgun_shootdown:Array;
		public var weapon_longgun_shootup:Array;
		public var weapon_longgun_duck:Array;
		public var weapon_longgun_turnaround:Array;
		public var weapon_longgun_hang:Array;
		public var weapon_longgun_grab:Array;
		public var weapon_longgun_monkeybars:Array;
		public var weapon_pistol_aimforward:Array;
		public var weapon_pistol_aim45:Array;
		public var weapon_pistol_aimup:Array;
		public var weapon_pistol_aim45down:Array;
		public var weapon_pistol_aimdown:Array;
		public var weapon_pistol_shootforward:Array;
		public var weapon_pistol_shoot45:Array;
		public var weapon_pistol_shootup:Array;
		public var weapon_pistol_shoot45down:Array;
		public var weapon_pistol_shootdown:Array;
		public var weapon_pistol_run:Array;
		public var weapon_pistol_stand:Array;
		public var weapon_pistol_duck:Array;
		public var weapon_pistol_turnaround:Array;
		public var weapon_pistol_hang:Array;
		public var weapon_pistol_grab:Array;
		public var weapon_pistol_monkeybars:Array;
		public var weapon_gatling_aimforward:Array;
		public var weapon_gatling_aim45:Array;
		public var weapon_gatling_aim45down:Array;
		public var weapon_gatling_aimdown:Array;
		public var weapon_gatling_aimup:Array;
		public var weapon_gatling_shootforward:Array;
		public var weapon_gatling_shoot45:Array;
		public var weapon_gatling_shoot45down:Array;
		public var weapon_gatling_shootdown:Array;
		public var weapon_gatling_shootup:Array;
		public var weapon_gatling_duck:Array;
		public var weapon_gatling_turnaround:Array;
		public var weapon_gatling_hang:Array;
		public var weapon_gatling_grab:Array;
		public var weapon_gatling_monkeybars:Array;
		public var weapon_bazooka_aimforward:Array;
		public var weapon_bazooka_aim45:Array;
		public var weapon_bazooka_aimup:Array;
		public var weapon_bazooka_aim45down:Array;
		public var weapon_bazooka_aimdown:Array;
		public var weapon_bazooka_shootforward:Array;
		public var weapon_bazooka_shoot45:Array;
		public var weapon_bazooka_shootup:Array;
		public var weapon_bazooka_shoot45down:Array;
		public var weapon_bazooka_shootdown:Array;
		public var weapon_bazooka_duck:Array;
		public var weapon_bazooka_turnaround:Array;
		public var weapon_bazooka_hang:Array;
		public var weapon_bazooka_grab:Array;
		public var weapon_bazooka_monkeybars:Array;
		public var weapon_whip_stand:Array;
		public var weapon_whip_run:Array;
		public var weapon_whip_jump:Array;
		public var weapon_whip_fall:Array;
		public var weapon_whip_attack:Array;
		public var weapon_whip_duck:Array;
		public var weapon_whip_turnaround:Array;
		public var weapon_whip_hang:Array;
		public var weapon_whip_grab:Array;
		public var weapon_whip_monkeybars:Array;
		public var torsoOffsetsX:Array;
		public var torsoOffsetsY:Array;
		public var capeOffsetsXGrab:Array;
		public var capeOffsetsXMonkeybars:Array;
		public var torsoSpriteWidth:Number;// = 96
		public var torsoSpriteHeight:Number;// = 96
		public var torsoSheetWidth:Number;// = 30
		public var torsoSheetHeight:Number;// = 16
		public var torsoFlipOffset:Number;// = 0x0300
		public var legAnimationFrame:Number;// = 0
		public var legCycleFrame:Number;// = 0
		public var legCycleName:String;// = "none"
		public var capeSpriteWidth:Number;// = 72
		public var capeSpriteHeight:Number;// = 72
		public var capeSheetWidth:Number;// = 29
		public var capeSheetHeight:Number;// = 2
		public var capeFlipOffset:Number;// = 72
		public var capeAnimationFrame:Number;// = 0
		public var capeCycleFrame:Number;// = 0
		public var capeCycleName:String;// = "none"
		public var capeTorsoOffsetX:Number;// = -16
		public var capeTorsoOffsetY:Number;// = 27
		public var weaponCycleData:Array;
		public var hasWeaponType:String;// = "none"
		public var whichWeapon:Weapon;
		public var attackVariation:Number;// = 1
		public var isFinalBlow:Boolean;// = false
		public var isSkidding:Boolean;// = false
		public var skidSpeed:Number;// = 0
		public var skidTimer:Number;// = 0
		public var skidTimerInterval:Number;// = 2
		public var skidDecayTimer:Number;// = 0
		public var skidDecayTimerInterval:Number;// = 1
		public var maxSkidSpeed:Number;// = 6
		public var grabSpeed:Number;// = 6
		public var wasJumping:Boolean;// = false
		public var wasTurning:Boolean;// = false
		public var postAttackDelayTimer:Number;// = 0
		public var postAttackDelayMax:Number;// = 1
		public var bulletTimer:Number;// = 0
		public var bulletsFired:Number;// = 0
		public var bulletsPerRound:Number;// = 2147483647
		public var reloadTimer:Number;// = 0
		public var reloadTimerMax:Number;// = 99
		public var aimAngleUp:Boolean;// = false
		public var aimAngleForward:Boolean;// = false
		public var aimAngleDown:Boolean;// = false
		public var shootAngleForward:Boolean;// = false
		public var shootAngleUp:Boolean;// = false
		public var shootAngleDown:Boolean;// = false
		public var unaimAngleUp:Boolean;// = false
		public var unaimAngleForward:Boolean;// = false
		public var unaimAngleDown:Boolean;// = false
		public var aiming:Boolean;// = false
		public var unaiming:Boolean;// = false
		public var shoot_longgun_offsetsX:Array;
		public var shoot_longgun_offsetsY:Array;
		public var shoot_pistol_offsetsX:Array;
		public var shoot_pistol_offsetsY:Array;
		public var shoot_gatling_offsetsX:Array;
		public var shoot_gatling_offsetsY:Array;
		public var shoot_bazooka_offsetsX:Array;
		public var shoot_bazooka_offsetsY:Array;
		public var shoot_toss_offsetsX:Array;
		public var shoot_toss_offsetsY:Array;
		public var object_stand_offsetX:Number;// = 0
		public var object_stand_offsetY:Number;// = -27
		public var object_throw_offsetsX:Array;
		public var object_throw_offsetsY:Array;
		public var object_pickup_offsetsX:Array;
		public var object_pickup_offsetsY:Array;
		public var object_turnaround_offsetX:Number;// = -15
		public var object_turnaround_offsetY:Number;// = -23
		public var landStartTime:Number;// = 0
		public var landStunDuration:Number;// = 250
		public var forceGrabYOffsetAmount:Number;// = 0
		public var attackRect:Rectangle;
		public var punch1_attackRect:Rectangle;
		public var punch2_attackRect:Rectangle;
		public var uppercut_attackRect:Rectangle;
		public var gloves_punch1_attackRect:Rectangle;
		public var gloves_punch2_attackRect:Rectangle;
		public var gloves_uppercut_attackRect:Rectangle;
		public var weapon2_swing1_attackRect:Rectangle;
		public var weapon2_swing2_attackRect:Rectangle;
		public var weapon2_uppercut_attackRect:Rectangle;
		public var weapon2b_swing1_attackRect:Rectangle;
		public var weapon2b_swing2_attackRect:Rectangle;
		public var weapon2b_uppercut_attackRect:Rectangle;
		public var weapon1_swing1_attackRect:Rectangle;
		public var weapon1_swing2_attackRect:Rectangle;
		public var weapon1_uppercut_attackRect:Rectangle;
		public var whip_attackRect:Rectangle;
		public var weapon_gun_attackRect:Rectangle;
		public var punch1_frameRange:Array;
		public var punch2_frameRange:Array;
		public var uppercut_frameRange:Array;
		public var gloves_punch1_frameRange:Array;
		public var gloves_punch2_frameRange:Array;
		public var gloves_uppercut_frameRange:Array;
		public var weapon2_swing1_frameRange:Array;
		public var weapon2_swing2_frameRange:Array;
		public var weapon2_uppercut_frameRange:Array;
		public var weapon2b_swing1_frameRange:Array;
		public var weapon2b_swing2_frameRange:Array;
		public var weapon2b_uppercut_frameRange:Array;
		public var weapon1_swing1_frameRange:Array;
		public var weapon1_swing2_frameRange:Array;
		public var weapon1_uppercut_frameRange:Array;
		public var whip_frameRange:Array;
		public var weapon_gun_frameRange:Array;
		public var startAttackFrame:Number;// = 0
		public var endAttackFrame:Number;// = 4
		public var repeatAttackFrame:Number;// = 6
		public var whichJumpSound:Number;// = 1
		public var whichPunchSound:Number;// = 1
		public var whichSwingSound:Number;// = 1

		public function CactusChar(_arg1){
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 0, 0, 0, 3, 3, 3, 4, 4, 4, 3, 3, 3, 0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 0, 0, 0, 3, 3, 3, 5, 5, 5, 3, 3, 3]];
			runCycleFrames = ["run", 2, 1, 0, 0, [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]];
			skidCycleFrames = ["skid", 2, 1, 0, 4, [23, 23, 23, 23, 23]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [24, 25, 26]];
			fallCycleFrames = ["fall", 2, 1, 0, 2, [27, 28, 29]];
			turnaroundCycleFrames = ["turnaround", 2, 1, 0, -1, [30, 30, 30, 30, 30]];
			duckCycleFrames = ["duck", 2, 1, 0, 3, [31, 32, 33, 34]];
			unduckCycleFrames = ["unduck", 2, 1, 0, -1, [33, 32, 31]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [30, 180, 180, 180, 180, 180, 180, 180, 180, 180, 180]];
			gloves_hitCycleFrames = ["gloves_hit", 2, 1, 0, -1, [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]];
			shovedCycleFrames = ["shoved", 2, 1, 0, -1, [30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30]];
			punch1CycleFrames = ["punch1", 2, 1, 0, -1, [36, 37, 38, 39, 39, 39, 39, 39, 39]];
			punch2CycleFrames = ["punch2", 2, 1, 0, -1, [40, 41, 42, 43, 43, 43, 43, 43, 43, 40]];
			uppercutCycleFrames = ["uppercut", 2, 1, 0, -1, [44, 45, 45, 46, 47, 48, 49, 49, 49, 50, 51, 0, 0]];
			stand_weapon1CycleFrames = ["stand_weapon1", 2, 1, 0, 0, [52, 52, 52, 53, 53, 53, 54, 54, 54, 53, 53, 53]];
			run_weapon1CycleFrames = ["run_weapon1", 2, 1, 0, 0, [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70]];
			swing1_weapon1CycleFrames = ["swing1_weapon1", 2, 1, 0, -1, [71, 72, 73, 74, 75, 76, 77, 77, 77, 77, 77, 77, 83, 83]];
			swing2_weapon1CycleFrames = ["swing2_weapon1", 2, 1, 0, -1, [78, 79, 80, 81, 82, 71, 71, 71, 71, 71, 71]];
			uppercut_weapon1CycleFrames = ["uppercut_weapon1", 2, 1, 0, -1, [84, 85, 86, 87, 88, 89, 89, 89, 89, 89, 89, 83, 83]];
			duck_weapon1CycleFrames = ["duck_weapon1", 2, 1, 0, 3, [31, 32, 33, 34]];
			unduck_weapon1CycleFrames = ["unduck_weapon1", 2, 1, 0, -1, [33, 32, 31]];
			turnaround_weapon1CycleFrames = ["turnaround_weapon1", 2, 1, 0, -1, [30, 30, 30, 30, 30]];
			stand_weapon2CycleFrames = ["stand_weapon2", 2, 1, 0, 0, [90, 90, 90, 91, 91, 91, 92, 92, 92, 91, 91, 91]];
			stand_weapon2bCycleFrames = ["stand_weapon2b", 2, 1, 0, 0, [93, 93, 93, 94, 94, 94, 95, 95, 95, 94, 94, 94]];
			run_weapon2CycleFrames = ["run_weapon2", 2, 1, 0, 0, [96, 96, 98, 97, 97, 97, 98, 96, 96, 96, 98, 97, 97, 98, 96, 96]];
			run_weapon2bCycleFrames = ["run_weapon2b", 2, 1, 0, 0, [93, 93, 100, 99, 99, 99, 100, 93, 93, 93, 100, 99, 99, 99, 100, 93]];
			swing1_weapon2CycleFrames = ["swing1_weapon2", 2, 1, 0, -1, [101, 101, 101, 102, 103, 104, 105, 106, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108]];
			swing2_weapon2CycleFrames = ["swing2_weapon2", 2, 1, 0, -1, [109, 110, 111, 112, 113, 114, 115, 115, 115, 115, 115, 115, 115]];
			uppercut_weapon2CycleFrames = ["uppercut_weapon2", 2, 1, 0, -1, [116, 117, 118, 119, 120, 121, 121, 121, 121, 121, 121, 121, 121, 108, 108]];
			swing1_weapon2bCycleFrames = ["swing1_weapon2b", 2, 1, 0, -1, [101, 101, 101, 102, 103, 104, 105, 106, 107, 107, 107, 107, 107, 107, 107, 107, 108, 108]];
			swing2_weapon2bCycleFrames = ["swing2_weapon2b", 2, 1, 0, -1, [109, 110, 111, 112, 113, 114, 115, 115, 115, 115, 115, 115, 115]];
			uppercut_weapon2bCycleFrames = ["uppercut_weapon2b", 2, 1, 0, -1, [116, 117, 118, 119, 120, 121, 121, 121, 121, 121, 121, 121, 121, 108, 108]];
			duck_weapon2CycleFrames = ["duck_weapon2", 2, 1, 0, 3, [31, 32, 33, 138]];
			unduck_weapon2CycleFrames = ["unduck_weapon2", 2, 1, 0, -1, [33, 32, 31]];
			duck_weapon2bCycleFrames = ["duck_weapon2b", 2, 1, 0, 3, [31, 32, 33, 138]];
			unduck_weapon2bCycleFrames = ["unduck_weapon2b", 2, 1, 0, -1, [33, 32, 31]];
			turnaround_weapon2CycleFrames = ["turnaround_weapon2", 2, 1, 0, -1, [30, 30, 30, 30, 30]];
			turnaround_weapon2bCycleFrames = ["turnaround_weapon2b", 2, 1, 0, -1, [30, 30, 30, 30, 30]];
			aim_longgun_forwardCycleFrames = ["aim_longgun_forward", 2, 1, 0, 0, [122]];
			aim_longgun_45CycleFrames = ["aim_longgun_45", 2, 1, 0, 0, [125]];
			aim_longgun_45downCycleFrames = ["aim_longgun_45down", 2, 1, 0, 0, [128]];
			aim_longgun_downCycleFrames = ["aim_longgun_down", 2, 1, 0, 0, [131]];
			aim_longgun_upCycleFrames = ["aim_longgun_up", 2, 1, 0, 0, [134]];
			shoot_longgun_forwardCycleFrames = ["shoot_longgun_forward", 2, 1, 0, -1, [124, 124, 123, 122]];
			shoot_longgun_45CycleFrames = ["shoot_longgun_45", 2, 1, 0, -1, [126, 126, 127, 125]];
			shoot_longgun_45downCycleFrames = ["shoot_longgun_45down", 2, 1, 0, -1, [129, 129, 130, 128]];
			shoot_longgun_downCycleFrames = ["shoot_longgun_down", 2, 1, 0, -1, [132, 132, 133, 131]];
			shoot_longgun_upCycleFrames = ["shoot_longgun_up", 2, 1, 0, -1, [135, 135, 136, 134]];
			duck_longgunCycleFrames = ["duck_longgun", 2, 1, 0, 3, [31, 32, 33, 137]];
			unduck_longgunCycleFrames = ["unduck_longgun", 2, 1, 0, 0, [33, 32, 31]];
			turnaround_longgunCycleFrames = ["turnaround_longgun", 2, 1, 0, 0, [30, 30, 30, 30, 30]];
			aim_pistol_forwardCycleFrames = ["aim_pistol_forward", 2, 1, 0, 0, [139]];
			aim_pistol_45CycleFrames = ["aim_pistol_45", 2, 1, 0, 0, [141]];
			aim_pistol_upCycleFrames = ["aim_pistol_up", 2, 1, 0, 0, [145]];
			aim_pistol_45downCycleFrames = ["aim_pistol_45down", 2, 1, 0, 0, [143]];
			aim_pistol_downCycleFrames = ["aim_pistol_down", 2, 1, 0, 0, [147]];
			stand_pistolCycleFrames = ["stand_pistol", 2, 1, 0, 0, [64]];
			run_pistolCycleFrames = ["run_pistol", 2, 1, 0, 0, [55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70]];
			shoot_pistol_forwardCycleFrames = ["shoot_pistol_forward", 2, 1, 0, -1, [140, 140, 139, 139]];
			shoot_pistol_45CycleFrames = ["shoot_pistol_45", 2, 1, 0, -1, [142, 142, 141, 141]];
			shoot_pistol_upCycleFrames = ["shoot_pistol_up", 2, 1, 0, -1, [146, 146, 145, 145]];
			shoot_pistol_45downCycleFrames = ["shoot_pistol_45down", 2, 1, 0, -1, [144, 144, 143, 143]];
			shoot_pistol_downCycleFrames = ["shoot_pistol_down", 2, 1, 0, -1, [148, 148, 147, 147]];
			duck_pistolCycleFrames = ["duck_pistol", 2, 1, 0, 3, [31, 32, 33, 34]];
			unduck_pistolCycleFrames = ["unduck_pistol", 2, 1, 0, 0, [33, 32, 31]];
			turnaround_pistolCycleFrames = ["turnaround_pistol", 2, 1, 0, 0, [30, 30, 30, 30, 30]];
			aim_bazooka_forwardCycleFrames = ["aim_bazooka_forward", 2, 1, 0, 0, [149]];
			aim_bazooka_45CycleFrames = ["aim_bazooka_45", 2, 1, 0, 0, [152]];
			aim_bazooka_upCycleFrames = ["aim_bazooka_up", 2, 1, 0, 0, [155]];
			aim_bazooka_45downCycleFrames = ["aim_bazooka_45down", 2, 1, 0, 0, [158]];
			aim_bazooka_downCycleFrames = ["aim_bazooka_down", 2, 1, 0, 0, [161]];
			shoot_bazooka_forwardCycleFrames = ["shoot_bazooka_forward", 2, 1, 0, -1, [150, 150, 151, 149]];
			shoot_bazooka_45CycleFrames = ["shoot_bazooka_45", 2, 1, 0, -1, [153, 153, 154, 152]];
			shoot_bazooka_upCycleFrames = ["shoot_bazooka_up", 2, 1, 0, -1, [156, 156, 157, 155]];
			shoot_bazooka_45downCycleFrames = ["shoot_bazooka_45down", 2, 1, 0, -1, [159, 159, 160, 158]];
			shoot_bazooka_downCycleFrames = ["shoot_bazooka_down", 2, 1, 0, -1, [162, 162, 163, 161]];
			duck_bazookaCycleFrames = ["duck_bazooka", 2, 1, 0, 3, [31, 32, 33, 164]];
			unduck_bazookaCycleFrames = ["unduck_bazooka", 2, 1, 0, 0, [33, 32, 31]];
			turnaround_bazookaCycleFrames = ["turnaround_bazooka", 2, 1, 0, 0, [30, 30, 30, 30, 30]];
			aim_gatling_forwardCycleFrames = ["aim_gatling_forward", 2, 1, 0, 0, [149]];
			aim_gatling_45CycleFrames = ["aim_gatling_45", 2, 1, 0, 0, [152]];
			aim_gatling_upCycleFrames = ["aim_gatling_up", 2, 1, 0, 0, [155]];
			aim_gatling_45downCycleFrames = ["aim_gatling_45down", 2, 1, 0, 0, [158]];
			aim_gatling_downCycleFrames = ["aim_gatling_down", 2, 1, 0, 0, [161]];
			shoot_gatling_forwardCycleFrames = ["shoot_gatling_forward", 2, 1, 0, -1, [150, 151]];
			shoot_gatling_45CycleFrames = ["shoot_gatling_45", 2, 1, 0, -1, [153, 154]];
			shoot_gatling_upCycleFrames = ["shoot_gatling_up", 2, 1, 0, -1, [156, 157]];
			shoot_gatling_45downCycleFrames = ["shoot_gatling_45down", 2, 1, 0, -1, [159, 160]];
			shoot_gatling_downCycleFrames = ["shoot_gatling_down", 2, 1, 0, -1, [162, 163]];
			duck_gatlingCycleFrames = ["duck_gatling", 2, 1, 0, 3, [31, 32, 33, 164]];
			unduck_gatlingCycleFrames = ["unduck_gatling", 2, 1, 0, 0, [33, 32, 31]];
			turnaround_gatlingCycleFrames = ["turnaround_gatling", 2, 1, 0, 0, [30, 30, 30, 30, 30]];
			throw_grenadeCycleFrames = ["throw_grenade", 2, 1, 0, -1, [165, 166, 166, 167, 168, 169, 170, 170, 170]];
			aim_tosser_45CycleFrames = ["aim_tosser_45", 2, 1, 0, 0, [220]];
			aim_tosser_45downCycleFrames = ["aim_tosser_45down", 2, 1, 0, 0, [222]];
			aim_tosser_downCycleFrames = ["aim_tosser_down", 2, 1, 0, 0, [223]];
			aim_tosser_upCycleFrames = ["aim_tosser_up", 2, 1, 0, 0, [221]];
			stand_objectCycleFrames = ["stand_object", 2, 1, 0, 0, [171]];
			run_objectCycleFrames = ["run_object", 2, 1, 0, 0, [171]];
			throw_objectCycleFrames = ["throw_object", 2, 1, 0, -1, [172, 173, 173, 173, 174, 175, 176, 176, 176, 176, 176, 176, 176]];
			pickup_objectCycleFrames = ["pickup_object", 2, 1, 0, -1, [0, 177, 177, 177, 178, 178, 178, 179, 180, 172]];
			turnaround_objectCycleFrames = ["turnaround_object", 2, 1, 0, -1, [173, 173, 173, 173, 173]];
			pickup_mapCycleFrames = ["pickup_map", 2, 1, 0, -1, [0, 177, 177, 177, 178, 178, 178, 179, 180, 172, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171, 171]];
			stand_whipCycleFrames = ["stand_whip", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 0, 0, 0, 3, 3, 3, 4, 4, 4, 3, 3, 3]];
			run_whipCycleFrames = ["run_whip", 2, 1, 0, 0, [6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21]];
			jump_whipCycleFrames = ["jump_whip", 2, 1, 0, 2, [0, 1, 2]];
			fall_whipCycleFrames = ["fall_whip", 2, 1, 0, 2, [2, 1, 0]];
			attack_whipCycleFrames = ["attack_whip", 2, 1, 0, -1, [0, 181, 182, 183, 183, 183, 184, 185, 186, 186, 186, 186, 186, 186, 186, 16, 16]];
			duck_whipCycleFrames = ["duck_whip", 2, 1, 0, 3, [31, 32, 33, 34]];
			unduck_whipCycleFrames = ["unduck_whip", 2, 1, 0, 0, [33, 32, 31]];
			turnaround_whipCycleFrames = ["turnaround_whip", 2, 1, 0, 0, [30, 30, 30, 30, 30]];
			stand_glovesCycleFrames = ["stand_gloves", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			run_glovesCycleFrames = ["run_gloves", 2, 1, 0, 0, [187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187, 187]];
			jump_glovesCycleFrames = ["jump_gloves", 2, 1, 0, 0, [187, 187, 187]];
			fall_glovesCycleFrames = ["fall_gloves", 2, 1, 0, 0, [187, 187, 187]];
			turnaround_glovesCycleFrames = ["turnaround_gloves", 2, 1, 0, 0, [30, 30, 30, 30, 30]];
			duck_glovesCycleFrames = ["duck_gloves", 2, 1, 0, 3, [31, 32, 33, 34]];
			unduck_glovesCycleFrames = ["unduck_gloves", 2, 1, 0, 0, [33, 32, 31]];
			punch1_glovesCycleFrames = ["punch1_gloves", 2, 1, 0, 0, [35, 36, 37, 38, 39, 39, 39, 39]];
			punch2_glovesCycleFrames = ["punch2_gloves", 2, 1, 0, 0, [40, 41, 42, 43, 43, 43, 43, 40]];
			uppercut_glovesCycleFrames = ["uppercut_gloves", 2, 1, 0, 0, [44, 45, 45, 46, 47, 48, 49, 49, 49, 50, 51]];
			grabCycleFrames = ["grab", 2, 1, 0, -1, [188, 189, 190, 191, 192, 193, 194, 195, 195, 196, 196, 195, 195, 194]];
			grabbingCycleFrames = ["grabbing", 2, 1, 0, 0, [194]];
			monkeybarsCycleFrames = ["monkeybars", 2, 1, 0, 0, [197, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212]];
			fall_dieCycleFrames = ["fall_die", 2, 1, 0, 0, [213]];
			deadCycleFrames = ["dead", 2, 1, 0, -1, [214, 215, 216, 217, 218, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219, 219]];
			legs_standCycleFrames = ["legs_stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			legs_runCycleFrames = ["legs_run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			legs_skidCycleFrames = ["legs_skid", 2, 1, 0, 4, [19, 20, 21, 22, 23]];
			legs_jumpCycleFrames = ["legs_jump", 2, 1, 0, 2, [24, 25, 26]];
			legs_fallCycleFrames = ["legs_fall", 2, 1, 0, 2, [27, 28, 29]];
			legs_turnaroundCycleFrames = ["legs_turnaround", 2, 1, 0, 4, [30, 31, 32, 33, 34]];
			legs_duckCycleFrames = ["legs_duck", 2, 1, 0, 3, [35, 36, 37, 38]];
			legs_unduckCycleFrames = ["legs_unduck", 2, 1, 0, 2, [37, 36, 35]];
			legs_hitCycleFrames = ["legs_hit", 2, 1, 0, 4, [30, 31, 32, 33, 34]];
			legs_shovedCycleFrames = ["legs_shoved", 2, 1, 0, 4, [30, 31, 32, 33, 34]];
			legs_punch1CycleFrames = ["legs_punch1", 2, 1, 0, 6, [41, 42, 43, 43, 43, 43, 43]];
			legs_punch2CycleFrames = ["legs_punch2", 2, 1, 0, 7, [41, 39, 40, 40, 40, 40, 40, 39]];
			legs_uppercutCycleFrames = ["legs_uppercut", 2, 1, 0, 10, [35, 36, 36, 35, 0, 0, 0, 0, 0, 0, 0]];
			legs_swing1_weapon1CycleFrames = ["legs_swing1_weapon1", 2, 1, 0, 13, [43, 42, 41, 39, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0]];
			legs_swing2_weapon1CycleFrames = ["legs_swing2_weapon1", 2, 1, 0, 10, [39, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43]];
			legs_uppercut_weapon1CycleFrames = ["legs_uppercut_weapon1", 2, 1, 0, 12, [36, 35, 39, 40, 40, 40, 40, 40, 40, 40, 40, 0, 0]];
			legs_swing1_weapon2CycleFrames = ["legs_swing1_weapon2", 2, 1, 0, 17, [43, 43, 43, 43, 42, 41, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39]];
			legs_swing2_weapon2CycleFrames = ["legs_swing2_weapon2", 2, 1, 0, 12, [40, 39, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43]];
			legs_uppercut_weapon2CycleFrames = ["legs_uppercut_weapon2", 2, 1, 0, 14, [35, 36, 35, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39]];
			legs_swing1_weapon2bCycleFrames = ["legs_swing1_weapon2b", 2, 1, 0, 17, [43, 43, 43, 43, 42, 41, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39]];
			legs_swing2_weapon2bCycleFrames = ["legs_swing2_weapon2b", 2, 1, 0, 12, [40, 39, 41, 42, 43, 43, 43, 43, 43, 43, 43, 43, 43]];
			legs_uppercut_weapon2bCycleFrames = ["legs_uppercut_weapon2b", 2, 1, 0, 14, [35, 36, 35, 39, 40, 40, 40, 40, 40, 40, 40, 40, 40, 39, 39]];
			legs_pickup_objectCycleFrames = ["legs_pickup_object", 2, 1, 0, 8, [0, 0, 35, 36, 36, 36, 35, 0, 0]];
			legs_grabCycleFrames = ["legs_grab", 2, 1, 0, 13, [26, 44, 45, 46, 47, 48, 49, 50, 50, 51, 51, 52, 52, 53]];
			legs_grabbingCycleFrames = ["legs_grabbing", 2, 1, 0, 0, [53]];
			legs_monkeybarsCycleFrames = ["legs_monkeybars", 2, 1, 0, 0, [54, 67, 68, 69, 55, 70, 71, 72, 56, 73, 74, 75, 57, 76, 77, 78]];
			legs_fall_dieCycleFrames = ["legs_fall_die", 2, 1, 0, 0, [58]];
			legs_deadCycleFrames = ["legs_dead", 2, 1, 0, 7, [59, 60, 61, 62, 63, 64, 65, 66]];
			weapon_weapon2_stand = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24], [13, 13, 13, 12, 12, 12, 12, 12, 12, 12, 12, 12]];
			weapon_weapon2_run = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [-24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24, -24], [11, 11, 13, 13, 13, 13, 12, 11, 11, 11, 12, 13, 13, 12, 11, 11]];
			weapon_weapon2_swing1 = [[3, 3, 3, 7, 8, 9, 10, 11, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0], [-15, -15, -15, -15, -15, -15, -15, -15, -5, -5, -5, -5, -5, -5, -5, -5, -19, -19], [5, 5, 5, 5, 5, 5, 5, 5, -8, -8, -8, -8, -8, -8, -8, -8, 6, 6]];
			weapon_weapon2_swing2 = [[12, 13, 14, 15, 16, 5, 5, 5, 5, 5, 5, 5, 5], [-5, -6, -5, -16, -22, -29, -32, -32, -32, -32, -32, -32, -32], [-8, 5, 22, 24, 9, 4, 4, 4, 4, 4, 4, 4, 4]];
			weapon_weapon2_uppercut = [[17, 18, 19, 20, 21, 6, 6, 6, 6, 6, 6, 6, 6, 0, 0], [-17, -33, -31, -20, -13, 13, 13, 13, 13, 13, 13, 13, 13, -19, -19], [-3, 24, 21, 15, -13, -14, -14, -14, -14, -14, -14, -14, -14, 6, 6]];
			weapon_weapon2_duck = [[22, 23, 24, 24], [-14, -14, -14, -14], [14, 9, -4, 1]];
			weapon_weapon2_unduck = [[24, 23, 22], [-14, -14, -14], [-4, 9, 14]];
			weapon_weapon2_turnaround = [[0, 0, 0, 0, 0], [-31, -31, -31, -31, -31], [10, 10, 10, 10, 10]];
			weapon_weapon2_hang = [[5], [-8], [28]];
			weapon_weapon2_grab = [[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], [-13, -12, -7, -4, -5, -6, -8, -9, -9, -10, -10, -9, -9, -8], [28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28]];
			weapon_weapon2_monkeybars = [[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], [-9, -10, -9, -7, -5, -5, -6, -8, -11, -12, -13, -14, -14, -13, -12, -11], [28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28]];
			weapon_weapon2b_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32], [4, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 3]];
			weapon_weapon2b_run = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32, -32], [4, 4, 5, 6, 6, 6, 5, 4, 4, 4, 5, 6, 6, 6, 5, 4]];
			weapon_weapon2b_swing1 = [[1, 1, 1, 5, 6, 7, 8, 9, 2, 2, 2, 2, 2, 2, 2, 2, 0, 0], [-15, -15, -15, -15, -15, -15, -15, -15, -5, -5, -5, -5, -5, -5, -5, -5, -19, -19], [5, 5, 5, 5, 5, 5, 5, 5, -8, -8, -8, -8, -8, -8, -8, -8, 6, 6]];
			weapon_weapon2b_swing2 = [[10, 11, 12, 13, 14, 3, 3, 3, 3, 3, 3, 3, 3], [-5, -6, -5, -23, -25, -32, -32, -32, -32, -32, -32, -32, -32], [-8, 5, 22, 24, 9, 4, 4, 4, 4, 4, 4, 4, 4]];
			weapon_weapon2b_uppercut = [[15, 16, 17, 18, 19, 4, 4, 4, 4, 4, 4, 4, 4, 0, 0], [-32, -33, -31, -20, -13, 13, 13, 13, 13, 13, 13, 13, 13, -19, -19], [-3, 24, 21, 15, -13, -17, -17, -17, -17, -17, -17, -17, -17, 6, 6]];
			weapon_weapon2b_duck = [[4, 21, 20, 20], [-10, -11, -18, -18], [15, 15, 35, 38]];
			weapon_weapon2b_unduck = [[20, 21, 4], [-18, -11, -10], [35, 15, 15]];
			weapon_weapon2b_turnaround = [[0, 0, 0, 0, 0], [-30, -30, -30, -30, -30], [9, 9, 9, 9, 9]];
			weapon_weapon2b_hang = [[3], [-10], [17]];
			weapon_weapon2b_grab = [[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [-9, -9, -9, -8, -8, -9, -10, -11, -11, -12, -12, -11, -11, -10], [17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17]];
			weapon_weapon2b_monkeybars = [[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [-10, -10, -9, -8, -7, -8, -9, -10, -11, -12, -14, -15, -16, -16, -15, -14], [17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17]];
			weapon_weapon1_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7], [24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24]];
			weapon_weapon1_run = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 18, 18, 18, 18, 18, 1], [5, 3, 1, 0, -2, -1, 1, 2, 5, 9, 25, 27, 28, 29, 28, 15], [58, 57, 57, 57, 56, 57, 57, 57, 59, 61, 62, 60, 58, 57, 59, 59]];
			weapon_weapon1_swing1 = [[2, 2, 4, 5, 6, 7, 3, 3, 3, 3, 3, 3, 0, 0], [-4, 5, -28, -23, -9, -9, -9, -9, -9, -9, -9, -9, 17, 17], [50, 55, 61, 15, 13, 13, 13, 13, 13, 13, 13, 13, 23, 23]];
			weapon_weapon1_swing2 = [[9, 10, 11, 12, 13, 2, 2, 2, 2, 2, 2], [-9, -9, -9, -9, -4, -4, -4, -4, -4, -4, -4], [13, 13, 13, 13, 50, 50, 50, 50, 50, 50, 50]];
			weapon_weapon1_uppercut = [[2, 14, 15, 16, 17, 8, 8, 8, 8, 8, 8, 0, 0], [0, 0, 1, -8, -7, 10, 10, 10, 10, 10, 10, 17, 17], [48, 53, 32, -6, 6, 6, 6, 6, 6, 6, 6, 23, 23]];
			weapon_weapon1_duck = [[1, 1, 2, 2], [10, 9, 5, 3], [53, 52, 50, 44]];
			weapon_weapon1_unduck = [[2, 1, 1], [5, 9, 10], [50, 52, 53]];
			weapon_weapon1_turnaround = [[0, 0, 0, 0, 0], [-5, -5, -5, -5, -5], [14, 14, 14, 14, 14]];
			weapon_weapon1_hang = [[0], [6], [25]];
			weapon_weapon1_grab = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 11, 13, 17, 13, 10, 7, 6, 6, 5, 5, 6, 6, 6], [25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25]];
			weapon_weapon1_monkeybars = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [5, 9, 13, 16, 18, 17, 13, 9, 6, 5, 3, 2, 0, 1, 3, 4], [25, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24]];
			weapon_gloves_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12]];
			weapon_gloves_run = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1], [7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7]];
			weapon_gloves_jump = [[1, 1, 1], [0, 0, 0], [7, 7, 7]];
			weapon_gloves_turnaround = [[2, 2, 2, 2, 2], [0, 0, 0, 0, 0], [7, 7, 7, 7, 7]];
			weapon_gloves_duck = [[3, 4, 5, 6], [1, 1, 1, 1], [5, 5, 1, -3]];
			weapon_gloves_unduck = [[5, 4, 3], [1, 1, 1], [1, 5, 5]];
			weapon_gloves_punch1 = [[0, 7, 8, 8, 8, 8, 8, 8, 8], [4, 4, 4, 4, 4, 4, 4, 4, 4], [1, 1, 1, 1, 1, 1, 1, 1, 1]];
			weapon_gloves_punch2 = [[9, 10, 11, 12, 12, 12, 12, 12, 12, 9], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [1, 1, 1, 1, 1, 1, 1, 1, 1, 1]];
			weapon_gloves_uppercut = [[13, 14, 14, 15, 16, 17, 18, 18, 18, 19, 20, 0, 0], [1, 13, 13, 10, 0, 0, 0, 0, 0, 0, 0, 1, 1], [5, 10, 10, 1, -4, -4, -4, -4, -4, -4, -4, 12, 12]];
			weapon_gloves_hang = [[2], [13], [16]];
			weapon_gloves_grab = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [12, 14, 18, 21, 19, 17, 14, 12, 12, 11, 11, 12, 12, 13], [16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16]];
			weapon_gloves_monkeybars = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [11, 14, 17, 19, 23, 21, 18, 14, 11, 9, 7, 6, 5, 6, 7, 8], [16, 16, 16, 16, 16, 16, 16, 16, 17, 18, 18, 18, 18, 18, 17, 16]];
			weapon_longgun_aimforward = [[1], [14], [9]];
			weapon_longgun_aim45 = [[3], [14], [9]];
			weapon_longgun_aim45down = [[5], [14], [9]];
			weapon_longgun_aimdown = [[7], [18], [17]];
			weapon_longgun_aimup = [[9], [20], [-30]];
			weapon_longgun_shootforward = [[2, 2, 1, 1], [11, 11, 12, 14], [9, 9, 9, 9]];
			weapon_longgun_shoot45 = [[4, 4, 3, 3], [11, 11, 12, 14], [12, 12, 11, 9]];
			weapon_longgun_shoot45down = [[6, 6, 5, 5], [11, 11, 12, 14], [8, 8, 9, 9]];
			weapon_longgun_shootdown = [[8, 8, 7, 7], [18, 18, 18, 18], [14, 14, 15, 17]];
			weapon_longgun_shootup = [[10, 10, 9, 9], [20, 20, 20, 20], [-27, -27, -28, -30]];
			weapon_longgun_duck = [[0, 0, 11, 11], [11, 11, 11, 17], [15, 15, 16, 15]];
			weapon_longgun_turnaround = [[12, 12, 12, 12, 12], [1, 1, 1, 1, 1], [14, 14, 14, 14, 14]];
			weapon_longgun_hang = [[7], [14], [9]];
			weapon_longgun_grab = [[7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], [14, 15, 17, 18, 17, 16, 14, 13, 13, 12, 12, 13, 13, 14], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9]];
			weapon_longgun_monkeybars = [[7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7], [12, 13, 17, 19, 22, 21, 17, 14, 12, 10, 9, 8, 7, 8, 9, 10], [9, 9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 15, 15, 14, 14, 14]];
			weapon_pistol_aimforward = [[2], [52], [18]];
			weapon_pistol_aim45 = [[4], [41], [1]];
			weapon_pistol_aimup = [[6], [26], [-5]];
			weapon_pistol_aim45down = [[8], [46], [36]];
			weapon_pistol_aimdown = [[10], [37], [47]];
			weapon_pistol_shootforward = [[3, 3, 2], [51, 51, 52], [16, 16, 18]];
			weapon_pistol_shoot45 = [[5, 5, 4], [38, 38, 41], [-1, -1, 1]];
			weapon_pistol_shootup = [[7, 7, 6], [24, 24, 26], [-5, -5, -5]];
			weapon_pistol_shoot45down = [[9, 9, 8], [47, 47, 46], [34, 34, 36]];
			weapon_pistol_shootdown = [[11, 11, 10], [40, 40, 37], [46, 46, 47]];
			weapon_pistol_run = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1], [7, 5, 4, 2, 0, 2, 4, 5, 8, 11, 27, 30, 31, 32, 31, 18], [37, 36, 36, 35, 34, 35, 36, 36, 39, 40, 41, 39, 38, 37, 38, 38]];
			weapon_pistol_stand = [[0], [11], [40]];
			weapon_pistol_duck = [[1, 0, 10, 10], [14, 13, 11, 9], [32, 31, 32, 25]];
			weapon_pistol_turnaround = [[1, 1, 1, 1, 1], [-1, -1, -1, -1, -1], [24, 24, 24, 24, 24]];
			weapon_pistol_hang = [[0], [16], [37]];
			weapon_pistol_grab = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [15, 19, 23, 27, 24, 22, 16, 15, 15, 14, 14, 15, 15, 16], [37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37]];
			weapon_pistol_monkeybars = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [15, 18, 22, 24, 28, 24, 21, 17, 13, 12, 11, 10, 9, 10, 11, 13], [37, 37, 37, 37, 37, 38, 38, 37, 36, 36, 36, 35, 34, 35, 36, 37]];
			weapon_gatling_aimforward = [[0], [32], [22]];
			weapon_gatling_aim45 = [[3], [32], [22]];
			weapon_gatling_aim45down = [[9], [18], [49]];
			weapon_gatling_aimdown = [[12], [5], [46]];
			weapon_gatling_aimup = [[6], [48], [-5]];
			weapon_gatling_shootforward = [[1, 2], [28, 30], [22, 22]];
			weapon_gatling_shoot45 = [[4, 5], [29, 30], [25, 24]];
			weapon_gatling_shoot45down = [[10, 11], [15, 17], [46, 48]];
			weapon_gatling_shootdown = [[13, 14], [5, 5], [42, 44]];
			weapon_gatling_shootup = [[7, 8], [48, 48], [-1, -3]];
			weapon_gatling_duck = [[15, 15, 15, 0], [28, 32, 34, 40], [27, 28, 28, 33]];
			weapon_gatling_turnaround = [[3, 3, 3, 3, 3], [2, 2, 2, 2, 2], [28, 28, 28, 28, 28]];
			weapon_gatling_hang = [[12], [6], [43]];
			weapon_gatling_grab = [[12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12], [4, 6, 10, 13, 12, 9, 6, 5, 5, 4, 4, 5, 5, 6], [43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43]];
			weapon_gatling_monkeybars = [[12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12], [4, 7, 9, 12, 16, 15, 12, 9, 5, 3, 2, 1, 0, 1, 2, 3], [43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43]];
			weapon_bazooka_aimforward = [[0], [-44], [-55]];
			weapon_bazooka_aim45 = [[3], [-44], [-55]];
			weapon_bazooka_aimup = [[6], [-44], [-55]];
			weapon_bazooka_aim45down = [[9], [-44], [-55]];
			weapon_bazooka_aimdown = [[12], [-44], [-55]];
			weapon_bazooka_shootforward = [[2, 2, 1, 0], [-48, -48, -46, -44], [-55, -55, -55, -55]];
			weapon_bazooka_shoot45 = [[5, 5, 4, 3], [-47, -47, -46, -44], [-52, -52, -53, -55]];
			weapon_bazooka_shootup = [[8, 8, 7, 6], [-44, -44, -44, -44], [-51, -51, -53, -55]];
			weapon_bazooka_shoot45down = [[11, 11, 10, 9], [-47, -47, -45, -44], [-58, -58, -56, -55]];
			weapon_bazooka_shootdown = [[14, 14, 13, 12], [-44, -44, -44, -44], [-59, -59, -57, -55]];
			weapon_bazooka_duck = [[15, 15, 15, 15], [-46, -46, -41, -35], [-48, -47, -47, -44]];
			weapon_bazooka_turnaround = [[6, 6, 6, 6, 6], [-69, -69, -69, -69, -69], [-40, -40, -40, -40, -40]];
			weapon_bazooka_hang = [[6], [-56], [-33]];
			weapon_bazooka_grab = [[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], [-57, -55, -53, -50, -51, -54, -56, -57, -57, -58, -58, -57, -57, -56], [-33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33]];
			weapon_bazooka_monkeybars = [[6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6], [-58, -56, -54, -51, -48, -49, -53, -56, -57, -58, -59, -60, -61, -61, -60, -59], [-33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -33, -32, -32, -33]];
			weapon_whip_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8, -8], [21, 21, 21, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 22, 22, 22, 21, 21, 21]];
			weapon_whip_run = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-9, -11, -13, -14, -16, -14, -13, -12, -9, -4, 1, 5, 5, 3, 3, -2], [21, 21, 20, 19, 17, 17, 19, 21, 21, 20, 18, 16, 13, 14, 15, 19]];
			weapon_whip_jump = [[0, 0, 0], [-8, -8, -8], [21, 20, 20]];
			weapon_whip_fall = [[0, 0, 0], [-8, -8, -8], [20, 20, 21]];
			weapon_whip_attack = [[0, 4, 5, 6, 7, 7, 8, 3, 1, 2, 1, 1, 1, 1, 1, 0, 0], [-8, -8, -8, -8, -8, -8, -8, -16, -8, -8, -8, -8, -8, -8, -8, 2, 2], [21, 21, 21, 21, 21, 21, 21, 12, 21, 21, 21, 21, 21, 21, 21, 18, 18]];
			weapon_whip_duck = [[0, 0, 0, 0], [-10, -12, -18, -17], [20, 18, 17, 10]];
			weapon_whip_turnaround = [[0, 0, 0, 0, 0], [-16, -16, -16, -16, -16], [7, 7, 7, 7, 7]];
			weapon_whip_hang = [[0], [-5], [21]];
			weapon_whip_grab = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-6, -3, 0, 3, 1, -1, -5, -6, -6, -7, -7, -6, -6, -5], [21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21]];
			weapon_whip_monkeybars = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-7, -4, -1, 3, 7, 4, 1, -3, -6, -8, -9, -11, -12, -10, -9, -8], [21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21]];
			torsoOffsetsX = [0, 0, 0, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 4, 4, 4, 4, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -15, -28, -39, -50, -50, -50, -50, -50, -50, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			torsoOffsetsY = [-61, -60, -59, -56, -59, -61, -62, -64, -62, -60, -58, -56, -58, -61, -62, -64, -62, -60, -58, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -54, -49, -45, -41, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -63, -51, -38, -23, -23, -23, -23, -23, -23, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61, -61];
			capeOffsetsXGrab = [0, 3, 5, 8, 7, 4, 2, 1, 0, 1];
			capeOffsetsXMonkeybars = [0, 2, 4, 7, 9, 8, 5, 4, 1, 0, -1, -2, -3, -2, -2, -1];
			weaponCycleData = [];
			shoot_longgun_offsetsX = [18, 10, 10, 5, 5];
			shoot_longgun_offsetsY = [28, 15, 55, -5, 90];
			shoot_pistol_offsetsX = [42, 22, 25, 0, 35];
			shoot_pistol_offsetsY = [17, 5, 48, -15, 85];
			shoot_gatling_offsetsX = [18, 20, 10, 25, -10];
			shoot_gatling_offsetsY = [42, 15, 55, -5, 90];
			shoot_bazooka_offsetsX = [18, 10, 15, 5, 10];
			shoot_bazooka_offsetsY = [22, 15, 50, -5, 84];
			shoot_toss_offsetsX = [18, 10, 10, 5, 5];
			shoot_toss_offsetsY = [28, 15, 55, -5, 90];
			object_throw_offsetsX = [-8, -15, -15, -15, 11];
			object_throw_offsetsY = [-26, -23, -23, -23, -23, -25];
			object_pickup_offsetsX = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0];
			object_pickup_offsetsY = [56, 56, 49, 44, 44, 44, 35, 17, -9, -27];
			attackRect = new Rectangle(0, 0, 10, 10);
			punch1_attackRect = new Rectangle(0, 11, 50, 35);
			punch2_attackRect = new Rectangle(0, 11, 50, 35);
			uppercut_attackRect = new Rectangle(0, -4, 50, 50);
			gloves_punch1_attackRect = new Rectangle(0, 11, 50, 35);
			gloves_punch2_attackRect = new Rectangle(0, 11, 50, 35);
			gloves_uppercut_attackRect = new Rectangle(0, -4, 50, 50);
			weapon2_swing1_attackRect = new Rectangle(0, 1, 80, 50);
			weapon2_swing2_attackRect = new Rectangle(0, 1, 80, 50);
			weapon2_uppercut_attackRect = new Rectangle(0, 6, 80, 65);
			weapon2b_swing1_attackRect = new Rectangle(0, 1, 80, 50);
			weapon2b_swing2_attackRect = new Rectangle(0, 1, 80, 50);
			weapon2b_uppercut_attackRect = new Rectangle(0, 6, 80, 65);
			weapon1_swing1_attackRect = new Rectangle(0, 1, 80, 50);
			weapon1_swing2_attackRect = new Rectangle(0, 1, 80, 50);
			weapon1_uppercut_attackRect = new Rectangle(0, 6, 80, 65);
			whip_attackRect = new Rectangle(0, 0, 145, 50);
			weapon_gun_attackRect = new Rectangle(0, 0, 0, 0);
			punch1_frameRange = [0, 8, 6];
			punch2_frameRange = [0, 8, 6];
			uppercut_frameRange = [1, 8, 10];
			gloves_punch1_frameRange = [0, 8, 6];
			gloves_punch2_frameRange = [0, 8, 6];
			gloves_uppercut_frameRange = [1, 8, 10];
			weapon2_swing1_frameRange = [2, 15, 9];
			weapon2_swing2_frameRange = [2, 11, 9];
			weapon2_uppercut_frameRange = [2, 12, 9];
			weapon2b_swing1_frameRange = [2, 15, 9];
			weapon2b_swing2_frameRange = [2, 11, 9];
			weapon2b_uppercut_frameRange = [2, 12, 9];
			weapon1_swing1_frameRange = [2, 11, 8];
			weapon1_swing2_frameRange = [2, 10, 7];
			weapon1_uppercut_frameRange = [2, 10, 7];
			whip_frameRange = [7, 12, 10];
			weapon_gun_frameRange = [999, 999, 999];
			super(_arg1);
		}
		override public function defineVars(){
			height = 15;
			width = 15;
			spritewidth = 74;
			spriteheight = 60;
			spriteCenterX = 37;
			spriteCenterY = 30;
			spriteTargetX = 37;
			spriteTargetY = 30;
			sheetWidth = 17;
			sheetHeight = 10;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 8;
			walkspeed = 8;
			jumpspeed = 0;
			jumpstart = -23;
			flipBlitOffset = 300;
			collRect = new Rectangle(-15, -80, 30, 90);
			standCollRect = new Rectangle(-15, -63, 30, 73);
			jumpCollRect = new Rectangle(-15, -63, 30, 73);
			duckCollRect = new Rectangle(-15, -20, 30, 30);
			gravity = 2;
			normalgravity = 2;
			jumpgravity = 2;
			currentHealth = 400;
			maxHealth = 400;
			stunDuration = 50;
			hitDuration = 30;
		}
		override public function grabAnimationCycle():Array{
			var _local4:Array;
			var _local1:CactusChar = this;
			var _local2:GameControls = _local1.gameObj.gameControls;
			var _local3:GameDisplay = _local1.gameObj.gameDisplay;
			if (_local1.isFinishingLevel){
				_local4 = _local1.pickup_mapCycleFrames;
			} else {
				if (_local1.isDead){
					if (_local1.jump){
						_local4 = _local1.fall_dieCycleFrames;
					} else {
						_local4 = _local1.deadCycleFrames;
					};
				} else {
					if (_local1.isHit){
						if ((((_local1.hasWeaponType == "none")) || ((_local1.hasWeaponType == "punch")))){
							_local4 = _local1.hitCycleFrames;
						} else {
							_local4 = _local1.gloves_hitCycleFrames;
						};
					} else {
						if (_local1.isGrabbing){
							if (_local1.isStartingGrabbing){
								_local4 = _local1.grabCycleFrames;
							} else {
								if (_local1.isWalking){
									_local4 = _local1.monkeybarsCycleFrames;
								} else {
									_local4 = _local1.grabbingCycleFrames;
								};
							};
						} else {
							if (_local1.isGrabbingObject){
								_local4 = _local1.pickup_objectCycleFrames;
							} else {
								if (_local1.isThrowingObject){
									_local4 = _local1.throw_objectCycleFrames;
								} else {
									if (_local1.isAttacking){
										if (_local1.hasWeaponType == "none"){
											if (_local1.isFinalBlow){
												_local4 = _local1.uppercutCycleFrames;
											} else {
												if (_local1.attackVariation == 2){
													_local4 = _local1.punch2CycleFrames;
												} else {
													_local4 = _local1.punch1CycleFrames;
												};
											};
										} else {
											if (_local1.hasWeaponType == "toss"){
												_local4 = _local1.throw_grenadeCycleFrames;
											} else {
												if (_local1.hasWeaponType == "gloves"){
													if (_local1.isFinalBlow){
														_local4 = _local1.uppercutCycleFrames;
													} else {
														if (_local1.attackVariation == 2){
															_local4 = _local1.punch2CycleFrames;
														} else {
															_local4 = _local1.punch1CycleFrames;
														};
													};
												} else {
													if (_local1.hasWeaponType == "weapon2"){
														if (_local1.isFinalBlow){
															_local4 = _local1.uppercut_weapon2CycleFrames;
														} else {
															if (_local1.attackVariation == 2){
																_local4 = _local1.swing2_weapon2CycleFrames;
															} else {
																_local4 = _local1.swing1_weapon2CycleFrames;
															};
														};
													} else {
														if (_local1.hasWeaponType == "weapon2b"){
															if (_local1.isFinalBlow){
																_local4 = _local1.uppercut_weapon2bCycleFrames;
															} else {
																if (_local1.attackVariation == 2){
																	_local4 = _local1.swing2_weapon2bCycleFrames;
																} else {
																	_local4 = _local1.swing1_weapon2bCycleFrames;
																};
															};
														} else {
															if (_local1.hasWeaponType == "weapon1"){
																if (_local1.isFinalBlow){
																	_local4 = _local1.uppercut_weapon1CycleFrames;
																} else {
																	if (_local1.attackVariation == 2){
																		_local4 = _local1.swing2_weapon1CycleFrames;
																	} else {
																		_local4 = _local1.swing1_weapon1CycleFrames;
																	};
																};
															} else {
																if (_local1.hasWeaponType == "longgun"){
																	if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.shoot_longgun_45CycleFrames;
																		} else {
																			_local4 = _local1.shoot_longgun_upCycleFrames;
																		};
																	} else {
																		if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.shoot_longgun_45downCycleFrames;
																			} else {
																				_local4 = _local1.shoot_longgun_downCycleFrames;
																			};
																		} else {
																			_local4 = _local1.shoot_longgun_forwardCycleFrames;
																		};
																	};
																} else {
																	if (_local1.hasWeaponType == "gatling"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.shoot_gatling_45CycleFrames;
																			} else {
																				_local4 = _local1.shoot_gatling_upCycleFrames;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.shoot_gatling_45downCycleFrames;
																				} else {
																					_local4 = _local1.shoot_gatling_downCycleFrames;
																				};
																			} else {
																				_local4 = _local1.shoot_gatling_forwardCycleFrames;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "bazooka"){
																			if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.shoot_bazooka_45CycleFrames;
																				} else {
																					_local4 = _local1.shoot_bazooka_upCycleFrames;
																				};
																			} else {
																				if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.shoot_bazooka_45downCycleFrames;
																					} else {
																						_local4 = _local1.shoot_bazooka_downCycleFrames;
																					};
																				} else {
																					_local4 = _local1.shoot_bazooka_forwardCycleFrames;
																				};
																			};
																		} else {
																			if (_local1.hasWeaponType == "pistol"){
																				if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.shoot_pistol_45CycleFrames;
																					} else {
																						_local4 = _local1.shoot_pistol_upCycleFrames;
																					};
																				} else {
																					if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.shoot_pistol_45downCycleFrames;
																						} else {
																							_local4 = _local1.shoot_pistol_downCycleFrames;
																						};
																					} else {
																						_local4 = _local1.shoot_pistol_forwardCycleFrames;
																					};
																				};
																			} else {
																				if (_local1.hasWeaponType == "whip"){
																					_local4 = _local1.attack_whipCycleFrames;
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									} else {
										if (((_local1.isTurning) && (!(_local1.jump)))){
											if (_local1.isCarryingObject){
												_local4 = _local1.turnaround_objectCycleFrames;
											} else {
												_local4 = _local1.turnaroundCycleFrames;
											};
										} else {
											if (_local1.jump){
												if (_local1.isCarryingObject){
													_local4 = _local1.stand_objectCycleFrames;
												} else {
													if (_local1.hasWeaponType == "none"){
														if (_local1.jumpspeed < 0){
															_local4 = _local1.jumpCycleFrames;
														} else {
															_local4 = _local1.fallCycleFrames;
														};
													} else {
														if (_local1.hasWeaponType == "toss"){
															if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																if (_local1.aimAngleForward){
																	_local4 = _local1.aim_tosser_45CycleFrames;
																} else {
																	_local4 = _local1.aim_tosser_upCycleFrames;
																};
															} else {
																if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.aim_tosser_45downCycleFrames;
																	} else {
																		_local4 = _local1.aim_tosser_downCycleFrames;
																	};
																} else {
																	if (_local1.jumpspeed < 0){
																		_local4 = _local1.jumpCycleFrames;
																	} else {
																		_local4 = _local1.fallCycleFrames;
																	};
																};
															};
														} else {
															if (_local1.hasWeaponType == "gloves"){
																_local4 = _local1.jump_glovesCycleFrames;
															} else {
																if (_local1.hasWeaponType == "weapon2"){
																	_local4 = _local1.stand_weapon2CycleFrames;
																} else {
																	if (_local1.hasWeaponType == "weapon2b"){
																		_local4 = _local1.stand_weapon2bCycleFrames;
																	} else {
																		if (_local1.hasWeaponType == "weapon1"){
																			_local4 = _local1.stand_weapon1CycleFrames;
																		} else {
																			if (_local1.hasWeaponType == "longgun"){
																				if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.aim_longgun_45CycleFrames;
																					} else {
																						_local4 = _local1.aim_longgun_upCycleFrames;
																					};
																				} else {
																					if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.aim_longgun_45downCycleFrames;
																						} else {
																							_local4 = _local1.aim_longgun_downCycleFrames;
																						};
																					} else {
																						_local4 = _local1.aim_longgun_forwardCycleFrames;
																					};
																				};
																			} else {
																				if (_local1.hasWeaponType == "gatling"){
																					if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.aim_gatling_45CycleFrames;
																						} else {
																							_local4 = _local1.aim_gatling_upCycleFrames;
																						};
																					} else {
																						if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																							if (_local1.aimAngleForward){
																								_local4 = _local1.aim_gatling_45downCycleFrames;
																							} else {
																								_local4 = _local1.aim_gatling_downCycleFrames;
																							};
																						} else {
																							_local4 = _local1.aim_gatling_forwardCycleFrames;
																						};
																					};
																				} else {
																					if (_local1.hasWeaponType == "bazooka"){
																						if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																							if (_local1.aimAngleForward){
																								_local4 = _local1.aim_bazooka_45CycleFrames;
																							} else {
																								_local4 = _local1.aim_bazooka_upCycleFrames;
																							};
																						} else {
																							if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																								if (_local1.aimAngleForward){
																									_local4 = _local1.aim_bazooka_45downCycleFrames;
																								} else {
																									_local4 = _local1.aim_bazooka_downCycleFrames;
																								};
																							} else {
																								_local4 = _local1.aim_bazooka_forwardCycleFrames;
																							};
																						};
																					} else {
																						if (_local1.hasWeaponType == "pistol"){
																							if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																								if (_local1.aimAngleForward){
																									_local4 = _local1.aim_pistol_45CycleFrames;
																								} else {
																									_local4 = _local1.aim_pistol_upCycleFrames;
																								};
																							} else {
																								if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_pistol_45downCycleFrames;
																									} else {
																										_local4 = _local1.aim_pistol_downCycleFrames;
																									};
																								} else {
																									_local4 = _local1.stand_pistolCycleFrames;
																								};
																							};
																						} else {
																							if (_local1.hasWeaponType == "whip"){
																								if (_local1.jumpspeed < 0){
																									_local4 = _local1.jump_whipCycleFrames;
																								} else {
																									_local4 = _local1.fall_whipCycleFrames;
																								};
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
												_local1.isTurning = false;
												_local1.isSkidding = false;
											} else {
												if (((_local1.isWalking) && (!(_local1.isSkidding)))){
													if (_local1.isCarryingObject){
														_local4 = _local1.run_objectCycleFrames;
													} else {
														if (_local1.hasWeaponType == "none"){
															_local4 = _local1.runCycleFrames;
														} else {
															if (_local1.hasWeaponType == "toss"){
																if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.aim_tosser_45CycleFrames;
																	} else {
																		_local4 = _local1.aim_tosser_upCycleFrames;
																	};
																} else {
																	if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.aim_tosser_45downCycleFrames;
																		} else {
																			_local4 = _local1.aim_tosser_downCycleFrames;
																		};
																	} else {
																		_local4 = _local1.runCycleFrames;
																	};
																};
															} else {
																if (_local1.hasWeaponType == "gloves"){
																	_local4 = _local1.run_glovesCycleFrames;
																} else {
																	if (_local1.hasWeaponType == "weapon2"){
																		_local4 = _local1.run_weapon2CycleFrames;
																	} else {
																		if (_local1.hasWeaponType == "weapon2b"){
																			_local4 = _local1.run_weapon2bCycleFrames;
																		} else {
																			if (_local1.hasWeaponType == "weapon1"){
																				_local4 = _local1.run_weapon1CycleFrames;
																			} else {
																				if (_local1.hasWeaponType == "longgun"){
																					if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.aim_longgun_45CycleFrames;
																						} else {
																							_local4 = _local1.aim_longgun_upCycleFrames;
																						};
																					} else {
																						if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																							if (_local1.aimAngleForward){
																								_local4 = _local1.aim_longgun_45downCycleFrames;
																							} else {
																								_local4 = _local1.aim_longgun_downCycleFrames;
																							};
																						} else {
																							_local4 = _local1.aim_longgun_forwardCycleFrames;
																						};
																					};
																				} else {
																					if (_local1.hasWeaponType == "gatling"){
																						if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																							if (_local1.aimAngleForward){
																								_local4 = _local1.aim_gatling_45CycleFrames;
																							} else {
																								_local4 = _local1.aim_gatling_upCycleFrames;
																							};
																						} else {
																							if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																								if (_local1.aimAngleForward){
																									_local4 = _local1.aim_gatling_45downCycleFrames;
																								} else {
																									_local4 = _local1.aim_gatling_downCycleFrames;
																								};
																							} else {
																								_local4 = _local1.aim_gatling_forwardCycleFrames;
																							};
																						};
																					} else {
																						if (_local1.hasWeaponType == "bazooka"){
																							if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																								if (_local1.aimAngleForward){
																									_local4 = _local1.aim_bazooka_45CycleFrames;
																								} else {
																									_local4 = _local1.aim_bazooka_upCycleFrames;
																								};
																							} else {
																								if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_bazooka_45downCycleFrames;
																									} else {
																										_local4 = _local1.aim_bazooka_downCycleFrames;
																									};
																								} else {
																									_local4 = _local1.aim_bazooka_forwardCycleFrames;
																								};
																							};
																						} else {
																							if (_local1.hasWeaponType == "pistol"){
																								if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_pistol_45CycleFrames;
																									} else {
																										_local4 = _local1.aim_pistol_upCycleFrames;
																									};
																								} else {
																									if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																										if (_local1.aimAngleForward){
																											_local4 = _local1.aim_pistol_45downCycleFrames;
																										} else {
																											_local4 = _local1.aim_pistol_downCycleFrames;
																										};
																									} else {
																										_local4 = _local1.run_pistolCycleFrames;
																									};
																								};
																							} else {
																								if (_local1.hasWeaponType == "whip"){
																									_local4 = _local1.run_whipCycleFrames;
																								};
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												} else {
													if (_local1.duck){
														if ((((_local1.hasWeaponType == "none")) || ((_local1.hasWeaponType == "toss")))){
															_local4 = _local1.duckCycleFrames;
														} else {
															if (_local1.hasWeaponType == "gloves"){
																_local4 = _local1.duck_glovesCycleFrames;
															} else {
																if (_local1.hasWeaponType == "weapon2"){
																	_local4 = _local1.duck_weapon2CycleFrames;
																} else {
																	if (_local1.hasWeaponType == "weapon2b"){
																		_local4 = _local1.duck_weapon2bCycleFrames;
																	} else {
																		if (_local1.hasWeaponType == "weapon1"){
																			_local4 = _local1.duck_weapon1CycleFrames;
																		} else {
																			if (_local1.hasWeaponType == "longgun"){
																				_local4 = _local1.duck_longgunCycleFrames;
																			} else {
																				if (_local1.hasWeaponType == "pistol"){
																					_local4 = _local1.duck_pistolCycleFrames;
																				} else {
																					if (_local1.hasWeaponType == "gatling"){
																						_local4 = _local1.duck_gatlingCycleFrames;
																					} else {
																						if (_local1.hasWeaponType == "bazooka"){
																							_local4 = _local1.duck_bazookaCycleFrames;
																						} else {
																							if (_local1.hasWeaponType == "whip"){
																								_local4 = _local1.duck_whipCycleFrames;
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													} else {
														if (_local1.isSkidding){
															if (_local1.isCarryingObject){
																_local4 = _local1.stand_objectCycleFrames;
															} else {
																if (_local1.hasWeaponType == "none"){
																	_local4 = _local1.skidCycleFrames;
																} else {
																	if (_local1.hasWeaponType == "toss"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.aim_tosser_45CycleFrames;
																			} else {
																				_local4 = _local1.aim_tosser_upCycleFrames;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.aim_tosser_45downCycleFrames;
																				} else {
																					_local4 = _local1.aim_tosser_downCycleFrames;
																				};
																			} else {
																				_local4 = _local1.skidCycleFrames;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "gloves"){
																			_local4 = _local1.stand_glovesCycleFrames;
																		} else {
																			if (_local1.hasWeaponType == "weapon2"){
																				_local4 = _local1.stand_weapon2CycleFrames;
																			} else {
																				if (_local1.hasWeaponType == "weapon2b"){
																					_local4 = _local1.stand_weapon2bCycleFrames;
																				} else {
																					if (_local1.hasWeaponType == "weapon1"){
																						_local4 = _local1.stand_weapon1CycleFrames;
																					} else {
																						if (_local1.hasWeaponType == "longgun"){
																							if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																								if (_local1.aimAngleForward){
																									_local4 = _local1.aim_longgun_45CycleFrames;
																								} else {
																									_local4 = _local1.aim_longgun_upCycleFrames;
																								};
																							} else {
																								if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_longgun_45downCycleFrames;
																									} else {
																										_local4 = _local1.aim_longgun_downCycleFrames;
																									};
																								} else {
																									_local4 = _local1.aim_longgun_forwardCycleFrames;
																								};
																							};
																						} else {
																							if (_local1.hasWeaponType == "gatling"){
																								if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_gatling_45CycleFrames;
																									} else {
																										_local4 = _local1.aim_gatling_upCycleFrames;
																									};
																								} else {
																									if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																										if (_local1.aimAngleForward){
																											_local4 = _local1.aim_gatling_45downCycleFrames;
																										} else {
																											_local4 = _local1.aim_gatling_downCycleFrames;
																										};
																									} else {
																										_local4 = _local1.aim_gatling_forwardCycleFrames;
																									};
																								};
																							} else {
																								if (_local1.hasWeaponType == "bazooka"){
																									if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																										if (_local1.aimAngleForward){
																											_local4 = _local1.aim_bazooka_45CycleFrames;
																										} else {
																											_local4 = _local1.aim_bazooka_upCycleFrames;
																										};
																									} else {
																										if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																											if (_local1.aimAngleForward){
																												_local4 = _local1.aim_bazooka_45downCycleFrames;
																											} else {
																												_local4 = _local1.aim_bazooka_downCycleFrames;
																											};
																										} else {
																											_local4 = _local1.aim_bazooka_forwardCycleFrames;
																										};
																									};
																								} else {
																									if (_local1.hasWeaponType == "pistol"){
																										if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																											if (_local1.aimAngleForward){
																												_local4 = _local1.aim_pistol_45CycleFrames;
																											} else {
																												_local4 = _local1.aim_pistol_upCycleFrames;
																											};
																										} else {
																											if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																												if (_local1.aimAngleForward){
																													_local4 = _local1.aim_pistol_45downCycleFrames;
																												} else {
																													_local4 = _local1.aim_pistol_downCycleFrames;
																												};
																											} else {
																												_local4 = _local1.stand_pistolCycleFrames;
																											};
																										};
																									} else {
																										if (_local1.hasWeaponType == "whip"){
																											_local4 = _local1.stand_whipCycleFrames;
																										};
																									};
																								};
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														} else {
															if (_local1.isCarryingObject){
																_local4 = _local1.stand_objectCycleFrames;
															} else {
																if (_local1.hasWeaponType == "none"){
																	_local4 = _local1.standCycleFrames;
																} else {
																	if (_local1.hasWeaponType == "toss"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.aim_tosser_45CycleFrames;
																			} else {
																				_local4 = _local1.aim_tosser_upCycleFrames;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.aim_tosser_45downCycleFrames;
																				} else {
																					_local4 = _local1.aim_tosser_downCycleFrames;
																				};
																			} else {
																				_local4 = _local1.standCycleFrames;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "gloves"){
																			_local4 = _local1.stand_glovesCycleFrames;
																		} else {
																			if (_local1.hasWeaponType == "weapon2"){
																				_local4 = _local1.stand_weapon2CycleFrames;
																			} else {
																				if (_local1.hasWeaponType == "weapon2b"){
																					_local4 = _local1.stand_weapon2bCycleFrames;
																				} else {
																					if (_local1.hasWeaponType == "weapon1"){
																						_local4 = _local1.stand_weapon1CycleFrames;
																					} else {
																						if (_local1.hasWeaponType == "longgun"){
																							if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																								if (_local1.aimAngleForward){
																									_local4 = _local1.aim_longgun_45CycleFrames;
																								} else {
																									_local4 = _local1.aim_longgun_upCycleFrames;
																								};
																							} else {
																								if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_longgun_45downCycleFrames;
																									} else {
																										_local4 = _local1.aim_longgun_downCycleFrames;
																									};
																								} else {
																									_local4 = _local1.aim_longgun_forwardCycleFrames;
																								};
																							};
																						} else {
																							if (_local1.hasWeaponType == "gatling"){
																								if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																									if (_local1.aimAngleForward){
																										_local4 = _local1.aim_gatling_45CycleFrames;
																									} else {
																										_local4 = _local1.aim_gatling_upCycleFrames;
																									};
																								} else {
																									if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																										if (_local1.aimAngleForward){
																											_local4 = _local1.aim_gatling_45downCycleFrames;
																										} else {
																											_local4 = _local1.aim_gatling_downCycleFrames;
																										};
																									} else {
																										_local4 = _local1.aim_gatling_forwardCycleFrames;
																									};
																								};
																							} else {
																								if (_local1.hasWeaponType == "bazooka"){
																									if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																										if (_local1.aimAngleForward){
																											_local4 = _local1.aim_bazooka_45CycleFrames;
																										} else {
																											_local4 = _local1.aim_bazooka_upCycleFrames;
																										};
																									} else {
																										if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																											if (_local1.aimAngleForward){
																												_local4 = _local1.aim_bazooka_45downCycleFrames;
																											} else {
																												_local4 = _local1.aim_bazooka_downCycleFrames;
																											};
																										} else {
																											_local4 = _local1.aim_bazooka_forwardCycleFrames;
																										};
																									};
																								} else {
																									if (_local1.hasWeaponType == "pistol"){
																										if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																											if (_local1.aimAngleForward){
																												_local4 = _local1.aim_pistol_45CycleFrames;
																											} else {
																												_local4 = _local1.aim_pistol_upCycleFrames;
																											};
																										} else {
																											if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																												if (_local1.aimAngleForward){
																													_local4 = _local1.aim_pistol_45downCycleFrames;
																												} else {
																													_local4 = _local1.aim_pistol_downCycleFrames;
																												};
																											} else {
																												_local4 = _local1.stand_pistolCycleFrames;
																											};
																										};
																									} else {
																										if (_local1.hasWeaponType == "whip"){
																											_local4 = _local1.stand_whipCycleFrames;
																										};
																									};
																								};
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local4);
		}
		public function grabWeaponAnimationCycle():Array{
			var _local4:Array;
			var _local1:CactusChar = this;
			var _local2:GameControls = _local1.gameObj.gameControls;
			var _local3:GameDisplay = _local1.gameObj.gameDisplay;
			if (_local1.isStartingGrabbing){
				if (_local1.hasWeaponType == "weapon2"){
					_local4 = _local1.weapon_weapon2_grab;
				} else {
					if (_local1.hasWeaponType == "weapon2b"){
						_local4 = _local1.weapon_weapon2b_grab;
					} else {
						if (_local1.hasWeaponType == "weapon1"){
							_local4 = _local1.weapon_weapon1_grab;
						} else {
							if (_local1.hasWeaponType == "gloves"){
								_local4 = _local1.weapon_gloves_grab;
							} else {
								if (_local1.hasWeaponType == "longgun"){
									_local4 = _local1.weapon_longgun_grab;
								} else {
									if (_local1.hasWeaponType == "pistol"){
										_local4 = _local1.weapon_pistol_grab;
									} else {
										if (_local1.hasWeaponType == "gatling"){
											_local4 = _local1.weapon_gatling_grab;
										} else {
											if (_local1.hasWeaponType == "bazooka"){
												_local4 = _local1.weapon_bazooka_grab;
											} else {
												if (_local1.hasWeaponType == "whip"){
													_local4 = _local1.weapon_whip_grab;
												};
											};
										};
									};
								};
							};
						};
					};
				};
			} else {
				if (((_local1.isGrabbing) && (_local1.isWalking))){
					if (_local1.hasWeaponType == "weapon2"){
						_local4 = _local1.weapon_weapon2_monkeybars;
					} else {
						if (_local1.hasWeaponType == "weapon2b"){
							_local4 = _local1.weapon_weapon2b_monkeybars;
						} else {
							if (_local1.hasWeaponType == "weapon1"){
								_local4 = _local1.weapon_weapon1_monkeybars;
							} else {
								if (_local1.hasWeaponType == "gloves"){
									_local4 = _local1.weapon_gloves_monkeybars;
								} else {
									if (_local1.hasWeaponType == "longgun"){
										_local4 = _local1.weapon_longgun_monkeybars;
									} else {
										if (_local1.hasWeaponType == "pistol"){
											_local4 = _local1.weapon_pistol_monkeybars;
										} else {
											if (_local1.hasWeaponType == "gatling"){
												_local4 = _local1.weapon_gatling_monkeybars;
											} else {
												if (_local1.hasWeaponType == "bazooka"){
													_local4 = _local1.weapon_bazooka_monkeybars;
												} else {
													if (_local1.hasWeaponType == "whip"){
														_local4 = _local1.weapon_whip_monkeybars;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				} else {
					if (_local1.isGrabbing){
						if (_local1.hasWeaponType == "weapon2"){
							_local4 = _local1.weapon_weapon2_hang;
						} else {
							if (_local1.hasWeaponType == "weapon2b"){
								_local4 = _local1.weapon_weapon2b_hang;
							} else {
								if (_local1.hasWeaponType == "weapon1"){
									_local4 = _local1.weapon_weapon1_hang;
								} else {
									if (_local1.hasWeaponType == "gloves"){
										_local4 = _local1.weapon_gloves_hang;
									} else {
										if (_local1.hasWeaponType == "longgun"){
											_local4 = _local1.weapon_longgun_hang;
										} else {
											if (_local1.hasWeaponType == "pistol"){
												_local4 = _local1.weapon_pistol_hang;
											} else {
												if (_local1.hasWeaponType == "gatling"){
													_local4 = _local1.weapon_gatling_hang;
												} else {
													if (_local1.hasWeaponType == "bazooka"){
														_local4 = _local1.weapon_bazooka_hang;
													} else {
														if (_local1.hasWeaponType == "whip"){
															_local4 = _local1.weapon_whip_hang;
														};
													};
												};
											};
										};
									};
								};
							};
						};
					} else {
						if (_local1.isHit){
							if (_local1.hasWeaponType == "weapon2"){
								_local4 = _local1.weapon_weapon2_turnaround;
							} else {
								if (_local1.hasWeaponType == "weapon2b"){
									_local4 = _local1.weapon_weapon2b_turnaround;
								} else {
									if (_local1.hasWeaponType == "weapon1"){
										_local4 = _local1.weapon_weapon1_turnaround;
									} else {
										if (_local1.hasWeaponType == "gloves"){
											_local4 = _local1.weapon_gloves_turnaround;
										} else {
											if (_local1.hasWeaponType == "longgun"){
												_local4 = _local1.weapon_longgun_turnaround;
											} else {
												if (_local1.hasWeaponType == "pistol"){
													_local4 = _local1.weapon_pistol_turnaround;
												} else {
													if (_local1.hasWeaponType == "gatling"){
														_local4 = _local1.weapon_gatling_turnaround;
													} else {
														if (_local1.hasWeaponType == "bazooka"){
															_local4 = _local1.weapon_bazooka_turnaround;
														} else {
															if (_local1.hasWeaponType == "whip"){
																_local4 = _local1.weapon_whip_turnaround;
															};
														};
													};
												};
											};
										};
									};
								};
							};
						} else {
							if (_local1.isAttacking){
								if (_local1.hasWeaponType == "weapon2"){
									if (_local1.isFinalBlow){
										_local4 = _local1.weapon_weapon2_uppercut;
									} else {
										if (_local1.attackVariation == 2){
											_local4 = _local1.weapon_weapon2_swing2;
										} else {
											_local4 = _local1.weapon_weapon2_swing1;
										};
									};
								} else {
									if (_local1.hasWeaponType == "weapon2b"){
										if (_local1.isFinalBlow){
											_local4 = _local1.weapon_weapon2b_uppercut;
										} else {
											if (_local1.attackVariation == 2){
												_local4 = _local1.weapon_weapon2b_swing2;
											} else {
												_local4 = _local1.weapon_weapon2b_swing1;
											};
										};
									} else {
										if (_local1.hasWeaponType == "weapon1"){
											if (_local1.isFinalBlow){
												_local4 = _local1.weapon_weapon1_uppercut;
											} else {
												if (_local1.attackVariation == 2){
													_local4 = _local1.weapon_weapon1_swing2;
												} else {
													_local4 = _local1.weapon_weapon1_swing1;
												};
											};
										} else {
											if (_local1.hasWeaponType == "gloves"){
												if (_local1.isFinalBlow){
													_local4 = _local1.weapon_gloves_uppercut;
												} else {
													if (_local1.attackVariation == 2){
														_local4 = _local1.weapon_gloves_punch2;
													} else {
														_local4 = _local1.weapon_gloves_punch1;
													};
												};
											} else {
												if (_local1.hasWeaponType == "longgun"){
													if (((_local1.aimAngleUp) && (!(_local1.duck)))){
														if (_local1.aimAngleForward){
															_local4 = _local1.weapon_longgun_shoot45;
														} else {
															_local4 = _local1.weapon_longgun_shootup;
														};
													} else {
														if (((_local1.aimAngleDown) && (!(_local1.duck)))){
															if (_local1.aimAngleForward){
																_local4 = _local1.weapon_longgun_shoot45down;
															} else {
																_local4 = _local1.weapon_longgun_shootdown;
															};
														} else {
															_local4 = _local1.weapon_longgun_shootforward;
														};
													};
												} else {
													if (_local1.hasWeaponType == "gatling"){
														if (((_local1.aimAngleUp) && (!(_local1.duck)))){
															if (_local1.aimAngleForward){
																_local4 = _local1.weapon_gatling_shoot45;
															} else {
																_local4 = _local1.weapon_gatling_shootup;
															};
														} else {
															if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																if (_local1.aimAngleForward){
																	_local4 = _local1.weapon_gatling_shoot45down;
																} else {
																	_local4 = _local1.weapon_gatling_shootdown;
																};
															} else {
																_local4 = _local1.weapon_gatling_shootforward;
															};
														};
													} else {
														if (_local1.hasWeaponType == "bazooka"){
															if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																if (_local1.aimAngleForward){
																	_local4 = _local1.weapon_bazooka_shoot45;
																} else {
																	_local4 = _local1.weapon_bazooka_shootup;
																};
															} else {
																if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.weapon_bazooka_shoot45down;
																	} else {
																		_local4 = _local1.weapon_bazooka_shootdown;
																	};
																} else {
																	_local4 = _local1.weapon_bazooka_shootforward;
																};
															};
														} else {
															if (_local1.hasWeaponType == "pistol"){
																if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.weapon_pistol_shoot45;
																	} else {
																		_local4 = _local1.weapon_pistol_shootup;
																	};
																} else {
																	if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.weapon_pistol_shoot45down;
																		} else {
																			_local4 = _local1.weapon_pistol_shootdown;
																		};
																	} else {
																		_local4 = _local1.weapon_pistol_shootforward;
																	};
																};
															} else {
																if (_local1.hasWeaponType == "whip"){
																	_local4 = _local1.weapon_whip_attack;
																};
															};
														};
													};
												};
											};
										};
									};
								};
							} else {
								if (((_local1.isTurning) && (!(_local1.jump)))){
									if (_local1.hasWeaponType == "weapon2"){
										_local4 = _local1.weapon_weapon2_turnaround;
									} else {
										if (_local1.hasWeaponType == "weapon2b"){
											_local4 = _local1.weapon_weapon2b_turnaround;
										} else {
											if (_local1.hasWeaponType == "weapon1"){
												_local4 = _local1.weapon_weapon1_turnaround;
											} else {
												if (_local1.hasWeaponType == "gloves"){
													_local4 = _local1.weapon_gloves_turnaround;
												} else {
													if (_local1.hasWeaponType == "longgun"){
														_local4 = _local1.weapon_longgun_turnaround;
													} else {
														if (_local1.hasWeaponType == "pistol"){
															_local4 = _local1.weapon_pistol_turnaround;
														} else {
															if (_local1.hasWeaponType == "gatling"){
																_local4 = _local1.weapon_gatling_turnaround;
															} else {
																if (_local1.hasWeaponType == "bazooka"){
																	_local4 = _local1.weapon_bazooka_turnaround;
																} else {
																	if (_local1.hasWeaponType == "whip"){
																		_local4 = _local1.weapon_whip_turnaround;
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								} else {
									if (_local1.jump){
										if (_local1.hasWeaponType == "weapon2"){
											_local4 = _local1.weapon_weapon2_stand;
										} else {
											if (_local1.hasWeaponType == "weapon2b"){
												_local4 = _local1.weapon_weapon2b_stand;
											} else {
												if (_local1.hasWeaponType == "weapon1"){
													_local4 = _local1.weapon_weapon1_stand;
												} else {
													if (_local1.hasWeaponType == "gloves"){
														_local4 = _local1.weapon_gloves_jump;
													} else {
														if (_local1.hasWeaponType == "longgun"){
															if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																if (_local1.aimAngleForward){
																	_local4 = _local1.weapon_longgun_aim45;
																} else {
																	_local4 = _local1.weapon_longgun_aimup;
																};
															} else {
																if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.weapon_longgun_aim45down;
																	} else {
																		_local4 = _local1.weapon_longgun_aimdown;
																	};
																} else {
																	_local4 = _local1.weapon_longgun_aimforward;
																};
															};
														} else {
															if (_local1.hasWeaponType == "gatling"){
																if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.weapon_gatling_aim45;
																	} else {
																		_local4 = _local1.weapon_gatling_aimup;
																	};
																} else {
																	if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.weapon_gatling_aim45down;
																		} else {
																			_local4 = _local1.weapon_gatling_aimdown;
																		};
																	} else {
																		_local4 = _local1.weapon_gatling_aimforward;
																	};
																};
															} else {
																if (_local1.hasWeaponType == "bazooka"){
																	if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.weapon_bazooka_aim45;
																		} else {
																			_local4 = _local1.weapon_bazooka_aimup;
																		};
																	} else {
																		if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.weapon_bazooka_aim45down;
																			} else {
																				_local4 = _local1.weapon_bazooka_aimdown;
																			};
																		} else {
																			_local4 = _local1.weapon_bazooka_aimforward;
																		};
																	};
																} else {
																	if (_local1.hasWeaponType == "pistol"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.weapon_pistol_aim45;
																			} else {
																				_local4 = _local1.weapon_pistol_aimup;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_pistol_aim45down;
																				} else {
																					_local4 = _local1.weapon_pistol_aimdown;
																				};
																			} else {
																				_local4 = _local1.weapon_pistol_stand;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "whip"){
																			if (_local1.jumpspeed < 0){
																				_local4 = _local1.weapon_whip_jump;
																			} else {
																				_local4 = _local1.weapon_whip_fall;
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									} else {
										if (((_local1.isWalking) && (!(_local1.isSkidding)))){
											if (_local1.hasWeaponType == "weapon2"){
												_local4 = _local1.weapon_weapon2_run;
											} else {
												if (_local1.hasWeaponType == "weapon2b"){
													_local4 = _local1.weapon_weapon2b_run;
												} else {
													if (_local1.hasWeaponType == "weapon1"){
														_local4 = _local1.weapon_weapon1_run;
													} else {
														if (_local1.hasWeaponType == "gloves"){
															_local4 = _local1.weapon_gloves_run;
														} else {
															if (_local1.hasWeaponType == "longgun"){
																if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																	if (_local1.aimAngleForward){
																		_local4 = _local1.weapon_longgun_aim45;
																	} else {
																		_local4 = _local1.weapon_longgun_aimup;
																	};
																} else {
																	if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.weapon_longgun_aim45down;
																		} else {
																			_local4 = _local1.weapon_longgun_aimdown;
																		};
																	} else {
																		_local4 = _local1.weapon_longgun_aimforward;
																	};
																};
															} else {
																if (_local1.hasWeaponType == "gatling"){
																	if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																		if (_local1.aimAngleForward){
																			_local4 = _local1.weapon_gatling_aim45;
																		} else {
																			_local4 = _local1.weapon_gatling_aimup;
																		};
																	} else {
																		if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.weapon_gatling_aim45down;
																			} else {
																				_local4 = _local1.weapon_gatling_aimdown;
																			};
																		} else {
																			_local4 = _local1.weapon_gatling_aimforward;
																		};
																	};
																} else {
																	if (_local1.hasWeaponType == "bazooka"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.weapon_bazooka_aim45;
																			} else {
																				_local4 = _local1.weapon_bazooka_aimup;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_bazooka_aim45down;
																				} else {
																					_local4 = _local1.weapon_bazooka_aimdown;
																				};
																			} else {
																				_local4 = _local1.weapon_bazooka_aimforward;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "pistol"){
																			if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_pistol_aim45;
																				} else {
																					_local4 = _local1.weapon_pistol_aimup;
																				};
																			} else {
																				if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.weapon_pistol_aim45down;
																					} else {
																						_local4 = _local1.weapon_pistol_aimdown;
																					};
																				} else {
																					_local4 = _local1.weapon_pistol_run;
																				};
																			};
																		} else {
																			if (_local1.hasWeaponType == "whip"){
																				_local4 = _local1.weapon_whip_run;
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										} else {
											if (_local1.duck){
												if (_local1.hasWeaponType == "weapon2"){
													_local4 = _local1.weapon_weapon2_duck;
												} else {
													if (_local1.hasWeaponType == "weapon2b"){
														_local4 = _local1.weapon_weapon2b_duck;
													} else {
														if (_local1.hasWeaponType == "weapon1"){
															_local4 = _local1.weapon_weapon1_duck;
														} else {
															if (_local1.hasWeaponType == "gloves"){
																_local4 = _local1.weapon_gloves_duck;
															} else {
																if (_local1.hasWeaponType == "longgun"){
																	_local4 = _local1.weapon_longgun_duck;
																} else {
																	if (_local1.hasWeaponType == "pistol"){
																		_local4 = _local1.weapon_pistol_duck;
																	} else {
																		if (_local1.hasWeaponType == "gatling"){
																			_local4 = _local1.weapon_gatling_duck;
																		} else {
																			if (_local1.hasWeaponType == "bazooka"){
																				_local4 = _local1.weapon_bazooka_duck;
																			} else {
																				if (_local1.hasWeaponType == "whip"){
																					_local4 = _local1.weapon_whip_duck;
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											} else {
												if (_local1.isSkidding){
													if (_local1.hasWeaponType == "weapon2"){
														_local4 = _local1.weapon_weapon2_stand;
													} else {
														if (_local1.hasWeaponType == "weapon2b"){
															_local4 = _local1.weapon_weapon2b_stand;
														} else {
															if (_local1.hasWeaponType == "weapon1"){
																_local4 = _local1.weapon_weapon1_stand;
															} else {
																if (_local1.hasWeaponType == "gloves"){
																	_local4 = _local1.weapon_gloves_stand;
																} else {
																	if (_local1.hasWeaponType == "longgun"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.weapon_longgun_aim45;
																			} else {
																				_local4 = _local1.weapon_longgun_aimup;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_longgun_aim45down;
																				} else {
																					_local4 = _local1.weapon_longgun_aimdown;
																				};
																			} else {
																				_local4 = _local1.weapon_longgun_aimforward;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "gatling"){
																			if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_gatling_aim45;
																				} else {
																					_local4 = _local1.weapon_gatling_aimup;
																				};
																			} else {
																				if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.weapon_gatling_aim45down;
																					} else {
																						_local4 = _local1.weapon_gatling_aimdown;
																					};
																				} else {
																					_local4 = _local1.weapon_gatling_aimforward;
																				};
																			};
																		} else {
																			if (_local1.hasWeaponType == "bazooka"){
																				if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.weapon_bazooka_aim45;
																					} else {
																						_local4 = _local1.weapon_bazooka_aimup;
																					};
																				} else {
																					if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.weapon_bazooka_aim45down;
																						} else {
																							_local4 = _local1.weapon_bazooka_aimdown;
																						};
																					} else {
																						_local4 = _local1.weapon_bazooka_aimforward;
																					};
																				};
																			} else {
																				if (_local1.hasWeaponType == "pistol"){
																					if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.weapon_pistol_aim45;
																						} else {
																							_local4 = _local1.weapon_pistol_aimup;
																						};
																					} else {
																						if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																							if (_local1.aimAngleForward){
																								_local4 = _local1.weapon_pistol_aim45down;
																							} else {
																								_local4 = _local1.weapon_pistol_aimdown;
																							};
																						} else {
																							_local4 = _local1.weapon_pistol_stand;
																						};
																					};
																				} else {
																					if (_local1.hasWeaponType == "whip"){
																						_local4 = _local1.weapon_whip_stand;
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												} else {
													if (_local1.hasWeaponType == "weapon2"){
														_local4 = _local1.weapon_weapon2_stand;
													} else {
														if (_local1.hasWeaponType == "weapon2b"){
															_local4 = _local1.weapon_weapon2b_stand;
														} else {
															if (_local1.hasWeaponType == "weapon1"){
																_local4 = _local1.weapon_weapon1_stand;
															} else {
																if (_local1.hasWeaponType == "gloves"){
																	_local4 = _local1.weapon_gloves_stand;
																} else {
																	if (_local1.hasWeaponType == "longgun"){
																		if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																			if (_local1.aimAngleForward){
																				_local4 = _local1.weapon_longgun_aim45;
																			} else {
																				_local4 = _local1.weapon_longgun_aimup;
																			};
																		} else {
																			if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_longgun_aim45down;
																				} else {
																					_local4 = _local1.weapon_longgun_aimdown;
																				};
																			} else {
																				_local4 = _local1.weapon_longgun_aimforward;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "gatling"){
																			if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																				if (_local1.aimAngleForward){
																					_local4 = _local1.weapon_gatling_aim45;
																				} else {
																					_local4 = _local1.weapon_gatling_aimup;
																				};
																			} else {
																				if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.weapon_gatling_aim45down;
																					} else {
																						_local4 = _local1.weapon_gatling_aimdown;
																					};
																				} else {
																					_local4 = _local1.weapon_gatling_aimforward;
																				};
																			};
																		} else {
																			if (_local1.hasWeaponType == "bazooka"){
																				if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																					if (_local1.aimAngleForward){
																						_local4 = _local1.weapon_bazooka_aim45;
																					} else {
																						_local4 = _local1.weapon_bazooka_aimup;
																					};
																				} else {
																					if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.weapon_bazooka_aim45down;
																						} else {
																							_local4 = _local1.weapon_bazooka_aimdown;
																						};
																					} else {
																						_local4 = _local1.weapon_bazooka_aimforward;
																					};
																				};
																			} else {
																				if (_local1.hasWeaponType == "pistol"){
																					if (((_local1.aimAngleUp) && (!(_local1.duck)))){
																						if (_local1.aimAngleForward){
																							_local4 = _local1.weapon_pistol_aim45;
																						} else {
																							_local4 = _local1.weapon_pistol_aimup;
																						};
																					} else {
																						if (((_local1.aimAngleDown) && (!(_local1.duck)))){
																							if (_local1.aimAngleForward){
																								_local4 = _local1.weapon_pistol_aim45down;
																							} else {
																								_local4 = _local1.weapon_pistol_aimdown;
																							};
																						} else {
																							_local4 = _local1.weapon_pistol_stand;
																						};
																					};
																				} else {
																					if (_local1.hasWeaponType == "whip"){
																						_local4 = _local1.weapon_whip_stand;
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local4);
		}
		public function grabLegAnimationCycle():Array{
			var _local4:Array;
			var _local1:CactusChar = this;
			var _local2:GameControls = _local1.gameObj.gameControls;
			var _local3:GameDisplay = _local1.gameObj.gameDisplay;
			if (_local1.isFinishingLevel){
				_local4 = _local1.legs_pickup_objectCycleFrames;
			} else {
				if (_local1.isDead){
					if (_local1.jump){
						_local4 = _local1.legs_fall_dieCycleFrames;
					} else {
						_local4 = _local1.legs_deadCycleFrames;
					};
				} else {
					if (_local1.isHit){
						_local4 = _local1.legs_hitCycleFrames;
					} else {
						if (_local1.isGrabbing){
							if (_local1.isStartingGrabbing){
								_local4 = _local1.legs_grabCycleFrames;
							} else {
								if (_local1.isWalking){
									_local4 = _local1.legs_monkeybarsCycleFrames;
								} else {
									_local4 = _local1.legs_grabbingCycleFrames;
								};
							};
						} else {
							if (_local1.isGrabbingObject){
								_local4 = _local1.legs_pickup_objectCycleFrames;
							} else {
								if (_local1.isTurning){
									_local4 = _local1.legs_turnaroundCycleFrames;
								} else {
									if (_local1.jump){
										if (_local1.jumpspeed < 0){
											_local4 = _local1.legs_jumpCycleFrames;
										} else {
											_local4 = _local1.legs_fallCycleFrames;
										};
									} else {
										if (((_local1.isWalking) && (!(_local1.isSkidding)))){
											_local4 = _local1.legs_runCycleFrames;
										} else {
											if (_local1.duck){
												_local4 = _local1.legs_duckCycleFrames;
											} else {
												if (_local1.isSkidding){
													_local4 = _local1.legs_skidCycleFrames;
												} else {
													if (_local1.isAttacking){
														if (_local1.hasWeaponType == "none"){
															if (_local1.isFinalBlow){
																_local4 = _local1.legs_uppercutCycleFrames;
															} else {
																if (_local1.attackVariation == 2){
																	_local4 = _local1.legs_punch2CycleFrames;
																} else {
																	_local4 = _local1.legs_punch1CycleFrames;
																};
															};
														} else {
															if (_local1.hasWeaponType == "weapon2"){
																if (_local1.isFinalBlow){
																	_local4 = _local1.legs_uppercut_weapon2CycleFrames;
																} else {
																	if (_local1.attackVariation == 2){
																		_local4 = _local1.legs_swing2_weapon2CycleFrames;
																	} else {
																		_local4 = _local1.legs_swing1_weapon2CycleFrames;
																	};
																};
															} else {
																if (_local1.hasWeaponType == "weapon2b"){
																	if (_local1.isFinalBlow){
																		_local4 = _local1.legs_uppercut_weapon2bCycleFrames;
																	} else {
																		if (_local1.attackVariation == 2){
																			_local4 = _local1.legs_swing2_weapon2bCycleFrames;
																		} else {
																			_local4 = _local1.legs_swing1_weapon2bCycleFrames;
																		};
																	};
																} else {
																	if (_local1.hasWeaponType == "weapon1"){
																		if (_local1.isFinalBlow){
																			_local4 = _local1.legs_uppercut_weapon1CycleFrames;
																		} else {
																			if (_local1.attackVariation == 2){
																				_local4 = _local1.legs_swing2_weapon1CycleFrames;
																			} else {
																				_local4 = _local1.legs_swing1_weapon1CycleFrames;
																			};
																		};
																	} else {
																		if (_local1.hasWeaponType == "gloves"){
																			if (_local1.isFinalBlow){
																				_local4 = _local1.legs_uppercutCycleFrames;
																			} else {
																				if (_local1.attackVariation == 2){
																					_local4 = _local1.legs_punch2CycleFrames;
																				} else {
																					_local4 = _local1.legs_punch1CycleFrames;
																				};
																			};
																		} else {
																			if ((((((((_local1.hasWeaponType == "longgun")) || ((_local1.hasWeaponType == "pistol")))) || ((_local1.hasWeaponType == "gatling")))) || ((_local1.hasWeaponType == "bazooka")))){
																				if (_local1.isWalking){
																					_local4 = _local1.legs_runCycleFrames;
																				} else {
																					if (_local1.jump){
																						_local4 = _local1.legs_jumpCycleFrames;
																					} else {
																						_local4 = _local1.legs_standCycleFrames;
																					};
																				};
																			} else {
																				if (_local1.hasWeaponType == "whip"){
																					_local4 = _local1.legs_punch1CycleFrames;
																				} else {
																					if (_local1.hasWeaponType == "toss"){
																						_local4 = _local1.legs_punch2CycleFrames;
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													} else {
														_local4 = _local1.legs_standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local4);
		}
		public function getTorsoOffsetX():Number{
			var _local1:CactusChar = this;
			return (_local1.torsoOffsetsX[_local1.legAnimationFrame]);
		}
		public function getTorsoOffsetY():Number{
			var _local1:CactusChar = this;
			return (_local1.torsoOffsetsY[_local1.legAnimationFrame]);
		}
		public function getCapeOffsetX():Number{
			var _local1:CactusChar = this;
			var _local2:Number = (_local1.torsoOffsetsX[_local1.legAnimationFrame] + _local1.capeTorsoOffsetX);
			if ((((_local1.cycleName == "grabbing")) || ((_local1.cycleName == "grab")))){
				_local2 = (_local2 + _local1.capeOffsetsXGrab[(_local1.animationFrame - 188)]);
			} else {
				if (_local1.cycleName == "monkeybars"){
					_local2 = (_local2 + _local1.capeOffsetsXMonkeybars[(_local1.animationFrame - 197)]);
				};
			};
			return (_local2);
		}
		public function getCapeOffsetY():Number{
			var _local1:CactusChar = this;
			return ((_local1.torsoOffsetsY[_local1.legAnimationFrame] + _local1.capeTorsoOffsetY));
		}
		override public function endAnimationCycle(){
			var _local1:CactusChar = this;
			if (_local1.cycleName == "pickup_map"){
				_local1.gameObj.gameControls.stopCycle = true;
				_local1.gameObj.gameDisplay.startMainIrisOut();
			} else {
				if (_local1.cycleName == "dead"){
					_local1.skidSpeed = 0;
					_local1.isSkidding = false;
					_local1.isWalking = false;
					_local1.isHit = false;
					_local1.restartPlayer();
				} else {
					if ((((_local1.cycleName == "hit")) || ((_local1.cycleName == "gloves_hit")))){
						_local1.isHit = false;
						_local1.walkingDir = _local1.facingDir;
						_local1.gameObj.gameControls.stopHurtControls = false;
					} else {
						if (_local1.cycleName == "skid"){
							_local1.isSkidding = false;
						} else {
							if ((((_local1.cycleName == "turnaround")) || ((_local1.cycleName == "turnaround_object")))){
								_local1.isTurning = false;
							} else {
								if (_local1.cycleName == "unduck"){
									_local1.isDucking = false;
									_local1.duck = false;
								} else {
									if (_local1.cycleName == "grab"){
										_local1.isStartingGrabbing = false;
									} else {
										if ((((((((_local1.cycleName == "punch1")) || ((_local1.cycleName == "punch2")))) || ((_local1.cycleName == "uppercut")))) || ((_local1.cycleName == "attack_whip")))){
											_local1.isAttacking = false;
										} else {
											if ((((((_local1.cycleName == "swing1_weapon2")) || ((_local1.cycleName == "swing2_weapon2")))) || ((_local1.cycleName == "uppercut_weapon2")))){
												_local1.isAttacking = false;
											} else {
												if ((((((_local1.cycleName == "swing1_weapon2b")) || ((_local1.cycleName == "swing2_weapon2b")))) || ((_local1.cycleName == "uppercut_weapon2b")))){
													_local1.isAttacking = false;
												} else {
													if ((((((_local1.cycleName == "swing1_weapon1")) || ((_local1.cycleName == "swing2_weapon1")))) || ((_local1.cycleName == "uppercut_weapon1")))){
														_local1.isAttacking = false;
													} else {
														if (_local1.cycleName == "throw_grenade"){
															_local1.isAttacking = false;
														} else {
															if ((((((((((_local1.cycleName == "shoot_longgun_forward")) || ((_local1.cycleName == "shoot_longgun_45")))) || ((_local1.cycleName == "shoot_longgun_45down")))) || ((_local1.cycleName == "shoot_longgun_up")))) || ((_local1.cycleName == "shoot_longgun_down")))){
																if (_local1.gameObj.gameControls.keyPressedAction){
																	if (_local1.bulletsFired < _local1.bulletsPerRound){
																		_local1.cycleFrame = 0;
																		_local1.animationFrame = _local1[(_local1.cycleName + "CycleFrames")][5][0];
																	} else {
																		_local1.isAttacking = false;
																	};
																} else {
																	_local1.isAttacking = false;
																};
															} else {
																if ((((((((((_local1.cycleName == "shoot_pistol_forward")) || ((_local1.cycleName == "shoot_pistol_45")))) || ((_local1.cycleName == "shoot_pistol_45down")))) || ((_local1.cycleName == "shoot_pistol_up")))) || ((_local1.cycleName == "shoot_pistol_down")))){
																	if (_local1.gameObj.gameControls.keyPressedAction){
																		if (_local1.bulletsFired < _local1.bulletsPerRound){
																			_local1.cycleFrame = 0;
																			_local1.animationFrame = _local1[(_local1.cycleName + "CycleFrames")][5][0];
																		} else {
																			_local1.isAttacking = false;
																		};
																	} else {
																		_local1.isAttacking = false;
																	};
																} else {
																	if ((((((((((_local1.cycleName == "shoot_bazooka_forward")) || ((_local1.cycleName == "shoot_bazooka_45")))) || ((_local1.cycleName == "shoot_bazooka_45down")))) || ((_local1.cycleName == "shoot_bazooka_up")))) || ((_local1.cycleName == "shoot_bazooka_down")))){
																		if (_local1.gameObj.gameControls.keyPressedAction){
																			if (_local1.bulletsFired < _local1.bulletsPerRound){
																				_local1.cycleFrame = 0;
																				_local1.animationFrame = _local1[(_local1.cycleName + "CycleFrames")][5][0];
																			} else {
																				_local1.isAttacking = false;
																			};
																		} else {
																			_local1.isAttacking = false;
																		};
																	} else {
																		if ((((((((((_local1.cycleName == "shoot_gatling_forward")) || ((_local1.cycleName == "shoot_gatling_45")))) || ((_local1.cycleName == "shoot_gatling_45down")))) || ((_local1.cycleName == "shoot_gatling_up")))) || ((_local1.cycleName == "shoot_gatling_down")))){
																			if (_local1.gameObj.gameControls.keyPressedAction){
																				if (_local1.bulletsFired < _local1.bulletsPerRound){
																					_local1.cycleFrame = 0;
																					_local1.animationFrame = _local1[(_local1.cycleName + "CycleFrames")][5][0];
																				} else {
																					_local1.isAttacking = false;
																				};
																			} else {
																				_local1.isAttacking = false;
																			};
																		} else {
																			if (_local1.cycleName == "pickup_object"){
																				_local1.isGrabbingObject = false;
																				_local1.isCarryingObject = true;
																			} else {
																				if (_local1.cycleName == "throw_object"){
																					_local1.isThrowingObject = false;
																					_local1.isGrabbingObject = false;
																					_local1.isCarryingObject = false;
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
		}
		override public function updateObject(){
			var _local1:CactusChar = this;
			if (_local1.duck){
				_local1.collRect = _local1.duckCollRect;
			} else {
				if (_local1.jump){
					_local1.collRect = _local1.jumpCollRect;
				} else {
					_local1.collRect = _local1.standCollRect;
				};
			};
			_local1.forceGrabYoffset = 0;
			_local1.updateSprite();
			if (!_local1.isDead){
				if (((((_local1.isWalking) && (!(_local1.isGrabbing)))) && (((_local1.gameObj.gameControls.keyPressedLeft) || (_local1.gameObj.gameControls.keyPressedRight))))){
					if (_local1.isSkidding){
						_local1.skidTimer = 0;
						_local1.skidSpeed = 0;
						_local1.isSkidding = false;
					};
					if (((((_local1.skidTimer % _local1.skidTimerInterval) == 0)) && ((_local1.skidSpeed < _local1.maxSkidSpeed)))){
						_local1.skidSpeed++;
					};
					if (_local1.skidSpeed > Math.abs(_local1.speed)){
						_local1.skidSpeed = Math.abs(_local1.speed);
					};
					_local1.skidDecayTimer = 0;
					_local1.skidTimer++;
				} else {
					if (((!(_local1.isSkidding)) && ((_local1.skidSpeed > Math.abs(_local1.speed))))){
						_local1.skidSpeed = Math.abs(_local1.speed);
					};
					if ((((((((_local1.skidSpeed > 0)) && (!(_local1.jump)))) && (!(_local1.isGrabbing)))) && (!(_local1.isShoved)))){
						_local1.isSkidding = true;
						_local1.skidDecayTimer++;
						if ((_local1.skidDecayTimer % _local1.skidDecayTimerInterval) == 0){
							_local1.skidSpeed--;
							if (_local1.skidSpeed <= 0){
								_local1.skidSpeed = 0;
								_local1.skidTimer = 0;
								_local1.isSkidding = false;
								_local1.skidDecayTimer = 0;
							};
						};
					};
				};
				_local1.checkIfAttacking();
				_local1.checkForHittingEnemies();
				_local1.checkForHittingObjects();
				_local1.checkForCollectingItems();
				_local1.checkForGrabbingTile();
				_local1.gameObj.objectManager.checkSteppingOnObjects(_local1);
				_local1.adjustCarriedObject();
				_local1.checkIfOnDoor();
				_local1.updateStunTime();
				_local1.updateComboTimer();
				if (!_local1.isGrabbing){
					_local1.fallChar();
				};
				if (((!(_local1.jump)) && (!(_local1.isGrabbing)))){
					if (((_local1.gameObj.mapManager.getTileProperty(_local1.xtile, (_local1.ytile + 1), "collision")) || (_local1.gameObj.mapManager.getTileProperty(_local1.xtile, (_local1.ytile + 1), "thrublock")))){
						_local1.lastSafeX = _local1.xtile;
						_local1.lastSafeY = _local1.ytile;
					};
				};
			} else {
				if (_local1.isDead){
					if (!_local1.jump){
						_local1.walkingDir = _local1.facingDir;
						_local1.dirx = _local1.facingDir;
					};
				};
			};
			if (((((_local1.wasJumping) && (!(_local1.jump)))) && (!(_local1.isGrabbing)))){
				_local1.gameObj.effectManager.addEffect(_local1.x, (_local1.y + 18), "DustEffect", "anim", false, -1, 0);
				_local1.gameObj.effectManager.addEffect(_local1.x, (_local1.y + 18), "DustEffect", "anim", false, 1, 0);
				_local1.gameObj.soundManager.playSound("bump.wav");
			};
			if (((((((!(_local1.wasTurning)) && (_local1.isTurning))) && (!(_local1.jump)))) && (!(_local1.isGrabbing)))){
				if (_local1.dirx == -1){
					_local1.gameObj.effectManager.addEffect((_local1.x + 8), (_local1.y + 18), "DustEffect", "anim", false, 1, 0);
					_local1.gameObj.effectManager.addEffect((_local1.x + 4), (_local1.y + 18), "DustEffect", "anim", false, 1, -1);
				} else {
					if (_local1.dirx == 1){
						_local1.gameObj.effectManager.addEffect((_local1.x - 8), (_local1.y + 18), "DustEffect", "anim", false, -1, 0);
						_local1.gameObj.effectManager.addEffect((_local1.x - 4), (_local1.y + 18), "DustEffect", "anim", false, -1, -1);
					};
				};
			};
			if (((((((_local1.isWalking) && (!(_local1.isGrabbing)))) && (!(_local1.jump)))) && ((((_local1.legCycleFrame == 2)) || ((_local1.legCycleFrame == 10)))))){
				_local1.gameObj.effectManager.addEffect((_local1.x - (6 * _local1.facingDir)), (_local1.y + 18), "DustEffect");
			};
			_local1.updateCape();
			if (_local1.jump){
				_local1.wasJumping = true;
			} else {
				_local1.wasJumping = false;
			};
			if (_local1.isTurning){
				_local1.wasTurning = true;
			} else {
				_local1.wasTurning = false;
			};
		}
		public function updateCape(){
			var _local1:CactusChar = this;
			if (_local1.duck){
				if ((((_local1.capeAnimationFrame >= 5)) && ((_local1.capeAnimationFrame <= 15)))){
					_local1.capeAnimationFrame = 4;
				} else {
					if ((((_local1.capeAnimationFrame >= 16)) && ((_local1.capeAnimationFrame <= 20)))){
						_local1.capeAnimationFrame = 0;
					} else {
						if ((((_local1.capeAnimationFrame >= 24)) && ((_local1.capeAnimationFrame <= 28)))){
							_local1.capeAnimationFrame = 23;
						} else {
							if ((((_local1.capeAnimationFrame > 21)) && ((_local1.capeAnimationFrame <= 23)))){
								_local1.capeAnimationFrame--;
							} else {
								if (_local1.capeAnimationFrame == 21){
									_local1.capeAnimationFrame = 5;
								} else {
									if ((((_local1.capeAnimationFrame > 3)) && ((_local1.capeAnimationFrame < 5)))){
										_local1.capeAnimationFrame--;
									} else {
										if (_local1.capeAnimationFrame < 3){
											_local1.capeAnimationFrame++;
										};
									};
								};
							};
						};
					};
				};
			} else {
				if (_local1.isDead){
					if (_local1.jump){
						_local1.capeAnimationFrame = 0;
					} else {
						_local1.capeAnimationFrame = 6;
					};
				} else {
					if (((((((((_local1.isHit) || (_local1.isShoved))) || (_local1.isTurning))) || (_local1.isGrabbing))) || (((!(_local1.isWalking)) && (!(_local1.jump)))))){
						if ((((_local1.capeAnimationFrame >= 5)) && ((_local1.capeAnimationFrame <= 15)))){
							_local1.capeAnimationFrame = 4;
						} else {
							if ((((_local1.capeAnimationFrame >= 16)) && ((_local1.capeAnimationFrame <= 20)))){
								_local1.capeAnimationFrame = 0;
							} else {
								if ((((_local1.capeAnimationFrame >= 24)) && ((_local1.capeAnimationFrame <= 28)))){
									_local1.capeAnimationFrame = 23;
								} else {
									if ((((_local1.capeAnimationFrame > 21)) && ((_local1.capeAnimationFrame <= 23)))){
										_local1.capeAnimationFrame--;
									} else {
										if (_local1.capeAnimationFrame == 21){
											_local1.capeAnimationFrame = 5;
										} else {
											if ((((_local1.capeAnimationFrame > 0)) && ((_local1.capeAnimationFrame < 5)))){
												_local1.capeAnimationFrame--;
											};
										};
									};
								};
							};
						};
					} else {
						if (_local1.jump){
							if (_local1.jumpspeed >= 0){
								if (_local1.capeAnimationFrame == 28){
									_local1.capeAnimationFrame = 24;
								} else {
									if (_local1.capeAnimationFrame >= 21){
										_local1.capeAnimationFrame++;
									} else {
										if ((((_local1.capeAnimationFrame >= 6)) && ((_local1.capeAnimationFrame <= 15)))){
											_local1.capeAnimationFrame = 21;
										} else {
											if (_local1.capeAnimationFrame < 6){
												_local1.capeAnimationFrame++;
											} else {
												if ((((_local1.capeAnimationFrame >= 16)) && ((_local1.capeAnimationFrame <= 20)))){
													_local1.capeAnimationFrame = 1;
												};
											};
										};
									};
								};
							} else {
								if (_local1.jumpspeed < 0){
									if (_local1.capeAnimationFrame == 20){
										_local1.capeAnimationFrame = 16;
									} else {
										if ((((_local1.capeAnimationFrame >= 16)) && ((_local1.capeAnimationFrame <= 19)))){
											_local1.capeAnimationFrame++;
										} else {
											if ((((_local1.capeAnimationFrame > 0)) && ((_local1.capeAnimationFrame <= 15)))){
												_local1.capeAnimationFrame--;
											} else {
												if (_local1.capeAnimationFrame == 0){
													_local1.capeAnimationFrame = 16;
												} else {
													if ((((_local1.capeAnimationFrame >= 24)) && ((_local1.capeAnimationFrame <= 28)))){
														_local1.capeAnimationFrame = 23;
													} else {
														if ((((_local1.capeAnimationFrame > 21)) && ((_local1.capeAnimationFrame <= 23)))){
															_local1.capeAnimationFrame--;
														} else {
															if (_local1.capeAnimationFrame == 21){
																_local1.capeAnimationFrame = 6;
															};
														};
													};
												};
											};
										};
									};
								};
							};
						} else {
							if (_local1.isWalking){
								if (_local1.capeAnimationFrame == 15){
									_local1.capeAnimationFrame = 6;
								} else {
									if ((((_local1.capeAnimationFrame >= 6)) && ((_local1.capeAnimationFrame < 15)))){
										_local1.capeAnimationFrame++;
									} else {
										if (_local1.capeAnimationFrame < 6){
											_local1.capeAnimationFrame++;
										} else {
											if ((((_local1.capeAnimationFrame >= 16)) && ((_local1.capeAnimationFrame <= 20)))){
												_local1.capeAnimationFrame = 0;
											} else {
												if ((((_local1.capeAnimationFrame >= 24)) && ((_local1.capeAnimationFrame <= 28)))){
													_local1.capeAnimationFrame = 23;
												} else {
													if ((((_local1.capeAnimationFrame > 21)) && ((_local1.capeAnimationFrame <= 23)))){
														_local1.capeAnimationFrame--;
													} else {
														if (_local1.capeAnimationFrame == 21){
															_local1.capeAnimationFrame = 6;
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
		}
		override public function fallChar(){
			var _local1:CactusChar = this;
			if (((!(_local1.jump)) && (!(_local1.isFlying)))){
				_local1.getMyCorners(_local1.x, (_local1.y + 1));
				if (((((((((!(_local1.HitDownLeft)) && (!(_local1.HitDownRight)))) && (!(_local1.checkIfOnCloud())))) && (!(checkMovingTiles(1))))) && (!(_local1.onSlope)))){
					_local1.jumpspeed = 0;
					_local1.jump = true;
				} else {
					_local1.lastSafeTime = _local1.gameObj.gameControls.gameplayTimer;
				};
			};
		}
		override public function adjustCarriedObject(){
			var _local1:CactusChar = this;
			var _local2:Number = _local1.getTorsoOffsetX();
			var _local3:Number = _local1.getTorsoOffsetY();
			var _local4:Number = _local1.cycleFrame;
			if (_local1.facingDir == -1){
				_local2 = (0 - _local2);
			};
			if (((_local1.isCarryingObject) && (_local1.whichObjectGrabbed))){
				if (_local1.isGrabbingObject){
					if (_local4 >= _local1.object_pickup_offsetsX.length){
						_local4 = (_local1.object_pickup_offsetsX.length - 1);
					};
					_local2 = (_local2 + (_local1.object_pickup_offsetsX[_local4] * _local1.facingDir));
					_local3 = (_local3 + _local1.object_pickup_offsetsY[_local4]);
				} else {
					if (_local1.isThrowingObject){
						if (_local4 >= _local1.object_throw_offsetsX.length){
							_local4 = (_local1.object_throw_offsetsX.length - 1);
							_local1.throwCarriedObject(_local1.facingDir);
							_local1.gameObj.soundManager.playSound("attack_swing_1.wav");
						};
						_local2 = (_local2 + (_local1.object_throw_offsetsX[_local4] * _local1.facingDir));
						_local3 = (_local3 + _local1.object_throw_offsetsY[_local4]);
					} else {
						if (((_local1.isTurning) || ((_local1.cycleName == "turnaround_object")))){
							_local2 = (_local2 + (_local1.object_turnaround_offsetX * _local1.facingDir));
							_local3 = (_local3 + _local1.object_turnaround_offsetY);
						} else {
							_local2 = (_local2 + (_local1.object_stand_offsetX * _local1.facingDir));
							_local3 = (_local3 + _local1.object_stand_offsetY);
						};
					};
				};
				if (_local1.whichObjectGrabbed){
					_local1.whichObjectGrabbed.moveCarriedObject((_local1.x + _local2), (_local1.y + _local3));
				};
			} else {
				if (((!(_local1.isCarryingObject)) && (!((_local1.whichObjectGrabbed == null))))){
				};
			};
		}
		public function checkIfAttacking(){
			var _local1:CactusChar = this;
			if ((((((((((_local1.hasWeaponType == "longgun")) || ((_local1.hasWeaponType == "pistol")))) || ((_local1.hasWeaponType == "bazooka")))) || ((_local1.hasWeaponType == "gatling")))) || ((_local1.hasWeaponType == "toss")))){
				if (((!(_local1.canAttack)) && (!(_local1.isAttacking)))){
					_local1.reloadTimer++;
					if ((((_local1.reloadTimer >= _local1.reloadTimerMax)) && (!(_local1.gameObj.gameControls.keyPressedAction)))){
						_local1.canAttack = true;
					};
				} else {
					if (_local1.isAttacking){
						if ((((((_local1.bulletTimer + _local1.whichWeapon.bulletTimerOffset) % _local1.whichWeapon.bulletFrequency) == 0)) && ((_local1.bulletsFired < _local1.bulletsPerRound)))){
							_local1.shootWeapon(_local1.whichWeapon.bulletType, _local1.whichWeapon.hasSpray, _local1.whichWeapon.sprayType, _local1.whichWeapon.sprayAmount, _local1.whichWeapon.sprayAngleDifference);
						};
						_local1.bulletTimer++;
					};
				};
				if (((!(_local1.isShoved)) && (((!(_local1.canPressLeft)) || (!(_local1.canPressRight)))))){
					_local1.canPressLeft = true;
					_local1.canPressRight = true;
				};
			} else {
				if (((!(_local1.canAttack)) && (!(_local1.isAttacking)))){
					_local1.canAttack = true;
				} else {
					if (((((_local1.isAttacking) && (!(_local1.canAttack)))) && ((_local1.cycleFrame >= _local1.repeatAttackFrame)))){
						_local1.canAttack = true;
					};
				};
				if (!_local1.isAttacking){
					_local1.canDealDamage = true;
				};
				if (((!(_local1.isShoved)) && (((!(_local1.canPressLeft)) || (!(_local1.canPressRight)))))){
					if (_local1.jump){
						_local1.canPressLeft = true;
						_local1.canPressRight = true;
					} else {
						if (_local1.canDealDamage){
							_local1.postAttackDelayTimer++;
							if (_local1.postAttackDelayTimer >= _local1.postAttackDelayMax){
								_local1.canPressLeft = true;
								_local1.canPressRight = true;
							};
						};
					};
				};
				if (((((_local1.isAttacking) && ((_local1.hasWeaponType == "whip")))) && ((_local1.cycleFrame == _local1.startAttackFrame)))){
					_local1.gameObj.soundManager.playSound("attack_whip.wav");
				};
			};
		}
		public function startThrowingObject(){
			var _local1:CactusChar = this;
			_local1.canAttack = false;
			if (((_local1.isCarryingObject) && (_local1.whichObjectGrabbed))){
				_local1.isThrowingObject = true;
			};
		}
		public function startAttacking(){
			var _local1:CactusChar = this;
			if (!_local1.isGrabbing){
				_local1.canDealDamage = true;
				_local1.isAttacking = true;
				_local1.canAttack = false;
				_local1.bulletTimer = 0;
				_local1.bulletsFired = 0;
				_local1.reloadTimer = 0;
				if (_local1.attackVariation == 1){
					_local1.attackVariation = 2;
				} else {
					_local1.attackVariation = 1;
				};
				_local1.setupAttackRect();
				_local1.isTurning = false;
				_local1.walkingDir = _local1.facingDir;
				if (((_local1.jump) && ((_local1.speed < 0)))){
					_local1.speed = (_local1.speed * -1);
				};
				if ((((((((_local1.hasWeaponType == "punch")) || ((_local1.hasWeaponType == "none")))) || ((_local1.hasWeaponType == "toss")))) || ((_local1.hasWeaponType == "gloves")))){
					_local1.gameObj.soundManager.playSound((("attack_punch_" + _local1.attackVariation) + ".wav"));
				} else {
					if ((((((_local1.hasWeaponType == "weapon1")) || ((_local1.hasWeaponType == "weapon2")))) || ((_local1.hasWeaponType == "weapon2b")))){
						_local1.gameObj.soundManager.playSound((("attack_swing_" + _local1.attackVariation) + ".wav"));
					} else {
						if (_local1.hasWeaponType == "whip"){
						};
					};
				};
			};
		}
		public function setupAttackRect(){
			var _local1:CactusChar;
			var _local2:Rectangle;
			var _local3:Array;
			_local1 = this;
			if (_local1.hasWeaponType == "none"){
				if (_local1.isFinalBlow){
					_local2 = _local1.uppercut_attackRect;
					_local3 = _local1.uppercut_frameRange;
				} else {
					if (_local1.attackVariation == 1){
						_local2 = _local1.punch1_attackRect;
						_local3 = _local1.punch1_frameRange;
					} else {
						if (_local1.attackVariation == 2){
							_local2 = _local1.punch2_attackRect;
							_local3 = _local1.punch2_frameRange;
						};
					};
				};
			} else {
				if (_local1.hasWeaponType == "weapon2"){
					if (_local1.isFinalBlow){
						_local2 = _local1.weapon2_uppercut_attackRect;
						_local3 = _local1.weapon2_uppercut_frameRange;
					} else {
						if (_local1.attackVariation == 1){
							_local2 = _local1.weapon2_swing1_attackRect;
							_local3 = _local1.weapon2_swing1_frameRange;
						} else {
							if (_local1.attackVariation == 2){
								_local2 = _local1.weapon2_swing2_attackRect;
								_local3 = _local1.weapon2_swing2_frameRange;
							};
						};
					};
				} else {
					if (_local1.hasWeaponType == "weapon2b"){
						if (_local1.isFinalBlow){
							_local2 = _local1.weapon2b_uppercut_attackRect;
							_local3 = _local1.weapon2b_uppercut_frameRange;
						} else {
							if (_local1.attackVariation == 1){
								_local2 = _local1.weapon2b_swing1_attackRect;
								_local3 = _local1.weapon2b_swing1_frameRange;
							} else {
								if (_local1.attackVariation == 2){
									_local2 = _local1.weapon2b_swing2_attackRect;
									_local3 = _local1.weapon2b_swing2_frameRange;
								};
							};
						};
					} else {
						if (_local1.hasWeaponType == "weapon1"){
							if (_local1.isFinalBlow){
								_local2 = _local1.weapon1_uppercut_attackRect;
								_local3 = _local1.weapon1_uppercut_frameRange;
							} else {
								if (_local1.attackVariation == 1){
									_local2 = _local1.weapon1_swing1_attackRect;
									_local3 = _local1.weapon1_swing1_frameRange;
								} else {
									if (_local1.attackVariation == 2){
										_local2 = _local1.weapon1_swing2_attackRect;
										_local3 = _local1.weapon1_swing2_frameRange;
									};
								};
							};
						} else {
							if (_local1.hasWeaponType == "gloves"){
								if (_local1.isFinalBlow){
									_local2 = _local1.gloves_uppercut_attackRect;
									_local3 = _local1.gloves_uppercut_frameRange;
								} else {
									if (_local1.attackVariation == 1){
										_local2 = _local1.gloves_punch1_attackRect;
										_local3 = _local1.gloves_punch1_frameRange;
									} else {
										if (_local1.attackVariation == 2){
											_local2 = _local1.gloves_punch2_attackRect;
											_local3 = _local1.gloves_punch2_frameRange;
										};
									};
								};
							} else {
								if ((((((((((_local1.hasWeaponType == "longgun")) || ((_local1.hasWeaponType == "pistol")))) || ((_local1.hasWeaponType == "bazooka")))) || ((_local1.hasWeaponType == "gatling")))) || ((_local1.hasWeaponType == "toss")))){
									_local2 = _local1.weapon_gun_attackRect;
									_local3 = _local1.weapon_gun_frameRange;
									_local1.reloadTimerMax = _local1.whichWeapon.reloadDelay;
									_local1.bulletsPerRound = _local1.whichWeapon.maxBulletsPerRound;
								} else {
									if (_local1.hasWeaponType == "whip"){
										_local2 = _local1.whip_attackRect;
										_local3 = _local1.whip_frameRange;
									};
								};
							};
						};
					};
				};
			};
			_local1.attackRect.x = _local2.x;
			_local1.attackRect.y = _local2.y;
			_local1.attackRect.width = _local2.width;
			_local1.attackRect.height = _local2.height;
			_local1.startAttackFrame = _local3[0];
			_local1.endAttackFrame = _local3[1];
			_local1.repeatAttackFrame = _local3[2];
			if (_local1.facingDir == -1){
				_local1.attackRect.x = ((_local2.x * -1) - _local2.width);
			};
		}
		override public function pauseAfterMiniboss(){
			var _local1:CactusChar = this;
			super.pauseAfterMiniboss();
		}
		override public function updateSprite(){
			var _local1:CactusChar;
			var _local2:Array;
			var _local3:*;
			var _local4:*;
			var _local5:*;
			var _local6:*;
			var _local7:*;
			_local1 = this;
			_local2 = _local1.grabLegAnimationCycle();
			_local3 = _local1.legAnimationFrame;
			_local5 = _local1.legCycleFrame;
			_local6 = _local2[0];
			_local7 = _local2[1];
			if (_local7 == 1){
				_local4 = _local2[5];
			} else {
				if (_local7 == 2){
					_local4 = _local2[5][0];
				};
			};
			if (_local6 != _local1.legCycleName){
				_local1.adjustLegFrameSync(_local6, _local1.legCycleName, _local4, _local3, _local5, _local7, _local2);
			} else {
				_local1.adjustLegFrameSync(_local6, _local1.legCycleName, _local4, _local3, _local5, _local7, _local2);
				_local1.legSpriteChangeFrame(1, _local2, _local7);
			};
			_local2 = _local1.grabAnimationCycle();
			if (((_local1.whichWeapon) && (_local1.whichWeapon.hasSprite))){
				_local1.weaponCycleData = _local1.grabWeaponAnimationCycle();
			};
			_local3 = _local1.animationFrame;
			_local5 = _local1.cycleFrame;
			_local6 = _local2[0];
			_local7 = _local2[1];
			if (_local7 == 1){
				_local4 = _local2[5];
			} else {
				if (_local7 == 2){
					_local4 = _local2[5][0];
				};
			};
			if (_local6 != _local1.cycleName){
				_local1.adjustFrameSync(_local6, _local1.cycleName, _local4, _local3, _local5, _local7, _local2);
			} else {
				_local1.adjustFrameSync(_local6, _local1.cycleName, _local4, _local3, _local5, _local7, _local2);
				_local1.spriteChangeFrame(1, _local2, _local7);
			};
			_local1.animationBlitStyle = _local2[2];
		}
		public function legSpriteChangeFrame(_arg1, _arg2:Array, _arg3){
			var _local4:CactusChar;
			var _local5:*;
			var _local6:*;
			var _local7:*;
			var _local8:*;
			var _local9:*;
			_local4 = this;
			if (_arg3 == 1){
				_local4.legAnimationFrame = (_local4.legAnimationFrame + _arg1);
				_local5 = _arg2[3];
				_local6 = _arg2[4];
				_local7 = _arg2[5];
				_local8 = _arg2[6];
				if (_local4.legAnimationFrame > _local8){
					if (_local6 == -1){
						_local4.legAnimationFrame = _local8;
					} else {
						_local4.legAnimationFrame = _local6;
					};
				};
				if ((((_local4.legAnimationFrame < _local6)) && (!((_local4.facingDir == _local4.walkingDir))))){
					_local4.legAnimationFrame = _local8;
				};
			} else {
				if (_arg3 == 2){
					_local9 = _arg2[5].length;
					_local5 = _arg2[3];
					_local6 = _arg2[4];
					_local7 = _arg2[5][0];
					_local8 = (_arg2[5].length - 1);
					_local4.legCycleFrame = (_local4.legCycleFrame + _arg1);
					if (_local4.legCycleFrame < 0){
						_local4.legCycleFrame = _local8;
					} else {
						if (_local4.legCycleFrame > _local8){
							if (_local6 == -1){
								_local4.legCycleFrame = _local8;
							} else {
								_local4.legCycleFrame = _local6;
							};
						};
					};
					_local4.legAnimationFrame = _arg2[5][_local4.legCycleFrame];
				};
			};
		}
		public function adjustLegFrameSync(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
			var _local8:CactusChar;
			_local8 = this;
			if (_arg1 != _arg2){
				_local8.legAnimationFrame = _arg3;
				_local8.legCycleFrame = 0;
				_local8.legCycleName = _arg1;
			};
		}
		override public function adjustFrameSync(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
			var _local8:CactusChar;
			_local8 = this;
			if (_arg1 != _arg2){
				if ((((String(_arg1).indexOf("shoot_") > -1)) && ((String(_arg2).indexOf("shoot_") > -1)))){
					_local8.cycleName = _arg1;
				} else {
					_local8.animationFrame = _arg3;
					_local8.cycleFrame = 0;
					_local8.cycleName = _arg1;
				};
			};
		}
		override public function checkForGrabbingTile(){
			var _local1:CactusChar;
			var _local2:MapManager;
			var _local3:*;
			var _local4:*;
			_local1 = this;
			_local2 = _local1.gameObj.mapManager;
			if (((((((((((((_local1.jump) && ((_local1.jumpspeed >= 0)))) && (!(_local1.isGrabbing)))) && (!(_local1.isHit)))) && (!(_local1.isShoved)))) && (!(_local1.isCarryingObject)))) && (!(_local1.gameObj.gameControls.keyPressedDown)))){
				_local3 = _local2.getTileProperty(_local1.leftX, (_local1.ytile + _local1.grabTileYOffset), "grab");
				_local4 = _local2.getTileProperty(_local1.rightX, (_local1.ytile + _local1.grabTileYOffset), "grab");
				if ((((_local3 > 0)) || ((_local4 > 0)))){
					if ((((((_local3 == 2)) || ((_local4 == 2)))) && (((_local1.gameObj.gameControls.keyPressedLeft) || (_local1.gameObj.gameControls.keyPressedRight))))){
						_local1.isStartingGrabbing = false;
					} else {
						_local1.isStartingGrabbing = true;
					};
					_local1.isGrabbing = true;
					_local1.isSkidding = false;
					_local1.isThrowingObject = false;
					_local1.isGrabbingObject = false;
					_local1.isCarryingObject = false;
					_local1.cancelAttack();
					_local1.skidSpeed = 0;
					_local1.jump = false;
					_local1.y = ((_local1.ytile * _local1.gameObj.gameDisplay.tileWidth) + 10);
				};
			};
		}
		override public function checkForHittingEnemies(_arg1:Boolean=false):Boolean{
			var _local2:CactusChar;
			var _local3:Rectangle;
			var _local4:Rectangle;
			var _local5:Boolean;
			var _local6:EffectManager;
			var _local7:Boolean;
			var _local8:Boolean;
			var _local9:String;
			var _local10:EnemyManager;
			var _local11:*;
			var _local12:Enemy;
			var _local13:Boolean;
			var _local14:Number;
			var _local15:Number;
			_local2 = this;
			_local3 = new Rectangle((_local2.x + _local2.collRect.x), (_local2.y + _local2.collRect.y), _local2.collRect.width, _local2.collRect.height);
			_local4 = new Rectangle(((_local2.x + _local2.getTorsoOffsetX()) + _local2.attackRect.x), ((_local2.y + _local2.getTorsoOffsetY()) + _local2.attackRect.y), _local2.attackRect.width, _local2.attackRect.height);
			_local5 = false;
			_local6 = _local2.gameObj.effectManager;
			_local7 = false;
			_local8 = false;
			_local9 = "punch";
			if (_local2.whichWeapon){
				_local9 = _local2.whichWeapon.dropName;
			};
			_local10 = _local2.gameObj.enemyManager;
			_local11 = 0;
			while (_local11 < _local10.enemies.length) {
				if (_local10.enemies[_local11] != 0){
					_local12 = _local10.enemies[_local11];
					if (_arg1){
						_local5 = false;
						break;
					} else {
						if (((((((_local2.canDealDamage) && (_local2.isAttacking))) && ((_local2.cycleFrame >= _local2.startAttackFrame)))) && ((_local2.cycleFrame <= _local2.endAttackFrame)))){
							if (_local12.checkSpriteCollision(_local4)){
								_local13 = _local12.getHit(_local2.statAttack, _local2.facingDir, false, _local9);
								if (!_local12.isDodging){
									_local7 = true;
									_local14 = _local12.x;
									_local15 = ((_local12.y - 20) - Math.ceil((Math.random() * 14)));
									if (_local12.x > _local2.x){
										_local14 = (_local14 - Math.ceil((Math.random() * 7)));
									} else {
										_local14 = (_local14 + Math.ceil((Math.random() * 7)));
									};
									if (_local13){
										_local6.addEffect(_local14, _local15, "BigImpactEffect");
									} else {
										_local6.addEffect(_local14, _local15, "ImpactEffect");
									};
									if (_local13){
										_local8 = true;
									};
									if (_local2.whichWeapon){
										_local2.whichWeapon.damageWeapon();
									};
								};
								if (!_local12.isDead){
									if (_local2.x < _local12.x){
										_local2.shovePlayer(-1);
									} else {
										_local2.shovePlayer(1);
									};
								};
							};
						} else {
							if (((_local2.canGetHit()) && (!(_arg1)))){
								if (((_local12.checkSpriteCollision(_local3)) && (!(_local12.isDead)))){
									if ((((_local12 is Enemy12)) && (!(Enemy12(_local12).finishedIntro)))){
										_local2.hurtPlayer(-1, 0, true);
										Enemy12(_local12).addEmerald(_local2.x, (_local2.y - 83), true);
									} else {
										if (_local12.isAttacking){
											if (_local2.x < _local12.x){
												_local2.shovePlayer(-1);
											} else {
												_local2.shovePlayer(1);
											};
										} else {
											if (_local2.x < _local12.x){
												_local2.shovePlayer(-1);
											} else {
												_local2.shovePlayer(1);
											};
											_local12.startShoving();
										};
									};
									break;
								};
							};
						};
					};
				};
				_local11++;
			};
			if (_local7){
				_local2.canDealDamage = false;
			};
			if (((_local7) && (_local8))){
				_local2.isFinalBlow = true;
			} else {
				if (((_local7) && (!(_local8)))){
					_local2.isFinalBlow = false;
				} else {
					if (((!(_local7)) && (_local2.canDealDamage))){
						_local2.isFinalBlow = false;
					};
				};
			};
			return (_local5);
		}
		override public function checkForHittingObjects():Boolean{
			var _local1:CactusChar;
			var _local2:Rectangle;
			var _local3:EffectManager;
			var _local4:Boolean;
			var _local5:String;
			var _local6:ObjectManager;
			var _local7:*;
			var _local8:GameObject;
			var _local9:Number;
			var _local10:Number;
			_local1 = this;
			_local2 = new Rectangle(((_local1.x + _local1.getTorsoOffsetX()) + _local1.attackRect.x), ((_local1.y + _local1.getTorsoOffsetY()) + _local1.attackRect.y), _local1.attackRect.width, _local1.attackRect.height);
			_local3 = _local1.gameObj.effectManager;
			_local4 = false;
			_local5 = "punch";
			if (_local1.whichWeapon){
				_local5 = _local1.whichWeapon.dropName;
			};
			_local6 = _local1.gameObj.objectManager;
			_local7 = 0;
			while (_local7 < _local6.objects.length) {
				if (_local6.objects[_local7] != 0){
					_local8 = _local6.objects[_local7];
					if (((((((_local1.canDealDamage) && (_local1.isAttacking))) && ((_local1.cycleFrame >= _local1.startAttackFrame)))) && ((_local1.cycleFrame <= _local1.endAttackFrame)))){
						if (((_local8.checkSpriteCollision(_local2)) && (_local8.acceptsDamage("weapon", _local5)))){
							_local8.getHit();
							_local4 = true;
							_local9 = _local8.x;
							_local10 = ((_local8.y - 20) - Math.ceil((Math.random() * 14)));
							if (_local8.x > _local1.x){
								_local9 = (_local9 - Math.ceil((Math.random() * 7)));
							} else {
								_local9 = (_local9 + Math.ceil((Math.random() * 7)));
							};
							_local3.addEffect(_local9, _local10, "ImpactEffect");
							if (_local1.whichWeapon){
								_local1.whichWeapon.damageWeapon();
							};
						};
					};
				};
				_local7++;
			};
			if (_local4){
				_local1.canDealDamage = false;
			};
			return (_local4);
		}
		override public function usingGun():Boolean{
			var _local1:CactusChar;
			_local1 = this;
			if ((((((((_local1.hasWeaponType == "longgun")) || ((_local1.hasWeaponType == "pistol")))) || ((_local1.hasWeaponType == "gatling")))) || ((_local1.hasWeaponType == "bazooka")))){
				return (true);
			};
			return (false);
		}
		override public function addWeapon(_arg1:String, _arg2:Number=-1, _arg3:Number=-1){
			var ob:CactusChar;
			var ClassReference:Class;
			var weaponName = _arg1;
			var remainingHealth = _arg2;
			var remainingAmmo = _arg3;
			ob = this;
			if (!ob.isGrabbing){
				if (ob.whichWeapon != null){
					ob.dropWeapon();
				};
				try {
					ClassReference = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + weaponName)) as Class);
					ob.whichWeapon = new ClassReference(ob, remainingHealth, remainingAmmo);
				} catch(err) {
					ob.whichWeapon = new WeaponShovel(ob, remainingHealth, remainingAmmo);
				};
				ob.hasWeaponType = ob.whichWeapon.getType();
				ob.statAttack = (ob.whichWeapon.getAttackStat() + ((ob.gameObj.userData.getUpgradeLevel(ob.hasWeaponType) - 1) * DataManager.STAT_ADDED_PER_UPGRADE));
				ob.gameObj.userData.addToWeaponsEquipped(weaponName, ob.hasWeaponType);
				ob.gameObj.hudObj.updateEquippedWeapon(ob.whichWeapon.dropName, ob.whichWeapon.weaponTitle, ob.whichWeapon.getPercent());
				ob.gameObj.soundManager.playSound("grabweapon.wav");
			};
		}
		override public function dropWeapon(){
			var _local1:CactusChar;
			_local1 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.createDrop();
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			_local1.hasWeaponType = "none";
			_local1.statAttack = (DataManager.PUNCH_STAT + ((_local1.gameObj.userData.getUpgradeLevel("punching") - 1) * DataManager.STAT_ADDED_PER_UPGRADE));
			_local1.gameObj.hudObj.updateEquippedWeapon("None");
		}
		override public function getWeaponSheetName():String{
			var _local1:CactusChar;
			_local1 = this;
			if (_local1.whichWeapon){
				return (_local1.whichWeapon.sheetname);
			};
			return (null);
		}
		public function shootWeapon(_arg1:String, _arg2:Boolean=false, _arg3:String=null, _arg4:Number=2, _arg5:Number=0.5){
			var _local6:CactusChar;
			var _local7:BulletManager;
			var _local11:Number;
			var _local12:Number;
			var _local13:*;
			var _local14:*;
			var _local15:Number;
			var _local16:Number;
			var _local17:Number;
			var _local18:Number;
			var _local20:Number;
			var _local21:Number;
			var _local22:Number;
			var _local23:Number;
			var _local24:Number;
			_local6 = this;
			_local7 = _local6.gameObj.bulletManager;
			var _local8:EffectManager = _local6.gameObj.effectManager;
			var _local9:Number = 0;
			var _local10:Number = 0;
			_local11 = 0;
			_local12 = 0;
			if (_local6.aimAngleUp){
				if (_local6.aimAngleForward){
					_local9 = _local6.facingDir;
				} else {
					_local9 = 0;
				};
				_local10 = -1;
			} else {
				if (_local6.aimAngleDown){
					if (_local6.aimAngleForward){
						_local9 = _local6.facingDir;
					} else {
						_local9 = 0;
					};
					_local10 = 1;
				} else {
					_local9 = _local6.facingDir;
					_local10 = 0;
				};
			};
			if (_local6.hasWeaponType == "pistol"){
				if (_local6.duck){
					_local9 = _local6.facingDir;
					_local10 = 0;
					_local11 = ((_local6.shoot_pistol_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
					_local12 = (_local6.shoot_pistol_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
				} else {
					if (_local6.aimAngleForward){
						_local9 = _local6.facingDir;
						if (_local6.aimAngleUp){
							_local11 = ((_local6.shoot_pistol_offsetsX[1] + _local6.whichWeapon.shoot_extra_offsetsX[1]) * _local6.facingDir);
							_local12 = (_local6.shoot_pistol_offsetsY[1] + _local6.whichWeapon.shoot_extra_offsetsY[1]);
						} else {
							if (_local6.aimAngleDown){
								_local11 = ((_local6.shoot_pistol_offsetsX[2] + _local6.whichWeapon.shoot_extra_offsetsX[2]) * _local6.facingDir);
								_local12 = (_local6.shoot_pistol_offsetsY[2] + _local6.whichWeapon.shoot_extra_offsetsY[2]);
							} else {
								_local11 = ((_local6.shoot_pistol_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
								_local12 = (_local6.shoot_pistol_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
							};
						};
					} else {
						if (_local6.aimAngleUp){
							_local9 = 0;
							_local11 = ((_local6.shoot_pistol_offsetsX[3] + _local6.whichWeapon.shoot_extra_offsetsX[3]) * _local6.facingDir);
							_local12 = (_local6.shoot_pistol_offsetsY[3] + _local6.whichWeapon.shoot_extra_offsetsY[3]);
						} else {
							if (_local6.aimAngleDown){
								_local9 = 0;
								_local11 = ((_local6.shoot_pistol_offsetsX[4] + _local6.whichWeapon.shoot_extra_offsetsX[4]) * _local6.facingDir);
								_local12 = (_local6.shoot_pistol_offsetsY[4] + _local6.whichWeapon.shoot_extra_offsetsY[4]);
							} else {
								_local9 = _local6.facingDir;
								_local11 = ((_local6.shoot_pistol_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
								_local12 = (_local6.shoot_pistol_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
							};
						};
					};
				};
			} else {
				if (_local6.hasWeaponType == "longgun"){
					if (_local6.duck){
						_local9 = _local6.facingDir;
						_local10 = 0;
						_local11 = ((_local6.shoot_longgun_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
						_local12 = (_local6.shoot_longgun_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
					} else {
						if (_local6.aimAngleForward){
							_local9 = _local6.facingDir;
							if (_local6.aimAngleUp){
								_local11 = ((_local6.shoot_longgun_offsetsX[1] + _local6.whichWeapon.shoot_extra_offsetsX[1]) * _local6.facingDir);
								_local12 = (_local6.shoot_longgun_offsetsY[1] + _local6.whichWeapon.shoot_extra_offsetsY[1]);
							} else {
								if (_local6.aimAngleDown){
									_local11 = ((_local6.shoot_longgun_offsetsX[2] + _local6.whichWeapon.shoot_extra_offsetsX[2]) * _local6.facingDir);
									_local12 = (_local6.shoot_longgun_offsetsY[2] + _local6.whichWeapon.shoot_extra_offsetsY[2]);
								} else {
									_local11 = ((_local6.shoot_longgun_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
									_local12 = (_local6.shoot_longgun_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
								};
							};
						} else {
							if (_local6.aimAngleUp){
								_local9 = 0;
								_local11 = ((_local6.shoot_longgun_offsetsX[3] + _local6.whichWeapon.shoot_extra_offsetsX[3]) * _local6.facingDir);
								_local12 = (_local6.shoot_longgun_offsetsY[3] + _local6.whichWeapon.shoot_extra_offsetsY[3]);
							} else {
								if (_local6.aimAngleDown){
									_local9 = 0;
									_local11 = ((_local6.shoot_longgun_offsetsX[4] + _local6.whichWeapon.shoot_extra_offsetsX[4]) * _local6.facingDir);
									_local12 = (_local6.shoot_longgun_offsetsY[4] + _local6.whichWeapon.shoot_extra_offsetsY[4]);
								} else {
									_local9 = _local6.facingDir;
									_local11 = ((_local6.shoot_longgun_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
									_local12 = (_local6.shoot_longgun_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
								};
							};
						};
					};
				} else {
					if (_local6.hasWeaponType == "toss"){
						if (_local6.duck){
							_local9 = _local6.facingDir;
							_local10 = 0;
							_local11 = ((_local6.shoot_toss_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
							_local12 = (_local6.shoot_toss_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
						} else {
							if (_local6.aimAngleForward){
								_local9 = _local6.facingDir;
								if (_local6.aimAngleUp){
									_local11 = ((_local6.shoot_toss_offsetsX[1] + _local6.whichWeapon.shoot_extra_offsetsX[1]) * _local6.facingDir);
									_local12 = (_local6.shoot_toss_offsetsY[1] + _local6.whichWeapon.shoot_extra_offsetsY[1]);
								} else {
									if (_local6.aimAngleDown){
										_local11 = ((_local6.shoot_toss_offsetsX[2] + _local6.whichWeapon.shoot_extra_offsetsX[2]) * _local6.facingDir);
										_local12 = (_local6.shoot_toss_offsetsY[2] + _local6.whichWeapon.shoot_extra_offsetsY[2]);
									} else {
										_local11 = ((_local6.shoot_toss_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
										_local12 = (_local6.shoot_toss_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
									};
								};
							} else {
								if (_local6.aimAngleUp){
									_local9 = 0;
									_local11 = ((_local6.shoot_toss_offsetsX[3] + _local6.whichWeapon.shoot_extra_offsetsX[3]) * _local6.facingDir);
									_local12 = (_local6.shoot_toss_offsetsY[3] + _local6.whichWeapon.shoot_extra_offsetsY[3]);
								} else {
									if (_local6.aimAngleDown){
										_local9 = 0;
										_local11 = ((_local6.shoot_toss_offsetsX[4] + _local6.whichWeapon.shoot_extra_offsetsX[4]) * _local6.facingDir);
										_local12 = (_local6.shoot_toss_offsetsY[4] + _local6.whichWeapon.shoot_extra_offsetsY[4]);
									} else {
										_local9 = _local6.facingDir;
										_local11 = ((_local6.shoot_toss_offsetsX[0] + _local6.whichWeapon.shoot_extra_offsetsX[0]) * _local6.facingDir);
										_local12 = (_local6.shoot_toss_offsetsY[0] + _local6.whichWeapon.shoot_extra_offsetsY[0]);
									};
								};
							};
						};
					} else {
						if (_local6.hasWeaponType == "gatling"){
							if (_local6.duck){
								_local9 = _local6.facingDir;
								_local10 = 0;
								_local11 = (_local6.shoot_gatling_offsetsX[0] * _local6.facingDir);
								_local12 = _local6.shoot_gatling_offsetsY[0];
							} else {
								if (_local6.aimAngleForward){
									_local9 = _local6.facingDir;
									if (_local6.aimAngleUp){
										_local11 = (_local6.shoot_gatling_offsetsX[1] * _local6.facingDir);
										_local12 = _local6.shoot_gatling_offsetsY[1];
									} else {
										if (_local6.aimAngleDown){
											_local11 = (_local6.shoot_gatling_offsetsX[2] * _local6.facingDir);
											_local12 = _local6.shoot_gatling_offsetsY[2];
										} else {
											_local11 = (_local6.shoot_gatling_offsetsX[0] * _local6.facingDir);
											_local12 = _local6.shoot_gatling_offsetsY[0];
										};
									};
								} else {
									if (_local6.aimAngleUp){
										_local9 = 0;
										_local11 = (_local6.shoot_gatling_offsetsX[3] * _local6.facingDir);
										_local12 = _local6.shoot_gatling_offsetsY[3];
									} else {
										if (_local6.aimAngleDown){
											_local9 = 0;
											_local11 = (_local6.shoot_gatling_offsetsX[4] * _local6.facingDir);
											_local12 = _local6.shoot_gatling_offsetsY[4];
										} else {
											_local9 = _local6.facingDir;
											_local11 = (_local6.shoot_gatling_offsetsX[0] * _local6.facingDir);
											_local12 = _local6.shoot_gatling_offsetsY[0];
										};
									};
								};
							};
						} else {
							if (_local6.hasWeaponType == "bazooka"){
								if (_local6.duck){
									_local9 = _local6.facingDir;
									_local10 = 0;
									_local11 = (_local6.shoot_bazooka_offsetsX[0] * _local6.facingDir);
									_local12 = _local6.shoot_bazooka_offsetsY[0];
								} else {
									if (_local6.aimAngleForward){
										_local9 = _local6.facingDir;
										if (_local6.aimAngleUp){
											_local11 = (_local6.shoot_bazooka_offsetsX[1] * _local6.facingDir);
											_local12 = _local6.shoot_bazooka_offsetsY[1];
										} else {
											if (_local6.aimAngleDown){
												_local11 = (_local6.shoot_bazooka_offsetsX[2] * _local6.facingDir);
												_local12 = _local6.shoot_bazooka_offsetsY[2];
											} else {
												_local11 = (_local6.shoot_bazooka_offsetsX[0] * _local6.facingDir);
												_local12 = _local6.shoot_bazooka_offsetsY[0];
											};
										};
									} else {
										if (_local6.aimAngleUp){
											_local9 = 0;
											_local11 = (_local6.shoot_bazooka_offsetsX[3] * _local6.facingDir);
											_local12 = _local6.shoot_bazooka_offsetsY[3];
										} else {
											if (_local6.aimAngleDown){
												_local9 = 0;
												_local11 = (_local6.shoot_bazooka_offsetsX[4] * _local6.facingDir);
												_local12 = _local6.shoot_bazooka_offsetsY[4];
											} else {
												_local9 = _local6.facingDir;
												_local11 = (_local6.shoot_bazooka_offsetsX[0] * _local6.facingDir);
												_local12 = _local6.shoot_bazooka_offsetsY[0];
											};
										};
									};
								};
							};
						};
					};
				};
			};
			_local13 = ((_local6.x + _local6.getTorsoOffsetX()) + _local11);
			_local14 = ((_local6.y + _local6.getTorsoOffsetY()) + _local12);
			if (_local6.isWalking){
				_local13 = (_local13 + (_local6.speed * _local6.facingDir));
			};
			_local15 = _local13;
			_local16 = _local14;
			if (_local6.duck){
				_local15 = (_local15 + (50 * _local6.facingDir));
			} else {
				if (_local6.aimAngleUp){
					_local16 = (_local16 - 50);
					if (_local6.aimAngleForward){
						_local15 = (_local15 + (50 * _local6.facingDir));
					};
				} else {
					if (_local6.aimAngleDown){
						_local16 = (_local16 + 50);
						if (_local6.aimAngleForward){
							_local15 = (_local15 + (50 * _local6.facingDir));
						};
					} else {
						_local15 = (_local15 + (50 * _local6.facingDir));
					};
				};
			};
			_local17 = (_local13 - _local15);
			_local18 = (_local14 - _local16);
			var _local19:Number = Math.sqrt(((_local17 * _local17) + (_local18 * _local18)));
			_local20 = Math.atan2(_local18, _local17);
			_local21 = 1;
			if (_local15 < _local6.x){
				_local21 = -1;
			};
			_local7.addBullet(_local13, _local14, _local21, _local20, _arg1, "", true, _local6.getNormalAttackPower(), false, _local6.whichWeapon.dropName);
			if (_arg2){
				_local22 = Math.floor((_arg4 / 2));
				_local23 = 0;
				_local24 = 1;
				while (_local24 <= _local22) {
					_local23 = (_local20 - (_arg5 * _local24));
					_local7.addBullet(_local13, _local14, _local21, _local23, _arg3, "", true, _local6.getNormalAttackPower(), false, _local6.whichWeapon.dropName);
					_local23 = (_local20 + (_arg5 * _local24));
					_local7.addBullet(_local13, _local14, _local21, _local23, _arg3, "", true, _local6.getNormalAttackPower(), false, _local6.whichWeapon.dropName);
					_local24++;
				};
			};
			if (_local6.hasWeaponType == "pistol"){
				if (_local6.whichWeapon.dropName == "RomanCandle"){
					_local6.gameObj.soundManager.playSound("shoot_romancandle.wav");
				} else {
					if (_local6.whichWeapon.dropName == "SquirtGun"){
						_local6.gameObj.soundManager.playSound("shoot_squirtgun.wav");
					} else {
						_local6.gameObj.soundManager.playSound("shoot_pistol.wav");
					};
				};
			} else {
				if (_local6.hasWeaponType == "longgun"){
					if (_local6.whichWeapon.dropName == "SubMachineGun"){
						_local6.gameObj.soundManager.playSound("shoot_machinegun.wav");
					} else {
						if (_local6.whichWeapon.dropName == "Flamethrower"){
							_local6.gameObj.soundManager.playSound("shoot_flamethrower.wav");
						} else {
							if ((((_local6.whichWeapon.dropName == "HarpoonGun")) || ((_local6.whichWeapon.dropName == "Crossbow")))){
								_local6.gameObj.soundManager.playSound("shoot_crossbow.wav");
							} else {
								_local6.gameObj.soundManager.playSound("shoot_rifle.wav");
							};
						};
					};
				} else {
					if (_local6.hasWeaponType == "gatling"){
						_local6.gameObj.soundManager.playSound("shoot_machinegun.wav");
					} else {
						if (_local6.hasWeaponType == "bazooka"){
							_local6.gameObj.soundManager.playSound("shoot_bazooka.wav");
						};
					};
				};
			};
			_local6.bulletsFired++;
			_local6.whichWeapon.useBullet();
			if (_local6.hasWeaponType == "bazooka"){
				_local6.gameObj.gameCam.setCameraJiggle(5, 5);
			};
		}

	}
}//package cactusGame.models.characters 

****************

//BarrelBreakEffect (cactusGame.models.effects.BarrelBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BarrelBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function BarrelBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:BarrelBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "BarrelBreakEffect";
			sheetname = "barrel_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:BarrelBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:BarrelBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//BigImpactEffect (cactusGame.models.effects.BigImpactEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BigImpactEffect extends Effect {

		public var anim1CycleFrames:Array;
		public var anim2CycleFrames:Array;
		public var whichAnim:Number;// = 1

		public function BigImpactEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			anim1CycleFrames = ["anim1", 2, 1, 0, -1, [0, 1, 2, 3]];
			anim2CycleFrames = ["anim2", 2, 1, 0, -1, [4, 5, 6, 7]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:BigImpactEffect = this;
			if (Math.random() > 0.5){
				_local9.whichAnim = 2;
			} else {
				_local9.whichAnim = 1;
			};
		}
		override public function defineVars(){
			type = "BigImpactEffect";
			sheetname = "bigimpact_effect_sheet";
			spritewidth = 75;
			spriteheight = 75;
			spriteCenterX = 37;
			spriteCenterY = 37;
			spriteTargetX = 37;
			spriteTargetY = 37;
			sheetWidth = 4;
			sheetHeight = 2;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:BigImpactEffect = this;
			var _local2:Array = _local1[(("anim" + _local1.whichAnim) + "CycleFrames")];
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:BigImpactEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}

	}
}//package cactusGame.models.effects 

****************

//BossBubbleEffect (cactusGame.models.effects.BossBubbleEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BossBubbleEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var introTimerMax:Number;// = 90
		public var introTimer:Number;// = 0
		public var glowEffectID:Number;// = -1
		public var initialY:Number;// = 0

		public function BossBubbleEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
		}
		override public function defineVars(){
			type = "BossBubbleEffect";
			sheetname = "boss_bubble_effect";
			spritewidth = 248;
			spriteheight = 187;
			spriteCenterX = 124;
			spriteCenterY = 93;
			spriteTargetX = 124;
			spriteTargetY = 93;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:BossBubbleEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:BossBubbleEffect = this;
		}
		override public function updateObject(){
			var _local1:BossBubbleEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			_local1.updateSprite();
			_local1.introTimer++;
			if (_local1.introTimer >= _local1.introTimerMax){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//BoulderBreakEffect (cactusGame.models.effects.BoulderBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BoulderBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function BoulderBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:BoulderBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "BoulderBreakEffect";
			sheetname = "boulder_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:BoulderBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:BoulderBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//BrambleBreakEffect (cactusGame.models.effects.BrambleBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class BrambleBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function BrambleBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:BrambleBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "BrambleBreakEffect";
			sheetname = "bramble_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:BrambleBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:BrambleBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//ChickenCoopFront (cactusGame.models.effects.ChickenCoopFront)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;

	public class ChickenCoopFront extends Effect {

		public var animCycleFrames:Array;

		public function ChickenCoopFront(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:ChickenCoopFront = this;
		}
		override public function defineVars(){
			type = "ChickenCoopFront";
			sheetname = "chickencoop_front_sheet";
			spritewidth = 128;
			spriteheight = 66;
			spriteCenterX = 64;
			spriteCenterY = 33;
			spriteTargetX = 16;
			spriteTargetY = 10;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:ChickenCoopFront = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function updateObject(){
			var _local1:ChickenCoopFront = this;
			_local1.updateSprite();
		}
		override public function checkOnScreen():Boolean{
			var _local1:Effect = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 6))) && ((_local1.xtile < (_local2.currentXtileRight + 6))))){
				return (true);
			};
			return (false);
		}

	}
}//package cactusGame.models.effects 

****************

//CrateBreakEffect (cactusGame.models.effects.CrateBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class CrateBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function CrateBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:CrateBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "CrateBreakEffect";
			sheetname = "crate_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:CrateBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:CrateBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//DerringerTargetBreakEffect (cactusGame.models.effects.DerringerTargetBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class DerringerTargetBreakEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var piece2CycleFrames:Array;
		public var piece3CycleFrames:Array;
		public var piece4CycleFrames:Array;

		public function DerringerTargetBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:DerringerTargetBreakEffect;
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			piece2CycleFrames = ["piece2", 2, 1, 0, 0, [1]];
			piece3CycleFrames = ["piece3", 2, 1, 0, 0, [2]];
			piece4CycleFrames = ["piece4", 2, 1, 0, 0, [3]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "DerringerTargetBreakEffect";
			sheetname = "derringertarget_break_sheet";
			spritewidth = 15;
			spriteheight = 15;
			spriteCenterX = 7;
			spriteCenterY = 7;
			spriteTargetX = 7;
			spriteTargetY = 7;
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:DerringerTargetBreakEffect = this;
			if (_local1.subtype == ""){
				_local2 = _local1.piece1CycleFrames;
			} else {
				_local2 = _local1[(_local1.subtype + "CycleFrames")];
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:DerringerTargetBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//DustEffect (cactusGame.models.effects.DustEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class DustEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function DustEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:DustEffect = this;
			if (_local9.subtype == "anim"){
				if (_arg7 < 0){
					_local9.dirx = -1;
				} else {
					if (_arg7 > 0){
						_local9.dirx = 1;
					} else {
						_local9.dirx = 0;
					};
				};
				if (_arg8 > 0){
					_local9.jump = true;
					_local9.jumpspeed = 0;
				} else {
					if (_arg8 < 0){
						_local9.jump = true;
						_local9.jumpspeed = _local9.jumpstart;
					} else {
						_local9.jump = false;
					};
				};
			};
		}
		override public function defineVars(){
			type = "DustEffect";
			sheetname = "dust_effect_sheet";
			spritewidth = 20;
			spriteheight = 20;
			spriteCenterX = 10;
			spriteCenterY = 10;
			spriteTargetX = 10;
			spriteTargetY = 10;
			sheetWidth = 7;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -4;
			speed = 2;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:DustEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:DustEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				if (_local1.subtype == "anim"){
					if (_local1.jump){
						_local1.jumpChar(false);
					};
					if (_local1.dirx != 0){
						_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
					};
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//ExplosionEffect (cactusGame.models.effects.ExplosionEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;

	public class ExplosionEffect extends Effect {

		public var animCycleFrames:Array;
		public var delay1CycleFrames:Array;
		public var delay2CycleFrames:Array;
		public var delay3CycleFrames:Array;

		public function ExplosionEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, -1, [4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			delay1CycleFrames = ["delay1", 2, 1, 0, -1, [99, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			delay2CycleFrames = ["delay2", 2, 1, 0, -1, [99, 99, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			delay3CycleFrames = ["delay3", 2, 1, 0, -1, [99, 99, 99, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:ExplosionEffect = this;
			_local9.gameObj.soundManager.playSound("bombexplosion.wav");
		}
		override public function defineVars(){
			type = "ExplosionEffect";
			sheetname = "explosion_sheet";
			spritewidth = 88;
			spriteheight = 88;
			spriteCenterX = 44;
			spriteCenterY = 44;
			spriteTargetX = 44;
			spriteTargetY = 44;
			sheetWidth = 19;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:ExplosionEffect = this;
			if (_local1.subtype == "delay1"){
				_local2 = _local1.delay1CycleFrames;
			} else {
				if (_local1.subtype == "delay2"){
					_local2 = _local1.delay2CycleFrames;
				} else {
					if (_local1.subtype == "delay3"){
						_local2 = _local1.delay3CycleFrames;
					} else {
						_local2 = _local1.animCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ExplosionEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}

	}
}//package cactusGame.models.effects 

****************

//FeatherEffect (cactusGame.models.effects.FeatherEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class FeatherEffect extends Effect {

		public var fallRightCycleFrames:Array;
		public var fallLeftCycleFrames:Array;
		public var landedCycleFrames:Array;

		public function FeatherEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:FeatherEffect;
			fallRightCycleFrames = ["fallRight", 2, 1, 0, -1, [0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 5, 5, 5, 5, 5]];
			fallLeftCycleFrames = ["fallLeft", 2, 1, 0, -1, [5, 5, 5, 5, 5, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0]];
			landedCycleFrames = ["landed", 2, 1, 0, -1, [2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (0 - Math.floor((Math.random() * 4)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
		}
		override public function defineVars(){
			type = "FeatherEffect";
			sheetname = "feather_effect_sheet";
			spritewidth = 18;
			spriteheight = 12;
			spriteCenterX = 9;
			spriteCenterY = 6;
			spriteTargetX = 9;
			spriteTargetY = 6;
			sheetWidth = 6;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			maxjumpvelocity = 3;
			jumpstart = -14;
			speed = 2;
			foreground = false;
			height = 4;
			width = 9;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:FeatherEffect = this;
			if (_local1.jump){
				if (_local1.dirx == 1){
					_local2 = _local1.fallRightCycleFrames;
				} else {
					_local2 = _local1.fallLeftCycleFrames;
				};
			} else {
				_local2 = _local1.landedCycleFrames;
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:FeatherEffect = this;
			if (_local1.cycleName == "fallRight"){
				_local1.dirx = -1;
			} else {
				if (_local1.cycleName == "fallLeft"){
					_local1.dirx = 1;
				} else {
					if (_local1.cycleName == "landed"){
						_local1.gameObj.effectManager.removeEffect(_local1.id);
					};
				};
			};
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				if (_local1.jump){
					_local1.jumpChar();
					_local1.moveChar(_local1.dirx, 0, 0, true);
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//FireFlameEffect (cactusGame.models.effects.FireFlameEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class FireFlameEffect extends Effect {

		public var statAttack:Number;// = 40
		public var flameCycleFrames:Array;
		public var fadeOutCycleFrames:Array;
		public var fadeOutDelay1CycleFrames:Array;
		public var fadeOutDelay2CycleFrames:Array;
		public var fadeInCycleFrames:Array;
		public var delay1CycleFrames:Array;
		public var delay2CycleFrames:Array;
		public var isFadingIn:Boolean;// = true
		public var isFading:Boolean;// = false
		public var animIsSet:Boolean;// = false
		public var fireTimer:Number;// = 0
		public var fireTimerMax:Number;// = 90
		public var fromEnemy:Boolean;// = false
		public var delayDamageTimer:Number;// = 50
		public var delayDamageTimerMax:Number;// = 40

		public function FireFlameEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:FireFlameEffect;
			flameCycleFrames = ["flame", 2, 1, 0, 0, [5, 6, 7, 8, 7, 6]];
			fadeOutCycleFrames = ["fadeOut", 2, 1, 0, -1, [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			fadeOutDelay1CycleFrames = ["fadeOutDelay1", 2, 1, 0, -1, [5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			fadeOutDelay2CycleFrames = ["fadeOutDelay2", 2, 1, 0, -1, [5, 6, 7, 8, 7, 6, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			fadeInCycleFrames = ["fadeIn", 2, 1, 0, -1, [0, 1, 2, 3, 4]];
			delay1CycleFrames = ["delay1", 2, 1, 0, -1, [99, 99, 99, 99, 0, 1, 2, 3, 4]];
			delay2CycleFrames = ["delay2", 2, 1, 0, -1, [99, 99, 99, 99, 99, 99, 99, 99, 0, 1, 2, 3, 4]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			if (_arg6){
				_local9.jump = true;
				_local9.jumpspeed = 0;
				_local9.followPlayer = false;
			};
		}
		override public function defineVars(){
			type = "FireFlameEffect";
			sheetname = "bullet_flamethrower_sheet";
			spritewidth = 52;
			spriteheight = 52;
			spriteCenterX = 26;
			spriteCenterY = 26;
			spriteTargetX = 26;
			spriteTargetY = 36;
			sheetWidth = 20;
			sheetHeight = 1;
			flipBlitOffset = 0;
			foreground = true;
			collRect = new Rectangle(-25, -25, 50, 50);
			jumpstart = 0;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:FireFlameEffect = this;
			if (_local1.isFadingIn){
				if (_local1.subtype == "delay1"){
					_local2 = _local1.delay1CycleFrames;
				} else {
					if (_local1.subtype == "delay2"){
						_local2 = _local1.delay2CycleFrames;
					} else {
						_local2 = _local1.fadeInCycleFrames;
					};
				};
			} else {
				if (_local1.isFading){
					if (_local1.subtype == "delay1"){
						_local2 = _local1.fadeOutDelay1CycleFrames;
					} else {
						if (_local1.subtype == "delay2"){
							_local2 = _local1.fadeOutDelay2CycleFrames;
						} else {
							_local2 = _local1.fadeOutCycleFrames;
						};
					};
				} else {
					_local2 = _local1.flameCycleFrames;
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:FireFlameEffect = this;
			if ((((((_local1.cycleName == "fadeOut")) || ((_local1.cycleName == "fadeOutDelay1")))) || ((_local1.cycleName == "fadeOutDelay2")))){
				_local1.gameObj.effectManager.removeEffect(_local1.id);
			} else {
				if ((((((_local1.cycleName == "fadeIn")) || ((_local1.cycleName == "delay1")))) || ((_local1.cycleName == "delay2")))){
					_local1.isFadingIn = false;
				};
			};
		}
		override public function updateObject(){
			var ob:FireFlameEffect = this;
			var gameObj:GameModule = ob.gameObj;
			var manager:EffectManager = ob.gameObj.effectManager;
			var display:GameDisplay = gameObj.gameDisplay;
			if (ob.followPlayer){
				ob.x = (gameObj.playerObj.x + ob.playerXoffset);
				ob.y = (gameObj.playerObj.y + ob.playerYoffset);
				ob.xtile = Math.floor((ob.x / display.tileWidth));
				ob.ytile = Math.floor((ob.y / display.tileWidth));
			};
			if (!ob.fromEnemy){
				ob.checkHittingEnemies();
			};
			if (ob.jump){
				ob.jumpChar();
			};
			ob.updateSprite();
			try {
				if (((!(ob.animIsSet)) && (!(ob.isFadingIn)))){
					ob.animationFrame = Math.floor((Math.random() * 14));
					ob.cycleFrame = ob.animationFrame;
					ob.animIsSet = true;
				};
				ob.fireTimer++;
				if (ob.fireTimer == ob.fireTimerMax){
					ob.isFading = true;
				};
			} catch(err) {
			};
		}
		public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local3:FireFlameEffect = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (!_local9.isHit){
						_local9.getHit(_local3.statAttack, _local3.dirx, true, "Lantern");
					};
				};
				_local8++;
			};
			return (_local7);
		}

	}
}//package cactusGame.models.effects 

****************

//GrabWeaponEffect (cactusGame.models.effects.GrabWeaponEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GrabWeaponEffect extends Effect {

		public var animCycleFrames:Array;
		public var targetItemID:Number;// = -1
		public var fadingIn:Boolean;// = true
		public var fadingOut:Boolean;// = false

		public function GrabWeaponEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 1, 1]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:GrabWeaponEffect = this;
			_local9.targetItemID = Number(_local9.subtype);
			_local9.subtype = "";
			_local9.animationFrame = 0;
		}
		override public function defineVars(){
			type = "GrabWeaponEffect";
			sheetname = "grab_weapon_effect";
			spritewidth = 86;
			spriteheight = 33;
			spriteCenterX = 43;
			spriteCenterY = 16;
			spriteTargetX = 43;
			spriteTargetY = -8;
			sheetWidth = 3;
			sheetHeight = 1;
			foreground = false;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GrabWeaponEffect = this;
			_local2 = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:GrabWeaponEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		public function stopGlow(){
			var _local1:GrabWeaponEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var ob:GrabWeaponEffect;
			ob = this;
			var gameObj:GameModule = ob.gameObj;
			var manager:ItemManager = ob.gameObj.itemManager;
			var display:GameDisplay = gameObj.gameDisplay;
			try {
				ob.x = manager[("GameItem" + ob.targetItemID)].x;
				ob.y = manager[("GameItem" + ob.targetItemID)].y;
				ob.xtile = Math.floor((ob.x / display.tileWidth));
				ob.ytile = Math.floor((ob.y / display.tileWidth));
				ob.updateSprite();
			} catch(err) {
				ob.stopGlow();
			};
		}

	}
}//package cactusGame.models.effects 

****************

//HurtNeedleEffect (cactusGame.models.effects.HurtNeedleEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class HurtNeedleEffect extends Effect {

		public var anim1CycleFrames:Array;
		public var anim2CycleFrames:Array;
		public var anim3CycleFrames:Array;
		public var anim4CycleFrames:Array;
		public var whichType:Number;// = 1
		public var totalTypes:Number;// = 4

		public function HurtNeedleEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:HurtNeedleEffect;
			anim1CycleFrames = ["anim1", 2, 1, 0, 0, [0]];
			anim2CycleFrames = ["anim2", 2, 1, 0, 0, [1]];
			anim3CycleFrames = ["anim3", 2, 1, 0, 0, [2]];
			anim4CycleFrames = ["anim4", 2, 1, 0, 0, [0, 0, 2, 2]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (-4 - Math.floor((Math.random() * 4)));
			_local9.jump = true;
			if (_arg7 > 0){
				_local9.dirx = 1;
			} else {
				if (_arg7 < 0){
					_local9.dirx = -1;
				} else {
					_local9.dirx = 0;
				};
			};
			if (_arg8 >= 0){
				_local9.jumpspeed = 0;
			};
			_local9.playerXoffset = 0;
			_local9.playerYoffset = 0;
			_local9.speed = (8 + Math.floor((Math.random() * 8)));
			_local9.whichType = Math.ceil((Math.random() * _local9.totalTypes));
			_local9.animationFrame = _local9[(("anim" + _local9.whichType) + "CycleFrames")][5][0];
		}
		override public function defineVars(){
			type = "HurtNeedleEffect";
			sheetname = "mccoy_hit_needle_sheet";
			spritewidth = 5;
			spriteheight = 5;
			spriteCenterX = 2;
			spriteCenterY = 2;
			spriteTargetX = 2;
			spriteTargetY = 2;
			sheetWidth = 3;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 8;
			foreground = false;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:HurtNeedleEffect = this;
			_local2 = _local1[(("anim" + _local1.whichType) + "CycleFrames")];
			return (_local2);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				if (_local1.dirx != 0){
					_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//HurtSymbolEffect (cactusGame.models.effects.HurtSymbolEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class HurtSymbolEffect extends Effect {

		public var anim1CycleFrames:Array;
		public var anim2CycleFrames:Array;
		public var anim3CycleFrames:Array;
		public var anim4CycleFrames:Array;
		public var whichType:Number;// = 1
		public var totalTypes:Number;// = 4
		public var symbolsShown:Number;// = 0
		public var maxToShow:Number;// = 2
		public var verticalOffset:Number;// = 0
		public var verticalSpeed:Number;// = 3
		public var horizontalOffset:Number;// = 0
		public var horizontalSpeed:Number;// = 3

		public function HurtSymbolEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			anim1CycleFrames = ["anim1", 2, 1, 0, -1, [99, 0, 0, 4, 8, 12, 99, 99, 99]];
			anim2CycleFrames = ["anim2", 2, 1, 0, -1, [99, 99, 1, 1, 5, 9, 13, 99, 99]];
			anim3CycleFrames = ["anim3", 2, 1, 0, -1, [2, 2, 6, 10, 14, 99, 99, 99, 99]];
			anim4CycleFrames = ["anim4", 2, 1, 0, -1, [99, 99, 99, 99, 3, 3, 7, 11, 15]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:HurtSymbolEffect = this;
			if (_arg5 == "right"){
				_local9.verticalSpeed = 0;
				_local9.horizontalSpeed = speed;
			} else {
				if (_arg5 == "left"){
					_local9.verticalSpeed = 0;
					_local9.horizontalSpeed = (speed * -1);
				} else {
					if (_arg5 == "up"){
						_local9.verticalSpeed = (speed * -1);
						_local9.horizontalSpeed = 0;
					} else {
						if (_arg5 == "down"){
							_local9.horizontalSpeed = 0;
							_local9.verticalSpeed = speed;
						} else {
							if (_arg5 == "45right"){
								_local9.verticalSpeed = (Math.sqrt(((speed * speed) / 2)) * -1);
								_local9.horizontalSpeed = Math.sqrt(((speed * speed) / 2));
							} else {
								if (_arg5 == "45left"){
									_local9.verticalSpeed = (Math.sqrt(((speed * speed) / 2)) * -1);
									_local9.horizontalSpeed = (Math.sqrt(((speed * speed) / 2)) * -1);
								} else {
									if (_arg5 == "45downright"){
										_local9.verticalSpeed = Math.sqrt(((speed * speed) / 2));
										_local9.horizontalSpeed = Math.sqrt(((speed * speed) / 2));
									} else {
										if (_arg5 == "45downleft"){
											_local9.verticalSpeed = Math.sqrt(((speed * speed) / 2));
											_local9.horizontalSpeed = (Math.sqrt(((speed * speed) / 2)) * -1);
										};
									};
								};
							};
						};
					};
				};
			};
			_local9.chooseSymbol();
		}
		override public function defineVars(){
			type = "HurtSymbolEffect";
			sheetname = "mccoy_hit_symbol_sheet";
			spritewidth = 15;
			spriteheight = 15;
			spriteCenterX = 7;
			spriteCenterY = 7;
			spriteTargetX = 7;
			spriteTargetY = 7;
			sheetWidth = 4;
			sheetHeight = 4;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		public function chooseSymbol(){
			var _local1:HurtSymbolEffect;
			_local1 = this;
			_local1.whichType = Math.ceil((Math.random() * _local1.totalTypes));
			_local1.animationFrame = _local1[(("anim" + _local1.whichType) + "CycleFrames")][5][0];
			_local1.verticalOffset = 0;
			_local1.symbolsShown++;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:HurtSymbolEffect = this;
			_local2 = _local1[(("anim" + _local1.whichType) + "CycleFrames")];
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:HurtSymbolEffect = this;
			if (_local1.symbolsShown < _local1.maxToShow){
				_local1.chooseSymbol();
			} else {
				_local1.gameObj.effectManager.removeEffect(_local1.id);
			};
		}
		override public function updateObject(){
			var _local1:HurtSymbolEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				if (_local1.subtype != "static"){
					_local1.verticalOffset = (_local1.verticalOffset + _local1.verticalSpeed);
					_local1.horizontalOffset = (_local1.horizontalOffset + _local1.horizontalSpeed);
					_local1.x = ((_local2.playerObj.x + _local1.playerXoffset) + _local1.horizontalOffset);
					_local1.y = ((_local2.playerObj.y + _local1.playerYoffset) + _local1.verticalOffset);
					_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
					_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//ImpactEffect (cactusGame.models.effects.ImpactEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class ImpactEffect extends Effect {

		public var anim1CycleFrames:Array;
		public var anim2CycleFrames:Array;
		public var whichAnim:Number;// = 1

		public function ImpactEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			anim1CycleFrames = ["anim1", 2, 1, 0, -1, [0, 1, 2, 3]];
			anim2CycleFrames = ["anim2", 2, 1, 0, -1, [4, 5, 6, 7]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:ImpactEffect = this;
			if (Math.random() > 0.5){
				_local9.whichAnim = 2;
			} else {
				_local9.whichAnim = 1;
			};
		}
		override public function defineVars(){
			type = "ImpactEffect";
			sheetname = "impact_effect_sheet";
			spritewidth = 40;
			spriteheight = 40;
			spriteCenterX = 20;
			spriteCenterY = 20;
			spriteTargetX = 22;
			spriteTargetY = 20;
			sheetWidth = 4;
			sheetHeight = 2;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:ImpactEffect = this;
			var _local2:Array = _local1[(("anim" + _local1.whichAnim) + "CycleFrames")];
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ImpactEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}

	}
}//package cactusGame.models.effects 

****************

//ItemGlowEffect (cactusGame.models.effects.ItemGlowEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class ItemGlowEffect extends Effect {

		public var fadeInCycleFrames:Array;
		public var fadeOutCycleFrames:Array;
		public var animCycleFrames:Array;
		public var targetEffectID:Number;// = -1
		public var fadingIn:Boolean;// = true
		public var fadingOut:Boolean;// = false

		public function ItemGlowEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			fadeInCycleFrames = ["fadeIn", 2, 1, 0, -1, [9, 8, 7, 6, 5]];
			fadeOutCycleFrames = ["fadeOut", 2, 1, 0, -1, [5, 6, 7, 8, 9]];
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 1, 2, 3, 4, 3, 2, 1]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:ItemGlowEffect = this;
			_local9.targetEffectID = Number(_local9.subtype);
			_local9.subtype = "";
			_local9.animationFrame = 9;
		}
		override public function defineVars(){
			type = "ItemGlowEffect";
			sheetname = "item_glow_effect";
			spritewidth = 150;
			spriteheight = 150;
			spriteCenterX = 75;
			spriteCenterY = 75;
			spriteTargetX = 75;
			spriteTargetY = 75;
			sheetWidth = 10;
			sheetHeight = 1;
			foreground = false;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:ItemGlowEffect = this;
			if (_local1.fadingIn){
				_local2 = _local1.fadeInCycleFrames;
			} else {
				if (_local1.fadingOut){
					_local2 = _local1.fadeOutCycleFrames;
				} else {
					_local2 = _local1.animCycleFrames;
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ItemGlowEffect = this;
			if (_local1.fadingIn){
				_local1.fadingIn = false;
			} else {
				if (_local1.fadingOut){
					_local1.gameObj.effectManager.removeEffect(_local1.id);
				};
			};
		}
		public function stopGlow(){
			var _local1:ItemGlowEffect = this;
			_local1.fadingIn = false;
			_local1.fadingOut = true;
		}
		override public function updateObject(){
			var ob:ItemGlowEffect;
			ob = this;
			var gameObj:GameModule = ob.gameObj;
			var manager:EffectManager = ob.gameObj.effectManager;
			var display:GameDisplay = gameObj.gameDisplay;
			if (display.checkOnScreen(ob)){
				if (!ob.fadingOut){
					try {
						ob.x = manager[("Effect" + ob.targetEffectID)].x;
						ob.y = manager[("Effect" + ob.targetEffectID)].y;
						ob.xtile = Math.floor((ob.x / display.tileWidth));
						ob.ytile = Math.floor((ob.y / display.tileWidth));
					} catch(err) {
						ob.stopGlow();
					};
				};
				ob.updateSprite();
			} else {
				manager.removeEffect(ob.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MapPieceEffect (cactusGame.models.effects.MapPieceEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class MapPieceEffect extends Effect {

		public var animCycleFrames:Array;
		public var distanceToTravel:Number;// = 120
		public var startingY:Number;// = 0
		public var speedDivisor:Number;// = 8
		public var whichAnim:Number;// = 1
		public var glowEffectID:Number;// = -1

		public function MapPieceEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MapPieceEffect = this;
			_local9.startingY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "MapPieceEffect";
			sheetname = "map_piece_sheet";
			spritewidth = 46;
			spriteheight = 27;
			spriteCenterX = 23;
			spriteCenterY = 13;
			spriteTargetX = 23;
			spriteTargetY = 13;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:MapPieceEffect = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MapPieceEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function destroy(){
			var ob:MapPieceEffect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
		}
		override public function updateObject(){
			var _local5:Number;
			var _local1:MapPieceEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local5 = (_local1.y - (_local1.startingY - _local1.distanceToTravel));
				if (_local5 > 1){
					_local1.y = (_local1.y - (_local5 / _local1.speedDivisor));
				} else {
					_local1.y = (_local1.startingY - _local1.distanceToTravel);
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MetalCrateBreakEffect (cactusGame.models.effects.MetalCrateBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class MetalCrateBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function MetalCrateBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MetalCrateBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "MetalCrateBreakEffect";
			sheetname = "metalcrate_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MetalCrateBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MetalCrateBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MineCartBreakEffect (cactusGame.models.effects.MineCartBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class MineCartBreakEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var piece2CycleFrames:Array;
		public var piece3CycleFrames:Array;
		public var piece4CycleFrames:Array;

		public function MineCartBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:MineCartBreakEffect;
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			piece2CycleFrames = ["piece2", 2, 1, 0, 0, [1]];
			piece3CycleFrames = ["piece3", 2, 1, 0, 0, [2]];
			piece4CycleFrames = ["piece4", 2, 1, 0, 0, [3]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "MineCartBreakEffect";
			sheetname = "minecart_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MineCartBreakEffect = this;
			if (_local1.subtype == ""){
				_local2 = _local1.piece1CycleFrames;
			} else {
				_local2 = _local1[(_local1.subtype + "CycleFrames")];
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MineCartBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MoneyCopperEffect (cactusGame.models.effects.MoneyCopperEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public class MoneyCopperEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var distanceToJump:Number;// = 65
		public var startingY:Number;// = 0
		public var timePerDirection:Number;// = 8
		public var jumpTimer:Number;// = 0
		public var goingUp:Boolean;// = true

		public function MoneyCopperEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [8, 7, 6, 5, 4, 3, 2, 1, 0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MoneyCopperEffect = this;
		}
		override public function defineVars(){
			type = "MoneyCopperEffect";
			sheetname = "money_copper_sheet";
			spritewidth = 7;
			spriteheight = 8;
			spriteCenterX = 3;
			spriteCenterY = 4;
			spriteTargetX = 3;
			spriteTargetY = 4;
			height = 4;
			width = 4;
			collRect = new Rectangle(-4, -4, 8, 8);
			sheetWidth = 9;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MoneyCopperEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MoneyCopperEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:MoneyCopperEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = 0;
			var _local6:Boolean;
			if (_local1.followPlayer){
				_local1.x = (_local1.gameObj.playerObj.x + _local1.playerXoffset);
				_local1.y = (_local1.gameObj.playerObj.y + _local1.playerYoffset);
			};
			_local1.jumpTimer++;
			if (_local1.goingUp){
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.goingUp = false;
					_local1.jumpTimer = 0;
				} else {
					_local5 = Quadratic.easeOut(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = (_local1.y - _local5);
			} else {
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.jumpTimer = 0;
					_local6 = true;
				} else {
					_local5 = Quadratic.easeIn(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = ((_local1.y - _local1.distanceToJump) + _local5);
			};
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
			_local1.updateSprite();
			if (_local6){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MoneyDiamondEffect (cactusGame.models.effects.MoneyDiamondEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public class MoneyDiamondEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var distanceToJump:Number;// = 65
		public var startingY:Number;// = 0
		public var timePerDirection:Number;// = 8
		public var jumpTimer:Number;// = 0
		public var goingUp:Boolean;// = true

		public function MoneyDiamondEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MoneyDiamondEffect = this;
		}
		override public function defineVars(){
			type = "MoneyDiamondEffect";
			sheetname = "money_diamond_sheet";
			spritewidth = 15;
			spriteheight = 19;
			spriteCenterX = 7;
			spriteCenterY = 9;
			spriteTargetX = 7;
			spriteTargetY = 13;
			height = 6;
			width = 6;
			collRect = new Rectangle(-7, -9, 14, 14);
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MoneyDiamondEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MoneyDiamondEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:MoneyDiamondEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = 0;
			var _local6:Boolean;
			if (_local1.followPlayer){
				_local1.x = (_local1.gameObj.playerObj.x + _local1.playerXoffset);
				_local1.y = (_local1.gameObj.playerObj.y + _local1.playerYoffset);
			};
			_local1.jumpTimer++;
			if (_local1.goingUp){
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.goingUp = false;
					_local1.jumpTimer = 0;
				} else {
					_local5 = Quadratic.easeOut(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = (_local1.y - _local5);
			} else {
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.jumpTimer = 0;
					_local6 = true;
				} else {
					_local5 = Quadratic.easeIn(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = ((_local1.y - _local1.distanceToJump) + _local5);
			};
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
			_local1.updateSprite();
			if (_local6){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MoneyEmeraldEffect (cactusGame.models.effects.MoneyEmeraldEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public class MoneyEmeraldEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var distanceToJump:Number;// = 65
		public var startingY:Number;// = 0
		public var timePerDirection:Number;// = 8
		public var jumpTimer:Number;// = 0
		public var goingUp:Boolean;// = true

		public function MoneyEmeraldEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MoneyEmeraldEffect = this;
		}
		override public function defineVars(){
			type = "MoneyEmeraldEffect";
			sheetname = "money_emerald_sheet";
			spritewidth = 11;
			spriteheight = 15;
			spriteCenterX = 5;
			spriteCenterY = 7;
			spriteTargetX = 5;
			spriteTargetY = 9;
			height = 6;
			width = 6;
			collRect = new Rectangle(-6, -6, 12, 12);
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MoneyEmeraldEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MoneyEmeraldEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:MoneyEmeraldEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = 0;
			var _local6:Boolean;
			if (_local1.followPlayer){
				_local1.x = (_local1.gameObj.playerObj.x + _local1.playerXoffset);
				_local1.y = (_local1.gameObj.playerObj.y + _local1.playerYoffset);
			};
			_local1.jumpTimer++;
			if (_local1.goingUp){
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.goingUp = false;
					_local1.jumpTimer = 0;
				} else {
					_local5 = Quadratic.easeOut(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = (_local1.y - _local5);
			} else {
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.jumpTimer = 0;
					_local6 = true;
				} else {
					_local5 = Quadratic.easeIn(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = ((_local1.y - _local1.distanceToJump) + _local5);
			};
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
			_local1.updateSprite();
			if (_local6){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MoneyGoldEffect (cactusGame.models.effects.MoneyGoldEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public class MoneyGoldEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var distanceToJump:Number;// = 65
		public var startingY:Number;// = 0
		public var timePerDirection:Number;// = 8
		public var jumpTimer:Number;// = 0
		public var goingUp:Boolean;// = true

		public function MoneyGoldEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MoneyGoldEffect = this;
		}
		override public function defineVars(){
			type = "MoneyGoldEffect";
			sheetname = "money_gold_sheet";
			spritewidth = 10;
			spriteheight = 11;
			spriteCenterX = 5;
			spriteCenterY = 5;
			spriteTargetX = 5;
			spriteTargetY = 5;
			height = 5;
			width = 5;
			collRect = new Rectangle(-5, -5, 10, 10);
			sheetWidth = 11;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MoneyGoldEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MoneyGoldEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:MoneyGoldEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = 0;
			var _local6:Boolean;
			if (_local1.followPlayer){
				_local1.x = (_local1.gameObj.playerObj.x + _local1.playerXoffset);
				_local1.y = (_local1.gameObj.playerObj.y + _local1.playerYoffset);
			};
			_local1.jumpTimer++;
			if (_local1.goingUp){
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.goingUp = false;
					_local1.jumpTimer = 0;
				} else {
					_local5 = Quadratic.easeOut(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = (_local1.y - _local5);
			} else {
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.jumpTimer = 0;
					_local6 = true;
				} else {
					_local5 = Quadratic.easeIn(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = ((_local1.y - _local1.distanceToJump) + _local5);
			};
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
			_local1.updateSprite();
			if (_local6){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MoneyRubyEffect (cactusGame.models.effects.MoneyRubyEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public class MoneyRubyEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var distanceToJump:Number;// = 65
		public var startingY:Number;// = 0
		public var timePerDirection:Number;// = 8
		public var jumpTimer:Number;// = 0
		public var goingUp:Boolean;// = true

		public function MoneyRubyEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MoneyRubyEffect = this;
		}
		override public function defineVars(){
			type = "MoneyRubyEffect";
			sheetname = "money_ruby_sheet";
			spritewidth = 11;
			spriteheight = 13;
			spriteCenterX = 5;
			spriteCenterY = 6;
			spriteTargetX = 5;
			spriteTargetY = 6;
			height = 6;
			width = 6;
			collRect = new Rectangle(-6, -6, 12, 12);
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MoneyRubyEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MoneyRubyEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:MoneyRubyEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = 0;
			var _local6:Boolean;
			if (_local1.followPlayer){
				_local1.x = (_local1.gameObj.playerObj.x + _local1.playerXoffset);
				_local1.y = (_local1.gameObj.playerObj.y + _local1.playerYoffset);
			};
			_local1.jumpTimer++;
			if (_local1.goingUp){
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.goingUp = false;
					_local1.jumpTimer = 0;
				} else {
					_local5 = Quadratic.easeOut(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = (_local1.y - _local5);
			} else {
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.jumpTimer = 0;
					_local6 = true;
				} else {
					_local5 = Quadratic.easeIn(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = ((_local1.y - _local1.distanceToJump) + _local5);
			};
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
			_local1.updateSprite();
			if (_local6){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//MoneySilverEffect (cactusGame.models.effects.MoneySilverEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import fl.motion.easing.*;

	public class MoneySilverEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var distanceToJump:Number;// = 65
		public var startingY:Number;// = 0
		public var timePerDirection:Number;// = 8
		public var jumpTimer:Number;// = 0
		public var goingUp:Boolean;// = true

		public function MoneySilverEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:MoneySilverEffect = this;
		}
		override public function defineVars(){
			type = "MoneySilverEffect";
			sheetname = "money_silver_sheet";
			spritewidth = 9;
			spriteheight = 10;
			spriteCenterX = 4;
			spriteCenterY = 5;
			spriteTargetX = 4;
			spriteTargetY = 5;
			height = 5;
			width = 5;
			collRect = new Rectangle(-5, -5, 10, 10);
			sheetWidth = 11;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:MoneySilverEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:MoneySilverEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:MoneySilverEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = 0;
			var _local6:Boolean;
			if (_local1.followPlayer){
				_local1.x = (_local1.gameObj.playerObj.x + _local1.playerXoffset);
				_local1.y = (_local1.gameObj.playerObj.y + _local1.playerYoffset);
			};
			_local1.jumpTimer++;
			if (_local1.goingUp){
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.goingUp = false;
					_local1.jumpTimer = 0;
				} else {
					_local5 = Quadratic.easeOut(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = (_local1.y - _local5);
			} else {
				if (_local1.jumpTimer == _local1.timePerDirection){
					_local5 = _local1.distanceToJump;
					_local1.jumpTimer = 0;
					_local6 = true;
				} else {
					_local5 = Quadratic.easeIn(_local1.jumpTimer, 0, _local1.distanceToJump, _local1.timePerDirection);
				};
				_local1.y = ((_local1.y - _local1.distanceToJump) + _local5);
			};
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
			_local1.updateSprite();
			if (_local6){
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//OreBoulderBreakEffect (cactusGame.models.effects.OreBoulderBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class OreBoulderBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function OreBoulderBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:OreBoulderBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "OreBoulderBreakEffect";
			sheetname = "oreboulder_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:OreBoulderBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:OreBoulderBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//RomanCandleSparkEffect (cactusGame.models.effects.RomanCandleSparkEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class RomanCandleSparkEffect extends Effect {

		public var color1CycleFrames:Array;
		public var color2CycleFrames:Array;
		public var color3CycleFrames:Array;

		public function RomanCandleSparkEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:RomanCandleSparkEffect;
			color1CycleFrames = ["color1", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 0]];
			color2CycleFrames = ["color2", 2, 1, 0, -1, [10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 11, 10]];
			color3CycleFrames = ["color3", 2, 1, 0, -1, [20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 21, 20]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			if (_arg7 > 0){
				_local9.dirx = 1;
			} else {
				if (_arg7 < 0){
					_local9.dirx = -1;
				} else {
					_local9.dirx = 0;
				};
			};
			if (_arg8 >= 0){
				_local9.jumpspeed = 0;
			};
			_local9.playerXoffset = 0;
			_local9.playerYoffset = 0;
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "RomanCandleSparkEffect";
			sheetname = "romancandle_spark_sheet";
			spritewidth = 18;
			spriteheight = 18;
			spriteCenterX = 9;
			spriteCenterY = 9;
			spriteTargetX = 9;
			spriteTargetY = 9;
			sheetWidth = 10;
			sheetHeight = 3;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:RomanCandleSparkEffect = this;
			if (_local1.subtype == "color1"){
				_local2 = _local1.color1CycleFrames;
			} else {
				if (_local1.subtype == "color2"){
					_local2 = _local1.color2CycleFrames;
				} else {
					_local2 = _local1.color3CycleFrames;
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:RomanCandleSparkEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				if (_local1.dirx != 0){
					_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//ScorpionTargetBreakEffect (cactusGame.models.effects.ScorpionTargetBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class ScorpionTargetBreakEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var piece2CycleFrames:Array;
		public var piece3CycleFrames:Array;
		public var piece4CycleFrames:Array;

		public function ScorpionTargetBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:ScorpionTargetBreakEffect;
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			piece2CycleFrames = ["piece2", 2, 1, 0, 0, [1]];
			piece3CycleFrames = ["piece3", 2, 1, 0, 0, [2]];
			piece4CycleFrames = ["piece4", 2, 1, 0, 0, [3]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "ScorpionTargetBreakEffect";
			sheetname = "scorpiontarget_break_sheet";
			spritewidth = 15;
			spriteheight = 15;
			spriteCenterX = 7;
			spriteCenterY = 7;
			spriteTargetX = 7;
			spriteTargetY = 7;
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:ScorpionTargetBreakEffect = this;
			if (_local1.subtype == ""){
				_local2 = _local1.piece1CycleFrames;
			} else {
				_local2 = _local1[(_local1.subtype + "CycleFrames")];
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ScorpionTargetBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//ShimmerEffect (cactusGame.models.effects.ShimmerEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class ShimmerEffect extends Effect {

		public var sparkleCycleFrames:Array;
		public var startX:Number;// = 0
		public var startY:Number;// = 0
		public var rangeWidth:Number;// = 1
		public var rangeHeight:Number;// = 1

		public function ShimmerEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			sparkleCycleFrames = ["sparkle", 2, 1, 0, -1, [4, 3, 2, 1, 0, 1, 2, 3, 4, 99, 99, 99, 99]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:ShimmerEffect = this;
			_local9.startX = _arg2;
			_local9.startY = _arg3;
			_local9.rangeWidth = _arg7;
			_local9.rangeHeight = _arg8;
			_local9.playerXoffset = 0;
			_local9.playerYoffset = 0;
		}
		override public function defineVars(){
			type = "ShimmerEffect";
			sheetname = "shimmer_effect_sheet";
			spritewidth = 7;
			spriteheight = 7;
			spriteCenterX = 3;
			spriteCenterY = 3;
			spriteTargetX = 3;
			spriteTargetY = 3;
			sheetWidth = 5;
			sheetHeight = 1;
			flipBlitOffset = 0;
			foreground = true;
			collRect = new Rectangle(-25, -25, 50, 50);
			jumpstart = 0;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:ShimmerEffect = this;
			_local2 = _local1.sparkleCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ShimmerEffect;
			_local1 = this;
			if (_local1.subtype == "single"){
				_local1.gameObj.effectManager.removeEffect(_local1.id);
			} else {
				_local1.x = (_local1.startX + Math.floor((Math.random() * _local1.rangeWidth)));
				_local1.y = (_local1.startY + Math.floor((Math.random() * _local1.rangeHeight)));
				_local1.xtile = Math.floor((_local1.x / _local1.gameObj.gameDisplay.tileWidth));
				_local1.ytile = Math.floor((_local1.y / _local1.gameObj.gameDisplay.tileWidth));
				_local1.animationFrame = 0;
				_local1.cycleFrame = 0;
			};
		}
		override public function updateObject(){
			var _local1:ShimmerEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.effects 

****************

//SmokeEffect (cactusGame.models.effects.SmokeEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;

	public class SmokeEffect extends Effect {

		public var anim1CycleFrames:Array;
		public var anim2CycleFrames:Array;

		public function SmokeEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			anim1CycleFrames = ["anim1", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8]];
			anim2CycleFrames = ["anim2", 2, 1, 0, -1, [9, 10, 11, 12, 13, 14, 15, 16, 17]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:SmokeEffect = this;
		}
		override public function defineVars(){
			type = "SmokeEffect";
			sheetname = "smoke_effect_sheet";
			spritewidth = 40;
			spriteheight = 40;
			spriteCenterX = 20;
			spriteCenterY = 20;
			spriteTargetX = 20;
			spriteTargetY = 18;
			sheetWidth = 9;
			sheetHeight = 2;
			foreground = false;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:SmokeEffect = this;
			if (_local1.subtype == "anim2"){
				_local2 = _local1.anim2CycleFrames;
			} else {
				_local2 = _local1.anim1CycleFrames;
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:SmokeEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}

	}
}//package cactusGame.models.effects 

****************

//TallGrassBreakEffect (cactusGame.models.effects.TallGrassBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TallGrassBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function TallGrassBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TallGrassBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "TallGrassBreakEffect";
			sheetname = "tallgrass_chunk_sheet";
			spritewidth = 21;
			spriteheight = 20;
			spriteCenterX = 10;
			spriteCenterY = 10;
			spriteTargetX = 10;
			spriteTargetY = 10;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TallGrassBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TallGrassBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//TearGasEffect (cactusGame.models.effects.TearGasEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TearGasEffect extends Effect {

		public var animCycleFrames:Array;
		public var delay1CycleFrames:Array;
		public var delay2CycleFrames:Array;
		public var delay3CycleFrames:Array;
		public var statAttack:Number;// = 36
		public var fromEnemy:Boolean;// = false
		public var delayDamageTimer:Number;// = 50
		public var delayDamageTimerMax:Number;// = 40

		public function TearGasEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 18]];
			delay1CycleFrames = ["delay1", 2, 1, 0, -1, [99, 99, 99, 99, 99, 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 18]];
			delay2CycleFrames = ["delay2", 2, 1, 0, -1, [99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 18]];
			delay3CycleFrames = ["delay3", 2, 1, 0, -1, [99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 0, 1, 2, 3, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13, 14, 14, 15, 16, 17, 18]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TearGasEffect = this;
			if (_arg6){
				_local9.fromEnemy = true;
				_local9.followPlayer = false;
			};
		}
		override public function defineVars(){
			type = "TearGasEffect";
			sheetname = "teargas_smoke_sheet";
			spritewidth = 88;
			spriteheight = 88;
			spriteCenterX = 44;
			spriteCenterY = 44;
			spriteTargetX = 44;
			spriteTargetY = 44;
			sheetWidth = 19;
			sheetHeight = 1;
			foreground = true;
			collRect = new Rectangle(-40, -40, 80, 80);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TearGasEffect = this;
			if (_local1.subtype == "delay1"){
				_local2 = _local1.delay1CycleFrames;
			} else {
				if (_local1.subtype == "delay2"){
					_local2 = _local1.delay2CycleFrames;
				} else {
					if (_local1.subtype == "delay3"){
						_local2 = _local1.delay3CycleFrames;
					} else {
						_local2 = _local1.animCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TearGasEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local5:Boolean;
			var _local1:TearGasEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				if (_local1.followPlayer){
					_local1.x = (_local2.playerObj.x + _local1.playerXoffset);
					_local1.y = (_local2.playerObj.y + _local1.playerYoffset);
					_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
					_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
				};
				if (_local1.fromEnemy){
					_local1.delayDamageTimer++;
					if (_local1.delayDamageTimer > _local1.delayDamageTimerMax){
						_local5 = _local1.checkHittingPlayers();
						if (_local5){
							_local1.delayDamageTimer = 0;
						};
					};
				} else {
					_local1.checkHittingEnemies();
				};
				_local1.updateSprite();
			} else {
				if (_local1.xtile < (_local4.currentXtileLeft - 4)){
					_local3.removeEffect(_local1.id);
				} else {
					if (_local1.y > (_local4.screenPxHeight * 2)){
						_local3.removeEffect(_local1.id);
					};
				};
			};
		}
		public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:TearGasEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local4 = true;
				};
			};
			return (_local4);
		}
		public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local3:TearGasEffect = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (!_local9.isHit){
						_local9.getHit(_local3.statAttack, _local3.dirx, true, "TearGas");
					};
				};
				_local8++;
			};
			return (_local7);
		}

	}
}//package cactusGame.models.effects 

****************

//TempleBlockBreakEffect (cactusGame.models.effects.TempleBlockBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TempleBlockBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function TempleBlockBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TempleBlockBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "TempleBlockBreakEffect";
			sheetname = "templeblock_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TempleBlockBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TempleBlockBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//TempleVaseBreakEffect (cactusGame.models.effects.TempleVaseBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TempleVaseBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function TempleVaseBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TempleVaseBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "TempleVaseBreakEffect";
			sheetname = "templevase_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TempleVaseBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TempleVaseBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//ThornedEmeraldEffect (cactusGame.models.effects.ThornedEmeraldEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class ThornedEmeraldEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var isCaught:Boolean;// = false
		public var bossEnemyID:Number;// = -1
		public var isIntroVersion:Boolean;// = false
		public var introTimerMax:Number;// = 26
		public var introTimer:Number;// = 0
		public var glowEffectID:Number;// = -1
		public var initialY:Number;// = 0

		public function ThornedEmeraldEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:ThornedEmeraldEffect = this;
			_local9.jump = true;
			_local9.jumpspeed = _local9.jumpstart;
			if (_local9.subtype == "intro"){
				_local9.isIntroVersion = true;
				_local9.dirx = 1;
			} else {
				if (_local9.gameObj.playerObj.x < _local9.x){
					_local9.dirx = -1;
				} else {
					_local9.dirx = 1;
				};
			};
			_local9.initialY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "ThornedEmeraldEffect";
			sheetname = "thorned_emerald_effect";
			spritewidth = 20;
			spriteheight = 20;
			spriteCenterX = 10;
			spriteCenterY = 10;
			spriteTargetX = 10;
			spriteTargetY = 10;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:ThornedEmeraldEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:ThornedEmeraldEffect = this;
		}
		override public function destroy(){
			var ob:ThornedEmeraldEffect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local1:ThornedEmeraldEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				if (!_local1.isCaught){
					if (_local1.jump){
						if (_local1.y > _local1.initialY){
							_local1.jumpChar();
						} else {
							_local1.jumpChar(false);
						};
					};
					if (_local1.dirx != 0){
						_local1.moveChar(_local1.dirx, 0, 0, true);
					};
					if (_local1.isIntroVersion){
						_local1.introTimer++;
						if (_local1.introTimer >= _local1.introTimerMax){
							_local1.isCaught = true;
						};
					} else {
						if (!_local1.jump){
							_local1.dirx = 0;
						};
					};
					_local1.gameObj.effectManager.addEffect(_local1.x, _local1.y, "ShimmerEffect", "single");
				} else {
					_local1.x = 386;
					_local1.y = 574;
				};
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//TNTBarrelBreakEffect (cactusGame.models.effects.TNTBarrelBreakEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TNTBarrelBreakEffect extends Effect {

		public var piece1CycleFrames:Array;

		public function TNTBarrelBreakEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TNTBarrelBreakEffect = this;
			_local9.jumpspeed = (-8 - Math.floor((Math.random() * 8)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (2 + Math.floor((Math.random() * 4)));
		}
		override public function defineVars(){
			type = "TNTBarrelBreakEffect";
			sheetname = "tntbarrel_chunk_sheet";
			spritewidth = 24;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 12;
			spriteTargetX = 12;
			spriteTargetY = 12;
			sheetWidth = 1;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TNTBarrelBreakEffect = this;
			_local2 = _local1.piece1CycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TNTBarrelBreakEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//TorchFlameEffect (cactusGame.models.effects.TorchFlameEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TorchFlameEffect extends Effect {

		public var flameCycleFrames:Array;
		public var fadeOutCycleFrames:Array;
		public var fadeInCycleFrames:Array;
		public var isFadingIn:Boolean;// = true
		public var isFading:Boolean;// = false
		public var animIsSet:Boolean;// = false

		public function TorchFlameEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			flameCycleFrames = ["flame", 2, 1, 0, 0, [5, 6, 7, 8, 7, 6]];
			fadeOutCycleFrames = ["fadeOut", 2, 1, 0, -1, [9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19]];
			fadeInCycleFrames = ["fadeIn", 2, 1, 0, -1, [0, 1, 2, 3, 4]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TorchFlameEffect = this;
		}
		override public function defineVars(){
			type = "TorchFlameEffect";
			sheetname = "bullet_flamethrower_sheet";
			spritewidth = 52;
			spriteheight = 52;
			spriteCenterX = 26;
			spriteCenterY = 26;
			spriteTargetX = 26;
			spriteTargetY = 36;
			sheetWidth = 20;
			sheetHeight = 1;
			flipBlitOffset = 0;
			foreground = false;
			collRect = new Rectangle(-25, -25, 50, 50);
			jumpstart = 0;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TorchFlameEffect = this;
			if (_local1.isFadingIn){
				_local2 = _local1.fadeInCycleFrames;
			} else {
				if (_local1.isFading){
					_local2 = _local1.fadeOutCycleFrames;
				} else {
					_local2 = _local1.flameCycleFrames;
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TorchFlameEffect = this;
			if (_local1.cycleName == "fadeOut"){
				_local1.gameObj.effectManager.removeEffect(_local1.id);
			} else {
				if (_local1.cycleName == "fadeIn"){
					_local1.isFadingIn = false;
				};
			};
		}
		override public function updateObject(){
			var ob:TorchFlameEffect;
			ob = this;
			var gameObj:GameModule = ob.gameObj;
			var manager:EffectManager = ob.gameObj.effectManager;
			var display:GameDisplay = gameObj.gameDisplay;
			ob.updateSprite();
			try {
				if (((!(ob.animIsSet)) && (!(ob.isFadingIn)))){
					ob.animationFrame = Math.floor((Math.random() * 14));
					ob.cycleFrame = ob.animationFrame;
					ob.animIsSet = true;
				};
			} catch(err) {
			};
		}
		public function fadeOut(){
			var _local1:TorchFlameEffect = this;
			_local1.isFading = true;
			_local1.isFadingIn = false;
		}

	}
}//package cactusGame.models.effects 

****************

//TrainSmokeEffect (cactusGame.models.effects.TrainSmokeEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class TrainSmokeEffect extends Effect {

		public var animCycleFrames:Array;
		public var yOffsetrange:Number;// = 30
		public var xOffsetRange:Number;// = 80
		public var startingY:Number;// = 0

		public function TrainSmokeEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:TrainSmokeEffect = this;
			_local9.startingY = _arg3;
			_local9.y = ((_local9.startingY + Math.floor((Math.random() * _local9.yOffsetrange))) - (_local9.yOffsetrange / 2));
			_local9.ytile = Math.floor((_local9.y / _local9.gameObj.gameDisplay.tileWidth));
		}
		override public function defineVars(){
			type = "TrainSmokeEffect";
			sheetname = "train_smoke_sheet";
			spritewidth = 600;
			spriteheight = 169;
			spriteCenterX = 300;
			spriteCenterY = 84;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
			speed = 12;
			dirx = -1;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:TrainSmokeEffect = this;
			_local2 = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:TrainSmokeEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:TrainSmokeEffect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			_local1.x = (_local1.x - _local1.speed);
			_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
			if (((_local1.x + _local1.spritewidth) + 50) < _local4.currentXcoord){
				_local1.x = (((_local4.currentXtileRight + 1) + Math.floor((Math.random() * _local1.xOffsetRange))) * _local4.tileWidth);
				_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
				_local1.y = ((_local1.startingY + Math.floor((Math.random() * _local1.yOffsetrange))) - (_local1.yOffsetrange / 2));
				_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
				if (Math.random() > 0.5){
					_local1.foreground = true;
				} else {
					_local1.foreground = false;
				};
			};
			_local1.updateSprite();
		}
		override public function checkOnScreen():Boolean{
			var _local1:Effect = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if (((((_local1.x + _local1.spritewidth) > _local2.currentXcoord)) && (((_local1.x - 16) < (_local2.currentXcoord + _local2.screenPxWidth))))){
				if (((((_local1.y + _local1.spriteheight) > _local2.currentYcoord)) && (((_local1.y - 16) < (_local2.currentYcoord + _local2.screenPxHeight))))){
					_local3 = true;
				};
			};
			return (_local3);
		}

	}
}//package cactusGame.models.effects 

****************

//Treasure1Effect (cactusGame.models.effects.Treasure1Effect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Treasure1Effect extends Effect {

		public var animCycleFrames:Array;
		public var distanceToTravel:Number;// = 120
		public var startingY:Number;// = 0
		public var speedDivisor:Number;// = 8
		public var whichAnim:Number;// = 1
		public var glowEffectID:Number;// = -1
		public var hoverTimer:Number;// = 0
		public var hoverTimerMax:Number;// = 100

		public function Treasure1Effect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Treasure1Effect = this;
			_local9.startingY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "Treasure1Effect";
			sheetname = "treasure_silver_sheet";
			spritewidth = 44;
			spriteheight = 21;
			spriteCenterX = 22;
			spriteCenterY = 10;
			spriteTargetX = 22;
			spriteTargetY = 10;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:Treasure1Effect = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Treasure1Effect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function destroy(){
			var ob:Treasure1Effect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
		}
		override public function updateObject(){
			var _local5:Number;
			var _local1:Treasure1Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local5 = (_local1.y - (_local1.startingY - _local1.distanceToTravel));
				if (_local5 > 1){
					_local1.y = (_local1.y - (_local5 / _local1.speedDivisor));
				} else {
					_local1.y = (_local1.startingY - _local1.distanceToTravel);
				};
				_local1.updateSprite();
				_local1.hoverTimer++;
				if (_local1.hoverTimer >= _local1.hoverTimerMax){
					_local3.removeEffect(_local1.id);
				};
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//Treasure2Effect (cactusGame.models.effects.Treasure2Effect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Treasure2Effect extends Effect {

		public var animCycleFrames:Array;
		public var distanceToTravel:Number;// = 120
		public var startingY:Number;// = 0
		public var speedDivisor:Number;// = 8
		public var whichAnim:Number;// = 1
		public var glowEffectID:Number;// = -1
		public var hoverTimer:Number;// = 0
		public var hoverTimerMax:Number;// = 100

		public function Treasure2Effect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Treasure2Effect = this;
			_local9.startingY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "Treasure2Effect";
			sheetname = "treasure_gold_sheet";
			spritewidth = 44;
			spriteheight = 21;
			spriteCenterX = 22;
			spriteCenterY = 10;
			spriteTargetX = 22;
			spriteTargetY = 10;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:Treasure2Effect = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Treasure2Effect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function destroy(){
			var ob:Treasure2Effect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
		}
		override public function updateObject(){
			var _local5:Number;
			var _local1:Treasure2Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local5 = (_local1.y - (_local1.startingY - _local1.distanceToTravel));
				if (_local5 > 1){
					_local1.y = (_local1.y - (_local5 / _local1.speedDivisor));
				} else {
					_local1.y = (_local1.startingY - _local1.distanceToTravel);
				};
				_local1.updateSprite();
				_local1.hoverTimer++;
				if (_local1.hoverTimer >= _local1.hoverTimerMax){
					_local3.removeEffect(_local1.id);
				};
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//Treasure3Effect (cactusGame.models.effects.Treasure3Effect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Treasure3Effect extends Effect {

		public var animCycleFrames:Array;
		public var distanceToTravel:Number;// = 120
		public var startingY:Number;// = 0
		public var speedDivisor:Number;// = 8
		public var whichAnim:Number;// = 1
		public var glowEffectID:Number;// = -1
		public var hoverTimer:Number;// = 0
		public var hoverTimerMax:Number;// = 100

		public function Treasure3Effect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Treasure3Effect = this;
			_local9.startingY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "Treasure3Effect";
			sheetname = "treasure_ruby_sheet";
			spritewidth = 25;
			spriteheight = 32;
			spriteCenterX = 12;
			spriteCenterY = 16;
			spriteTargetX = 12;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:Treasure3Effect = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Treasure3Effect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function destroy(){
			var ob:Treasure3Effect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
		}
		override public function updateObject(){
			var _local5:Number;
			var _local1:Treasure3Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local5 = (_local1.y - (_local1.startingY - _local1.distanceToTravel));
				if (_local5 > 1){
					_local1.y = (_local1.y - (_local5 / _local1.speedDivisor));
				} else {
					_local1.y = (_local1.startingY - _local1.distanceToTravel);
				};
				_local1.updateSprite();
				_local1.hoverTimer++;
				if (_local1.hoverTimer >= _local1.hoverTimerMax){
					_local3.removeEffect(_local1.id);
				};
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//Treasure4Effect (cactusGame.models.effects.Treasure4Effect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Treasure4Effect extends Effect {

		public var animCycleFrames:Array;
		public var distanceToTravel:Number;// = 120
		public var startingY:Number;// = 0
		public var speedDivisor:Number;// = 8
		public var whichAnim:Number;// = 1
		public var glowEffectID:Number;// = -1
		public var hoverTimer:Number;// = 0
		public var hoverTimerMax:Number;// = 100

		public function Treasure4Effect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Treasure4Effect = this;
			_local9.startingY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "Treasure4Effect";
			sheetname = "treasure_emerald_sheet";
			spritewidth = 25;
			spriteheight = 31;
			spriteCenterX = 12;
			spriteCenterY = 16;
			spriteTargetX = 12;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:Treasure4Effect = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Treasure4Effect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function destroy(){
			var ob:Treasure4Effect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
		}
		override public function updateObject(){
			var _local5:Number;
			var _local1:Treasure4Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local5 = (_local1.y - (_local1.startingY - _local1.distanceToTravel));
				if (_local5 > 1){
					_local1.y = (_local1.y - (_local5 / _local1.speedDivisor));
				} else {
					_local1.y = (_local1.startingY - _local1.distanceToTravel);
				};
				_local1.updateSprite();
				_local1.hoverTimer++;
				if (_local1.hoverTimer >= _local1.hoverTimerMax){
					_local3.removeEffect(_local1.id);
				};
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//Treasure5Effect (cactusGame.models.effects.Treasure5Effect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Treasure5Effect extends Effect {

		public var animCycleFrames:Array;
		public var distanceToTravel:Number;// = 120
		public var startingY:Number;// = 0
		public var speedDivisor:Number;// = 8
		public var whichAnim:Number;// = 1
		public var glowEffectID:Number;// = -1
		public var hoverTimer:Number;// = 0
		public var hoverTimerMax:Number;// = 100

		public function Treasure5Effect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Treasure5Effect = this;
			_local9.startingY = _arg3;
			_local9.glowEffectID = _local9.gameObj.effectManager.addEffect(_local9.x, _local9.y, "ItemGlowEffect", String(_local9.id));
		}
		override public function defineVars(){
			type = "Treasure5Effect";
			sheetname = "treasure_diamond_sheet";
			spritewidth = 31;
			spriteheight = 37;
			spriteCenterX = 15;
			spriteCenterY = 18;
			spriteTargetX = 15;
			spriteTargetY = 18;
			sheetWidth = 1;
			sheetHeight = 1;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local1:Treasure5Effect = this;
			var _local2:Array = _local1.animCycleFrames;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Treasure5Effect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function destroy(){
			var ob:Treasure5Effect = this;
			if (ob.glowEffectID > -1){
				try {
					ob.gameObj.effectManager[("Effect" + ob.glowEffectID)].stopGlow();
				} catch(err) {
				};
				ob.glowEffectID = -1;
			};
		}
		override public function updateObject(){
			var _local5:Number;
			var _local1:Treasure5Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local5 = (_local1.y - (_local1.startingY - _local1.distanceToTravel));
				if (_local5 > 1){
					_local1.y = (_local1.y - (_local5 / _local1.speedDivisor));
				} else {
					_local1.y = (_local1.startingY - _local1.distanceToTravel);
				};
				_local1.updateSprite();
				_local1.hoverTimer++;
				if (_local1.hoverTimer >= _local1.hoverTimerMax){
					_local3.removeEffect(_local1.id);
				};
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//WaterDropletEffect (cactusGame.models.effects.WaterDropletEffect)
package cactusGame.models.effects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class WaterDropletEffect extends Effect {

		public var piece1CycleFrames:Array;
		public var piece2CycleFrames:Array;
		public var piece3CycleFrames:Array;
		public var piece4CycleFrames:Array;

		public function WaterDropletEffect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			var _local9:WaterDropletEffect;
			piece1CycleFrames = ["piece1", 2, 1, 0, 0, [0]];
			piece2CycleFrames = ["piece2", 2, 1, 0, 0, [1]];
			piece3CycleFrames = ["piece3", 2, 1, 0, 0, [2]];
			piece4CycleFrames = ["piece4", 2, 1, 0, 0, [3]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			_local9 = this;
			_local9.jumpspeed = (-4 - Math.floor((Math.random() * 4)));
			_local9.jump = true;
			_local9.dirx = 1;
			if (Math.random() > 0.5){
				_local9.dirx = -1;
			};
			_local9.speed = (1 + Math.floor((Math.random() * 2)));
		}
		override public function defineVars(){
			type = "WaterDropletEffect";
			sheetname = "water_droplet_sheet";
			spritewidth = 4;
			spriteheight = 4;
			spriteCenterX = 2;
			spriteCenterY = 2;
			spriteTargetX = 2;
			spriteTargetY = 2;
			sheetWidth = 4;
			sheetHeight = 1;
			gravity = 1;
			normalgravity = 1;
			jumpstart = -14;
			speed = 4;
			foreground = true;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:WaterDropletEffect = this;
			if (_local1.subtype == ""){
				_local2 = _local1.piece1CycleFrames;
			} else {
				_local2 = _local1[(_local1.subtype + "CycleFrames")];
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:WaterDropletEffect = this;
			_local1.gameObj.effectManager.removeEffect(_local1.id);
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
			} else {
				_local3.removeEffect(_local1.id);
			};
		}

	}
}//package cactusGame.models.effects 

****************

//Enemy1 (cactusGame.models.enemies.Enemy1)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy1 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 130
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_slowWalk:Array;
		public var weapon_stepBack:Array;
		public var weapon_swing:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var randomWeapons:Array;

		public function Enemy1(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			attackRect = new Rectangle(10, -50, 80, 50);
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21], [-19, -19, -19, -18, -18, -18, -17, -17, -17, -18, -18, -18]];
			weapon_run = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -22, -22, -22, -22, -22, -23], [-19, -19, -20, -21, -22, -21, -20, -19, -18, -19, -20, -22, -23, -22, -21, -20]];
			weapon_stepForward = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -20, -20, -20, -20, -20, -20, -20, -20], [-19, -19, -19, -19, -19, -19, -18, -18, -17, -17, -17, -17, -18, -18, -18, -18]];
			weapon_slowWalk = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -20, -20, -20, -20, -20, -20, -20, -20, -21, -21, -21, -21, -21, -21, -21, -21, -20, -20, -20, -20, -20, -20, -20, -20], [-19, -19, -19, -19, -19, -19, -18, -18, -17, -17, -17, -17, -18, -18, -18, -18, -19, -19, -19, -19, -19, -19, -18, -18, -17, -17, -17, -17, -18, -18, -18, -18]];
			weapon_stepBack = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -22, -22, -23, -23, -22, -22, -22, -22, -21, -21], [-19, -19, -19, -19, -19, -19, -18, -18, -17, -17, -17, -17, -18, -18, -19, -19]];
			weapon_swing = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 5, 6, 7, 8, 9, 2, 2, 2, 2, 2, 2], [-10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -18, -21, -21, 6, 5, 15, 15, 15, 15, 15, 15], [-16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -16, -15, -4, -4, -9, -13, -25, -25, -25, -25, -25, -25]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-23, -28, -27, -27, -27, -27, -27, -23, -21], [-17, -15, -17, -17, -17, -17, -17, -17, -19]];
			weapon_die1 = [[4], [5], [-18]];
			weapon_die2 = [[21], [-1], [-21]];
			weapon_jump = [[0, 0, 0], [-21, -21, -21], [-19, -19, -19]];
			weapon_dodge = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -21], [-19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19]];
			weapon_shove = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -21], [-19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19, -19]];
			randomWeapons = ["Shovel", "Banjo", "Guitar", "Bone", "Club", "Cactus", "Bat", "TwoByFour", "Longsword", "Katana"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy1 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 1;
			sheetname = "enemigo_01_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 92;
			spriteCenterX = 46;
			spriteCenterY = 46;
			spriteTargetX = 36;
			spriteTargetY = 70;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 184;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 100;
			maxHealth = 100;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.15;
			dropWeaponChance = 0.2;
			points = 10;
			weaponSKU = "Banjo";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy1;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy1 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1.swingCycleFrames;
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														_local2 = _local1.standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy1 = this;
			if (_local1.cycleName == "swing"){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy1 = this;
			var _local6:Boolean;
			if (((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy1 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy1 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy1 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy1 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
									if (_local1.jump){
										if (_local1.dirx == 0){
											_local1.dirx = _local1.facingDir;
										};
										_local1.speed = _local1.runSpeed;
										_local1.isSteppingBackward = false;
										_local1.isSteppingForward = false;
										_local1.isWalking = true;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									} else {
										if (_local8 > targetDistance){
											_local1.dirx = _local1.facingDir;
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if ((((_local8 <= (targetDistance - 40))) || ((((_local8 <= (targetDistance - 20))) && ((_local9 > 0.95)))))){
												_local1.dirx = (_local1.facingDir * -1);
												_local1.speed = _local1.stepSpeed;
												_local1.isSteppingBackward = true;
												_local1.isSteppingForward = false;
											} else {
												if ((((_local8 > (targetDistance - 20))) && ((_local9 > 0.95)))){
													_local1.dirx = _local1.facingDir;
													_local1.speed = _local1.stepSpeed;
													_local1.isSteppingForward = true;
													_local1.isSteppingBackward = false;
												} else {
													_local1.isWalking = false;
												};
											};
										};
									};
								} else {
									_local1.speed = _local1.stepSpeed;
									_local1.moveChar(_local1.dirx, 0, 0, false, true);
								};
								_local1.lookForPlayer();
							} else {
								_local1.speed = _local1.paceSpeed;
								_local1.isSteppingForward = true;
								_local1.isWalking = true;
								if (_local1.dirx == 0){
									_local1.dirx = 1;
								};
								_local1.moveChar(_local1.dirx, 0, false, true, true);
								if (_local1.dirx != 0){
									_local1.facingDir = _local1.dirx;
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if (_local1.dirx == 0){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy1 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy1 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
			};
		}
		override public function startShoving(){
			var _local1:Enemy1 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy1 = this;
		}
		public function checkForAttacking(){
			var _local4:Rectangle;
			var _local1:Enemy1 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				if ((((((_local2.x < _local1.x)) && ((_local3 <= _local1.attackRect.width)))) || ((((_local2.x > _local1.x)) && (((_local3 * -1) <= _local1.attackRect.width)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			} else {
				if (((_local1.isAttacking) && ((_local1.cycleFrame == (_local1.startAttackFrame - 6))))){
					_local1.gameObj.soundManager.playSound("attack_swing_1.wav");
				};
				if (((((((((_local1.isAttacking) && (!(_local1.isQuickAttacking)))) && (!(_local1.isShoving)))) && ((_local1.cycleFrame >= _local1.startAttackFrame)))) && ((_local1.cycleFrame <= _local1.endAttackFrame)))){
					_local4 = new Rectangle();
					_local4.x = (_local1.x + _local1.attackRect.x);
					_local4.y = (_local1.y + _local1.attackRect.y);
					_local4.width = _local1.attackRect.width;
					_local4.height = _local1.attackRect.height;
					if (_local1.facingDir == -1){
						_local4.x = ((_local1.x - _local1.attackRect.x) - _local1.attackRect.width);
					};
					if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
						_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy10 (cactusGame.models.enemies.Enemy10)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy10 extends Enemy {

		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var standCycleFrames:Array;
		public var aimupCycleFrames:Array;
		public var aimdownCycleFrames:Array;
		public var shootforwardCycleFrames:Array;
		public var shootupCycleFrames:Array;
		public var shootdownCycleFrames:Array;
		public var turnCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 49
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 160
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var waitTimer:Number;// = 40
		public var waitTimerMax:Number;// = 90
		public var aimTimer:Number;// = 0
		public var aimTimerMax:Number;// = 15
		public var shotsFired:Number;// = 0
		public var shotTimer:Number;// = 0
		public var outOfRange:Boolean;// = true
		public var shoot_bazooka_offsetsX:Array;
		public var shoot_bazooka_offsetsY:Array;
		public var weapon_stand:Array;
		public var weapon_shootforward:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_aimup:Array;
		public var weapon_shootup:Array;
		public var weapon_aimdown:Array;
		public var weapon_shootdown:Array;
		public var weapon_turn:Array;
		public var randomWeapons:Array;
		public var aimDirection:String;// = "forward"
		public var chanceToCancelRapidFire:Number;// = 0.2
		public var maxGatlingBullets:Number;// = 1
		public var waitingForEvent:Boolean;// = false

		public function Enemy10(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			die1CycleFrames = ["die1", 2, 1, 0, 0, [8]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [9]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [5, 6, 7, 7, 7, 7, 7, 6, 0]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			aimupCycleFrames = ["aimup", 2, 1, 0, 0, [11, 11, 11, 12, 12, 12, 13, 13, 13, 12, 12, 12]];
			aimdownCycleFrames = ["aimdown", 2, 1, 0, 0, [16, 16, 16, 17, 17, 17, 18, 18, 18, 17, 17, 17]];
			shootforwardCycleFrames = ["shootforward", 2, 1, 0, -1, [3, 4, 4, 0]];
			shootupCycleFrames = ["shootup", 2, 1, 0, -1, [14, 15, 15, 11]];
			shootdownCycleFrames = ["shootdown", 2, 1, 0, -1, [19, 20, 20, 16]];
			turnCycleFrames = ["turn", 2, 1, 0, -1, [0, 10, 10, 21, 21]];
			attackRect = new Rectangle(10, -50, 0, 0);
			shoot_bazooka_offsetsX = [18, 10, 15, 5, 10];
			shoot_bazooka_offsetsY = [22, 15, 50, -5, 84];
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21], [-77, -77, -77, -76, -76, -76, -75, -75, -75, -76, -76, -76]];
			weapon_shootforward = [[1, 2, 1, 0], [-22, -23, -23, -21], [-77, -77, -77, -77]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [-21, -21, -21, -21, -21, -21, -21, -21, -21, -21, -21], [-77, -77, -77, -77, -77, -77, -77, -77, -77, -77, -77]];
			weapon_die1 = [[3], [-26], [-66]];
			weapon_die2 = [[0], [-36], [-76]];
			weapon_aimup = [[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [-23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23, -23], [-80, -80, -80, -79, -79, -79, -78, -78, -78, -79, -79, -79]];
			weapon_shootup = [[4, 5, 4, 3], [-24, -25, -25, -23], [-79, -78, -78, -80]];
			weapon_aimdown = [[9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [-30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30, -30], [-76, -76, -76, -75, -75, -75, -74, -74, -74, -75, -75, -75]];
			weapon_shootdown = [[10, 11, 10, 9], [-31, -32, -32, -30], [-77, -78, -78, -76]];
			weapon_turn = [[0, 3, 3, 6, 6, 0], [-21, -32, -32, -45, -45, -21], [-66, -66, -66, -63, -63, -76]];
			randomWeapons = ["Bazooka"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy10 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 10;
			sheetname = "enemigo_10_sheet";
			height = 15;
			width = 15;
			spritewidth = 99;
			spriteheight = 77;
			spriteCenterX = 49;
			spriteCenterY = 38;
			spriteTargetX = 49;
			spriteTargetY = 59;
			sheetWidth = 11;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 154;
			collRect = new Rectangle(-10, -50, 20, 60);
			lookForPlayerRect = new Rectangle(-200, -200, 400, 400);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 250;
			maxHealth = 250;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0;
			attackChangeInRange = 0.05;
			dropWeaponChance = 0.1;
			points = 40;
			weaponSKU = "Bazooka";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy10 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.waitingForEvent = true;
					} else {
						_local2.waitingForEvent = false;
					};
				} else {
					_local2.waitingForEvent = false;
				};
			};
		}
		override public function sendTriggered(_arg1:Number, _arg2, _arg3:Boolean=false){
			var _local4:Enemy10 = this;
			_local4.waitingForEvent = false;
			var _local5:Array = [_local4.type, _local4.xtile, _local4.ytile];
			_local5.push(_local4.facingDir);
			_local5.push(_local4.weaponSKU);
			if (_local4.rememberKilled){
				_local5.push(1);
			} else {
				_local5.push(0);
			};
			_local5.push(0);
			_local4.gameObj.dataManager.currentScreenData.saveEnemyState((_local4.id - 1), _local5);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy10 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isHit){
					_local2 = _local1.hitCycleFrames;
				} else {
					if (_local1.isAttacking){
						if (_local1.aimDirection == "forward"){
							_local2 = _local1.shootforwardCycleFrames;
						} else {
							if (_local1.aimDirection == "up"){
								_local2 = _local1.shootupCycleFrames;
							} else {
								if (_local1.aimDirection == "down"){
									_local2 = _local1.shootdownCycleFrames;
								};
							};
						};
					} else {
						if (_local1.isTurning){
							_local2 = _local1.turnCycleFrames;
						} else {
							if (_local1.aimDirection == "forward"){
								_local2 = _local1.standCycleFrames;
							} else {
								if (_local1.aimDirection == "up"){
									_local2 = _local1.aimupCycleFrames;
								} else {
									if (_local1.aimDirection == "down"){
										_local2 = _local1.aimdownCycleFrames;
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy10 = this;
			if ((((((_local1.cycleName == "shootforward")) || ((_local1.cycleName == "shootup")))) || ((_local1.cycleName == "shootdown")))){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "turn"){
					_local1.isTurning = false;
					_local1.facingDir = (_local1.facingDir * -1);
					_local1.walkingDir = _local1.facingDir;
					_local1.dirx = _local1.facingDir;
					_local1.animationFrame = 0;
					_local1.cycleFrame = 0;
				} else {
					if (_local1.cycleName == "hit"){
						_local1.isHit = false;
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy10 = this;
			var _local6:Boolean;
			_local5.isSteppingBackward = false;
			_local5.isSteppingForward = false;
			_local5.isWalking = false;
			_local5.animationFrame = 0;
			_local5.cycleFrame = 0;
			_local5.isAttacking = false;
			_local5.isShoving = false;
			_local5.isDodging = false;
			_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy10 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy10 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy10 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local1:Enemy10 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						if (_local1.noticedPlayer){
							_local1.aimTimer++;
							if (_local1.aimTimer >= _local1.aimTimerMax){
								_local1.aimTowardsPlayer();
								_local1.aimTimer = 0;
							};
						};
						if (((!(_local1.isAttacking)) && (!(_local1.isHit)))){
							if (((_local1.checkShootingOnScreen()) && (!(_local1.waitingForEvent)))){
								_local1.noticedPlayer = true;
							} else {
								_local1.noticedPlayer = false;
							};
						};
						_local1.checkForAttacking();
						if (_local1.isAttacking){
							if (_local1.shotsFired == 0){
								_local1.shootWeapon();
							};
							_local1.shotTimer++;
						};
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						_local1.updateSprite();
					} else {
						_local1.noticedPlayer = false;
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy10 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								if (!_local3.alwaysNoticePlayer){
									_local3.noticedPlayer = false;
								} else {
									_local3.isWalking = false;
								};
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy10 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
				_local1.waitTimer = 0;
				_local1.shotTimer = 0;
				_local1.shotsFired = 0;
			};
		}
		override public function startShoving(){
			var _local1:Enemy10 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy10 = this;
		}
		public function aimTowardsPlayer(){
			var _local1:Enemy10 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			var _local4:Number = (_local1.y - _local2.y);
			var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
			if ((((_local2.x < _local1.x)) && ((_local1.facingDir == 1)))){
				_local1.isTurning = true;
			} else {
				if ((((_local2.x > _local1.x)) && ((_local1.facingDir == -1)))){
					_local1.isTurning = true;
				};
			};
			var _local6:Number = Math.atan2(_local4, _local3);
			var _local7:Number = radsToDegrees(_local6);
			if ((((_local7 > -30)) && ((_local7 < 30)))){
				_local1.aimDirection = "forward";
			} else {
				if ((((_local7 < -150)) || ((_local7 > 150)))){
					_local1.aimDirection = "forward";
				} else {
					if (_local7 < -30){
						_local1.aimDirection = "down";
					} else {
						if (_local7 > 30){
							_local1.aimDirection = "up";
						};
					};
				};
			};
		}
		public function radsToDegrees(_arg1:Number){
			var _local2:Number = (_arg1 * (180 / Math.PI));
			return (_local2);
		}
		public function shootWeapon(){
			var _local1:Enemy10 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:BulletManager = _local1.gameObj.bulletManager;
			var _local4:Number = (_local2.x - _local1.x);
			var _local5:Number = (_local1.y - _local2.y);
			var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
			var _local7:Number = Math.atan2(_local5, _local4);
			var _local8:Number = (Math.round((_local7 * 3)) / 3);
			if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "forward")))){
				_local8 = 0;
			} else {
				if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "forward")))){
					_local8 = Math.PI;
				} else {
					if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "up")))){
						_local8 = (Math.PI / 4);
					} else {
						if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "up")))){
							_local8 = ((3 / 4) * Math.PI);
						} else {
							if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "down")))){
								_local8 = ((Math.PI / 4) * -1);
							} else {
								if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "down")))){
									_local8 = ((-3 / 4) * Math.PI);
								};
							};
						};
					};
				};
			};
			var _local9:Number = _local1.facingDir;
			var _local10:Number = 0;
			var _local11:Number = 0;
			if (_local1.aimDirection == "up"){
				_local10 = ((_local1.shoot_bazooka_offsetsX[1] + _local1.whichWeapon.shoot_extra_offsetsX[1]) * _local1.facingDir);
				_local11 = (_local1.shoot_bazooka_offsetsY[1] + _local1.whichWeapon.shoot_extra_offsetsY[1]);
			} else {
				if (_local1.aimDirection == "down"){
					_local10 = ((_local1.shoot_bazooka_offsetsX[2] + _local1.whichWeapon.shoot_extra_offsetsX[2]) * _local1.facingDir);
					_local11 = (_local1.shoot_bazooka_offsetsY[2] + _local1.whichWeapon.shoot_extra_offsetsY[2]);
				} else {
					_local10 = ((_local1.shoot_bazooka_offsetsX[0] + _local1.whichWeapon.shoot_extra_offsetsX[0]) * _local1.facingDir);
					_local11 = (_local1.shoot_bazooka_offsetsY[0] + _local1.whichWeapon.shoot_extra_offsetsY[0]);
				};
			};
			var _local12:Number = ((_local1.x + (12 * _local1.facingDir)) + _local10);
			var _local13:* = ((_local1.y - 57) + _local11);
			_local3.addBullet(_local12, _local13, _local9, _local8, _local1.whichWeapon.bulletType, "", true, _local1.whichWeapon.getAttackStat(), true);
			_local1.gameObj.soundManager.playSound("shoot_bazooka.wav");
			_local1.shotsFired++;
			_local1.gameObj.gameCam.setCameraJiggle(4, 5);
		}
		public function checkShootingOnScreen():Boolean{
			var _local1:Enemy10 = this;
			if (_local1.xtile < _local1.gameObj.gameDisplay.currentXtileLeft){
				return (false);
			};
			if (_local1.xtile > _local1.gameObj.gameDisplay.currentXtileRight){
				return (false);
			};
			if (_local1.ytile < (_local1.gameObj.gameDisplay.currentYtileUp + 1)){
				return (false);
			};
			if (_local1.ytile > (_local1.gameObj.gameDisplay.currentYtileDown + 1)){
				return (false);
			};
			return (true);
		}
		public function checkForAttacking(){
			var _local1:Enemy10 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				_local1.waitTimer++;
				if (_local1.waitTimer >= _local1.waitTimerMax){
					if (((((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))) && (_local1.checkShootingOnScreen()))){
						_local1.startAttacking();
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy11 (cactusGame.models.enemies.Enemy11)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy11 extends Enemy {

		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 40
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 130
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;

		public function Enemy11(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			die1CycleFrames = ["die1", 2, 1, 0, 0, [12]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [13]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [8, 9, 10, 10, 10, 10, 10, 9, 0]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1]];
			attackRect = new Rectangle(10, -50, 80, 50);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy11 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			_local9.whichWeapon = null;
			_local9.statAttack = 0;
		}
		override public function defineVars(){
			type = 11;
			sheetname = "enemigo_11_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 92;
			spriteCenterX = 46;
			spriteCenterY = 46;
			spriteTargetX = 36;
			spriteTargetY = 70;
			sheetWidth = 14;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 92;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 20;
			maxHealth = 20;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.03;
			dropWeaponChance = 0.2;
			points = 10;
			weaponSKU = "Banjo";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy11 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = "";
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy11 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isHit){
					_local2 = _local1.hitCycleFrames;
				} else {
					_local2 = _local1.standCycleFrames;
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy11 = this;
			if (_local1.cycleName == "hit"){
				_local1.isHit = false;
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy11;
			_local5 = this;
			var _local6:Boolean;
			_local5.isWalking = false;
			_local5.animationFrame = 0;
			_local5.cycleFrame = 0;
			_local5.isAttacking = false;
			_local5.isShoving = false;
			_local5.isDodging = false;
			if (_arg2 == 1){
				_local5.facingDir = -1;
				_local5.dirx = -1;
				_local5.walkingDir = -1;
			} else {
				_local5.facingDir = 1;
				_local5.dirx = 1;
				_local5.walkingDir = 1;
			};
			_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy11 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy11 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy11 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local1:Enemy11 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy11 = this;
		}
		override public function startShoving(){
			var _local1:Enemy11 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy11 = this;
		}
		public function checkForAttacking(){
			var _local1:Enemy11 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				if ((((((_local2.x < _local1.x)) && ((_local3 <= _local1.attackRect.width)))) || ((((_local2.x > _local1.x)) && (((_local3 * -1) <= _local1.attackRect.width)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy12 (cactusGame.models.enemies.Enemy12)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy12 extends Enemy {

		public var standCycleFrames:Array;
		public var hitCycleFrames:Array;
		public var turnCycleFrames:Array;
		public var dieCycleFrames:Array;
		public var duckCycleFrames:Array;
		public var unduckCycleFrames:Array;
		public var startJumpBackCycleFrames:Array;
		public var jumpBackCycleFrames:Array;
		public var jumpBackSkidCycleFrames:Array;
		public var jumpForwardCycleFrames:Array;
		public var jumpForwardSkidCycleFrames:Array;
		public var finishForwardSkidCycleFrames:Array;
		public var leapCycleFrames:Array;
		public var finishLeapCycleFrames:Array;
		public var talkCycleFrames:Array;
		public var swordCycleFrames:Array;
		public var startShootCycleFrames:Array;
		public var shootForwardCycleFrames:Array;
		public var shoot22CycleFrames:Array;
		public var shoot45CycleFrames:Array;
		public var shoot67CycleFrames:Array;
		public var shootUpCycleFrames:Array;
		public var shootDuckCycleFrames:Array;
		public var finishShootCycleFrames:Array;
		public var isDucking:Boolean;// = false
		public var isUnducking:Boolean;// = false
		public var isStartJumpBack:Boolean;// = false
		public var isJumpingBack:Boolean;// = false
		public var isSkiddingBack:Boolean;// = false
		public var isJumpingForward:Boolean;// = false
		public var isSkiddingForward:Boolean;// = false
		public var isFinishSkidForward:Boolean;// = false
		public var isLeaping:Boolean;// = false
		public var isFinishLeaping:Boolean;// = false
		public var isLeapingOffScreen:Boolean;// = false
		public var isWaitingForEnemies:Boolean;// = false
		public var isShooting:Boolean;// = false
		public var shootingType:String;// = "Forward"
		public var isStartShooting:Boolean;// = false
		public var isFinishShooting:Boolean;// = false
		public var enemiesTypesToCall:Array;
		public var enemyWeapons:Array;
		public var callEnemyTimer:Number;// = 0
		public var callEnemyTimerMax:Number;// = 1200
		public var jumpForwardSpeedY:Number;// = -4
		public var jumpForwardSpeedLongY:Number;// = -10
		public var jumpForwardSpeedX:Number;// = 11
		public var jumpBackwardSpeedY:Number;// = -4
		public var jumpBackwardSpeedLongY:Number;// = -10
		public var jumpBackwardSpeedX:Number;// = 10
		public var skidForwardDecayInterval:Number;// = 1
		public var skidBackwardDecayInterval:Number;// = 1
		public var skidTimer:Number;// = 0
		public var rangeBeforeJumpingForward:Number;// = 160
		public var longRangeJumpForward:Number;// = 240
		public var rangeBeforeJumpingBackward:Number;// = 40
		public var leapSpeedY:Number;// = -22
		public var leapSpeedMaxX:Number;// = 12
		public var targetLeapYtile:Number;// = 10
		public var swordSpeed1:Number;// = 6
		public var swordSpeed2:Number;// = 6
		public var swordSpeed3:Number;// = 6
		public var chanceShootOutOfRange:Number;// = 0.25
		public var shootOffsetsX:Array;
		public var shootOffsetsY:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 73
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 130
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var leapRect:Rectangle;
		public var normalRect:Rectangle;
		public var duckRect:Rectangle;
		public var killedWithOnlyPunch:Boolean;// = true
		public var introPlayerXtile:Number;// = 9
		public var isTalking:Boolean;// = false
		public var finishedIntro:Boolean;// = false
		public var hasJumpedIntro:Boolean;// = false
		public var healthFillupTimer:Number;// = 0
		public var healthFillupTimerMax:Number;// = 20
		public var emeraldID:Number;// = -1

		public function Enemy12(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1, 0, 0, 0, 3, 3, 3, 4, 4, 4, 3, 3, 3]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [89, 90, 91, 91, 91, 91, 91, 91, 91, 90, 89, 0]];
			turnCycleFrames = ["turn", 2, 1, 0, -1, [85, 86, 87, 88]];
			dieCycleFrames = ["die", 2, 1, 0, 2, [92, 93, 94, 95, 96, 95]];
			duckCycleFrames = ["duck", 2, 1, 0, 4, [78, 79, 80, 81, 82]];
			unduckCycleFrames = ["unduck", 2, 1, 0, -1, [81, 80, 79, 78, 0]];
			startJumpBackCycleFrames = ["startJumpBack", 2, 1, 0, -1, [29, 30, 30, 30, 31]];
			jumpBackCycleFrames = ["jumpBack", 2, 1, 0, 0, [32]];
			jumpBackSkidCycleFrames = ["jumpBackSkid", 2, 1, 0, 0, [33]];
			jumpForwardCycleFrames = ["jumpForward", 2, 1, 0, 1, [34, 35]];
			jumpForwardSkidCycleFrames = ["jumpForwardSkid", 2, 1, 0, 1, [36, 37, 38, 39, 38]];
			finishForwardSkidCycleFrames = ["finishForwardSkid", 2, 1, 0, -1, [37, 40, 0]];
			leapCycleFrames = ["leap", 2, 1, 0, 5, [41, 42, 43, 44, 45, 46, 47, 48, 47]];
			finishLeapCycleFrames = ["finishLeap", 2, 1, 0, -1, [49, 50, 51, 52, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 54, 55, 56, 57, 58, 0]];
			talkCycleFrames = ["talk", 2, 1, 0, -1, [0, 97, 98, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 98, 97, 0, 100, 101, 102, 102, 102, 102, 102, 102, 102, 103, 103, 102, 102, 103, 103, 103, 103, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 103, 103, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 102, 101, 100, 0, 0]];
			swordCycleFrames = ["sword", 2, 1, 0, -1, [5, 6, 7, 7, 7, 7, 7, 8, 9, 10, 11, 12, 12, 12, 12, 12, 12, 12, 13, 14, 15, 16, 17, 18, 19, 19, 19, 19, 19, 20, 21, 22, 23, 24, 25, 26, 26, 26, 26, 26, 26, 27, 28, 0]];
			startShootCycleFrames = ["startShoot", 2, 1, 0, -1, [60, 61, 62]];
			shootForwardCycleFrames = ["shootForward", 2, 1, 0, -1, [63, 63, 63, 63, 64, 64, 63, 63, 65, 65, 63, 63, 64, 64, 63, 63, 65, 65, 63, 63, 64, 64, 63, 63]];
			shoot22CycleFrames = ["shoot22", 2, 1, 0, -1, [66, 66, 66, 66, 67, 67, 66, 66, 68, 68, 66, 66, 67, 67, 66, 66, 68, 68, 66, 66, 67, 67, 66, 66]];
			shoot45CycleFrames = ["shoot45", 2, 1, 0, -1, [69, 69, 69, 69, 70, 70, 69, 69, 71, 71, 69, 69, 70, 70, 69, 69, 71, 71, 69, 69, 70, 70, 69, 69]];
			shoot67CycleFrames = ["shoot67", 2, 1, 0, -1, [72, 72, 72, 72, 73, 73, 72, 72, 74, 74, 72, 72, 73, 73, 72, 72, 74, 74, 72, 72, 73, 73, 72, 72]];
			shootUpCycleFrames = ["shootUp", 2, 1, 0, -1, [75, 75, 75, 75, 76, 76, 75, 75, 77, 77, 75, 75, 76, 76, 75, 75, 77, 77, 75, 75, 76, 76, 75, 75]];
			shootDuckCycleFrames = ["shootDuck", 2, 1, 0, -1, [82, 82, 82, 82, 83, 83, 82, 82, 84, 84, 82, 82, 83, 83, 82, 82, 84, 84, 82, 82, 83, 83, 82, 82]];
			finishShootCycleFrames = ["finishShoot", 2, 1, 0, -1, [62, 61, 60, 0]];
			enemiesTypesToCall = [1, 2, 3, 4, 5, 6, 8, 9];
			enemyWeapons = [["Club", "Bone", "Katana", "Shovel"], ["Mallet", "Pickaxe", "Axe", "Morningstar"], ["Machete", "Cutlass", "Sickle"], ["BoxingGloves", "BrassKnuckles"], ["Blunderbuss", "Shotgun", "Crossbow", "SubMachineGun"], ["Revolver", "Derringer"], ["BarbedWire", "ChainWhip", "Meteor", "ThornWhip", "TowChain"], ["Tomahawk", "TNT", "Grenade", "Dagger"]];
			shootOffsetsX = [29, 35, 28, 28, 20, 15, 8, 2, -5, -15, 65, 55];
			shootOffsetsY = [-53, -63, -64, -76, -76, -88, -87, -95, -95, -97, -21, -24];
			attackRect = new Rectangle(10, -60, 90, 60);
			leapRect = new Rectangle(0, -70, 50, 80);
			normalRect = new Rectangle(-10, -70, 20, 80);
			duckRect = new Rectangle(-10, -25, 50, 40);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy12 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
		}
		override public function defineVars(){
			type = 12;
			sheetname = "boss_sheet";
			height = 15;
			width = 15;
			spritewidth = 164;
			spriteheight = 148;
			spriteCenterX = 82;
			spriteCenterY = 74;
			spriteTargetX = 82;
			spriteTargetY = 119;
			sheetWidth = 15;
			sheetHeight = 7;
			heightmultiplier = 7;
			widthmultiplier = 1;
			speed = 6;
			walkspeed = 6;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 1036;
			collRect = new Rectangle(-10, -70, 20, 80);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 4000;
			maxHealth = 4000;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.3;
			attackChangeInRange = 0.15;
			dropWeaponChance = 0;
			points = 500;
			statAttack = 60;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy12 = this;
			if (_local1.isDead){
				_local2 = _local1.dieCycleFrames;
			} else {
				if (_local1.isHit){
					_local2 = _local1.hitCycleFrames;
				} else {
					if (_local1.isTalking){
						_local2 = _local1.talkCycleFrames;
					} else {
						if (_local1.isTurning){
							_local2 = _local1.turnCycleFrames;
						} else {
							if (_local1.isFinishLeaping){
								_local2 = _local1.finishLeapCycleFrames;
							} else {
								if (((_local1.isLeapingOffScreen) || (_local1.isWaitingForEnemies))){
									_local2 = _local1.leapCycleFrames;
								} else {
									if (_local1.isLeaping){
										_local2 = _local1.leapCycleFrames;
									} else {
										if (_local1.isFinishShooting){
											_local2 = _local1.finishShootCycleFrames;
										} else {
											if (_local1.isStartShooting){
												_local2 = _local1.startShootCycleFrames;
											} else {
												if (_local1.isShooting){
													_local2 = _local1[(("shoot" + _local1.shootingType) + "CycleFrames")];
												} else {
													if (_local1.isFinishSkidForward){
														_local2 = _local1.finishForwardSkidCycleFrames;
													} else {
														if (_local1.isSkiddingForward){
															_local2 = _local1.jumpForwardSkidCycleFrames;
														} else {
															if (_local1.isJumpingForward){
																_local2 = _local1.jumpForwardCycleFrames;
															} else {
																if (_local1.isStartJumpBack){
																	_local2 = _local1.startJumpBackCycleFrames;
																} else {
																	if (_local1.isSkiddingBack){
																		_local2 = _local1.jumpBackSkidCycleFrames;
																	} else {
																		if (_local1.isJumpingBack){
																			_local2 = _local1.jumpBackCycleFrames;
																		} else {
																			if (_local1.isUnducking){
																				_local2 = _local1.unduckCycleFrames;
																			} else {
																				if (_local1.isDucking){
																					_local2 = _local1.duckCycleFrames;
																				} else {
																					if (_local1.isAttacking){
																						_local2 = _local1.swordCycleFrames;
																					} else {
																						_local2 = _local1.standCycleFrames;
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy12 = this;
			if (_local1.cycleName == "hit"){
				_local1.isHit = false;
			} else {
				if (_local1.cycleName == "sword"){
					_local1.isAttacking = false;
				} else {
					if (_local1.cycleName == "turn"){
						_local1.isTurning = false;
						_local1.facingDir = (_local1.facingDir * -1);
						_local1.walkingDir = _local1.facingDir;
						_local1.dirx = _local1.facingDir;
						_local1.animationFrame = 0;
						_local1.cycleFrame = 0;
						if (!_local1.finishedIntro){
							_local1.broadcastTriggered(1);
							_local1.isTalking = true;
							_local1.gameObj.hudObj.showBossHealth();
							_local1.gameObj.hudObj.updateBossHealth(0);
						};
					} else {
						if (_local1.cycleName == "finishLeap"){
							_local1.isLeaping = false;
							_local1.isFinishLeaping = false;
							_local1.isDodging = false;
						} else {
							if (_local1.cycleName == "unduck"){
								_local1.isDucking = false;
								_local1.isUnducking = false;
							} else {
								if (_local1.cycleName == "startJumpBack"){
									_local1.isStartJumpBack = false;
									_local1.isJumpingBack = true;
									_local1.jumpBackward();
								} else {
									if (_local1.cycleName == "finishForwardSkid"){
										_local1.isSkiddingForward = false;
										_local1.isJumpingForward = false;
										_local1.isFinishSkidForward = false;
									} else {
										if (_local1.cycleName == "startShoot"){
											_local1.isStartShooting = false;
											_local1.aimAndShoot();
										} else {
											if (_local1.cycleName == "finishShoot"){
												_local1.isShooting = false;
												_local1.isFinishShooting = false;
												_local1.isStartShooting = false;
											} else {
												if (_local1.cycleName.indexOf("shoot") == 0){
													_local1.decideAfterShooting();
												} else {
													if (_local1.cycleName == "talk"){
														_local1.isTalking = false;
														_local1.startBattle();
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
		}
		public function startBattle(){
			var _local1:Enemy12 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			_local1.isTalking = false;
			_local1.finishedIntro = true;
			_local1.walkingDir = _local1.facingDir;
			_local1.dirx = _local1.facingDir;
			_local1.isTurning = false;
			_local1.isSkiddingForward = false;
			_local1.gameObj.gameControls.stopActionControls = false;
			_local1.gameObj.hudObj.updateBossHealth(1);
			_local1.gameObj.soundManager.endMusic();
			_local1.gameObj.soundManager.playTrack("AlternateTrack", int.MAX_VALUE);
		}
		public function aimAndShoot(){
			var _local1:Enemy12 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			_local1.isStartShooting = false;
			_local1.isFinishShooting = false;
			_local1.isShooting = true;
			var _local3:Number = (_local1.x - _local2.x);
			var _local4:Number = (_local1.y - _local2.y);
			var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
			if (_local2.x < _local1.x){
				_local1.facingDir = -1;
				_local1.walkingDir = -1;
				_local1.dirx = -1;
			} else {
				_local1.facingDir = 1;
				_local1.walkingDir = 1;
				_local1.dirx = 1;
			};
			var _local6:Number = Math.atan2(_local4, _local3);
			var _local7:Number = radsToDegrees(_local6);
			if ((((_local7 < 15)) || ((_local7 > 165)))){
				_local1.shootingType = "Forward";
			} else {
				if ((((_local7 < 37)) || ((_local7 > 143)))){
					_local1.shootingType = "22";
				} else {
					if ((((_local7 < 57)) || ((_local7 > 123)))){
						_local1.shootingType = "45";
					} else {
						if ((((_local7 < 78)) || ((_local7 > 102)))){
							_local1.shootingType = "67";
						} else {
							if ((((_local7 >= 78)) && ((_local7 <= 102)))){
								_local1.shootingType = "Up";
							} else {
								_local1.shootingType = "Forward";
							};
						};
					};
				};
			};
		}
		public function radsToDegrees(_arg1:Number){
			var _local2:Number = (_arg1 * (180 / Math.PI));
			return (_local2);
		}
		public function shootWeapon(_arg1:Boolean=false){
			var _local2:Enemy12 = this;
			var _local3:PlayerChar = _local2.gameObj.playerObj;
			var _local4:BulletManager = _local2.gameObj.bulletManager;
			var _local5:Number = (_local3.x - _local2.x);
			var _local6:Number = (_local2.y - _local3.y);
			var _local7:Number = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
			var _local8:Number = Math.atan2(_local6, _local5);
			var _local9:Number = 0;
			if ((((_local2.facingDir == -1)) && ((_local2.shootingType == "Forward")))){
				_local9 = 0;
			} else {
				if ((((_local2.facingDir == 1)) && ((_local2.shootingType == "Forward")))){
					_local9 = Math.PI;
				} else {
					if ((((_local2.facingDir == -1)) && ((_local2.shootingType == "22")))){
						_local9 = (Math.PI / 8);
					} else {
						if ((((_local2.facingDir == 1)) && ((_local2.shootingType == "22")))){
							_local9 = ((7 / 8) * Math.PI);
						} else {
							if ((((_local2.facingDir == -1)) && ((_local2.shootingType == "45")))){
								_local9 = (Math.PI / 4);
							} else {
								if ((((_local2.facingDir == 1)) && ((_local2.shootingType == "45")))){
									_local9 = ((3 / 4) * Math.PI);
								} else {
									if ((((_local2.facingDir == -1)) && ((_local2.shootingType == "67")))){
										_local9 = ((3 / 8) * Math.PI);
									} else {
										if ((((_local2.facingDir == 1)) && ((_local2.shootingType == "67")))){
											_local9 = ((5 / 8) * Math.PI);
										} else {
											if (_local2.shootingType == "Up"){
												_local9 = (Math.PI / 2);
											};
										};
									};
								};
							};
						};
					};
				};
			};
			if (_arg1){
				if (_local2.facingDir == -1){
					_local9 = (_local9 + (Math.PI / 40));
				} else {
					_local9 = (_local9 - (Math.PI / 40));
				};
			} else {
				if (_local2.facingDir == -1){
					_local9 = (_local9 - (Math.PI / 40));
				} else {
					_local9 = (_local9 + (Math.PI / 40));
				};
			};
			var _local10:Number = _local2.facingDir;
			var _local11:Number = 0;
			var _local12:Number = 0;
			if (_local2.shootingType == "Forward"){
				if (_arg1){
					_local11 = (_local2.shootOffsetsX[1] * _local2.facingDir);
					_local12 = _local2.shootOffsetsY[1];
				} else {
					_local11 = (_local2.shootOffsetsX[0] * _local2.facingDir);
					_local12 = _local2.shootOffsetsY[0];
				};
			} else {
				if (_local2.shootingType == "22"){
					if (_arg1){
						_local11 = (_local2.shootOffsetsX[3] * _local2.facingDir);
						_local12 = _local2.shootOffsetsY[3];
					} else {
						_local11 = (_local2.shootOffsetsX[2] * _local2.facingDir);
						_local12 = _local2.shootOffsetsY[2];
					};
				} else {
					if (_local2.shootingType == "45"){
						if (_arg1){
							_local11 = (_local2.shootOffsetsX[5] * _local2.facingDir);
							_local12 = _local2.shootOffsetsY[5];
						} else {
							_local11 = (_local2.shootOffsetsX[4] * _local2.facingDir);
							_local12 = _local2.shootOffsetsY[4];
						};
					} else {
						if (_local2.shootingType == "67"){
							if (_arg1){
								_local11 = (_local2.shootOffsetsX[7] * _local2.facingDir);
								_local12 = _local2.shootOffsetsY[7];
							} else {
								_local11 = (_local2.shootOffsetsX[6] * _local2.facingDir);
								_local12 = _local2.shootOffsetsY[6];
							};
						} else {
							if (_local2.shootingType == "Up"){
								if (_arg1){
									_local11 = (_local2.shootOffsetsX[9] * _local2.facingDir);
									_local12 = _local2.shootOffsetsY[9];
								} else {
									_local11 = (_local2.shootOffsetsX[8] * _local2.facingDir);
									_local12 = _local2.shootOffsetsY[8];
								};
							} else {
								if (_local2.shootingType == "Duck"){
									if (_arg1){
										_local11 = (_local2.shootOffsetsX[11] * _local2.facingDir);
										_local12 = _local2.shootOffsetsY[11];
									} else {
										_local11 = (_local2.shootOffsetsX[10] * _local2.facingDir);
										_local12 = _local2.shootOffsetsY[10];
									};
								};
							};
						};
					};
				};
			};
			var _local13:Number = (_local2.x + _local11);
			var _local14:* = (_local2.y + _local12);
			_local4.addBullet(_local13, _local14, _local10, _local9, "GenericBullet", "", true, _local2.statAttack, true);
			_local2.gameObj.soundManager.playSound("shoot_pistol.wav");
		}
		public function decideAfterShooting(){
			var _local1:Enemy12 = this;
			_local1.isShooting = false;
			_local1.isFinishShooting = true;
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy12 = this;
			var _local6:Boolean;
			if (((!((_arg4 == "none"))) && (!((_arg4 == "punch"))))){
				_local5.killedWithOnlyPunch = false;
			};
			if (((((((!(_local5.isDead)) && (!(_local5.isDodging)))) && (_local5.canDodgeAttacks))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShooting = false;
				_local5.isStartShooting = false;
				_local5.isJumpingBack = false;
				_local5.isJumpingForward = false;
				_local5.isSkiddingBack = false;
				_local5.isSkiddingForward = false;
				_local5.isFinishLeaping = false;
				_local5.isFinishShooting = false;
				_local5.isFinishSkidForward = false;
				_local5.isStartJumpBack = false;
				_local5.isLeaping = false;
				_local5.isShoving = false;
				_local5.isDucking = false;
				_local5.isUnducking = false;
				_local5.isTurning = false;
				_local5.duck = false;
				_local5.isHit = false;
				_local5.isDodging = true;
				if (!_arg3){
					if (_local5.gameObj.playerObj.x > _local5.x){
						_local5.facingDir = 1;
					} else {
						_local5.facingDir = -1;
					};
					_local5.startJumpingBackward();
				} else {
					_local5.targetLeapYtile = (_local5.ytile - 6);
					_local5.startLeap();
				};
			} else {
				if (!_local5.isDodging){
					_local5.animationFrame = 0;
					_local5.cycleFrame = 0;
					_local5.isAttacking = false;
					_local5.isShooting = false;
					_local5.isStartShooting = false;
					_local5.isJumpingBack = false;
					_local5.isJumpingForward = false;
					_local5.isSkiddingBack = false;
					_local5.isSkiddingForward = false;
					_local5.isFinishLeaping = false;
					_local5.isFinishShooting = false;
					_local5.isFinishSkidForward = false;
					_local5.isStartJumpBack = false;
					_local5.isLeaping = false;
					_local5.isDucking = false;
					_local5.isUnducking = false;
					_local5.duck = false;
					_local5.isShoving = false;
					_local5.isDodging = false;
					_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
					_local5.gameObj.hudObj.updateBossHealth((_local5.currentHealth / _local5.maxHealth));
				};
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy12 = this;
			if (_local2.emeraldID == -1){
				_local2.addEmerald(_local2.x, (_local2.y - 83), false);
			};
			if (_local2.killedWithOnlyPunch){
				_local2.gameObj.challengeManager.recordTag("bossPunch");
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy12 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			_local1.gameObj.playerObj.isFinishingLevel = true;
			_local1.gameObj.gameControls.stopControls = true;
			_local1.gameObj.gameControls.stopCycle = true;
			_local1.gameObj.challengeManager.recordCompletionTime(_local1.gameObj.gameControls.gameplayTimer);
			_local1.gameObj.challengeManager.checkCustomChallenges();
			_local1.gameObj.gameDisplay.startMainIrisOut();
			super.removeEnemy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:CactusChar;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local12:Number;
			var _local13:Boolean;
			var _local1:Enemy12 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (!_local1.finishedIntro){
				_local2.gameControls.stopActionControls = true;
				_local7 = ((_local1.introPlayerXtile * _local4.tileWidth) - _local6.x);
				if (!_local6.isHit){
					if (_local7 > 0){
						_local8 = CactusChar(_local6);
						_local6.walkingDir = 1;
						_local6.facingDir = 1;
						_local6.dirx = 1;
						_local6.isWalking = true;
						_local8.isSkidding = false;
						_local8.skidSpeed = 0;
						if (_local7 > _local6.walkspeed){
							_local6.speed = _local6.walkspeed;
							_local6.moveChar(1, 0, 0);
						} else {
							_local6.speed = _local7;
							_local6.moveChar(1, 0, 0);
						};
					} else {
						_local6.isWalking = false;
					};
				};
				if ((((_local7 < 100)) && (!(_local1.hasJumpedIntro)))){
					_local1.x = 0;
					_local1.facingDir = 1;
					_local1.walkingDir = 1;
					_local1.dirx = 1;
					_local1.startJumpingForward(true);
					_local1.hasJumpedIntro = true;
				};
			};
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > _local4.levelTileHeight){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
				} else {
					if (((((!(_local1.isWaitingForEnemies)) && (!(_local1.isLeapingOffScreen)))) && (_local1.finishedIntro))){
						_local1.callEnemyTimer++;
					};
					if (((((!(_local1.isLeaping)) && (!(_local1.isWaitingForEnemies)))) && (!(_local1.isLeapingOffScreen)))){
						_local1.jumpChar();
					};
					_local9 = (_local1.x - _local6.x);
					_local10 = Math.abs(_local9);
					_local11 = Math.random();
					_local12 = 0;
					if (_local9 < 0){
						_local12 = 1;
					} else {
						_local12 = -1;
					};
					_local13 = _local1.isStandingStill(true);
					if (((_local13) && (_local1.finishedIntro))){
						if (_local9 >= 0){
							if (_local1.facingDir == 1){
								_local1.isTurning = true;
							};
						} else {
							if (_local1.facingDir == -1){
								_local1.isTurning = true;
							};
						};
					};
					if (((((((_local13) && (!(_local1.isWaitingForEnemies)))) && (!(_local1.isLeapingOffScreen)))) && ((_local1.callEnemyTimer >= _local1.callEnemyTimerMax)))){
						_local1.isDodging = true;
						_local1.isLeapingOffScreen = true;
					} else {
						if (_local1.isLeapingOffScreen){
							_local1.jumpspeed = _local1.leapSpeedY;
							_local1.jump = true;
							_local1.jumpChar(false);
							if (_local1.ytile < 0){
								_local1.callEnemies();
								_local1.isLeapingOffScreen = false;
							};
						} else {
							if (_local1.isWaitingForEnemies){
								if (_local1.gameObj.enemyManager.getCurrentEnemyTotal() == 1){
									_local1.callEnemyTimer = 0;
									_local1.isWaitingForEnemies = false;
									_local1.targetLeapYtile = _local6.ytile;
									_local1.startLeap(true);
								};
							} else {
								if (_local1.isTalking){
									if (_local1.cycleFrame == 3){
									} else {
										if (_local1.cycleFrame == 22){
											_local1.removeEmerald();
										} else {
											if (_local1.cycleFrame == 34){
												_local1.gameObj.effectManager.addEffect((_local4.currentXcoord + (_local4.screenPxWidth / 2)), (_local4.currentYcoord + (_local4.screenPxHeight / 2)), "BossBubbleEffect");
											};
										};
									};
									_local1.healthFillupTimer++;
									if (_local1.healthFillupTimer > _local1.healthFillupTimerMax){
										_local1.healthFillupTimer = _local1.healthFillupTimerMax;
									};
									_local1.gameObj.hudObj.updateBossHealth((_local1.healthFillupTimer / _local1.healthFillupTimerMax));
								} else {
									if (((!(_local1.finishedIntro)) && (_local1.isTurning))){
									} else {
										if (((_local13) && ((_local6.ytile > _local1.ytile)))){
											_local1.targetLeapYtile = _local6.ytile;
											_local1.startLeap(true);
										} else {
											if (((_local13) && ((_local10 > 400)))){
												_local1.targetLeapYtile = _local6.ytile;
												_local1.startLeap();
											} else {
												if (((((((_local13) && ((_local10 > _local1.rangeBeforeJumpingForward)))) && ((_local11 < _local1.chanceShootOutOfRange)))) && (_local1.checkOnScreen()))){
													_local1.isStartShooting = true;
												} else {
													if (((((((((_local13) && (!(_local6.jump)))) && (!(_local6.isGrabbing)))) && (!(_local6.onMovingTile)))) && ((_local6.ytile < _local1.ytile)))){
														_local1.targetLeapYtile = _local6.ytile;
														_local1.startLeap();
													} else {
														if (((((_local13) && ((_local10 > _local1.rangeBeforeJumpingForward)))) && ((_local12 == _local1.facingDir)))){
															if (_local10 > _local1.longRangeJumpForward){
																_local1.startJumpingForward(true);
															} else {
																_local1.startJumpingForward();
															};
														} else {
															if (_local1.isJumpingForward){
																if (_local1.jump){
																	_local1.moveChar(_local1.walkingDir, 0, 0);
																} else {
																	_local1.isJumpingForward = false;
																	_local1.isSkiddingForward = true;
																	_local1.skidTimer = 0;
																};
															} else {
																if (_local1.isSkiddingForward){
																	_local1.skidTimer++;
																	if ((_local1.skidTimer % _local1.skidForwardDecayInterval) == 0){
																		if (((_local1.finishedIntro) || ((_local1.xtile > (_local6.xtile + 3))))){
																			_local1.speed--;
																		};
																		_local5.addEffect(_local1.x, (_local1.y + 18), "DustEffect");
																		_local5.addEffect((_local1.x + (16 * _local1.facingDir)), (_local1.y + 18), "DustEffect");
																	};
																	if (_local1.speed > 0){
																		_local1.moveChar(_local1.walkingDir, 0, 0);
																	} else {
																		_local1.speed = 0;
																		_local1.isSkiddingForward = false;
																		_local1.isFinishSkidForward = true;
																		if (!_local1.finishedIntro){
																			_local1.isTurning = true;
																		};
																	};
																} else {
																	if (((((_local13) && ((_local10 <= _local1.rangeBeforeJumpingBackward)))) && ((_local12 == _local1.facingDir)))){
																		_local1.startJumpingBackward();
																	} else {
																		if (_local1.isJumpingBack){
																			if (_local1.jump){
																				_local1.moveChar(_local1.walkingDir, 0, 0);
																			} else {
																				_local1.isSkiddingBack = true;
																				_local1.isJumpingBack = false;
																				_local1.isStartJumpBack = false;
																				if (((((((_local1.isDodging) && (!(_local1.isStartShooting)))) && (!(_local1.isShooting)))) && (!(_local1.isFinishShooting)))){
																					_local1.isStartShooting = true;
																				};
																			};
																		} else {
																			if (_local1.isSkiddingBack){
																				_local1.skidTimer++;
																				if ((_local1.skidTimer % _local1.skidBackwardDecayInterval) == 0){
																					_local1.speed--;
																					_local5.addEffect(_local1.x, (_local1.y + 18), "DustEffect");
																					_local5.addEffect((_local1.x - (16 * _local1.facingDir)), (_local1.y + 18), "DustEffect");
																				};
																				if (_local1.speed > 0){
																					_local1.moveChar(_local1.walkingDir, 0, 0);
																					if (_local1.dirx == 0){
																						_local1.isSkiddingBack = false;
																						_local1.walkingDir = _local1.facingDir;
																						_local1.dirx = _local1.facingDir;
																						_local1.startLeap();
																					};
																				} else {
																					_local1.speed = 0;
																					_local1.isSkiddingBack = false;
																					_local1.walkingDir = _local1.facingDir;
																					_local1.dirx = _local1.facingDir;
																					if (_local1.isDodging){
																					};
																					_local1.isDodging = false;
																				};
																			} else {
																				if (_local1.isLeaping){
																					if (_local1.ytile < (_local1.targetLeapYtile - 1)){
																						_local1.jumpChar(false);
																					} else {
																						_local1.jumpChar();
																					};
																					if (_local1.jump){
																						if (_local1.speed > 0){
																							_local1.moveChar(_local1.walkingDir, 0, 0);
																						};
																					} else {
																						_local1.isLeaping = false;
																						_local1.isFinishLeaping = true;
																						_local1.gameObj.gameCam.setCameraJiggle(10, 8);
																					};
																				} else {
																					if (_local1.isAttacking){
																						if ((((_local1.cycleFrame >= 7)) && ((_local1.cycleFrame <= 10)))){
																							_local1.speed = _local1.swordSpeed1;
																							_local1.moveChar(_local1.walkingDir, 0, 0);
																						} else {
																							if ((((_local1.cycleFrame >= 18)) && ((_local1.cycleFrame <= 22)))){
																								_local1.speed = _local1.swordSpeed2;
																								_local1.moveChar(_local1.walkingDir, 0, 0);
																							} else {
																								if ((((_local1.cycleFrame >= 29)) && ((_local1.cycleFrame <= 34)))){
																									_local1.speed = _local1.swordSpeed3;
																									_local1.moveChar(_local1.walkingDir, 0, 0);
																								};
																							};
																						};
																					};
																				};
																			};
																		};
																	};
																};
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
					_local1.checkForAttacking();
					_local1.fallChar();
					_local1.updateSprite();
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			if (_local1.isDucking){
				_local1.collRect = _local1.duckRect;
			} else {
				_local1.collRect = _local1.normalRect;
			};
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy12 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		public function isStandingStill(_arg1:Boolean):Boolean{
			var _local2:Enemy12 = this;
			var _local3:Boolean;
			if (((_arg1) && (_local2.jump))){
				_local3 = false;
			} else {
				if (((((((((((((((((((((((((((((((((((((_local2.isSkiddingBack) || (_local2.isSkiddingForward))) || (_local2.isFinishLeaping))) || (_local2.isFinishSkidForward))) || (_local2.isStartJumpBack))) || (_local2.isJumpingBack))) || (_local2.isJumpingForward))) || (_local2.isLeaping))) || (_local2.isHit))) || (_local2.isDucking))) || (_local2.isUnducking))) || (_local2.isAttacking))) || (_local2.isStartShooting))) || (_local2.isFinishShooting))) || (_local2.isShooting))) || (_local2.isLeapingOffScreen))) || (_local2.isWaitingForEnemies))) || (_local2.isTalking))) || (!(_local2.finishedIntro)))){
					_local3 = false;
				};
			};
			return (_local3);
		}
		override public function startAttacking(){
			var _local1:Enemy12 = this;
			_local1.isAttacking = true;
			_local1.walkingDir = _local1.facingDir;
			_local1.dirx = _local1.walkingDir;
			_local1.cycleFrame = 0;
		}
		override public function startShoving(){
			var _local1:Enemy12 = this;
		}
		public function startJumpingBackward(){
			var _local1:Enemy12 = this;
			_local1.isStartJumpBack = true;
		}
		public function startLeap(_arg1:Boolean=false){
			var _local2:Enemy12 = this;
			var _local3:PlayerChar = _local2.gameObj.playerObj;
			var _local4:Number = (_local3.x - _local2.x);
			var _local5:Number = Math.min(1, Math.abs((_local4 / 200)));
			_local2.isLeaping = true;
			_local2.isDucking = false;
			_local2.isUnducking = false;
			_local2.duck = false;
			if (_arg1){
				_local2.jumpspeed = 0;
				_local2.y = (_local2.y + 16);
				_local2.ytile = Math.floor((_local2.y / _local2.gameObj.gameDisplay.tileWidth));
			} else {
				_local2.jumpspeed = _local2.leapSpeedY;
			};
			_local2.jump = true;
			_local2.speed = Math.floor((_local5 * _local2.leapSpeedMaxX));
			_local2.isTurning = false;
			_local2.isAttacking = false;
			_local2.isShooting = false;
			_local2.isFinishShooting = false;
			_local2.isStartShooting = false;
			if (_local4 > 0){
				_local2.facingDir = 1;
				_local2.walkingDir = 1;
				_local2.dirx = 1;
			} else {
				_local2.facingDir = -1;
				_local2.walkingDir = -1;
				_local2.dirx = -1;
			};
		}
		public function startJumpingForward(_arg1:Boolean=false){
			var _local2:Enemy12 = this;
			_local2.isJumpingForward = true;
			_local2.jumpspeed = _local2.jumpForwardSpeedY;
			_local2.jump = true;
			_local2.speed = _local2.jumpForwardSpeedX;
			if (_arg1){
				_local2.jumpspeed = _local2.jumpForwardSpeedLongY;
			};
			_local2.dirx = _local2.facingDir;
			_local2.walkingDir = _local2.dirx;
		}
		public function jumpBackward(){
			var _local1:Enemy12 = this;
			_local1.jumpspeed = _local1.jumpBackwardSpeedY;
			if (_local1.isDodging){
				_local1.jumpspeed = _local1.jumpBackwardSpeedLongY;
			};
			_local1.jump = true;
			_local1.speed = _local1.jumpBackwardSpeedX;
			_local1.dirx = (_local1.facingDir * -1);
			_local1.walkingDir = _local1.dirx;
		}
		public function checkForAttacking(){
			var _local4:Rectangle;
			var _local1:Enemy12 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (_local1.isStandingStill(true)){
				if ((((((_local2.x < _local1.x)) && ((_local1.facingDir == -1)))) || ((((_local2.x > _local1.x)) && ((_local1.facingDir == 1)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			} else {
				if (_local1.isShooting){
					if ((((((_local1.cycleFrame == 4)) || ((_local1.cycleFrame == 12)))) || ((_local1.cycleFrame == 20)))){
						_local1.shootWeapon(false);
					} else {
						if ((((_local1.cycleFrame == 8)) || ((_local1.cycleFrame == 16)))){
							_local1.shootWeapon(true);
						};
					};
				} else {
					if (((_local1.isAttacking) && (!(_local1.isShoving)))){
						if ((((_local1.cycleFrame == 7)) || ((_local1.cycleFrame == 30)))){
							_local1.gameObj.soundManager.playSound("attack_swing_1.wav");
						} else {
							if (_local1.cycleFrame == 17){
								_local1.gameObj.soundManager.playSound("attack_swing_2.wav");
							};
						};
						if ((((((((_local1.cycleFrame >= 10)) && ((_local1.cycleFrame <= 12)))) || ((((_local1.cycleFrame >= 20)) && ((_local1.cycleFrame <= 22)))))) || ((((_local1.cycleFrame >= 33)) && ((_local1.cycleFrame <= 35)))))){
							_local4 = new Rectangle();
							_local4.x = (_local1.x + _local1.attackRect.x);
							_local4.y = (_local1.y + _local1.attackRect.y);
							_local4.width = _local1.attackRect.width;
							_local4.height = _local1.attackRect.height;
							if (_local1.facingDir == -1){
								_local4.x = ((_local1.x - _local1.attackRect.x) - _local1.attackRect.width);
							};
							if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
								_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
							};
						};
					} else {
						if (((((_local1.isLeaping) && ((((_local1.cycleFrame >= 2)) && ((_local1.cycleFrame <= 4)))))) || (((_local1.isFinishLeaping) && ((((_local1.cycleFrame >= 0)) && ((_local1.cycleFrame <= 2)))))))){
							_local4 = new Rectangle();
							_local4.x = (_local1.x + _local1.leapRect.x);
							_local4.y = (_local1.y + _local1.leapRect.y);
							_local4.width = _local1.leapRect.width;
							_local4.height = _local1.leapRect.height;
							if (_local1.facingDir == -1){
								_local4.x = ((_local1.x - _local1.leapRect.x) - _local1.leapRect.width);
							};
							if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
								_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
							};
						};
					};
				};
			};
		}
		public function callEnemies(){
			var _local8:Number;
			var _local9:Number;
			var _local10:String;
			var _local11:Number;
			var _local12:Number;
			var _local13:Number;
			var _local14:Array;
			var _local1:Enemy12 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:Boolean;
			var _local5:Boolean;
			var _local6:Number = (2 + Math.round(Math.random()));
			var _local7:* = 0;
			while (_local7 < _local6) {
				_local8 = Math.floor((Math.random() * _local1.enemiesTypesToCall.length));
				_local9 = _local1.enemiesTypesToCall[_local8];
				_local10 = _local1.enemyWeapons[_local8][Math.floor((Math.random() * _local1.enemyWeapons[_local8].length))];
				_local11 = 12;
				_local12 = 0;
				if ((((Math.random() < 0.2)) && (!(_local4)))){
					_local11 = 7;
					_local12 = 14;
					_local4 = true;
				} else {
					if ((((Math.random() < 0.4)) && (!(_local5)))){
						_local11 = 23;
						_local12 = 20;
						_local5 = true;
					} else {
						_local11 = (9 + Math.floor((Math.random() * 14)));
						_local12 = 0;
					};
				};
				_local13 = 1;
				if (_local2.xtile < _local11){
					_local13 = -1;
				};
				_local14 = [_local13, _local10, 0, 999999, 1];
				_local3.addEnemy(_local11, _local12, _local9, _local1.whichScreen, 1, (_local3.counter + 1), _local14);
				_local7++;
			};
			_local1.gameObj.soundManager.playSound("rumblewhistle.wav");
			_local1.isWaitingForEnemies = true;
		}
		public function addEmerald(_arg1:Number, _arg2:Number, _arg3:Boolean=true){
			var _local4:Enemy12 = this;
			var _local5 = "";
			if (_arg3){
				_local5 = "intro";
			};
			_local4.emeraldID = _local4.gameObj.effectManager.addEffect(_arg1, _arg2, "ThornedEmeraldEffect", _local5);
		}
		public function removeEmerald(){
			var _local1:Enemy12 = this;
			if (_local1.emeraldID > -1){
				_local1.gameObj.effectManager.removeEffect(_local1.emeraldID);
				_local1.emeraldID = -1;
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy2 (cactusGame.models.enemies.Enemy2)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy2 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 130
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_slowWalk:Array;
		public var weapon_stepBack:Array;
		public var weapon_swing:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var randomWeapons:Array;

		public function Enemy2(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			attackRect = new Rectangle(10, -50, 80, 50);
			weapon_stand = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13, -13], [-5, -5, -5, -4, -4, -4, -3, -3, -3, -4, -4, -4]];
			weapon_run = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-15, -15, -15, -15, -15, -15, -15, -15, -15, -15, -14, -14, -14, -14, -14, -15], [-5, -5, -6, -7, -8, -7, -6, -5, -4, -5, -6, -8, -9, -8, -7, -6]];
			weapon_stepForward = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-13, -13, -13, -13, -13, -13, -13, -13, -12, -12, -12, -12, -12, -12, -12, -12], [-5, -5, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -4, -4, -4, -4]];
			weapon_slowWalk = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-13, -13, -13, -13, -13, -13, -13, -13, -12, -12, -12, -12, -12, -12, -12, -12, -13, -13, -13, -13, -13, -13, -13, -13, -12, -12, -12, -12, -12, -12, -12, -12], [-5, -5, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -4, -4, -4, -4, -5, -5, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -4, -4, -4, -4]];
			weapon_stepBack = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [-13, -13, -13, -13, -13, -13, -14, -14, -15, -15, -14, -14, -14, -14, -13, -13], [-5, -5, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -4, -4, -5, -5]];
			weapon_swing = [[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 7, 8, 9, 10, 11, 4, 4, 4, 4, 4, 4], [-10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -18, -21, -21, 6, 5, 15, 15, 15, 15, 15, 15], [-10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -10, -9, 2, 2, -3, -7, -19, -19, -19, -19, -19, -19]];
			weapon_hit = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [-15, -20, -19, -19, -19, -19, -19, -15, -13], [-3, -1, -3, -3, -3, -3, -3, -3, -4]];
			weapon_die1 = [[5], [5], [-4]];
			weapon_die2 = [[6], [-1], [-15]];
			weapon_jump = [[1, 1, 1], [-13, -13, -13], [-5, -5, -5]];
			weapon_dodge = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [-13, -13, -13, -13, -13, -13, -13, -13, -13], [-5, -5, -5, -5, -5, -5, -5, -5, -5]];
			weapon_shove = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [-13, -13, -13, -13, -13, -13, -13, -13, -13], [-5, -5, -5, -5, -5, -5, -5, -5, -5]];
			randomWeapons = ["Mallet", "Axe", "Pickaxe", "Scythe", "PoolCue", "Morningstar"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy2 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 2;
			sheetname = "enemigo_02_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 98;
			spriteCenterX = 46;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 200;
			maxHealth = 200;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.2;
			attackChangeInRange = 0.5;
			dropWeaponChance = 0.2;
			points = 30;
			weaponSKU = "Mallet";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy2;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy2 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1.swingCycleFrames;
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														_local2 = _local1.standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy2 = this;
			if (_local1.cycleName == "swing"){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy2 = this;
			var _local6:Boolean;
			if (((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy2 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy2 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy2 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy2 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
									if (_local1.jump){
										if (_local1.dirx == 0){
											_local1.dirx = _local1.facingDir;
										};
										_local1.speed = _local1.runSpeed;
										_local1.isSteppingBackward = false;
										_local1.isSteppingForward = false;
										_local1.isWalking = true;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									} else {
										if (_local8 > targetDistance){
											_local1.dirx = _local1.facingDir;
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if ((((_local8 <= (targetDistance - 40))) || ((((_local8 <= (targetDistance - 20))) && ((_local9 > 0.95)))))){
												_local1.dirx = (_local1.facingDir * -1);
												_local1.speed = _local1.stepSpeed;
												_local1.isSteppingBackward = true;
												_local1.isSteppingForward = false;
											} else {
												if ((((_local8 > (targetDistance - 20))) && ((_local9 > 0.95)))){
													_local1.dirx = _local1.facingDir;
													_local1.speed = _local1.stepSpeed;
													_local1.isSteppingForward = true;
													_local1.isSteppingBackward = false;
												} else {
													_local1.isWalking = false;
												};
											};
										};
									};
								} else {
									_local1.speed = _local1.stepSpeed;
									_local1.moveChar(_local1.dirx, 0, 0, false, true);
								};
								_local1.lookForPlayer();
							} else {
								_local1.speed = _local1.paceSpeed;
								_local1.isSteppingForward = true;
								_local1.isWalking = true;
								if (_local1.dirx == 0){
									_local1.dirx = 1;
								};
								_local1.moveChar(_local1.dirx, 0, false, true, true);
								if (_local1.dirx != 0){
									_local1.facingDir = _local1.dirx;
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if (_local1.dirx == 0){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy2 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy2 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
			};
		}
		override public function startShoving(){
			var _local1:Enemy2 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy2 = this;
		}
		public function checkForAttacking(){
			var _local4:Rectangle;
			var _local1:Enemy2 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				if ((((((_local2.x < _local1.x)) && ((_local3 <= _local1.attackRect.width)))) || ((((_local2.x > _local1.x)) && (((_local3 * -1) <= _local1.attackRect.width)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			} else {
				if (((_local1.isAttacking) && ((_local1.cycleFrame == (_local1.startAttackFrame - 6))))){
					_local1.gameObj.soundManager.playSound("attack_swing_2.wav");
				};
				if (((((((((_local1.isAttacking) && (!(_local1.isQuickAttacking)))) && (!(_local1.isShoving)))) && ((_local1.cycleFrame >= _local1.startAttackFrame)))) && ((_local1.cycleFrame <= _local1.endAttackFrame)))){
					_local4 = new Rectangle();
					_local4.x = (_local1.x + _local1.attackRect.x);
					_local4.y = (_local1.y + _local1.attackRect.y);
					_local4.width = _local1.attackRect.width;
					_local4.height = _local1.attackRect.height;
					if (_local1.facingDir == -1){
						_local4.x = ((_local1.x - _local1.attackRect.x) - _local1.attackRect.width);
					};
					if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
						_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy3 (cactusGame.models.enemies.Enemy3)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy3 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 130
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_slowWalk:Array;
		public var weapon_stepBack:Array;
		public var weapon_swing:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var randomWeapons:Array;

		public function Enemy3(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			attackRect = new Rectangle(10, -50, 80, 50);
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10], [3, 3, 3, 4, 4, 4, 5, 5, 5, 4, 4, 4]];
			weapon_run = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [9, 8, 6, 5, 3, 6, 8, 11, 13, 15, 17, 19, 21, 19, 16, 13], [43, 42, 41, 39, 37, 39, 41, 42, 44, 43, 41, 39, 38, 40, 41, 42]];
			weapon_stepForward = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 11, 11, 11, 11, 11, 11], [3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 4, 4, 3, 3]];
			weapon_slowWalk = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 10, 10, 10, 11, 11, 11, 11, 12, 12, 11, 11, 11, 11, 11, 11, 10, 10, 11, 11, 13, 13, 14, 14, 16, 16, 14, 14, 13, 13, 11, 11], [3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 5, 5, 4, 4, 3, 3, 3, 3, 3, 3, 3, 3, 5, 5, 6, 6, 6, 6, 5, 5, 4, 4]];
			weapon_stepBack = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 10, 10, 10, 10, 10, 10, 10, 9, 9, 10, 10, 10, 10, 10, 10], [3, 3, 3, 3, 3, 3, 4, 4, 5, 5, 4, 4, 4, 4, 3, 3]];
			weapon_swing = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 5, 6, 7, 3, 3, 3, 3, 3, 3], [-5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 4, -18, -11, -2, -2, -2, -2, -2, -2, -2, -2], [37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 43, 39, -6, -3, -3, -3, -3, -3, -3, -3, -3]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [5, 0, 1, 1, 1, 1, 1, 5, 10], [3, 4, 3, 3, 3, 3, 3, 3, 3]];
			weapon_die1 = [[0], [26], [7]];
			weapon_die2 = [[1], [24], [33]];
			weapon_jump = [[0, 0, 0], [10, 10, 10], [3, 3, 3]];
			weapon_dodge = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 10, 10, 10, 10, 10, 10, 10, 10], [3, 3, 3, 3, 3, 3, 3, 3, 3]];
			weapon_shove = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [10, 10, 10, 10, 10, 10, 10, 10, 10], [3, 3, 3, 3, 3, 3, 3, 3, 3]];
			randomWeapons = ["Machete", "Pipe", "Crowbar"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy3 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 3;
			sheetname = "enemigo_03_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 98;
			spriteCenterX = 46;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 150;
			maxHealth = 150;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.05;
			dropWeaponChance = 0.2;
			points = 20;
			weaponSKU = "Machete";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy3;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy3 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1.swingCycleFrames;
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														_local2 = _local1.standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy3 = this;
			if (_local1.cycleName == "swing"){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy3 = this;
			var _local6:Boolean;
			if (((((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && (!(_local5.onSingleTile)))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy3 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy3 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy3 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy3 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								if (onSingleTile){
									_local1.isWalking = false;
								} else {
									if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
										if (_local1.jump){
											if (_local1.dirx == 0){
												_local1.dirx = _local1.facingDir;
											};
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if (_local8 > targetDistance){
												_local1.dirx = _local1.facingDir;
												_local1.speed = _local1.runSpeed;
												_local1.isSteppingBackward = false;
												_local1.isSteppingForward = false;
												_local1.isWalking = true;
												_local1.moveChar(_local1.dirx, 0, 0, false, true);
											} else {
												if ((((_local8 <= (targetDistance - 40))) || ((((_local8 <= (targetDistance - 20))) && ((_local9 > 0.95)))))){
													_local1.dirx = (_local1.facingDir * -1);
													_local1.speed = _local1.stepSpeed;
													_local1.isSteppingBackward = true;
													_local1.isSteppingForward = false;
												} else {
													if ((((_local8 > (targetDistance - 20))) && ((_local9 > 0.95)))){
														_local1.dirx = _local1.facingDir;
														_local1.speed = _local1.stepSpeed;
														_local1.isSteppingForward = true;
														_local1.isSteppingBackward = false;
													} else {
														_local1.isWalking = false;
													};
												};
											};
										};
									} else {
										_local1.speed = _local1.stepSpeed;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									};
								};
								_local1.lookForPlayer();
							} else {
								if (onSingleTile){
									_local1.isWalking = false;
								} else {
									_local1.speed = _local1.paceSpeed;
									_local1.isSteppingForward = true;
									_local1.isWalking = true;
									if (_local1.dirx == 0){
										_local1.dirx = 1;
									};
									_local1.moveChar(_local1.dirx, 0, false, true, true);
									if (_local1.dirx != 0){
										_local1.facingDir = _local1.dirx;
									};
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if (_local1.dirx == 0){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy3 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy3 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
			};
		}
		override public function startShoving(){
			var _local1:Enemy3 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy3 = this;
		}
		public function checkForAttacking(){
			var _local4:Rectangle;
			var _local1:Enemy3 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				if ((((((_local2.x < _local1.x)) && ((_local3 <= _local1.attackRect.width)))) || ((((_local2.x > _local1.x)) && (((_local3 * -1) <= _local1.attackRect.width)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			} else {
				if (((_local1.isAttacking) && ((_local1.cycleFrame == (_local1.startAttackFrame - 6))))){
					_local1.gameObj.soundManager.playSound("attack_swing_1.wav");
				};
				if (((((((((_local1.isAttacking) && (!(_local1.isQuickAttacking)))) && (!(_local1.isShoving)))) && ((_local1.cycleFrame >= _local1.startAttackFrame)))) && ((_local1.cycleFrame <= _local1.endAttackFrame)))){
					_local4 = new Rectangle();
					_local4.x = (_local1.x + _local1.attackRect.x);
					_local4.y = (_local1.y + _local1.attackRect.y);
					_local4.width = _local1.attackRect.width;
					_local4.height = _local1.attackRect.height;
					if (_local1.facingDir == -1){
						_local4.x = ((_local1.x - _local1.attackRect.x) - _local1.attackRect.width);
					};
					if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
						_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy4 (cactusGame.models.enemies.Enemy4)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy4 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var punch1CycleFrames:Array;
		public var punch2CycleFrames:Array;
		public var punch3CycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 90
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 6
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 10
		public var endAttackFrame:Number;// = 15
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var whichPunch:Number;// = 1
		public var totalPunchTypes:Number;// = 3
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_slowWalk:Array;
		public var weapon_stepBack:Array;
		public var weapon_swing:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var weapon_punch1:Array;
		public var weapon_punch2:Array;
		public var weapon_punch3:Array;
		public var randomWeapons:Array;

		public function Enemy4(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			punch1CycleFrames = ["punch1", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 35, 35, 35, 35, 35]];
			punch2CycleFrames = ["punch2", 2, 1, 0, -1, [36, 36, 36, 36, 36, 36, 36, 36, 37, 38, 38, 38, 38, 38, 38]];
			punch3CycleFrames = ["punch3", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 35, 36, 37, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			attackRect = new Rectangle(10, -50, 60, 50);
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [-7, -7, -7, -6, -6, -6, -5, -5, -5, -6, -6, -6]];
			weapon_run = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [-5, -6, -7, -9, -10, -9, -7, -6, -5, -5, -6, -7, -8, -7, -6, -5]];
			weapon_stepForward = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [-7, -7, -8, -8, -9, -9, -7, -7, -6, -6, -6, -6, -6, -6, -7, -7]];
			weapon_slowWalk = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [-7, -7, -8, -8, -9, -9, -7, -7, -6, -6, -6, -6, -6, -6, -7, -7, -8, -8, -9, -9, -7, -7, -6, -6, -6, -6, -6, -6, -7, -7, -7, -7]];
			weapon_stepBack = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9], [-7, -7, -8, -8, -8, -8, -7, -7, -5, -5, -5, -5, -6, -6, -7, -7]];
			weapon_swing = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 4, 5, 6, 7, 3, 3, 3, 3, 3, 3], [-5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, -5, 4, -18, -11, -2, -2, -2, -2, -2, -2, -2, -2], [37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 43, 39, -6, -3, -3, -3, -3, -3, -3, -3, -3]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [7, 5, 4, 4, 4, 4, 4, 6, 9], [-6, -4, -5, -5, -5, -5, -5, -6, -7]];
			weapon_die1 = [[18], [11], [-6]];
			weapon_die2 = [[19], [1], [-20]];
			weapon_jump = [[0, 0, 0], [9, 9, 9], [-7, -8, -9]];
			weapon_dodge = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [9, 9, 9, 9, 9, 9, 9, 9, 9], [-9, -9, -9, -9, -9, -9, -8, -7, -7]];
			weapon_shove = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [9, 9, 9, 9, 9, 9, 9, 9, 9], [-9, -9, -9, -9, -9, -9, -8, -7, -7]];
			weapon_punch1 = [[0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 8, 8, 8, 8], [9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 11, 11, 11, 11], [-14, -14, -14, -14, -14, -14, -14, -14, -18, -18, -18, -18, -18, -18, -18]];
			weapon_punch2 = [[9, 9, 9, 9, 9, 9, 9, 9, 10, 11, 12, 12, 12, 12, 12], [9, 9, 9, 9, 9, 9, 9, 9, 10, 12, 12, 12, 12, 12, 12], [-10, -10, -10, -10, -10, -10, -10, -10, -17, -15, -15, -15, -15, -15, -15]];
			weapon_punch3 = [[0, 0, 0, 0, 0, 0, 0, 0, 7, 8, 8, 9, 10, 11, 12, 12, 12, 12], [9, 9, 9, 9, 9, 9, 9, 9, 9, 11, 11, 9, 10, 12, 12, 12, 12, 12], [-14, -14, -14, -14, -14, -14, -14, -14, -18, -18, -18, -10, -17, -15, -15, -15, -15, -15]];
			randomWeapons = ["BoxingGloves", "BrassKnuckles", "Iron"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy4 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 4;
			sheetname = "enemigo_04_sheet";
			height = 15;
			width = 15;
			spritewidth = 98;
			spriteheight = 98;
			spriteCenterX = 49;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 250;
			maxHealth = 250;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.2;
			attackChangeInRange = 0.3;
			dropWeaponChance = 0.2;
			points = 40;
			weaponSKU = "BoxingGloves";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy4 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy4 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1[(("punch" + _local1.whichPunch) + "CycleFrames")];
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														_local2 = _local1.standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy4 = this;
			if ((((((((_local1.cycleName == "swing")) || ((_local1.cycleName == "punch1")))) || ((_local1.cycleName == "punch2")))) || ((_local1.cycleName == "punch3")))){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy4 = this;
			var _local6:Boolean;
			if (((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy4 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy4 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy4 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy4 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
									if (_local1.jump){
										if (_local1.dirx == 0){
											_local1.dirx = _local1.facingDir;
										};
										_local1.speed = _local1.runSpeed;
										_local1.isSteppingBackward = false;
										_local1.isSteppingForward = false;
										_local1.isWalking = true;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									} else {
										if (_local8 > targetDistance){
											_local1.dirx = _local1.facingDir;
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if ((((_local8 <= (targetDistance - 40))) || ((((_local8 <= (targetDistance - 20))) && ((_local9 > 0.95)))))){
												_local1.dirx = (_local1.facingDir * -1);
												_local1.speed = _local1.stepSpeed;
												_local1.isSteppingBackward = true;
												_local1.isSteppingForward = false;
											} else {
												if ((((_local8 > (targetDistance - 20))) && ((_local9 > 0.95)))){
													_local1.dirx = _local1.facingDir;
													_local1.speed = _local1.stepSpeed;
													_local1.isSteppingForward = true;
													_local1.isSteppingBackward = false;
												} else {
													_local1.isWalking = false;
												};
											};
										};
									};
								} else {
									_local1.speed = _local1.stepSpeed;
									_local1.moveChar(_local1.dirx, 0, 0, false, true);
								};
								_local1.lookForPlayer();
							} else {
								_local1.speed = _local1.paceSpeed;
								_local1.isSteppingForward = true;
								_local1.isWalking = true;
								if (_local1.dirx == 0){
									_local1.dirx = 1;
								};
								_local1.moveChar(_local1.dirx, 0, false, true, true);
								if (_local1.dirx != 0){
									_local1.facingDir = _local1.dirx;
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if (_local1.dirx == 0){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy4 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy4 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
				if (_local1.whichPunch == 1){
					_local1.whichPunch = 2;
				} else {
					if (_local1.whichPunch == 2){
						_local1.whichPunch = 3;
					} else {
						_local1.whichPunch = 1;
					};
				};
			};
		}
		override public function startShoving(){
			var _local1:Enemy4 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy4 = this;
		}
		public function checkForAttacking(){
			var _local4:Rectangle;
			var _local1:Enemy4 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				if ((((((_local2.x < _local1.x)) && ((_local3 <= _local1.attackRect.width)))) || ((((_local2.x > _local1.x)) && (((_local3 * -1) <= _local1.attackRect.width)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			} else {
				if (((_local1.isAttacking) && ((_local1.cycleFrame == (_local1.startAttackFrame - 3))))){
					if (_local1.whichPunch == 2){
						_local1.gameObj.soundManager.playSound("attack_punch_2.wav");
					} else {
						_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
					};
				};
				if (((((((((_local1.isAttacking) && (!(_local1.isQuickAttacking)))) && (!(_local1.isShoving)))) && ((_local1.cycleFrame >= _local1.startAttackFrame)))) && ((_local1.cycleFrame <= _local1.endAttackFrame)))){
					_local4 = new Rectangle();
					_local4.x = (_local1.x + _local1.attackRect.x);
					_local4.y = (_local1.y + _local1.attackRect.y);
					_local4.width = _local1.attackRect.width;
					_local4.height = _local1.attackRect.height;
					if (_local1.facingDir == -1){
						_local4.x = ((_local1.x - _local1.attackRect.x) - _local1.attackRect.width);
					};
					if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
						_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy5 (cactusGame.models.enemies.Enemy5)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy5 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var aimupCycleFrames:Array;
		public var aimdownCycleFrames:Array;
		public var aimforwardCycleFrames:Array;
		public var shootupCycleFrames:Array;
		public var shootdownCycleFrames:Array;
		public var shootforwardCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 160
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var waitTimer:Number;// = 40
		public var waitTimerMax:Number;// = 90
		public var aimTimer:Number;// = 0
		public var aimTimerMax:Number;// = 15
		public var shotsFired:Number;// = 0
		public var shotTimer:Number;// = 0
		public var outOfRange:Boolean;// = true
		public var shoot_longgun_offsetsX:Array;
		public var shoot_longgun_offsetsY:Array;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_stepBack:Array;
		public var weapon_attacks:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var weapon_slowWalk:Array;
		public var weapon_aimup:Array;
		public var weapon_aimdown:Array;
		public var weapon_aimforward:Array;
		public var weapon_shootup:Array;
		public var weapon_shootdown:Array;
		public var weapon_shootforward:Array;
		public var randomWeapons:Array;
		public var aimDirection:String;// = "forward"
		public var chanceToCancelRapidFire:Number;// = 0.4

		public function Enemy5(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			aimupCycleFrames = ["aimup", 2, 1, 0, 0, [35, 35, 35, 26, 26, 26, 27, 27, 27, 26, 26, 26]];
			aimdownCycleFrames = ["aimdown", 2, 1, 0, 0, [37, 37, 37, 28, 28, 28, 29, 29, 29, 28, 28, 28]];
			aimforwardCycleFrames = ["aimforward", 2, 1, 0, 0, [0]];
			shootupCycleFrames = ["shootup", 2, 1, 0, 0, [36, 36, 35, 35]];
			shootdownCycleFrames = ["shootdown", 2, 1, 0, 0, [38, 38, 37, 37]];
			shootforwardCycleFrames = ["shootforward", 2, 1, 0, 0, [33, 34, 0, 0]];
			attackRect = new Rectangle(10, -50, 0, 0);
			shoot_longgun_offsetsX = [18, 10, 10, 5, 5];
			shoot_longgun_offsetsY = [28, 15, 55, -5, 90];
			weapon_stand = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -4, -3, -3, -3, -2, -2, -2, -3, -3, -3]];
			weapon_run = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -5, -6, -7, -8, -8, -7, -6, -5, -6, -7, -8, -9, -8, -7, -6]];
			weapon_stepForward = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -3, -3, -4, -4]];
			weapon_stepBack = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-5, -5, -5, -5, -5, -5, -4, -4, -3, -3, -4, -4, -4, -4, -4, -4]];
			weapon_attacks = [[2, 2, 3, 4, 5, 6, 6], [17, 19, 20, 18, 20, 18, 18], [-4, -4, -4, -2, -4, -6, -6]];
			weapon_hit = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [17, 14, 14, 14, 14, 14, 14, 17, 20], [-4, -4, -5, -5, -5, -5, -5, -5, -4]];
			weapon_die1 = [[3], [20], [-5]];
			weapon_die2 = [[1], [17], [-5]];
			weapon_jump = [[1, 1, 1], [20, 20, 20], [-4, -4, -4]];
			weapon_dodge = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -4, -4, -4, -4, -4, -4, -4]];
			weapon_shove = [[1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -4, -4, -4, -4, -4, -4, -4]];
			weapon_slowWalk = [[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -3, -3, -4, -4, -4, -4, -5, -5, -5, -5, -4, -4, -3, -3, -3, -3, -3, -3, -4, -4]];
			weapon_aimup = [[3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -4, -3, -3, -3, -2, -2, -2, -3, -3, -3]];
			weapon_aimdown = [[5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5], [20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20], [-4, -4, -4, -3, -3, -3, -2, -2, -2, -3, -3, -3]];
			weapon_aimforward = [[1], [20], [-4]];
			weapon_shootup = [[4, 4, 3, 3], [18, 18, 20, 20], [-2, -2, -4, -4]];
			weapon_shootdown = [[6, 6, 5, 5], [18, 18, 20, 20], [-6, -6, -4, -4]];
			weapon_shootforward = [[2, 2, 1, 1], [17, 19, 20, 20], [-4, -4, -4, -4]];
			randomWeapons = ["Blunderbuss", "Shotgun", "Flamethrower", "HarpoonGun", "Crossbow", "SubMachineGun"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy5 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
			if (_local9.weaponSKU == "Flamethrower"){
				_local9.chanceToCancelRapidFire = 0.15;
			};
		}
		override public function defineVars(){
			type = 5;
			sheetname = "enemigo_05_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 98;
			spriteCenterX = 46;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			lookForPlayerRect = new Rectangle(-150, -150, 300, 300);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 150;
			maxHealth = 150;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.05;
			dropWeaponChance = 0.2;
			points = 20;
			weaponSKU = "Blunderbuss";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy5 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy5 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1[(("shoot" + _local1.aimDirection) + "CycleFrames")];
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														if (_local1.aimDirection == "up"){
															_local2 = _local1.aimupCycleFrames;
														} else {
															if (_local1.aimDirection == "down"){
																_local2 = _local1.aimdownCycleFrames;
															} else {
																_local2 = _local1.standCycleFrames;
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy5 = this;
			if ((((((_local1.cycleName == "shootforward")) || ((_local1.cycleName == "shootup")))) || ((_local1.cycleName == "shootdown")))){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy5 = this;
			var _local6:Boolean;
			if (((((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && (!(_local5.onSingleTile)))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy5 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy5 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy5 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy5 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								_local1.alwaysNoticePlayer = true;
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								_local1.aimTimer++;
								if (_local1.aimTimer >= _local1.aimTimerMax){
									_local1.aimTowardsPlayer();
									_local1.aimTimer = 0;
								};
								if (onSingleTile){
									_local1.isWalking = false;
								} else {
									if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
										if (_local1.jump){
											if (_local1.dirx == 0){
												_local1.dirx = _local1.facingDir;
											};
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if (_local8 > targetDistance){
												_local1.dirx = _local1.facingDir;
												_local1.speed = _local1.runSpeed;
												_local1.isSteppingBackward = false;
												_local1.isSteppingForward = false;
												_local1.isWalking = true;
												_local1.moveChar(_local1.dirx, 0, 0, false, true);
											} else {
												_local1.isWalking = false;
											};
										};
									} else {
										_local1.speed = _local1.stepSpeed;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									};
								};
								_local1.lookForPlayer();
							} else {
								if (onSingleTile){
									_local1.isWalking = false;
								} else {
									_local1.speed = _local1.paceSpeed;
									_local1.isSteppingForward = true;
									_local1.isWalking = true;
									if (_local1.dirx == 0){
										_local1.dirx = 1;
									};
									_local1.moveChar(_local1.dirx, 0, false, true, true);
									if (_local1.dirx != 0){
										_local1.facingDir = _local1.dirx;
									};
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.isAttacking){
							if ((_local1.shotTimer % _local1.whichWeapon.bulletFrequency)){
								_local1.shootWeapon();
							};
							_local1.shotTimer++;
						};
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if ((((_local1.dirx == 0)) && (!(_local1.isAttacking)))){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					} else {
						_local1.noticedPlayer = false;
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy5 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								if (!_local3.alwaysNoticePlayer){
									_local3.noticedPlayer = false;
								} else {
									_local3.isWalking = false;
								};
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		public function checkShootingOnScreen():Boolean{
			var _local1:Enemy5 = this;
			if (_local1.xtile < _local1.gameObj.gameDisplay.currentXtileLeft){
				return (false);
			};
			if (_local1.xtile > _local1.gameObj.gameDisplay.currentXtileRight){
				return (false);
			};
			if (_local1.ytile < (_local1.gameObj.gameDisplay.currentYtileUp + 2)){
				return (false);
			};
			if (_local1.ytile > (_local1.gameObj.gameDisplay.currentYtileDown + 2)){
				return (false);
			};
			return (true);
		}
		override public function startAttacking(){
			var _local1:Enemy5 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
				_local1.isSteppingBackward = false;
				_local1.isSteppingForward = false;
				_local1.waitTimer = 0;
				_local1.shotTimer = 0;
				_local1.shotsFired = 0;
			};
		}
		override public function startShoving(){
			var _local1:Enemy5 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy5 = this;
		}
		public function aimTowardsPlayer(){
			var _local1:Enemy5 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			var _local4:Number = (_local1.y - _local2.y);
			var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
			if (_local2.x < _local1.x){
				_local1.facingDir = -1;
				_local1.walkingDir = -1;
				_local1.dirx = -1;
			} else {
				_local1.facingDir = 1;
				_local1.walkingDir = 1;
				_local1.dirx = 1;
			};
			var _local6:Number = Math.atan2(_local4, _local3);
			var _local7:Number = radsToDegrees(_local6);
			if ((((_local7 > -30)) && ((_local7 < 30)))){
				_local1.aimDirection = "forward";
			} else {
				if ((((_local7 < -150)) || ((_local7 > 150)))){
					_local1.aimDirection = "forward";
				} else {
					if (_local7 < -30){
						_local1.aimDirection = "down";
					} else {
						if (_local7 > 30){
							_local1.aimDirection = "up";
						};
					};
				};
			};
		}
		public function radsToDegrees(_arg1:Number){
			var _local2:Number = (_arg1 * (180 / Math.PI));
			return (_local2);
		}
		public function shootWeapon(){
			var _local14:Number;
			var _local15:Number;
			var _local16:Number;
			var _local1:Enemy5 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:BulletManager = _local1.gameObj.bulletManager;
			var _local4:Number = (_local2.x - _local1.x);
			var _local5:Number = (_local1.y - _local2.y);
			var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
			var _local7:Number = Math.atan2(_local5, _local4);
			var _local8:Number = (Math.round((_local7 * 3)) / 3);
			if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "forward")))){
				_local8 = 0;
			} else {
				if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "forward")))){
					_local8 = Math.PI;
				} else {
					if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "up")))){
						_local8 = (Math.PI / 4);
					} else {
						if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "up")))){
							_local8 = ((3 / 4) * Math.PI);
						} else {
							if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "down")))){
								_local8 = ((Math.PI / 4) * -1);
							} else {
								if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "down")))){
									_local8 = ((-3 / 4) * Math.PI);
								};
							};
						};
					};
				};
			};
			var _local9:Number = _local1.facingDir;
			var _local10:Number = 0;
			var _local11:Number = 0;
			if (_local1.aimDirection == "up"){
				_local10 = ((_local1.shoot_longgun_offsetsX[1] + _local1.whichWeapon.shoot_extra_offsetsX[1]) * _local1.facingDir);
				_local11 = (_local1.shoot_longgun_offsetsY[1] + _local1.whichWeapon.shoot_extra_offsetsY[1]);
			} else {
				if (_local1.aimDirection == "down"){
					_local10 = ((_local1.shoot_longgun_offsetsX[2] + _local1.whichWeapon.shoot_extra_offsetsX[2]) * _local1.facingDir);
					_local11 = (_local1.shoot_longgun_offsetsY[2] + _local1.whichWeapon.shoot_extra_offsetsY[2]);
				} else {
					_local10 = ((_local1.shoot_longgun_offsetsX[0] + _local1.whichWeapon.shoot_extra_offsetsX[0]) * _local1.facingDir);
					_local11 = (_local1.shoot_longgun_offsetsY[0] + _local1.whichWeapon.shoot_extra_offsetsY[0]);
				};
			};
			var _local12:Number = ((_local1.x + (12 * _local1.facingDir)) + _local10);
			var _local13:* = ((_local1.y - 57) + _local11);
			_local3.addBullet(_local12, _local13, _local9, _local8, _local1.whichWeapon.bulletType, "", true, _local1.whichWeapon.getAttackStat(), true);
			if (_local1.whichWeapon.hasSpray){
				_local14 = Math.floor((_local1.whichWeapon.sprayAmount / 2));
				_local15 = 0;
				_local16 = 1;
				while (_local16 <= _local14) {
					_local15 = (_local8 - (_local1.whichWeapon.sprayAngleDifference * _local16));
					_local3.addBullet(_local12, _local13, _local9, _local15, _local1.whichWeapon.sprayType, "", true, _local1.whichWeapon.getAttackStat(), true);
					_local15 = (_local8 + (_local1.whichWeapon.sprayAngleDifference * _local16));
					_local3.addBullet(_local12, _local13, _local9, _local15, _local1.whichWeapon.sprayType, "", true, _local1.whichWeapon.getAttackStat(), true);
					_local16++;
				};
			};
			if (_local1.whichWeapon.dropName == "SubMachineGun"){
				_local1.gameObj.soundManager.playSound("shoot_machinegun.wav");
			} else {
				if (_local1.whichWeapon.dropName == "Flamethrower"){
					_local1.gameObj.soundManager.playSound("shoot_flamethrower.wav");
				} else {
					if ((((_local1.whichWeapon.dropName == "HarpoonGun")) || ((_local1.whichWeapon.dropName == "Crossbow")))){
						_local1.gameObj.soundManager.playSound("shoot_crossbow.wav");
					} else {
						_local1.gameObj.soundManager.playSound("shoot_rifle.wav");
					};
				};
			};
			_local1.shotsFired++;
			if ((((_local1.shotsFired >= _local1.whichWeapon.maxBulletsPerRound)) || ((Math.random() < _local1.chanceToCancelRapidFire)))){
				_local1.isAttacking = false;
			};
		}
		public function checkForAttacking(){
			var _local1:Enemy5 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				_local1.waitTimer++;
				if (_local1.waitTimer >= _local1.waitTimerMax){
					if (((((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))) && (_local1.checkShootingOnScreen()))){
						_local1.startAttacking();
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy6 (cactusGame.models.enemies.Enemy6)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy6 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var aimupCycleFrames:Array;
		public var aimdownCycleFrames:Array;
		public var aimforwardCycleFrames:Array;
		public var shootupCycleFrames:Array;
		public var shootdownCycleFrames:Array;
		public var shootforwardCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 160
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var waitTimer:Number;// = 10
		public var waitTimerMax:Number;// = 95
		public var aimTimer:Number;// = 0
		public var aimTimerMax:Number;// = 15
		public var shotsFired:Number;// = 0
		public var shotTimer:Number;// = 0
		public var outOfRange:Boolean;// = true
		public var shoot_pistol_offsetsX:Array;
		public var shoot_pistol_offsetsY:Array;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_attacks:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_slowWalk:Array;
		public var weapon_shootforward:Array;
		public var weapon_shootup:Array;
		public var weapon_shootdown:Array;
		public var weapon_aimforward:Array;
		public var weapon_aimup:Array;
		public var weapon_aimdown:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var randomWeapons:Array;
		public var aimDirection:String;// = "forward"
		public var chanceToCancelRapidFire:Number;// = 1

		public function Enemy6(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [30, 30, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [30, 30, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			aimupCycleFrames = ["aimup", 2, 1, 0, 0, [35, 35, 35, 26, 26, 26, 27, 27, 27, 26, 26, 26]];
			aimdownCycleFrames = ["aimdown", 2, 1, 0, 0, [37, 37, 37, 28, 28, 28, 29, 29, 29, 28, 28, 28]];
			aimforwardCycleFrames = ["aimforward", 2, 1, 0, 0, [0]];
			shootupCycleFrames = ["shootup", 2, 1, 0, 0, [36, 36, 35, 35]];
			shootdownCycleFrames = ["shootdown", 2, 1, 0, 0, [38, 38, 37, 37]];
			shootforwardCycleFrames = ["shootforward", 2, 1, 0, 0, [33, 33, 0, 0]];
			attackRect = new Rectangle(10, -50, 0, 0);
			shoot_pistol_offsetsX = [42, 22, 46, 0, 35];
			shoot_pistol_offsetsY = [10, -17, 53, -15, 85];
			weapon_stand = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53], [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			weapon_run = [[1, 1, 1, 0, 0, 0, 0, 8, 1, 1, 1, 1, 1, 1, 1, 1], [23, 20, 17, 15, 12, 15, 18, 23, 22, 26, 29, 32, 35, 31, 28, 26], [26, 25, 22, 20, 18, 20, 22, 22, 25, 22, 18, 16, 12, 14, 18, 21]];
			weapon_stepForward = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [17, 17, 16, 16, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 17, 17], [29, 29, 29, 29, 28, 28, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30]];
			weapon_attacks = [[3, 3, 4, 5, 8, 9, 9], [53, 53, 47, 46, 55, 55, 55], [-4, -4, -22, -23, 21, 20, 20]];
			weapon_hit = [[2, 2, 2, 2, 2, 2, 2, 2, 2], [51, 47, 47, 47, 47, 47, 47, 50, 53], [0, 1, 0, 0, 0, 0, 0, 0, 0]];
			weapon_die1 = [[4], [33], [8]];
			weapon_die2 = [[4], [26], [14]];
			weapon_jump = [[0, 0, 0], [19, 18, 17], [26, 26, 26]];
			weapon_slowWalk = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [17, 17, 16, 16, 14, 14, 14, 14, 14, 14, 15, 15, 16, 16, 17, 17, 18, 18, 22, 22, 26, 26, 28, 28, 29, 29, 27, 27, 24, 24, 21, 21], [29, 29, 29, 29, 28, 28, 29, 29, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 29, 29, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 29, 29]];
			weapon_shootforward = [[3, 3, 2, 2], [53, 53, 53, 53], [-4, -4, 0, 0]];
			weapon_shootup = [[5, 5, 4, 4], [46, 46, 47, 47], [-23, -23, -22, -22]];
			weapon_shootdown = [[9, 9, 8, 8], [55, 55, 55, 55], [20, 20, 21, 21]];
			weapon_aimforward = [[2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2], [53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53], [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			weapon_aimup = [[4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47], [-22, -22, -22, -21, -21, -21, -20, -20, -20, -21, -21, -21]];
			weapon_aimdown = [[8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8], [55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55], [21, 21, 21, 22, 22, 22, 23, 23, 23, 22, 22, 22]];
			weapon_dodge = [[0, 0, 0, 0, 0, 0, 0, 0, 2], [17, 17, 17, 17, 17, 17, 18, 19, 53], [26, 26, 26, 26, 26, 26, 26, 26, 0]];
			weapon_shove = [[0, 0, 0, 0, 0, 0, 0, 0, 2], [17, 17, 17, 17, 17, 17, 18, 19, 53], [26, 26, 26, 26, 26, 26, 26, 26, 0]];
			randomWeapons = ["Revolver", "RomanCandle", "Derringer"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy6 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 6;
			sheetname = "enemigo_06_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 98;
			spriteCenterX = 46;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			lookForPlayerRect = new Rectangle(-150, -150, 300, 300);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 150;
			maxHealth = 150;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.05;
			dropWeaponChance = 0.2;
			points = 20;
			weaponSKU = "Revolver";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy6 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy6 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1[(("shoot" + _local1.aimDirection) + "CycleFrames")];
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														if (_local1.aimDirection == "up"){
															_local2 = _local1.aimupCycleFrames;
														} else {
															if (_local1.aimDirection == "down"){
																_local2 = _local1.aimdownCycleFrames;
															} else {
																_local2 = _local1.standCycleFrames;
															};
														};
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy6 = this;
			if ((((((_local1.cycleName == "shootforward")) || ((_local1.cycleName == "shootup")))) || ((_local1.cycleName == "shootdown")))){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy6 = this;
			var _local6:Boolean;
			if (((((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && (!(_local5.onSingleTile)))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy6 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy6 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy6 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy6 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								_local1.alwaysNoticePlayer = true;
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								_local1.aimTimer++;
								if (_local1.aimTimer >= _local1.aimTimerMax){
									_local1.aimTowardsPlayer();
									_local1.aimTimer = 0;
								};
								if (_local1.onSingleTile){
									_local1.isWalking = false;
								} else {
									if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
										if (_local1.jump){
											if (_local1.dirx == 0){
												_local1.dirx = _local1.facingDir;
											};
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if (_local8 > targetDistance){
												_local1.dirx = _local1.facingDir;
												_local1.speed = _local1.runSpeed;
												_local1.isSteppingBackward = false;
												_local1.isSteppingForward = false;
												_local1.isWalking = true;
												_local1.moveChar(_local1.dirx, 0, 0, false, true);
											} else {
												_local1.isWalking = false;
											};
										};
									} else {
										_local1.speed = _local1.stepSpeed;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									};
								};
								_local1.lookForPlayer();
							} else {
								if (onSingleTile){
									_local1.isWalking = false;
								} else {
									_local1.speed = _local1.paceSpeed;
									_local1.isSteppingForward = true;
									_local1.isWalking = true;
									if (_local1.dirx == 0){
										_local1.dirx = 1;
									};
									_local1.moveChar(_local1.dirx, 0, false, true, true);
									if (_local1.dirx != 0){
										_local1.facingDir = _local1.dirx;
									};
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.isAttacking){
							if ((_local1.shotTimer % _local1.whichWeapon.bulletFrequency)){
								_local1.shootWeapon();
							};
							_local1.shotTimer++;
						};
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if ((((_local1.dirx == 0)) && (!(_local1.isAttacking)))){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					} else {
						_local1.noticedPlayer = false;
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy6 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								if (!_local3.alwaysNoticePlayer){
									_local3.noticedPlayer = false;
								} else {
									_local3.isWalking = false;
								};
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy6 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
				_local1.isSteppingBackward = false;
				_local1.isSteppingForward = false;
				_local1.waitTimer = 0;
				_local1.shotTimer = 0;
				_local1.shotsFired = 0;
			};
		}
		override public function startShoving(){
			var _local1:Enemy6 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy6 = this;
		}
		public function aimTowardsPlayer(){
			var _local1:Enemy6 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			var _local4:Number = (_local1.y - _local2.y);
			var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
			if (_local2.x < _local1.x){
				_local1.facingDir = -1;
				_local1.walkingDir = -1;
				_local1.dirx = -1;
			} else {
				_local1.facingDir = 1;
				_local1.walkingDir = 1;
				_local1.dirx = 1;
			};
			var _local6:Number = Math.atan2(_local4, _local3);
			var _local7:Number = radsToDegrees(_local6);
			if ((((_local7 > -30)) && ((_local7 < 30)))){
				_local1.aimDirection = "forward";
			} else {
				if ((((_local7 < -150)) || ((_local7 > 150)))){
					_local1.aimDirection = "forward";
				} else {
					if (_local7 < -30){
						_local1.aimDirection = "down";
					} else {
						if (_local7 > 30){
							_local1.aimDirection = "up";
						};
					};
				};
			};
		}
		public function radsToDegrees(_arg1:Number){
			var _local2:Number = (_arg1 * (180 / Math.PI));
			return (_local2);
		}
		public function shootWeapon(){
			var _local1:Enemy6 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:BulletManager = _local1.gameObj.bulletManager;
			var _local4:Number = (_local2.x - _local1.x);
			var _local5:Number = (_local1.y - _local2.y);
			var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
			var _local7:Number = Math.atan2(_local5, _local4);
			var _local8:Number = (Math.round((_local7 * 3)) / 3);
			if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "forward")))){
				_local8 = 0;
			} else {
				if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "forward")))){
					_local8 = Math.PI;
				} else {
					if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "up")))){
						_local8 = (Math.PI / 4);
					} else {
						if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "up")))){
							_local8 = ((3 / 4) * Math.PI);
						} else {
							if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "down")))){
								_local8 = ((Math.PI / 4) * -1);
							} else {
								if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "down")))){
									_local8 = ((-3 / 4) * Math.PI);
								};
							};
						};
					};
				};
			};
			var _local9:Number = _local1.facingDir;
			var _local10:Number = 0;
			var _local11:Number = 0;
			if (_local1.aimDirection == "up"){
				_local10 = ((_local1.shoot_pistol_offsetsX[1] + _local1.whichWeapon.shoot_extra_offsetsX[1]) * _local1.facingDir);
				_local11 = (_local1.shoot_pistol_offsetsY[1] + _local1.whichWeapon.shoot_extra_offsetsY[1]);
			} else {
				if (_local1.aimDirection == "down"){
					_local10 = ((_local1.shoot_pistol_offsetsX[2] + _local1.whichWeapon.shoot_extra_offsetsX[2]) * _local1.facingDir);
					_local11 = (_local1.shoot_pistol_offsetsY[2] + _local1.whichWeapon.shoot_extra_offsetsY[2]);
				} else {
					_local10 = ((_local1.shoot_pistol_offsetsX[0] + _local1.whichWeapon.shoot_extra_offsetsX[0]) * _local1.facingDir);
					_local11 = (_local1.shoot_pistol_offsetsY[0] + _local1.whichWeapon.shoot_extra_offsetsY[0]);
				};
			};
			var _local12:Number = ((_local1.x + (12 * _local1.facingDir)) + _local10);
			var _local13:* = ((_local1.y - 57) + _local11);
			_local3.addBullet(_local12, _local13, _local9, _local8, _local1.whichWeapon.bulletType, "", true, _local1.whichWeapon.getAttackStat(), true);
			if (_local1.whichWeapon.dropName == "RomanCandle"){
				_local1.gameObj.soundManager.playSound("shoot_romancandle.wav");
			} else {
				_local1.gameObj.soundManager.playSound("shoot_pistol.wav");
			};
			_local1.shotsFired++;
			if ((((_local1.shotsFired >= _local1.whichWeapon.maxBulletsPerRound)) || ((Math.random() < _local1.chanceToCancelRapidFire)))){
				_local1.isAttacking = false;
			};
		}
		public function checkShootingOnScreen():Boolean{
			var _local1:Enemy6 = this;
			if (_local1.xtile < _local1.gameObj.gameDisplay.currentXtileLeft){
				return (false);
			};
			if (_local1.xtile > _local1.gameObj.gameDisplay.currentXtileRight){
				return (false);
			};
			if (_local1.ytile < (_local1.gameObj.gameDisplay.currentYtileUp + 2)){
				return (false);
			};
			if (_local1.ytile > (_local1.gameObj.gameDisplay.currentYtileDown + 2)){
				return (false);
			};
			return (true);
		}
		public function checkForAttacking(){
			var _local1:Enemy6 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				_local1.waitTimer++;
				if (_local1.waitTimer >= _local1.waitTimerMax){
					if (((((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))) && (_local1.checkShootingOnScreen()))){
						_local1.startAttacking();
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy7 (cactusGame.models.enemies.Enemy7)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy7 extends Enemy {

		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var standCycleFrames:Array;
		public var shootCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 49
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 160
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 16
		public var endAttackFrame:Number;// = 18
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var waitTimer:Number;// = 40
		public var waitTimerMax:Number;// = 90
		public var aimTimer:Number;// = 0
		public var aimTimerMax:Number;// = 15
		public var shotsFired:Number;// = 0
		public var shotTimer:Number;// = 0
		public var outOfRange:Boolean;// = true
		public var shoot_gatling_offsetsX:Array;
		public var shoot_gatling_offsetsY:Array;
		public var weapon_stand:Array;
		public var weapon_hit:Array;
		public var weapon_shoot:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var randomWeapons:Array;
		public var aimDirection:String;// = "forward"
		public var chanceToCancelRapidFire:Number;// = 0.2
		public var maxGatlingBullets:Number;// = 15

		public function Enemy7(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			die1CycleFrames = ["die1", 2, 1, 0, 0, [8]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [9]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [5, 6, 7, 7, 7, 7, 7, 6, 0]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			shootCycleFrames = ["shoot", 2, 1, 0, 0, [3, 4]];
			attackRect = new Rectangle(10, -50, 0, 0);
			shoot_gatling_offsetsX = [30, 20, 10, 25, -10];
			shoot_gatling_offsetsY = [45, 15, 55, -5, 90];
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50], [-7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7, -7]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50], [-7, -7, -7, -7, -7, -7, -7, -7, -7, -7]];
			weapon_shoot = [[1, 2], [49, 50], [-7, -7]];
			weapon_die1 = [[15], [45], [-25]];
			weapon_die2 = [[15], [33], [-25]];
			randomWeapons = ["Gatling"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy7 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 7;
			sheetname = "enemigo_07_sheet";
			height = 15;
			width = 15;
			spritewidth = 99;
			spriteheight = 74;
			spriteCenterX = 49;
			spriteCenterY = 37;
			spriteTargetX = 49;
			spriteTargetY = 56;
			sheetWidth = 10;
			sheetHeight = 2;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 74;
			collRect = new Rectangle(-10, -50, 20, 60);
			lookForPlayerRect = new Rectangle(-150, -150, 300, 300);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 250;
			maxHealth = 250;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0;
			attackChangeInRange = 0.05;
			dropWeaponChance = 0.1;
			points = 40;
			weaponSKU = "Gatling";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy7 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy7 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isHit){
					_local2 = _local1.hitCycleFrames;
				} else {
					if (_local1.isAttacking){
						_local2 = _local1.shootCycleFrames;
					} else {
						_local2 = _local1.standCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy7 = this;
			if (_local1.cycleName == "shoot"){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "hit"){
					_local1.isHit = false;
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy7 = this;
			var _local6:Boolean;
			_local5.isSteppingBackward = false;
			_local5.isSteppingForward = false;
			_local5.isWalking = false;
			_local5.animationFrame = 0;
			_local5.cycleFrame = 0;
			_local5.isAttacking = false;
			_local5.isShoving = false;
			_local5.isDodging = false;
			_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy7 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy7 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy7 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local1:Enemy7 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						if (((!(_local1.isAttacking)) && (!(_local1.isHit)))){
							if (_local1.checkShootingOnScreen()){
								_local1.noticedPlayer = true;
							} else {
								_local1.noticedPlayer = false;
							};
						};
						_local1.checkForAttacking();
						if (_local1.isAttacking){
							if ((_local1.shotTimer % _local1.whichWeapon.bulletFrequency)){
								_local1.shootWeapon();
							};
							_local1.shotTimer++;
						};
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						_local1.updateSprite();
					} else {
						_local1.noticedPlayer = false;
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy7 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								if (!_local3.alwaysNoticePlayer){
									_local3.noticedPlayer = false;
								} else {
									_local3.isWalking = false;
								};
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy7 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
				_local1.waitTimer = 0;
				_local1.shotTimer = 0;
				_local1.shotsFired = 0;
			};
		}
		override public function startShoving(){
			var _local1:Enemy7 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy7 = this;
		}
		public function aimTowardsPlayer(){
			var _local1:Enemy7 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			var _local4:Number = (_local1.y - _local2.y);
			var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
			if (_local2.x < _local1.x){
				_local1.facingDir = -1;
				_local1.walkingDir = -1;
				_local1.dirx = -1;
			} else {
				_local1.facingDir = 1;
				_local1.walkingDir = 1;
				_local1.dirx = 1;
			};
			var _local6:Number = Math.atan2(_local4, _local3);
			var _local7:Number = radsToDegrees(_local6);
			if ((((_local7 > -30)) && ((_local7 < 30)))){
				_local1.aimDirection = "forward";
			} else {
				if ((((_local7 < -150)) || ((_local7 > 150)))){
					_local1.aimDirection = "forward";
				} else {
					if (_local7 < -30){
						_local1.aimDirection = "down";
					} else {
						if (_local7 > 30){
							_local1.aimDirection = "up";
						};
					};
				};
			};
		}
		public function radsToDegrees(_arg1:Number){
			var _local2:Number = (_arg1 * (180 / Math.PI));
			return (_local2);
		}
		public function shootWeapon(){
			var _local1:Enemy7 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:BulletManager = _local1.gameObj.bulletManager;
			var _local4:Number = (_local2.x - _local1.x);
			var _local5:Number = (_local1.y - _local2.y);
			var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
			var _local7:Number = Math.atan2(_local5, _local4);
			var _local8:Number = (Math.round((_local7 * 3)) / 3);
			if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "forward")))){
				_local8 = 0;
			} else {
				if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "forward")))){
					_local8 = Math.PI;
				} else {
					if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "up")))){
						_local8 = (Math.PI / 4);
					} else {
						if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "up")))){
							_local8 = ((3 / 4) * Math.PI);
						} else {
							if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "down")))){
								_local8 = ((Math.PI / 4) * -1);
							} else {
								if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "down")))){
									_local8 = ((-3 / 4) * Math.PI);
								};
							};
						};
					};
				};
			};
			var _local9:Number = _local1.facingDir;
			var _local10:Number = 0;
			var _local11:Number = 0;
			_local10 = ((_local1.shoot_gatling_offsetsX[0] + _local1.whichWeapon.shoot_extra_offsetsX[0]) * _local1.facingDir);
			_local11 = (_local1.shoot_gatling_offsetsY[0] + _local1.whichWeapon.shoot_extra_offsetsY[0]);
			var _local12:Number = ((_local1.x + (12 * _local1.facingDir)) + _local10);
			var _local13:* = ((_local1.y - 57) + _local11);
			_local3.addBullet(_local12, _local13, _local9, _local8, _local1.whichWeapon.bulletType, "", true, _local1.whichWeapon.getAttackStat(), true);
			_local1.gameObj.soundManager.playSound("shoot_machinegun.wav");
			_local1.shotsFired++;
			if ((_local1.shotsFired >= _local1.maxGatlingBullets)){
				_local1.isAttacking = false;
			};
		}
		public function checkShootingOnScreen():Boolean{
			var _local1:Enemy7 = this;
			if (_local1.xtile < _local1.gameObj.gameDisplay.currentXtileLeft){
				return (false);
			};
			if (_local1.xtile > _local1.gameObj.gameDisplay.currentXtileRight){
				return (false);
			};
			if (_local1.ytile < (_local1.gameObj.gameDisplay.currentYtileUp + 1)){
				return (false);
			};
			if (_local1.ytile > (_local1.gameObj.gameDisplay.currentYtileDown + 1)){
				return (false);
			};
			return (true);
		}
		public function checkForAttacking(){
			var _local1:Enemy7 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				_local1.waitTimer++;
				if (_local1.waitTimer >= _local1.waitTimerMax){
					if (((((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))) && (_local1.checkShootingOnScreen()))){
						_local1.startAttacking();
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy8 (cactusGame.models.enemies.Enemy8)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy8 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 140
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 9
		public var endAttackFrame:Number;// = 14
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_stepBack:Array;
		public var weapon_swing:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_slowWalk:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var randomWeapons:Array;

		public function Enemy8(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 34, 35, 35, 35, 35, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			attackRect = new Rectangle(10, -45, 140, 10);
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [6, 6, 6, 7, 7, 7, 8, 8, 8, 7, 7, 7]];
			weapon_run = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [8, 5, 2, -1, -3, 0, 2, 5, 7, 9, 10, 12, 13, 12, 11, 10], [6, 4, 3, 1, 0, 1, 2, 3, 4, 2, -1, -3, -6, -3, 0, 3]];
			weapon_stepForward = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3], [6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6]];
			weapon_stepBack = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 3, 3, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3], [6, 6, 6, 6, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7]];
			weapon_swing = [[4, 5, 6, 7, 7, 7, 7, 8, 3, 2, 1, 1, 1, 1, 1], [-6, -7, -7, -9, -9, -9, -9, 6, -10, -2, -2, -2, -2, -2, -2], [7, 6, 2, -2, -2, -2, -2, -4, -6, 6, 6, 6, 6, 6, 6]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0], [-1, -5, -5, -5, -5, -5, -5, -1], [7, 7, 5, 5, 5, 5, 5, 6]];
			weapon_die1 = [[0], [6], [-3]];
			weapon_die2 = [[0], [2], [0]];
			weapon_jump = [[0, 0, 0], [3, 1, -1], [7, 7, 7]];
			weapon_slowWalk = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 8, 8, 8, 8, 7, 7, 5, 5, 5, 5], [6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6]];
			weapon_dodge = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, -1, -1, -1, -1, -1, 1, 3, 4], [7, 7, 7, 7, 7, 7, 7, 7, 6]];
			weapon_shove = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, -1, -1, -1, -1, -1, 1, 3, 4], [7, 7, 7, 7, 7, 7, 7, 7, 6]];
			randomWeapons = ["BullWhip", "CatOfNineTails", "BarbedWire", "ChainWhip", "Rope", "TowChain", "ThornWhip", "Meteor", "Rattlesnake"];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy8 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 8;
			sheetname = "enemigo_08_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 98;
			spriteCenterX = 46;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 200;
			maxHealth = 200;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.03;
			dropWeaponChance = 0.2;
			points = 20;
			weaponSKU = "BullWhip";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy8;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy8 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1.swingCycleFrames;
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														_local2 = _local1.standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy8 = this;
			if (_local1.cycleName == "swing"){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy8 = this;
			var _local6:Boolean;
			if (((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy8 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy8 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy8 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy8 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
									if (_local1.jump){
										if (_local1.dirx == 0){
											_local1.dirx = _local1.facingDir;
										};
										_local1.speed = _local1.runSpeed;
										_local1.isSteppingBackward = false;
										_local1.isSteppingForward = false;
										_local1.isWalking = true;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									} else {
										if (_local8 > targetDistance){
											_local1.dirx = _local1.facingDir;
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if ((((_local8 <= (targetDistance - 40))) || ((((_local8 <= (targetDistance - 20))) && ((_local9 > 0.95)))))){
												_local1.dirx = (_local1.facingDir * -1);
												_local1.speed = _local1.stepSpeed;
												_local1.isSteppingBackward = true;
												_local1.isSteppingForward = false;
											} else {
												if ((((_local8 > (targetDistance - 20))) && ((_local9 > 0.95)))){
													_local1.dirx = _local1.facingDir;
													_local1.speed = _local1.stepSpeed;
													_local1.isSteppingForward = true;
													_local1.isSteppingBackward = false;
												} else {
													_local1.isWalking = false;
												};
											};
										};
									};
								} else {
									_local1.speed = _local1.stepSpeed;
									_local1.moveChar(_local1.dirx, 0, 0, false, true);
								};
								_local1.lookForPlayer();
							} else {
								_local1.speed = _local1.paceSpeed;
								_local1.isSteppingForward = true;
								_local1.isWalking = true;
								if (_local1.dirx == 0){
									_local1.dirx = 1;
								};
								_local1.moveChar(_local1.dirx, 0, false, true, true);
								if (_local1.dirx != 0){
									_local1.facingDir = _local1.dirx;
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if (_local1.dirx == 0){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy8 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy8 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
			};
		}
		override public function startShoving(){
			var _local1:Enemy8 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy8 = this;
		}
		public function checkForAttacking(){
			var _local4:Rectangle;
			var _local1:Enemy8 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				if ((((((_local2.x < _local1.x)) && ((_local3 <= _local1.attackRect.width)))) || ((((_local2.x > _local1.x)) && (((_local3 * -1) <= _local1.attackRect.width)))))){
					if (((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))){
						_local1.startAttacking();
					};
				};
			} else {
				if (((_local1.isAttacking) && ((_local1.cycleFrame == (_local1.startAttackFrame - 6))))){
					_local1.gameObj.soundManager.playSound("attack_whip.wav");
				};
				if (((((((((_local1.isAttacking) && (!(_local1.isQuickAttacking)))) && (!(_local1.isShoving)))) && ((_local1.cycleFrame >= _local1.startAttackFrame)))) && ((_local1.cycleFrame <= _local1.endAttackFrame)))){
					_local4 = new Rectangle();
					_local4.x = (_local1.x + _local1.attackRect.x);
					_local4.y = (_local1.y + _local1.attackRect.y);
					_local4.width = _local1.attackRect.width;
					_local4.height = _local1.attackRect.height;
					if (_local1.facingDir == -1){
						_local4.x = ((_local1.x - _local1.attackRect.x) - _local1.attackRect.width);
					};
					if (((_local2.checkSpriteCollision(_local4)) && (_local2.canGetHit()))){
						_local2.hurtPlayer(_local1.facingDir, _local1.statAttack);
					};
				};
			};
		}

	}
}//package cactusGame.models.enemies 

****************

//Enemy9 (cactusGame.models.enemies.Enemy9)
package cactusGame.models.enemies {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.utils.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy9 extends Enemy {

		public var runCycleFrames:Array;
		public var stepForwardCycleFrames:Array;
		public var stepBackCycleFrames:Array;
		public var slowWalkCycleFrames:Array;
		public var die1CycleFrames:Array;
		public var die2CycleFrames:Array;
		public var hitCycleFrames:Array;
		public var jumpCycleFrames:Array;
		public var dodgeCycleFrames:Array;
		public var shoveCycleFrames:Array;
		public var quickAttackCycleFrames:Array;
		public var swingCycleFrames:Array;
		public var standCycleFrames:Array;
		public var originalx:Number;// = 0
		public var originaly:Number;// = 0
		public var spawnerObjectID:Number;// = -1
		public var isQuickAttacking:Boolean;// = false
		public var isShoving:Boolean;// = false
		public var whichAttack:Number;// = 1
		public var targetXoffset:Number;// = 36
		public var whichDying:Number;// = 1
		public var targetDistance:Number;// = 140
		public var isSteppingForward:Boolean;// = false
		public var isSteppingBackward:Boolean;// = false
		public var runSpeed:Number;// = 6
		public var stepSpeed:Number;// = 3
		public var paceSpeed:Number;// = 2
		public var dodgeSpeed:Number;// = 10
		public var dodgeMinSpeed:Number;// = 2
		public var startAttackFrame:Number;// = 9
		public var endAttackFrame:Number;// = 14
		public var hasJumped:Boolean;// = false
		public var wasRunning:Boolean;// = false
		public var attackRect:Rectangle;
		public var weapon_stand:Array;
		public var weapon_run:Array;
		public var weapon_stepForward:Array;
		public var weapon_stepBack:Array;
		public var weapon_swing:Array;
		public var weapon_hit:Array;
		public var weapon_die1:Array;
		public var weapon_die2:Array;
		public var weapon_jump:Array;
		public var weapon_slowWalk:Array;
		public var weapon_dodge:Array;
		public var weapon_shove:Array;
		public var randomWeapons:Array;
		public var aimDirection:String;// = "forward"
		public var shoot_toss_offsetsX:Array;
		public var shoot_toss_offsetsY:Array;
		public var aimTimer:Number;// = 0
		public var aimTimerMax:Number;// = 15
		public var waitTimer:Number;// = 60
		public var waitTimerMax:Number;// = 100
		public var shotsFired:Number;// = 0
		public var shotTimer:Number;// = 0
		public var shootDelay:Number;// = 10

		public function Enemy9(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			var _local10:Class;
			runCycleFrames = ["run", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18]];
			stepForwardCycleFrames = ["stepForward", 2, 1, 0, -1, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25]];
			stepBackCycleFrames = ["stepBack", 2, 1, 0, -1, [0, 0, 26, 26, 27, 27, 28, 28, 29, 29, 30, 30, 31, 31, 32, 32]];
			slowWalkCycleFrames = ["slowWalk", 2, 1, 0, 0, [0, 0, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 48, 48, 49, 49, 50, 50, 51, 51, 52, 52, 53, 53, 54, 54, 55, 55]];
			die1CycleFrames = ["die1", 2, 1, 0, 0, [43]];
			die2CycleFrames = ["die2", 2, 1, 0, 0, [44]];
			hitCycleFrames = ["hit", 2, 1, 0, -1, [39, 40, 41, 41, 41, 41, 41, 42, 0]];
			jumpCycleFrames = ["jump", 2, 1, 0, 2, [45, 46, 47]];
			dodgeCycleFrames = ["dodge", 2, 1, 0, -1, [47, 47, 47, 47, 47, 47, 46, 45, 0]];
			shoveCycleFrames = ["shove", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0]];
			quickAttackCycleFrames = ["quickAttack", 2, 1, 0, -1, [28, 29, 30, 31, 32, 33, 33, 33]];
			swingCycleFrames = ["swing", 2, 1, 0, -1, [33, 34, 34, 34, 34, 34, 34, 34, 34, 35, 36, 37, 38, 38, 38, 38, 38, 38]];
			standCycleFrames = ["stand", 2, 1, 0, 0, [0, 0, 0, 1, 1, 1, 2, 2, 2, 1, 1, 1]];
			attackRect = new Rectangle(10, -45, 140, 10);
			weapon_stand = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4], [6, 6, 6, 7, 7, 7, 8, 8, 8, 7, 7, 7]];
			weapon_run = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [8, 5, 2, -1, -3, 0, 2, 5, 7, 9, 10, 12, 13, 12, 11, 10], [6, 4, 3, 1, 0, 1, 2, 3, 4, 2, -1, -3, -6, -3, 0, 3]];
			weapon_stepForward = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3], [6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6]];
			weapon_stepBack = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 3, 3, 1, 1, 0, 0, 1, 1, 2, 2, 3, 3], [6, 6, 6, 6, 5, 5, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7]];
			weapon_swing = [[4, 5, 6, 7, 7, 7, 7, 8, 3, 2, 1, 1, 1, 1, 1], [-6, -7, -7, -9, -9, -9, -9, 6, -10, -2, -2, -2, -2, -2, -2], [7, 6, 2, -2, -2, -2, -2, -4, -6, 6, 6, 6, 6, 6, 6]];
			weapon_hit = [[0, 0, 0, 0, 0, 0, 0, 0], [-1, -5, -5, -5, -5, -5, -5, -1], [7, 7, 5, 5, 5, 5, 5, 6]];
			weapon_die1 = [[0], [6], [-3]];
			weapon_die2 = [[0], [2], [0]];
			weapon_jump = [[0, 0, 0], [3, 1, -1], [7, 7, 7]];
			weapon_slowWalk = [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 5, 5, 6, 6, 8, 8, 8, 8, 7, 7, 5, 5, 5, 5], [6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 5, 5, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6]];
			weapon_dodge = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, -1, -1, -1, -1, -1, 1, 3, 4], [7, 7, 7, 7, 7, 7, 7, 7, 6]];
			weapon_shove = [[0, 0, 0, 0, 0, 0, 0, 0, 0], [-1, -1, -1, -1, -1, -1, 1, 3, 4], [7, 7, 7, 7, 7, 7, 7, 7, 6]];
			randomWeapons = ["Dagger", "Dart", "Badge", "TNT", "PlayingCard", "Grenade", "TearGas", "Scorpion", "Lantern", "CherryBomb", "Tomahawk"];
			shoot_toss_offsetsX = [18, 10, 10, 5, 5];
			shoot_toss_offsetsY = [28, 15, 55, -5, 90];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			var _local9:Enemy9 = this;
			this.originalx = _local9.x;
			_local9.originaly = _local9.y;
			_local9.cycleName = "stand";
			if (((!((_local9.weaponSKU == ""))) && (!((_local9.weaponSKU == null))))){
				_local10 = (getDefinitionByName(("cactusGame.models.weapons.Weapon" + _local9.weaponSKU)) as Class);
				_local9.whichWeapon = new _local10(_local9, -1, -1);
				_local9.statAttack = _local9.whichWeapon.getAttackStat();
				if (_local9.gameObj.enemyManager.checkForceNoDrop(_local9.type, _local9.weaponSKU)){
					_local9.dropWeaponChance = 0;
				};
			};
		}
		override public function defineVars(){
			type = 9;
			sheetname = "enemigo_09_sheet";
			height = 15;
			width = 15;
			spritewidth = 92;
			spriteheight = 98;
			spriteCenterX = 46;
			spriteCenterY = 49;
			spriteTargetX = 36;
			spriteTargetY = 76;
			sheetWidth = 28;
			sheetHeight = 4;
			heightmultiplier = 5;
			widthmultiplier = 1;
			speed = 3;
			walkspeed = 3;
			dirx = -1;
			jumpspeed = 0;
			jumpstart = -12;
			flipBlitOffset = 196;
			collRect = new Rectangle(-10, -50, 20, 60);
			gravity = 1;
			normalgravity = 1;
			currentHealth = 150;
			maxHealth = 150;
			facingWalking = false;
			canDodgeAttacks = true;
			dodgeChance = 0.15;
			attackChangeInRange = 0.03;
			dropWeaponChance = 0.2;
			points = 20;
			lookForPlayerRect = new Rectangle(-150, -130, 300, 260);
			keepChasingPlayerRect = new Rectangle(-450, -250, 900, 500);
			weaponSKU = "Dagger";
		}
		override public function setupParams(_arg1:Array){
			var _local2:Enemy9 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
					_local2.walkingDir = _local2.facingDir;
					_local2.dirx = _local2.walkingDir;
				};
				if (_arg1.length > 1){
					_local2.weaponSKU = String(_arg1[1]);
					if ((((_local2.weaponSKU == "random")) || ((_local2.weaponSKU == "")))){
						_local2.weaponSKU = _local2.randomWeapons[Math.floor((Math.random() * _local2.randomWeapons.length))];
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.rememberKilled = true;
					} else {
						_local2.rememberKilled = false;
					};
				};
				if (_arg1.length > 3){
					_local2.spawnerObjectID = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.hasJumped = true;
					_local2.noticedPlayer = true;
					_local2.alwaysNoticePlayer = true;
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy9 = this;
			if (_local1.isDead){
				if (_local1.whichDying == 2){
					_local2 = _local1.die2CycleFrames;
				} else {
					_local2 = _local1.die1CycleFrames;
				};
			} else {
				if (_local1.isQuickAttacking){
					_local2 = _local1.quickAttackCycleFrames;
				} else {
					if (_local1.isShoving){
						_local2 = _local1.shoveCycleFrames;
					} else {
						if (_local1.isDodging){
							_local2 = _local1.dodgeCycleFrames;
						} else {
							if (_local1.isHit){
								_local2 = _local1.hitCycleFrames;
							} else {
								if (_local1.isAttacking){
									_local2 = _local1.swingCycleFrames;
								} else {
									if (_local1.jump){
										_local2 = _local1.jumpCycleFrames;
									} else {
										if (((_local1.isSteppingForward) && (!(_local1.noticedPlayer)))){
											_local2 = _local1.slowWalkCycleFrames;
										} else {
											if (_local1.isSteppingForward){
												_local2 = _local1.stepForwardCycleFrames;
											} else {
												if (_local1.isSteppingBackward){
													_local2 = _local1.stepBackCycleFrames;
												} else {
													if (_local1.isWalking){
														_local2 = _local1.runCycleFrames;
													} else {
														_local2 = _local1.standCycleFrames;
													};
												};
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy9 = this;
			if (_local1.cycleName == "swing"){
				_local1.isAttacking = false;
			} else {
				if (_local1.cycleName == "shove"){
					_local1.isShoving = false;
				} else {
					if (_local1.isQuickAttacking){
						_local1.isAttacking = false;
						_local1.isQuickAttacking = false;
						_local1.isDodging = false;
					} else {
						if (_local1.cycleName == "dodge"){
							_local1.isHit = false;
							_local1.isDodging = false;
							_local1.startAttacking();
						} else {
							if (_local1.cycleName == "hit"){
								_local1.isHit = false;
							} else {
								if (_local1.cycleName == "stepForward"){
									_local1.isSteppingForward = false;
									_local1.animationFrame = 0;
									_local1.cycleFrame = 0;
								} else {
									if (_local1.cycleName == "stepBack"){
										_local1.isSteppingBackward = false;
										_local1.animationFrame = 0;
										_local1.cycleFrame = 0;
									};
								};
							};
						};
					};
				};
			};
		}
		override public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy9 = this;
			var _local6:Boolean;
			if (((((((((!(_local5.isDead)) && (!(_arg3)))) && (_local5.canDodgeAttacks))) && (!(_local5.onSingleTile)))) && ((Math.random() < _local5.dodgeChance)))){
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isHit = true;
				_local5.isDodging = true;
				_local5.speed = _local5.dodgeSpeed;
				_local5.dirx = _arg2;
				_local5.walkingDir = _arg2;
			} else {
				_local5.isSteppingBackward = false;
				_local5.isSteppingForward = false;
				_local5.isWalking = false;
				_local5.animationFrame = 0;
				_local5.cycleFrame = 0;
				_local5.isAttacking = false;
				_local5.isShoving = false;
				_local5.isDodging = false;
				_local6 = super.getHit(_arg1, _arg2, _arg3, _arg4);
			};
			_local5.noticedPlayer = true;
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy9 = this;
			if (_local2.whichDying == 1){
				_local2.whichDying = 2;
			} else {
				_local2.whichDying = 1;
			};
			super.killMe(_arg1);
		}
		override public function removeEnemy(){
			var _local4:GameObject;
			var _local1:Enemy9 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			if (_local1.spawnerObjectID != -1){
				_local4 = _local3.getObject(_local1.spawnerObjectID, _local1.whichScreen);
				if (_local4 != null){
					_local4.unregisterSpawn();
				};
			};
			super.removeEnemy();
		}
		override public function destroy(){
			var _local1:Enemy9 = this;
			if (_local1.whichWeapon){
				_local1.whichWeapon.destroy();
				_local1.whichWeapon = null;
			};
			super.destroy();
		}
		override public function updateObject(){
			var _local7:Number;
			var _local8:Number;
			var _local9:Number;
			var _local1:Enemy9 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local1.gameObj.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (_local1.isDead){
				_local1.jumpChar(false);
				_local1.moveChar(_local1.dirx, 0, 0, false, false, false);
				_local1.updateSprite();
				if (_local1.ytile > (_local4.currentYtileDown + 1)){
					_local1.removeEnemy();
				};
			} else {
				if (_local1.waitingToDie){
					_local1.isAttacking = false;
					_local1.jumpChar();
					_local1.updateSprite();
					if (!_local6.isAttacking){
						_local1.waitingToDie = false;
					};
				} else {
					if (((_local1.checkOnScreen()) || (!((_local1.spawnerObjectID == -1))))){
						_local1.jumpChar();
						if (((((((!(_local1.isAttacking)) && (!(_local1.isShoving)))) && (!(_local1.isHit)))) && (!(_local1.isDodging)))){
							_local7 = (_local1.x - _local6.x);
							_local8 = Math.abs(_local7);
							_local9 = Math.random();
							if (_local1.noticedPlayer){
								if (_local7 >= 0){
									_local1.facingDir = -1;
								} else {
									_local1.facingDir = 1;
								};
								_local1.aimTimer++;
								if (_local1.aimTimer >= _local1.aimTimerMax){
									_local1.aimTowardsPlayer();
									_local1.aimTimer = 0;
								};
								if (_local1.onSingleTile){
									_local1.isWalking = false;
								} else {
									if (((!(_local1.isSteppingBackward)) && (!(_local1.isSteppingForward)))){
										if (_local1.jump){
											if (_local1.dirx == 0){
												_local1.dirx = _local1.facingDir;
											};
											_local1.speed = _local1.runSpeed;
											_local1.isSteppingBackward = false;
											_local1.isSteppingForward = false;
											_local1.isWalking = true;
											_local1.moveChar(_local1.dirx, 0, 0, false, true);
										} else {
											if (_local8 > targetDistance){
												_local1.dirx = _local1.facingDir;
												_local1.speed = _local1.runSpeed;
												_local1.isSteppingBackward = false;
												_local1.isSteppingForward = false;
												_local1.isWalking = true;
												_local1.moveChar(_local1.dirx, 0, 0, false, true);
											} else {
												if ((((_local8 <= (targetDistance - 40))) || ((((_local8 <= (targetDistance - 20))) && ((_local9 > 0.95)))))){
													_local1.dirx = (_local1.facingDir * -1);
													_local1.speed = _local1.stepSpeed;
													_local1.isSteppingBackward = true;
													_local1.isSteppingForward = false;
												} else {
													if ((((_local8 > (targetDistance - 20))) && ((_local9 > 0.95)))){
														_local1.dirx = _local1.facingDir;
														_local1.speed = _local1.stepSpeed;
														_local1.isSteppingForward = true;
														_local1.isSteppingBackward = false;
													} else {
														_local1.isWalking = false;
													};
												};
											};
										};
									} else {
										_local1.speed = _local1.stepSpeed;
										_local1.moveChar(_local1.dirx, 0, 0, false, true);
									};
								};
								_local1.lookForPlayer();
							} else {
								if (onSingleTile){
									_local1.isWalking = false;
								} else {
									_local1.speed = _local1.paceSpeed;
									_local1.isSteppingForward = true;
									_local1.isWalking = true;
									if (_local1.dirx == 0){
										_local1.dirx = 1;
									};
									_local1.moveChar(_local1.dirx, 0, false, true, true);
									if (_local1.dirx != 0){
										_local1.facingDir = _local1.dirx;
									};
								};
								_local1.lookForPlayer();
							};
						} else {
							if (_local1.isDodging){
								if (_local1.speed > _local1.dodgeMinSpeed){
									_local1.speed--;
								};
								_local1.moveChar(_local1.dirx, 0, 0, false, true);
							};
						};
						_local1.checkForAttacking();
						if (_local1.isAttacking){
							if ((((_local1.cycleFrame == _local1.shootDelay)) && ((_local1.shotsFired < _local1.whichWeapon.maxBulletsPerRound)))){
								_local1.shootWeapon();
							};
							_local1.shotTimer++;
						};
						if (_local1.dirx != 0){
							_local1.walkingDir = _local1.dirx;
						};
						if (_local1.dirx == 0){
							if (((((_local1.noticedPlayer) && ((_local1.walkingDir == _local1.facingDir)))) && (!(_local1.jump)))){
								_local1.isSteppingBackward = false;
								_local1.isSteppingForward = false;
								_local1.dirx = _local1.facingDir;
								_local1.hasJumped = true;
								_local1.jumpspeed = _local1.jumpstart;
								_local1.jump = true;
							};
						};
						_local1.updateSprite();
					};
				};
			};
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.targetXoffset;
			} else {
				if (_local1.facingDir == -1){
					_local1.spriteTargetX = (_local1.spritewidth - _local1.targetXoffset);
				};
			};
			_local1.weaponCycleData = _local1[("weapon_" + _local1.cycleName)];
		}
		override public function checkIfAtEdge(_arg1, _arg2){
			var _local6:Number;
			var _local3:Enemy9 = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local6 = 0.8;
							if ((((_local3.dirx == 1)) && ((_local3.gameObj.playerObj.x > _local3.x)))){
								_local6 = 0.3;
							} else {
								if ((((_local3.dirx == -1)) && ((_local3.gameObj.playerObj.x < _local3.x)))){
									_local6 = 0.3;
								};
							};
							if (((_local3.noticedPlayer) && (_local3.hasJumped))){
								_local3.jumpspeed = _local3.jumpstart;
								_local3.jump = true;
							} else {
								if (_arg2 == 1){
									_local3.x = ((_local3.rightX * _local5.tileWidth) - _local3.width);
								} else {
									_local3.x = (((_local3.leftX + 1) * _local5.tileWidth) + _local3.width);
								};
								_local3.xtile = Math.floor((_local3.x / _local5.tileWidth));
								_local3.dirx = (_arg2 * -1);
								_local3.noticedPlayer = false;
								if (_local3.isDodging){
									_local3.isDodging = false;
								};
							};
						};
					};
				};
			};
		}
		override public function startAttacking(){
			var _local1:Enemy9 = this;
			if (!_local1.gameObj.enemyManager.anyEnemiesAttacking()){
				_local1.isAttacking = true;
				_local1.cycleFrame = 0;
				_local1.isShoving = false;
				_local1.isSteppingBackward = false;
				_local1.isSteppingForward = false;
				_local1.waitTimer = 0;
				_local1.shotTimer = 0;
				_local1.shotsFired = 0;
			};
		}
		override public function startShoving(){
			var _local1:Enemy9 = this;
		}
		override public function startQuickAttacking(){
			var _local1:Enemy9 = this;
		}
		public function checkShootingOnScreen():Boolean{
			var _local1:Enemy9 = this;
			if (_local1.xtile < _local1.gameObj.gameDisplay.currentXtileLeft){
				return (false);
			};
			if (_local1.xtile > _local1.gameObj.gameDisplay.currentXtileRight){
				return (false);
			};
			if (_local1.ytile < (_local1.gameObj.gameDisplay.currentYtileUp + 2)){
				return (false);
			};
			if (_local1.ytile > (_local1.gameObj.gameDisplay.currentYtileDown + 2)){
				return (false);
			};
			return (true);
		}
		public function checkForAttacking(){
			var _local1:Enemy9 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			if (((((((!(_local1.isDodging)) && (!(_local1.isAttacking)))) && (_local1.noticedPlayer))) && (!(_local1.isQuickAttacking)))){
				_local1.waitTimer++;
				if (_local1.waitTimer >= _local1.waitTimerMax){
					if (((((!(_local1.isHit)) && ((Math.random() <= _local1.attackChangeInRange)))) && (_local1.checkShootingOnScreen()))){
						_local1.startAttacking();
					};
				};
			};
		}
		public function aimTowardsPlayer(){
			var _local1:Enemy9 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Number = (_local1.x - _local2.x);
			var _local4:Number = (_local1.y - _local2.y);
			var _local5:Number = Math.sqrt(((_local3 * _local3) + (_local4 * _local4)));
			if (_local2.x < _local1.x){
				_local1.facingDir = -1;
			} else {
				_local1.facingDir = 1;
			};
			var _local6:Number = Math.atan2(_local4, _local3);
			var _local7:Number = radsToDegrees(_local6);
			if ((((_local7 > -30)) && ((_local7 < 30)))){
				_local1.aimDirection = "forward";
			} else {
				if ((((_local7 < -150)) || ((_local7 > 150)))){
					_local1.aimDirection = "forward";
				} else {
					if (_local7 < -30){
						_local1.aimDirection = "down";
					} else {
						if (_local7 > 30){
							_local1.aimDirection = "up";
						};
					};
				};
			};
		}
		public function radsToDegrees(_arg1:Number){
			var _local2:Number = (_arg1 * (180 / Math.PI));
			return (_local2);
		}
		public function shootWeapon(){
			var _local1:Enemy9 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:BulletManager = _local1.gameObj.bulletManager;
			var _local4:Number = (_local1.x - _local2.x);
			var _local5:Number = (_local1.y - _local2.y);
			var _local6:Number = Math.sqrt(((_local4 * _local4) + (_local5 * _local5)));
			var _local7:Number = Math.atan2(_local5, _local4);
			var _local8:Number = (Math.round((_local7 * 3)) / 3);
			if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "forward")))){
				_local8 = 0;
			} else {
				if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "forward")))){
					_local8 = Math.PI;
				} else {
					if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "up")))){
						_local8 = (Math.PI / 4);
					} else {
						if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "up")))){
							_local8 = ((3 / 4) * Math.PI);
						} else {
							if ((((_local1.facingDir == -1)) && ((_local1.aimDirection == "down")))){
								_local8 = ((Math.PI / 4) * -1);
							} else {
								if ((((_local1.facingDir == 1)) && ((_local1.aimDirection == "down")))){
									_local8 = ((-3 / 4) * Math.PI);
								};
							};
						};
					};
				};
			};
			var _local9:Number = _local1.facingDir;
			var _local10:Number = 0;
			var _local11:Number = 0;
			if (_local1.aimDirection == "up"){
				_local10 = ((_local1.shoot_toss_offsetsX[1] + _local1.whichWeapon.shoot_extra_offsetsX[1]) * _local1.facingDir);
				_local11 = (_local1.shoot_toss_offsetsY[1] + _local1.whichWeapon.shoot_extra_offsetsY[1]);
			} else {
				if (_local1.aimDirection == "down"){
					_local10 = ((_local1.shoot_toss_offsetsX[2] + _local1.whichWeapon.shoot_extra_offsetsX[2]) * _local1.facingDir);
					_local11 = (_local1.shoot_toss_offsetsY[2] + _local1.whichWeapon.shoot_extra_offsetsY[2]);
				} else {
					_local10 = ((_local1.shoot_toss_offsetsX[0] + _local1.whichWeapon.shoot_extra_offsetsX[0]) * _local1.facingDir);
					_local11 = (_local1.shoot_toss_offsetsY[0] + _local1.whichWeapon.shoot_extra_offsetsY[0]);
				};
			};
			var _local12:Number = ((_local1.x + (12 * _local1.facingDir)) + _local10);
			var _local13:* = ((_local1.y - 57) + _local11);
			_local3.addBullet(_local12, _local13, _local9, _local8, _local1.whichWeapon.bulletType, "", true, _local1.whichWeapon.getAttackStat(), true);
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			_local1.shotsFired++;
		}

	}
}//package cactusGame.models.enemies 

****************

//GameItem_Axe (cactusGame.models.items.GameItem_Axe)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Axe extends GameItem {

		public function GameItem_Axe(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Axe = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "axe_drop";
			type = "_Axe";
			weaponSKU = "Axe";
			spritewidth = 52;
			spriteheight = 26;
			spriteCenterX = 26;
			spriteCenterY = 13;
			spriteTargetX = 26;
			spriteTargetY = 5;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Badge (cactusGame.models.items.GameItem_Badge)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Badge extends GameItem {

		public function GameItem_Badge(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Badge = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "badge_drop";
			type = "_Badge";
			weaponSKU = "Badge";
			spritewidth = 21;
			spriteheight = 16;
			spriteCenterX = 10;
			spriteCenterY = 8;
			spriteTargetX = 10;
			spriteTargetY = 3;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Banjo (cactusGame.models.items.GameItem_Banjo)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Banjo extends GameItem {

		public function GameItem_Banjo(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Banjo = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "banjo_drop";
			type = "_Banjo";
			weaponSKU = "Banjo";
			spritewidth = 61;
			spriteheight = 26;
			spriteCenterX = 13;
			spriteCenterY = 30;
			spriteTargetX = 13;
			spriteTargetY = 26;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_BarbedWire (cactusGame.models.items.GameItem_BarbedWire)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_BarbedWire extends GameItem {

		public function GameItem_BarbedWire(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_BarbedWire = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "barbedwire_drop";
			type = "_BarbedWire";
			weaponSKU = "BarbedWire";
			spritewidth = 30;
			spriteheight = 24;
			spriteCenterX = 15;
			spriteCenterY = 12;
			spriteTargetX = 15;
			spriteTargetY = 7;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Bat (cactusGame.models.items.GameItem_Bat)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Bat extends GameItem {

		public function GameItem_Bat(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Bat = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "bat_drop";
			type = "_Bat";
			weaponSKU = "Bat";
			spritewidth = 52;
			spriteheight = 10;
			spriteCenterX = 26;
			spriteCenterY = 5;
			spriteTargetX = 26;
			spriteTargetY = -1;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Bazooka (cactusGame.models.items.GameItem_Bazooka)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Bazooka extends GameItem {

		public function GameItem_Bazooka(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Bazooka = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "bazooka_drop";
			type = "_Bazooka";
			weaponSKU = "Bazooka";
			spritewidth = 84;
			spriteheight = 23;
			spriteCenterX = 42;
			spriteCenterY = 11;
			spriteTargetX = 42;
			spriteTargetY = 11;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Blunderbuss (cactusGame.models.items.GameItem_Blunderbuss)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Blunderbuss extends GameItem {

		public function GameItem_Blunderbuss(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Blunderbuss = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "blunderbuss_drop";
			type = "_Blunderbuss";
			weaponSKU = "Blunderbuss";
			spritewidth = 58;
			spriteheight = 22;
			spriteCenterX = 29;
			spriteCenterY = 11;
			spriteTargetX = 29;
			spriteTargetY = 4;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Bone (cactusGame.models.items.GameItem_Bone)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Bone extends GameItem {

		public function GameItem_Bone(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Bone = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "bone_drop";
			type = "_Bone";
			weaponSKU = "Bone";
			spritewidth = 54;
			spriteheight = 19;
			spriteCenterX = 27;
			spriteCenterY = 9;
			spriteTargetX = 27;
			spriteTargetY = 4;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_BoxingGloves (cactusGame.models.items.GameItem_BoxingGloves)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_BoxingGloves extends GameItem {

		public function GameItem_BoxingGloves(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_BoxingGloves = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "boxinggloves_drop";
			type = "_BoxingGloves";
			weaponSKU = "BoxingGloves";
			spritewidth = 33;
			spriteheight = 24;
			spriteCenterX = 16;
			spriteCenterY = 12;
			spriteTargetX = 16;
			spriteTargetY = 10;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_BrassKnuckles (cactusGame.models.items.GameItem_BrassKnuckles)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_BrassKnuckles extends GameItem {

		public function GameItem_BrassKnuckles(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_BrassKnuckles = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "brassknuckles_drop";
			type = "_BrassKnuckles";
			weaponSKU = "BrassKnuckles";
			spritewidth = 28;
			spriteheight = 16;
			spriteCenterX = 14;
			spriteCenterY = 8;
			spriteTargetX = 14;
			spriteTargetY = 3;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_BullWhip (cactusGame.models.items.GameItem_BullWhip)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_BullWhip extends GameItem {

		public function GameItem_BullWhip(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_BullWhip = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "bullwhip_drop";
			type = "_BullWhip";
			weaponSKU = "BullWhip";
			spritewidth = 35;
			spriteheight = 22;
			spriteCenterX = 17;
			spriteCenterY = 11;
			spriteTargetX = 17;
			spriteTargetY = 7;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Cactus (cactusGame.models.items.GameItem_Cactus)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Cactus extends GameItem {

		public function GameItem_Cactus(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Cactus = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "cactus_drop";
			type = "_Cactus";
			weaponSKU = "Cactus";
			spritewidth = 24;
			spriteheight = 55;
			spriteCenterX = 12;
			spriteCenterY = 27;
			spriteTargetX = 12;
			spriteTargetY = 47;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_CatOfNineTails (cactusGame.models.items.GameItem_CatOfNineTails)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_CatOfNineTails extends GameItem {

		public function GameItem_CatOfNineTails(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_CatOfNineTails = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "catofninetails_drop";
			type = "_CatOfNineTails";
			weaponSKU = "CatOfNineTails";
			spritewidth = 37;
			spriteheight = 23;
			spriteCenterX = 18;
			spriteCenterY = 11;
			spriteTargetX = 18;
			spriteTargetY = 8;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_ChainWhip (cactusGame.models.items.GameItem_ChainWhip)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_ChainWhip extends GameItem {

		public function GameItem_ChainWhip(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_ChainWhip = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "chainwhip_drop";
			type = "_ChainWhip";
			weaponSKU = "ChainWhip";
			spritewidth = 25;
			spriteheight = 17;
			spriteCenterX = 12;
			spriteCenterY = 8;
			spriteTargetX = 12;
			spriteTargetY = 0;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_CherryBomb (cactusGame.models.items.GameItem_CherryBomb)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_CherryBomb extends GameItem {

		public function GameItem_CherryBomb(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_CherryBomb = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "cherrybomb_drop";
			type = "_CherryBomb";
			weaponSKU = "CherryBomb";
			spritewidth = 16;
			spriteheight = 17;
			spriteCenterX = 8;
			spriteCenterY = 8;
			spriteTargetX = 8;
			spriteTargetY = 5;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Club (cactusGame.models.items.GameItem_Club)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Club extends GameItem {

		public function GameItem_Club(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Club = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "club_drop";
			type = "_Club";
			weaponSKU = "Club";
			spritewidth = 51;
			spriteheight = 18;
			spriteCenterX = 25;
			spriteCenterY = 9;
			spriteTargetX = 25;
			spriteTargetY = 5;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Crossbow (cactusGame.models.items.GameItem_Crossbow)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Crossbow extends GameItem {

		public function GameItem_Crossbow(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Crossbow = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "crossbow_drop";
			type = "_Crossbow";
			weaponSKU = "Crossbow";
			spritewidth = 62;
			spriteheight = 24;
			spriteCenterX = 31;
			spriteCenterY = 12;
			spriteTargetX = 31;
			spriteTargetY = 6;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Crowbar (cactusGame.models.items.GameItem_Crowbar)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Crowbar extends GameItem {

		public function GameItem_Crowbar(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Crowbar = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "crowbar_drop";
			type = "_Crowbar";
			weaponSKU = "Crowbar";
			spritewidth = 37;
			spriteheight = 12;
			spriteCenterX = 18;
			spriteCenterY = 6;
			spriteTargetX = 18;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Cutlass (cactusGame.models.items.GameItem_Cutlass)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Cutlass extends GameItem {

		public function GameItem_Cutlass(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Cutlass = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "cutlass_drop";
			type = "_Cutlass";
			weaponSKU = "Cutlass";
			spritewidth = 51;
			spriteheight = 11;
			spriteCenterX = 25;
			spriteCenterY = 5;
			spriteTargetX = 25;
			spriteTargetY = -2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Dagger (cactusGame.models.items.GameItem_Dagger)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Dagger extends GameItem {

		public function GameItem_Dagger(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Dagger = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "dagger_drop";
			type = "_Dagger";
			weaponSKU = "Dagger";
			spritewidth = 32;
			spriteheight = 13;
			spriteCenterX = 16;
			spriteCenterY = 6;
			spriteTargetX = 16;
			spriteTargetY = 1;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Dart (cactusGame.models.items.GameItem_Dart)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Dart extends GameItem {

		public function GameItem_Dart(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Dart = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "dart_drop";
			type = "_Dart";
			weaponSKU = "Dart";
			spritewidth = 23;
			spriteheight = 13;
			spriteCenterX = 11;
			spriteCenterY = 6;
			spriteTargetX = 11;
			spriteTargetY = 1;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Derringer (cactusGame.models.items.GameItem_Derringer)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Derringer extends GameItem {

		public function GameItem_Derringer(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Derringer = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "derringer_drop";
			type = "_Derringer";
			weaponSKU = "Derringer";
			spritewidth = 19;
			spriteheight = 14;
			spriteCenterX = 9;
			spriteCenterY = 7;
			spriteTargetX = 9;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Flamethrower (cactusGame.models.items.GameItem_Flamethrower)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Flamethrower extends GameItem {

		public function GameItem_Flamethrower(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Flamethrower = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "flamethrower_drop";
			type = "_Flamethrower";
			weaponSKU = "Flamethrower";
			spritewidth = 52;
			spriteheight = 35;
			spriteCenterX = 26;
			spriteCenterY = 17;
			spriteTargetX = 26;
			spriteTargetY = 17;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Gatling (cactusGame.models.items.GameItem_Gatling)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Gatling extends GameItem {

		public function GameItem_Gatling(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Gatling = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "gatling_drop";
			type = "_Gatling";
			weaponSKU = "Gatling";
			spritewidth = 51;
			spriteheight = 26;
			spriteCenterX = 25;
			spriteCenterY = 13;
			spriteTargetX = 25;
			spriteTargetY = 13;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Grenade (cactusGame.models.items.GameItem_Grenade)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Grenade extends GameItem {

		public function GameItem_Grenade(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Grenade = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "grenade_drop";
			type = "_Grenade";
			weaponSKU = "Grenade";
			spritewidth = 20;
			spriteheight = 23;
			spriteCenterX = 10;
			spriteCenterY = 11;
			spriteTargetX = 10;
			spriteTargetY = 9;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Guitar (cactusGame.models.items.GameItem_Guitar)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Guitar extends GameItem {

		public function GameItem_Guitar(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Guitar = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "guitar_drop";
			type = "_Guitar";
			weaponSKU = "Guitar";
			spritewidth = 55;
			spriteheight = 25;
			spriteCenterX = 12;
			spriteCenterY = 27;
			spriteTargetX = 12;
			spriteTargetY = 23;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_HarpoonGun (cactusGame.models.items.GameItem_HarpoonGun)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_HarpoonGun extends GameItem {

		public function GameItem_HarpoonGun(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_HarpoonGun = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "harpoongun_drop";
			type = "_HarpoonGun";
			weaponSKU = "HarpoonGun";
			spritewidth = 69;
			spriteheight = 21;
			spriteCenterX = 34;
			spriteCenterY = 10;
			spriteTargetX = 34;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_HatfieldPistol (cactusGame.models.items.GameItem_HatfieldPistol)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_HatfieldPistol extends GameItem {

		public function GameItem_HatfieldPistol(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_HatfieldPistol = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "hatfieldpistol_drop";
			type = "_HatfieldPistol";
			weaponSKU = "HatfieldPistol";
			spritewidth = 33;
			spriteheight = 19;
			spriteCenterX = 16;
			spriteCenterY = 9;
			spriteTargetX = 16;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Iron (cactusGame.models.items.GameItem_Iron)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Iron extends GameItem {

		public function GameItem_Iron(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Iron = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "iron_drop";
			type = "_Iron";
			weaponSKU = "Iron";
			spritewidth = 17;
			spriteheight = 23;
			spriteCenterX = 8;
			spriteCenterY = 11;
			spriteTargetX = 8;
			spriteTargetY = 11;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Katana (cactusGame.models.items.GameItem_Katana)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Katana extends GameItem {

		public function GameItem_Katana(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Katana = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "katana_drop";
			type = "_Katana";
			weaponSKU = "Katana";
			spritewidth = 67;
			spriteheight = 14;
			spriteCenterX = 33;
			spriteCenterY = 7;
			spriteTargetX = 33;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Lantern (cactusGame.models.items.GameItem_Lantern)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Lantern extends GameItem {

		public function GameItem_Lantern(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Lantern = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "lantern_drop";
			type = "_Lantern";
			weaponSKU = "Lantern";
			spritewidth = 25;
			spriteheight = 34;
			spriteCenterX = 12;
			spriteCenterY = 17;
			spriteTargetX = 12;
			spriteTargetY = 17;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Longsword (cactusGame.models.items.GameItem_Longsword)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Longsword extends GameItem {

		public function GameItem_Longsword(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Longsword = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "longsword_drop";
			type = "_Longsword";
			weaponSKU = "Longsword";
			spritewidth = 65;
			spriteheight = 20;
			spriteCenterX = 32;
			spriteCenterY = 10;
			spriteTargetX = 32;
			spriteTargetY = 6;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Machete (cactusGame.models.items.GameItem_Machete)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Machete extends GameItem {

		public function GameItem_Machete(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Machete = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "machete_drop";
			type = "_Machete";
			weaponSKU = "Machete";
			spritewidth = 45;
			spriteheight = 11;
			spriteCenterX = 22;
			spriteCenterY = 5;
			spriteTargetX = 22;
			spriteTargetY = -2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Mallet (cactusGame.models.items.GameItem_Mallet)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Mallet extends GameItem {

		public function GameItem_Mallet(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Mallet = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "mallet_drop";
			type = "_Mallet";
			weaponSKU = "Mallet";
			spritewidth = 59;
			spriteheight = 32;
			spriteCenterX = 29;
			spriteCenterY = 16;
			spriteTargetX = 29;
			spriteTargetY = 16;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Meteor (cactusGame.models.items.GameItem_Meteor)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Meteor extends GameItem {

		public function GameItem_Meteor(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Meteor = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "meteor_drop";
			type = "_Meteor";
			weaponSKU = "Meteor";
			spritewidth = 36;
			spriteheight = 24;
			spriteCenterX = 18;
			spriteCenterY = 12;
			spriteTargetX = 18;
			spriteTargetY = 6;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_MoneyCopper (cactusGame.models.items.GameItem_MoneyCopper)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.managers.*;

	public class GameItem_MoneyCopper extends GameItem {

		public function GameItem_MoneyCopper(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_MoneyCopper = this;
			_local8.jumpspeed = (Math.ceil(((Math.random() * _local8.jumpstart) / 2)) + (_local8.jumpstart / 2));
			_local8.jump = true;
			if (Math.random() > 0.7){
				_local8.dirx = 1;
			} else {
				if (Math.random() < 0.4){
					_local8.dirx = -1;
				} else {
					_local8.dirx = 0;
				};
			};
			_local8.x = (_local8.x + (Math.round((Math.random() * 16)) - 8));
			_local8.y = (_local8.y + (Math.round((Math.random() * 16)) - 8));
		}
		override public function defineVars(){
			sheetname = "money_copper_sheet";
			type = "_MoneyCopper";
			spritewidth = 7;
			spriteheight = 8;
			spriteCenterX = 3;
			spriteCenterY = 4;
			spriteTargetX = 3;
			spriteTargetY = 4;
			height = 4;
			width = 4;
			collRect = new Rectangle(-4, -4, 8, 8);
			sheetWidth = 9;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 4;
			bounceY = true;
			bounceDecayY = 0.3;
			foreground = false;
			points = 1;
			moneyValue = 1;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8]];
			flickerCycleFrames = ["flicker", 2, 1, 0, 0, [5, 99]];
		}
		override public function collectItem(){
			var _local1:GameItem_MoneyCopper = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.userData.earnMoney(_local1.moneyValue);
			_local1.gameObj.effectManager.addEffect(0, 0, "MoneyCopperEffect", "", true, 0, -50);
			_local1.gameObj.soundManager.playSound("getcoin.wav");
			_local2.removeItem(_local1.id);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_MoneyDiamond (cactusGame.models.items.GameItem_MoneyDiamond)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.managers.*;

	public class GameItem_MoneyDiamond extends GameItem {

		public function GameItem_MoneyDiamond(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_MoneyDiamond = this;
			_local8.jumpspeed = (Math.ceil(((Math.random() * _local8.jumpstart) / 2)) + (_local8.jumpstart / 2));
			_local8.jump = true;
			if (Math.random() > 0.7){
				_local8.dirx = 1;
			} else {
				if (Math.random() < 0.4){
					_local8.dirx = -1;
				} else {
					_local8.dirx = 0;
				};
			};
			_local8.x = (_local8.x + (Math.round((Math.random() * 16)) - 8));
			_local8.y = (_local8.y + (Math.round((Math.random() * 16)) - 8));
		}
		override public function defineVars(){
			sheetname = "money_diamond_sheet";
			type = "_MoneyDiamond";
			spritewidth = 15;
			spriteheight = 19;
			spriteCenterX = 7;
			spriteCenterY = 9;
			spriteTargetX = 7;
			spriteTargetY = 13;
			height = 6;
			width = 6;
			collRect = new Rectangle(-7, -9, 14, 14);
			sheetWidth = 4;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 4;
			bounceY = true;
			bounceDecayY = 0.3;
			foreground = false;
			points = 50;
			moneyValue = 50;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
		}
		override public function collectItem(){
			var _local1:GameItem_MoneyDiamond = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.userData.earnMoney(_local1.moneyValue);
			_local1.gameObj.effectManager.addEffect(0, 0, "MoneyDiamondEffect", "", true, 0, -50);
			_local1.gameObj.soundManager.playSound("getcoin.wav");
			_local2.removeItem(_local1.id);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_MoneyEmerald (cactusGame.models.items.GameItem_MoneyEmerald)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.managers.*;

	public class GameItem_MoneyEmerald extends GameItem {

		public function GameItem_MoneyEmerald(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_MoneyEmerald = this;
			_local8.jumpspeed = (Math.ceil(((Math.random() * _local8.jumpstart) / 2)) + (_local8.jumpstart / 2));
			_local8.jump = true;
			if (Math.random() > 0.7){
				_local8.dirx = 1;
			} else {
				if (Math.random() < 0.4){
					_local8.dirx = -1;
				} else {
					_local8.dirx = 0;
				};
			};
			_local8.x = (_local8.x + (Math.round((Math.random() * 16)) - 8));
			_local8.y = (_local8.y + (Math.round((Math.random() * 16)) - 8));
		}
		override public function defineVars(){
			sheetname = "money_emerald_sheet";
			type = "_MoneyEmerald";
			spritewidth = 11;
			spriteheight = 15;
			spriteCenterX = 5;
			spriteCenterY = 7;
			spriteTargetX = 5;
			spriteTargetY = 9;
			height = 6;
			width = 6;
			collRect = new Rectangle(-6, -6, 12, 12);
			sheetWidth = 4;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 4;
			bounceY = true;
			bounceDecayY = 0.3;
			foreground = false;
			points = 35;
			moneyValue = 35;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0]];
		}
		override public function collectItem(){
			var _local1:GameItem_MoneyEmerald = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.userData.earnMoney(_local1.moneyValue);
			_local1.gameObj.effectManager.addEffect(0, 0, "MoneyEmeraldEffect", "", true, 0, -50);
			_local1.gameObj.soundManager.playSound("getcoin.wav");
			_local2.removeItem(_local1.id);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_MoneyGold (cactusGame.models.items.GameItem_MoneyGold)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.managers.*;

	public class GameItem_MoneyGold extends GameItem {

		public function GameItem_MoneyGold(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_MoneyGold = this;
			_local8.jumpspeed = (Math.ceil(((Math.random() * _local8.jumpstart) / 2)) + (_local8.jumpstart / 2));
			_local8.jump = true;
			if (Math.random() > 0.7){
				_local8.dirx = 1;
			} else {
				if (Math.random() < 0.4){
					_local8.dirx = -1;
				} else {
					_local8.dirx = 0;
				};
			};
			_local8.x = (_local8.x + (Math.round((Math.random() * 16)) - 8));
			_local8.y = (_local8.y + (Math.round((Math.random() * 16)) - 8));
		}
		override public function defineVars(){
			sheetname = "money_gold_sheet";
			type = "_MoneyGold";
			spritewidth = 10;
			spriteheight = 11;
			spriteCenterX = 5;
			spriteCenterY = 5;
			spriteTargetX = 5;
			spriteTargetY = 5;
			height = 5;
			width = 5;
			collRect = new Rectangle(-5, -5, 10, 10);
			sheetWidth = 11;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 4;
			bounceY = true;
			bounceDecayY = 0.3;
			foreground = false;
			points = 10;
			moneyValue = 10;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]];
			flickerCycleFrames = ["flicker", 2, 1, 0, 0, [5, 99]];
		}
		override public function collectItem(){
			var _local1:GameItem_MoneyGold = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.userData.earnMoney(_local1.moneyValue);
			_local1.gameObj.effectManager.addEffect(0, 0, "MoneyGoldEffect", "", true, 0, -50);
			_local1.gameObj.soundManager.playSound("getcoin.wav");
			_local2.removeItem(_local1.id);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_MoneyRuby (cactusGame.models.items.GameItem_MoneyRuby)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.managers.*;

	public class GameItem_MoneyRuby extends GameItem {

		public function GameItem_MoneyRuby(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_MoneyRuby = this;
			_local8.jumpspeed = (Math.ceil(((Math.random() * _local8.jumpstart) / 2)) + (_local8.jumpstart / 2));
			_local8.jump = true;
			if (Math.random() > 0.7){
				_local8.dirx = 1;
			} else {
				if (Math.random() < 0.4){
					_local8.dirx = -1;
				} else {
					_local8.dirx = 0;
				};
			};
			_local8.x = (_local8.x + (Math.round((Math.random() * 16)) - 8));
			_local8.y = (_local8.y + (Math.round((Math.random() * 16)) - 8));
		}
		override public function defineVars(){
			sheetname = "money_ruby_sheet";
			type = "_MoneyRuby";
			spritewidth = 11;
			spriteheight = 13;
			spriteCenterX = 5;
			spriteCenterY = 6;
			spriteTargetX = 5;
			spriteTargetY = 6;
			height = 6;
			width = 6;
			collRect = new Rectangle(-6, -6, 12, 12);
			sheetWidth = 4;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 4;
			bounceY = true;
			bounceDecayY = 0.3;
			foreground = false;
			points = 20;
			moneyValue = 20;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 2, 3, 0, 0, 0, 0, 0, 0]];
		}
		override public function collectItem(){
			var _local1:GameItem_MoneyRuby = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.userData.earnMoney(_local1.moneyValue);
			_local1.gameObj.effectManager.addEffect(0, 0, "MoneyRubyEffect", "", true, 0, -50);
			_local1.gameObj.soundManager.playSound("getcoin.wav");
			_local2.removeItem(_local1.id);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_MoneySilver (cactusGame.models.items.GameItem_MoneySilver)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.managers.*;

	public class GameItem_MoneySilver extends GameItem {

		public function GameItem_MoneySilver(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_MoneySilver = this;
			_local8.jumpspeed = (Math.ceil(((Math.random() * _local8.jumpstart) / 2)) + (_local8.jumpstart / 2));
			_local8.jump = true;
			if (Math.random() > 0.7){
				_local8.dirx = 1;
			} else {
				if (Math.random() < 0.4){
					_local8.dirx = -1;
				} else {
					_local8.dirx = 0;
				};
			};
			_local8.x = (_local8.x + (Math.round((Math.random() * 16)) - 8));
			_local8.y = (_local8.y + (Math.round((Math.random() * 16)) - 8));
		}
		override public function defineVars(){
			sheetname = "money_silver_sheet";
			type = "_MoneySilver";
			spritewidth = 9;
			spriteheight = 10;
			spriteCenterX = 4;
			spriteCenterY = 5;
			spriteTargetX = 4;
			spriteTargetY = 5;
			height = 5;
			width = 5;
			collRect = new Rectangle(-5, -5, 10, 10);
			sheetWidth = 11;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 4;
			bounceY = true;
			bounceDecayY = 0.3;
			foreground = false;
			points = 5;
			moneyValue = 5;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]];
			flickerCycleFrames = ["flicker", 2, 1, 0, 0, [5, 99]];
		}
		override public function collectItem(){
			var _local1:GameItem_MoneySilver = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.userData.earnMoney(_local1.moneyValue);
			_local1.gameObj.effectManager.addEffect(0, 0, "MoneySilverEffect", "", true, 0, -50);
			_local1.gameObj.soundManager.playSound("getcoin.wav");
			_local2.removeItem(_local1.id);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Morningstar (cactusGame.models.items.GameItem_Morningstar)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Morningstar extends GameItem {

		public function GameItem_Morningstar(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Morningstar = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "morningstar_drop";
			type = "_Morningstar";
			weaponSKU = "Morningstar";
			spritewidth = 56;
			spriteheight = 27;
			spriteCenterX = 28;
			spriteCenterY = 13;
			spriteTargetX = 28;
			spriteTargetY = 3;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Nightstick (cactusGame.models.items.GameItem_Nightstick)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Nightstick extends GameItem {

		public function GameItem_Nightstick(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Nightstick = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "nightstick_drop";
			type = "_Nightstick";
			weaponSKU = "Nightstick";
			spritewidth = 42;
			spriteheight = 14;
			spriteCenterX = 21;
			spriteCenterY = 7;
			spriteTargetX = 21;
			spriteTargetY = 3;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Pickaxe (cactusGame.models.items.GameItem_Pickaxe)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Pickaxe extends GameItem {

		public function GameItem_Pickaxe(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Pickaxe = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "pickaxe_drop";
			type = "_Pickaxe";
			weaponSKU = "Pickaxe";
			spritewidth = 54;
			spriteheight = 40;
			spriteCenterX = 27;
			spriteCenterY = 20;
			spriteTargetX = 27;
			spriteTargetY = 18;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Pipe (cactusGame.models.items.GameItem_Pipe)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Pipe extends GameItem {

		public function GameItem_Pipe(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Pipe = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "pipe_drop";
			type = "_Pipe";
			weaponSKU = "Pipe";
			spritewidth = 37;
			spriteheight = 12;
			spriteCenterX = 18;
			spriteCenterY = 6;
			spriteTargetX = 18;
			spriteTargetY = 3;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_PlayingCard (cactusGame.models.items.GameItem_PlayingCard)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_PlayingCard extends GameItem {

		public function GameItem_PlayingCard(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_PlayingCard = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "playingcard_drop";
			type = "_PlayingCard";
			weaponSKU = "PlayingCard";
			spritewidth = 14;
			spriteheight = 10;
			spriteCenterX = 7;
			spriteCenterY = 5;
			spriteTargetX = 7;
			spriteTargetY = 0;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_PoolCue (cactusGame.models.items.GameItem_PoolCue)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_PoolCue extends GameItem {

		public function GameItem_PoolCue(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_PoolCue = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "poolcue_drop";
			type = "_PoolCue";
			weaponSKU = "PoolCue";
			spritewidth = 93;
			spriteheight = 5;
			spriteCenterX = 46;
			spriteCenterY = 2;
			spriteTargetX = 46;
			spriteTargetY = -8;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Rattlesnake (cactusGame.models.items.GameItem_Rattlesnake)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Rattlesnake extends GameItem {

		public var anim2CycleFrames:Array;
		public var flicker2CycleFrames:Array;
		public var flipFacing:Boolean;// = false

		public function GameItem_Rattlesnake(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			anim2CycleFrames = ["anim2", 2, 1, 0, 0, [9, 10, 11, 12, 13, 14, 15, 16, 17, 16, 15, 14, 13, 12, 11, 10]];
			flicker2CycleFrames = ["flicker2", 2, 1, 0, 0, [9, 99, 11, 99, 13, 99, 15, 99, 13, 99, 11, 99]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Rattlesnake = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
			if (Math.random() > 0.5){
				_local8.flipFacing = true;
			};
		}
		override public function defineVars(){
			sheetname = "rattlesnake_drop";
			type = "_Rattlesnake";
			weaponSKU = "Rattlesnake";
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 22;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 9;
			sheetHeight = 2;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 1, 2, 3, 4, 5, 6, 7, 8, 7, 6, 5, 4, 3, 2, 1]];
			flickerCycleFrames = ["flicker", 2, 1, 0, 0, [0, 99, 2, 99, 4, 99, 6, 99, 4, 99, 2, 99]];
		}
		override public function grabAnimationCycle():Array{
			var _local1:GameItem_Rattlesnake = this;
			var _local2:Array;
			if (_local1.isFlickering){
				if (_local1.flipFacing){
					_local2 = _local1.flicker2CycleFrames;
				} else {
					_local2 = _local1.flickerCycleFrames;
				};
			} else {
				if (_local1.flipFacing){
					_local2 = _local1.anim2CycleFrames;
				} else {
					_local2 = _local1.animCycleFrames;
				};
			};
			return (_local2);
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Revolver (cactusGame.models.items.GameItem_Revolver)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Revolver extends GameItem {

		public function GameItem_Revolver(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Revolver = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "revolver_drop";
			type = "_Revolver";
			weaponSKU = "Revolver";
			spritewidth = 33;
			spriteheight = 20;
			spriteCenterX = 16;
			spriteCenterY = 10;
			spriteTargetX = 16;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_RomanCandle (cactusGame.models.items.GameItem_RomanCandle)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_RomanCandle extends GameItem {

		public function GameItem_RomanCandle(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_RomanCandle = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "romancandle_drop";
			type = "_RomanCandle";
			weaponSKU = "RomanCandle";
			spritewidth = 31;
			spriteheight = 9;
			spriteCenterX = 15;
			spriteCenterY = 4;
			spriteTargetX = 15;
			spriteTargetY = -4;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Rope (cactusGame.models.items.GameItem_Rope)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Rope extends GameItem {

		public function GameItem_Rope(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Rope = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "rope_drop";
			type = "_Rope";
			weaponSKU = "Rope";
			spritewidth = 28;
			spriteheight = 21;
			spriteCenterX = 14;
			spriteCenterY = 10;
			spriteTargetX = 14;
			spriteTargetY = 4;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Scorpion (cactusGame.models.items.GameItem_Scorpion)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Scorpion extends GameItem {

		public function GameItem_Scorpion(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Scorpion = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "scorpion_drop";
			type = "_Scorpion";
			weaponSKU = "Scorpion";
			spritewidth = 22;
			spriteheight = 32;
			spriteCenterX = 11;
			spriteCenterY = 16;
			spriteTargetX = 11;
			spriteTargetY = 17;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 10;
			sheetHeight = 1;
			flipBlitOffset = 0;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
			animCycleFrames = ["anim", 2, 1, 0, 0, [0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9]];
			flickerCycleFrames = ["flicker", 2, 1, 0, 0, [0, 99, 2, 99, 4, 99, 6, 99, 4, 99, 2, 99]];
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Scythe (cactusGame.models.items.GameItem_Scythe)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Scythe extends GameItem {

		public function GameItem_Scythe(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Scythe = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "scythe_drop";
			type = "_Scythe";
			weaponSKU = "Scythe";
			spritewidth = 91;
			spriteheight = 42;
			spriteCenterX = 45;
			spriteCenterY = 21;
			spriteTargetX = 45;
			spriteTargetY = -1;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Shotgun (cactusGame.models.items.GameItem_Shotgun)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Shotgun extends GameItem {

		public function GameItem_Shotgun(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Shotgun = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "shotgun_drop";
			type = "_Shotgun";
			weaponSKU = "Shotgun";
			spritewidth = 63;
			spriteheight = 19;
			spriteCenterX = 32;
			spriteCenterY = 9;
			spriteTargetX = 32;
			spriteTargetY = 0;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Shovel (cactusGame.models.items.GameItem_Shovel)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Shovel extends GameItem {

		public function GameItem_Shovel(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Shovel = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "shovel_drop";
			type = "_Shovel";
			weaponSKU = "Shovel";
			spritewidth = 61;
			spriteheight = 18;
			spriteCenterX = 30;
			spriteCenterY = 9;
			spriteTargetX = 30;
			spriteTargetY = 5;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Sickle (cactusGame.models.items.GameItem_Sickle)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Sickle extends GameItem {

		public function GameItem_Sickle(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Sickle = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "sickle_drop";
			type = "_Sickle";
			weaponSKU = "Sickle";
			spritewidth = 43;
			spriteheight = 23;
			spriteCenterX = 21;
			spriteCenterY = 11;
			spriteTargetX = 21;
			spriteTargetY = 5;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_SquirtGun (cactusGame.models.items.GameItem_SquirtGun)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_SquirtGun extends GameItem {

		public function GameItem_SquirtGun(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_SquirtGun = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "squirtgun_drop";
			type = "_SquirtGun";
			weaponSKU = "SquirtGun";
			spritewidth = 34;
			spriteheight = 23;
			spriteCenterX = 17;
			spriteCenterY = 11;
			spriteTargetX = 17;
			spriteTargetY = 11;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Stick (cactusGame.models.items.GameItem_Stick)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Stick extends GameItem {

		public function GameItem_Stick(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Stick = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "stick_drop";
			type = "_Stick";
			weaponSKU = "Stick";
			spritewidth = 47;
			spriteheight = 27;
			spriteCenterX = 23;
			spriteCenterY = 13;
			spriteTargetX = 23;
			spriteTargetY = 9;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_SubMachineGun (cactusGame.models.items.GameItem_SubMachineGun)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_SubMachineGun extends GameItem {

		public function GameItem_SubMachineGun(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_SubMachineGun = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "submachinegun_drop";
			type = "_SubMachineGun";
			weaponSKU = "SubMachineGun";
			spritewidth = 56;
			spriteheight = 20;
			spriteCenterX = 28;
			spriteCenterY = 10;
			spriteTargetX = 28;
			spriteTargetY = 6;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_TearGas (cactusGame.models.items.GameItem_TearGas)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_TearGas extends GameItem {

		public function GameItem_TearGas(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_TearGas = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "teargas_drop";
			type = "_TearGas";
			weaponSKU = "TearGas";
			spritewidth = 22;
			spriteheight = 24;
			spriteCenterX = 11;
			spriteCenterY = 12;
			spriteTargetX = 11;
			spriteTargetY = 10;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_ThornWhip (cactusGame.models.items.GameItem_ThornWhip)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_ThornWhip extends GameItem {

		public function GameItem_ThornWhip(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_ThornWhip = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "thornwhip_drop";
			type = "_ThornWhip";
			weaponSKU = "ThornWhip";
			spritewidth = 43;
			spriteheight = 28;
			spriteCenterX = 21;
			spriteCenterY = 14;
			spriteTargetX = 21;
			spriteTargetY = 10;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_TNT (cactusGame.models.items.GameItem_TNT)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_TNT extends GameItem {

		public function GameItem_TNT(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_TNT = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "tnt_drop";
			type = "_TNT";
			weaponSKU = "TNT";
			spritewidth = 29;
			spriteheight = 22;
			spriteCenterX = 14;
			spriteCenterY = 11;
			spriteTargetX = 14;
			spriteTargetY = 9;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_Tomahawk (cactusGame.models.items.GameItem_Tomahawk)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_Tomahawk extends GameItem {

		public function GameItem_Tomahawk(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_Tomahawk = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "tomahawk_drop";
			type = "_Tomahawk";
			weaponSKU = "Tomahawk";
			spritewidth = 42;
			spriteheight = 28;
			spriteCenterX = 21;
			spriteCenterY = 14;
			spriteTargetX = 21;
			spriteTargetY = 14;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_TowChain (cactusGame.models.items.GameItem_TowChain)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_TowChain extends GameItem {

		public function GameItem_TowChain(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_TowChain = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "towchain_drop";
			type = "_TowChain";
			weaponSKU = "TowChain";
			spritewidth = 25;
			spriteheight = 17;
			spriteCenterX = 12;
			spriteCenterY = 8;
			spriteTargetX = 12;
			spriteTargetY = 0;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameItem_TwoByFour (cactusGame.models.items.GameItem_TwoByFour)
package cactusGame.models.items {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;

	public class GameItem_TwoByFour extends GameItem {

		public function GameItem_TwoByFour(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameItem_TwoByFour = this;
			if (_arg7){
				_local8.jumpspeed = _local8.jumpstart;
				_local8.jump = true;
				if (Math.random() > 0.5){
					_local8.dirx = 1;
				} else {
					_local8.dirx = 0;
				};
			};
		}
		override public function defineVars(){
			sheetname = "twobyfour_drop";
			type = "_TwoByFour";
			weaponSKU = "TwoByFour";
			spritewidth = 56;
			spriteheight = 14;
			spriteCenterX = 28;
			spriteCenterY = 7;
			spriteTargetX = 28;
			spriteTargetY = 2;
			height = 8;
			width = 8;
			collRect = new Rectangle(-8, -8, 16, 16);
			sheetWidth = 1;
			sheetHeight = 1;
			jumpstart = -10;
			gravity = 1;
			normalgravity = 1;
			speed = 2;
			bounceY = true;
			bounceDecayY = 0.5;
			foreground = false;
			points = 25;
			isWeapon = true;
			timeBeforeFlicker = 1;
			timeBeforeDisappear = 60;
		}

	}
}//package cactusGame.models.items 

****************

//GameObject1 (cactusGame.models.objects.GameObject1)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject1 extends GameObject {

		public var blankCycleFrames;
		public var frequency:Number;// = 30
		public var offsetter:Number;// = 0.2
		public var offScreenRange:Number;// = 2
		public var maxSpawns:Number;// = 2
		public var spawnEnemyID:Number;// = 3
		public var spawnWeaponSKU:String;// = "Banjo"
		public var spawnDirection:Number;// = -1
		public var currentSpawns:Number;// = 0
		public var spawnTimer:Number;// = 0
		public var spawnTally:Number;// = 0
		public var totalSpawns:Number;// = 2147483647
		public var shouldBeTriggered:Boolean;// = false

		public function GameObject1(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			var _local8:GameObject1;
			blankCycleFrames = ["blank", 1, 1, 0, 0, 0, 0];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			_local8 = this;
			if (_local8.shouldBeTriggered){
				_local8.isActivated = false;
				_local8.isDeactivated = true;
			} else {
				_local8.isActivated = true;
				_local8.isDeactivated = false;
			};
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			type = 1;
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			broadcastReceiptMethod = 3;
		}
		override public function saveObjectData(){
			var _local1:GameObject1 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.frequency);
			_local2.push(_local1.offsetter);
			_local2.push(_local1.offScreenRange);
			_local2.push(_local1.maxSpawns);
			_local2.push(_local1.spawnEnemyID);
			_local2.push(_local1.spawnWeaponSKU);
			_local2.push(_local1.totalSpawns);
			if (_local1.shouldBeTriggered){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.spawnTally);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject1 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.frequency = Number(_arg1[0]);
					_local2.spawnTimer = _local2.frequency;
				};
				if (_arg1.length > 1){
					_local2.offsetter = Number(_arg1[1]);
				};
				if (_arg1.length > 2){
					_local2.offScreenRange = Number(_arg1[2]);
				};
				if (_arg1.length > 3){
					_local2.maxSpawns = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.spawnEnemyID = Number(_arg1[4]);
				};
				if (_arg1.length > 5){
					_local2.spawnWeaponSKU = String(_arg1[5]);
				};
				if (_arg1.length > 6){
					_local2.totalSpawns = Number(_arg1[6]);
				};
				if (_arg1.length > 7){
					if (Number(_arg1[7]) == 1){
						_local2.shouldBeTriggered = true;
					} else {
						_local2.shouldBeTriggered = false;
					};
				};
				if (_arg1.length > 8){
					if (Number(_arg1[8]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
				if (_arg1.length > 9){
					_local2.spawnTally = Number(_arg1[9]);
				} else {
					_local2.spawnTally = 0;
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject1 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (_local2.checkOnScreen(_local1));
		}
		override public function updateObject(){
			var _local1:GameObject1 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local1.isActivated){
				if ((((((_local1.spawnTally >= _local1.totalSpawns)) && ((_local1.totalSpawns > 0)))) && ((_local1.currentSpawns == 0)))){
					_local1.deactivateObject();
				};
				if ((((((_local1.xtile > _local4.currentXtileRight)) && ((_local1.xtile <= (_local4.currentXtileRight + _local1.offScreenRange))))) || (_local1.shouldBeTriggered))){
					_local1.spawnTimer++;
					if (_local1.spawnTimer >= _local1.frequency){
						_local1.checkForSpawning();
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 1)){
					};
				};
			};
			_local1.updateSprite();
		}
		public function checkForSpawning(){
			var _local3:Array;
			var _local1:GameObject1 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			if ((((_local1.currentSpawns < _local1.maxSpawns)) && ((((_local1.spawnTally < _local1.totalSpawns)) || ((_local1.totalSpawns == 0)))))){
				if (Math.random() < _local1.offsetter){
					_local3 = [_local1.spawnDirection, _local1.spawnWeaponSKU, 0, _local1.id];
					if (_local1.shouldBeTriggered){
						_local3.push(1);
					};
					_local2.addEnemy(_local1.xtile, _local1.ytile, _local1.spawnEnemyID, _local1.whichScreen, 1, (_local2.counter + 1), _local3);
					_local1.spawnTally++;
					_local1.currentSpawns++;
					_local1.spawnTimer = 0;
				};
			};
		}
		override public function unregisterSpawn(){
			var _local1:GameObject1 = this;
			_local1.currentSpawns--;
			if (_local1.currentSpawns == (_local1.maxSpawns - 1)){
			};
			_local1.saveObjectData();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject10 (cactusGame.models.objects.GameObject10)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject10 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject10(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [2, 2, 2, 2, 2, 2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject10 = this;
		}
		override public function defineVars(){
			sheetname = "metalcrate_object_sheet";
			objectname = "Metal Crate";
			type = 10;
			spritewidth = 53;
			spriteheight = 54;
			spriteCenterX = 26;
			spriteCenterY = 27;
			spriteTargetX = 26;
			spriteTargetY = 29;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 70;
			canBeShot = true;
			shotByWeapons = ["Bazooka", "CherryBomb", "Grenade", "TNT"];
			canBeMeleed = false;
			canBeBrokenByObjects = true;
			brokenByObjects = ["TNTBarrel"];
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject10;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject10 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject10 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject10 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject10 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject10 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject10 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject10 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "MetalCrateBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "MetalCrateBreakEffect");
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("papow.wav");
				} else {
					_local2.gameObj.soundManager.playSound("impact_2.wav");
				};
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "MetalCrateBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "MetalCrateBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "MetalCrateBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_arg1 > 1){
					_local2.gameObj.challengeManager.recordTag("explodeMetalCrate");
					//unresolved jump
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject10 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject10 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject10 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject10 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject10 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject11 (cactusGame.models.objects.GameObject11)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject11 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject11(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [2, 2, 2, 2, 2, 2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject11 = this;
		}
		override public function defineVars(){
			sheetname = "templeblock_object_sheet";
			objectname = "Temple Block";
			type = 11;
			spritewidth = 53;
			spriteheight = 54;
			spriteCenterX = 26;
			spriteCenterY = 27;
			spriteTargetX = 26;
			spriteTargetY = 29;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 80;
			canBeShot = true;
			shotByWeapons = ["Bazooka", "CherryBomb", "Grenade", "TNT"];
			canBeMeleed = false;
			canBeBrokenByObjects = true;
			brokenByObjects = ["TNTBarrel"];
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject11;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject11 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject11 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject11 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject11 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject11 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject11 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject11 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "TempleBlockBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "TempleBlockBreakEffect");
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("papow.wav");
				} else {
					_local2.gameObj.soundManager.playSound("impact_1.wav");
				};
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "TempleBlockBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "TempleBlockBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "TempleBlockBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject11 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject11 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject11 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject11 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject11 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject12 (cactusGame.models.objects.GameObject12)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject12 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject12(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [5, 5, 5, 5, 5, 5];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject12 = this;
		}
		override public function defineVars(){
			sheetname = "barrel_object_sheet";
			objectname = "Barrel";
			type = 12;
			spritewidth = 38;
			spriteheight = 57;
			spriteCenterX = 19;
			spriteCenterY = 28;
			spriteTargetX = 19;
			spriteTargetY = 32;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-14, -24, 28, 48);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 50;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject12;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject12 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject12 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject12 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject12 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject12 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject12 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject12 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "BarrelBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "BarrelBreakEffect");
				_local2.gameObj.soundManager.playSound("hit_crate_2.wav");
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "BarrelBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "BarrelBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "BarrelBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject12 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject12 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject12 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject12 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject12 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject13 (cactusGame.models.objects.GameObject13)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject13 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var willExplode:Boolean;// = false
		public var explodeTimer:Number;// = 0
		public var explodeTimerMax:Number;// = 4
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true
		public var blastRect:Rectangle;

		public function GameObject13(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [5, 5, 5, 5, 5, 5];
			standingChars = [];
			blastRect = new Rectangle(-65, -65, 130, 130);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject13 = this;
		}
		override public function defineVars(){
			sheetname = "tntbarrel_object_sheet";
			objectname = "TNT Barrel";
			type = 13;
			spritewidth = 38;
			spriteheight = 57;
			spriteCenterX = 19;
			spriteCenterY = 28;
			spriteTargetX = 19;
			spriteTargetY = 32;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-14, -24, 28, 48);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 100;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject13 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject13 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject13 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject13 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject13 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject13 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
					if (_local1.willExplode){
						_local1.explodeTimer++;
						if (_local1.explodeTimer > _local1.explodeTimerMax){
							_local1.explodeObject();
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject13 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject13 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (((!(_local2.isStunned)) && (!(_local2.willExplode)))){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "TNTBarrelBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "TNTBarrelBreakEffect");
				_local2.gameObj.soundManager.playSound("hit_crate_2.wav");
			};
			_local2.isStunned = true;
			if ((((_local2.currentHealth <= 0)) && (!(_local2.willExplode)))){
				_local2.setupExplosion();
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject13 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject13 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject13 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject13 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject13 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local10:Enemy;
			var _local11:Rectangle;
			var _local12:Number;
			var _local3:GameObject = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:Number = 0;
			var _local9:* = 0;
			while (_local9 < _local6) {
				_local10 = _local5.enemies[_local9];
				_local11 = new Rectangle();
				_local11.x = (_local3.x + _local3.collRect.x);
				_local11.y = (_local3.y + _local3.collRect.y);
				_local11.width = _local3.collRect.width;
				_local11.height = _local3.collRect.height;
				if (_local10.checkSpriteCollision(_local11)){
					if (((!(_local10.isHit)) && (!(_local10.resistBullets)))){
						_local10.getHit(_local3.statAttack, _local3.dirx, true);
						_local7 = true;
						if (_local10.isDead){
							_local8++;
						};
					};
				};
				_local9++;
			};
			if (_local8 > 0){
				_local12 = 0;
				while (_local12 < _local8) {
					_local3.gameObj.challengeManager.recordTag("barrelEnemy");
					_local12++;
				};
			};
			_local3.gameObj.challengeManager.recordMultiExplosion(_local8);
			return (_local7);
		}
		public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:GameObject = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((((!((_local9 == _local2))) && (_local9.checkSpriteCollision(_local5)))) && (_local9.acceptsDamage("object", "TNTBarrel")))){
						_local9.getHit(_local2.statAttack);
						_local6 = true;
						if ((_local9 is GameObject17)){
							_local2.gameObj.challengeManager.recordTag("explodeBoulder");
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		public function setupExplosion(){
			var _local1:GameObject13 = this;
			_local1.willExplode = true;
			_local1.explodeTimer = 0;
		}
		public function explodeObject(){
			var _local1:GameObject13 = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:ItemManager = _local1.gameObj.itemManager;
			_local1.isShootable = false;
			_local1.blocksBullets = true;
			_local2.addEffect((_local1.x - 15), (_local1.y - 20), "TNTBarrelBreakEffect");
			_local2.addEffect((_local1.x + 8), (_local1.y - 10), "TNTBarrelBreakEffect");
			_local2.addEffect((_local1.x - 7), (_local1.y - 15), "TNTBarrelBreakEffect");
			_local1.collRect = _local1.blastRect;
			_local1.checkHittingEnemies();
			_local1.checkHittingObjects();
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local2.addEffect((_local1.x - 12), (_local1.y + 6), "ExplosionEffect", "delay1");
			_local2.addEffect((_local1.x + 12), (_local1.y - 6), "ExplosionEffect", "delay2");
			_local2.addEffect((_local1.x - 16), (_local1.y - 8), "ExplosionEffect", "delay3");
			_local1.gameObj.gameCam.setCameraJiggle(8, 10);
			if (((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && (_local1.showItemWhenBroken))){
				_local4.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
			};
			if (_local1.rememberBroken){
				_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), [0]);
			};
			_local1.gameObj.objectManager.removeObject(_local1.id);
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject14 (cactusGame.models.objects.GameObject14)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject14 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var stage4CycleFrames:Array;
		public var isExploding:Boolean;// = false
		public var explosionTimer:Number;// = 0
		public var explosionTimerMax:Number;// = 30
		public var explosionTimerInterval:Number;// = 11
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject14(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			stage4CycleFrames = ["stage4", 2, 1, 0, 0, [3]];
			spriteFrameOffsets = [2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject14 = this;
		}
		override public function defineVars(){
			sheetname = "tallgrass_object_sheet";
			objectname = "Tall Grass";
			type = 14;
			spritewidth = 51;
			spriteheight = 130;
			spriteCenterX = 25;
			spriteCenterY = 65;
			spriteTargetX = 25;
			spriteTargetY = 105;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = false;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 30;
			canBeShot = false;
			canBeMeleed = true;
			meleedByWeapons = ["Sickle", "Scythe", "Machete", "Longsword", "Cutlass", "Katana"];
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject14 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject14 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject14 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject14 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								_local1.getHit();
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isExploding){
						} else {
							if (_local1.isStunned){
								_local1.stunTimer++;
								if (_local1.stunTimer >= _local1.stunTimerMax){
									_local1.isStunned = false;
									_local1.stunTimer = 0;
								};
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject14 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject14 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("hit_crate_1.wav");
				} else {
					_local2.gameObj.soundManager.playSound("hit_crate_1.wav");
				};
			};
			_local5.addEffect((_local2.x - 5), (_local2.y - 5), "TallGrassBreakEffect");
			_local5.addEffect((_local2.x + 12), (_local2.y + 2), "TallGrassBreakEffect");
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "TallGrassBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "TallGrassBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "TallGrassBreakEffect");
				if (!_local2.jump){
					_local2.gameObj.challengeManager.recordTag("cutGrass");
					//unresolved jump
				};
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject14 = this;
			_local1.isExploding = true;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject14 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject14 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject14 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject14 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject15 (cactusGame.models.objects.GameObject15)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject15 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject15(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [5, 5, 5, 5, 5, 5];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject15 = this;
		}
		override public function defineVars(){
			sheetname = "templevase_object_sheet";
			objectname = "Temple Vase";
			type = 15;
			spritewidth = 46;
			spriteheight = 84;
			spriteCenterX = 23;
			spriteCenterY = 42;
			spriteTargetX = 23;
			spriteTargetY = 59;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 50;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject15;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject15 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject15 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject15 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject15 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject15 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject15 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject15 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "TempleVaseBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "TempleVaseBreakEffect");
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("breakvase.wav");
				} else {
					_local2.gameObj.soundManager.playSound("impact_2.wav");
				};
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "TempleVaseBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "TempleVaseBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "TempleVaseBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.challengeManager.recordTag("brokenVase");
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject15 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject15 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject15 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject15 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject15 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject16 (cactusGame.models.objects.GameObject16)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject16 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject16(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [2, 2, 2, 2, 2, 2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject16 = this;
		}
		override public function defineVars(){
			sheetname = "minecart_object_sheet";
			objectname = "Mine Cart";
			type = 16;
			spritewidth = 72;
			spriteheight = 57;
			spriteCenterX = 36;
			spriteCenterY = 28;
			spriteTargetX = 36;
			spriteTargetY = 32;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 70;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject16;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject16 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject16 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject16 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject16 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject16 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject16 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject16 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "MineCartBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "MineCartBreakEffect");
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("hit_crate_2.wav");
				} else {
					_local2.gameObj.soundManager.playSound("impact_2.wav");
				};
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 20), (_local2.y - 10), "MineCartBreakEffect");
				_local5.addEffect((_local2.x + 24), (_local2.y + 15), "MineCartBreakEffect");
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "MineCartBreakEffect", "piece2");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "MineCartBreakEffect", "piece2");
				_local5.addEffect((_local2.x - 20), (_local2.y - 12), "MineCartBreakEffect", "piece2");
				_local5.addEffect((_local2.x + 12), (_local2.y - 17), "MineCartBreakEffect", "piece3");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "MineCartBreakEffect", "piece3");
				_local5.addEffect((_local2.x + 4), (_local2.y - 7), "MineCartBreakEffect", "piece4");
				_local5.addEffect((_local2.x - 11), (_local2.y - 3), "MineCartBreakEffect", "piece4");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject16 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject16 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject16 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject16 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject16 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject17 (cactusGame.models.objects.GameObject17)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject17 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject17(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [2, 2, 2, 2, 2, 2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject17 = this;
		}
		override public function defineVars(){
			sheetname = "boulder_object_sheet";
			objectname = "Boulder";
			type = 17;
			spritewidth = 60;
			spriteheight = 60;
			spriteCenterX = 30;
			spriteCenterY = 30;
			spriteTargetX = 30;
			spriteTargetY = 35;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 80;
			canBeShot = true;
			shotByWeapons = ["Bazooka", "CherryBomb", "Grenade", "TNT"];
			canBeMeleed = false;
			canBeBrokenByObjects = true;
			brokenByObjects = ["TNTBarrel"];
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject17;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject17 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject17 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject17 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject17 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject17 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject17 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject17 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "BoulderBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "BoulderBreakEffect");
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("papow.wav");
				} else {
					_local2.gameObj.soundManager.playSound("impact_2.wav");
				};
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "BoulderBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "BoulderBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "BoulderBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject17 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject17 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject17 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject17 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject17 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject18 (cactusGame.models.objects.GameObject18)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject18 extends GameObject {

		public var timesToPassBy:Number;// = 5
		public var passByTally:Number;// = 0
		public var appearedOnScreen:Boolean;// = false
		public var normalTargetY:Number;// = 154
		public var targetYrange:Number;// = 30
		public var xOffsetRange:Number;// = 35

		public function GameObject18(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject18 = this;
		}
		override public function defineVars(){
			sheetname = "blurry_cactus_sheet";
			objectname = "Train Cactus";
			type = 18;
			spritewidth = 69;
			spriteheight = 170;
			spriteCenterX = 34;
			spriteCenterY = 85;
			spriteTargetX = 34;
			spriteTargetY = 154;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			speed = 28;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject18 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 2))) && ((_local1.xtile < (_local2.currentXtileRight + 2))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject18 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.timesToPassBy = Number(_arg1[0]);
				};
			};
		}
		override public function updateObject(){
			var _local1:GameObject18 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.updateSprite();
			if (((_local1.checkOnScreen()) && (!(_local1.appearedOnScreen)))){
				_local1.appearedOnScreen = true;
			};
			if (_local1.appearedOnScreen){
				_local1.x = (_local1.x - _local1.speed);
				_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
				if (_local1.xtile < (_local4.currentXtileLeft - 2)){
					_local1.passByTally++;
					if ((((_local1.passByTally < _local1.timesToPassBy)) || ((_local1.timesToPassBy == 0)))){
						_local1.x = (((_local4.currentXtileRight + 1) + Math.floor((Math.random() * _local1.xOffsetRange))) * _local4.tileWidth);
						_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
						_local1.spriteTargetY = (_local1.normalTargetY - Math.floor((Math.random() * _local1.targetYrange)));
					} else {
						_local3.removeObject(_local1.id);
					};
				};
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject19 (cactusGame.models.objects.GameObject19)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject19 extends GameObject {

		public function GameObject19(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject19 = this;
		}
		override public function defineVars(){
			sheetname = "wantedposter_object_sheet";
			objectname = "Wanted Poster";
			type = 19;
			spritewidth = 50;
			spriteheight = 58;
			spriteCenterX = 25;
			spriteCenterY = 29;
			spriteTargetX = 25;
			spriteTargetY = 16;
			sheetWidth = 9;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [8, 7, 6, 5, 4, 3, 2, 1, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 99]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject19 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject19;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function updateObject(){
			var _local7:Rectangle;
			var _local1:GameObject19 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			var _local6:CactusChar = CactusChar(_local1.gameObj.playerObj);
			if (((((_local1.isActivated) && (!(_local1.isDeactivated)))) && (!(_local1.isDeactivating)))){
				_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
				if (_local6.checkSpriteCollision(_local7)){
					_local1.deactivateObject();
				};
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject19 = this;
			_local1.gameObj.challengeManager.recordTag("wantedPoster");
		}
		override public function saveObjectData(){
			var _local1:GameObject19 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject2 (cactusGame.models.objects.GameObject2)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject2 extends GameObject {

		public var blankCycleFrames;
		public var frequency:Number;// = 30
		public var offsetter:Number;// = 0.2
		public var offScreenRange:Number;// = 2
		public var maxSpawns:Number;// = 2
		public var spawnEnemyID:Number;// = 3
		public var spawnWeaponSKU:String;// = "Banjo"
		public var spawnDirection:Number;// = 1
		public var currentSpawns:Number;// = 0
		public var spawnTimer:Number;// = 0
		public var spawnTally:Number;// = 0
		public var totalSpawns:Number;// = 2147483647
		public var shouldBeTriggered:Boolean;// = false

		public function GameObject2(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			var _local8:GameObject2;
			blankCycleFrames = ["blank", 1, 1, 0, 0, 0, 0];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			_local8 = this;
			if (_local8.shouldBeTriggered){
				_local8.isActivated = false;
				_local8.isDeactivated = true;
			} else {
				_local8.isActivated = true;
				_local8.isDeactivated = false;
			};
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			type = 2;
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			broadcastReceiptMethod = 3;
		}
		override public function saveObjectData(){
			var _local1:GameObject2 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.frequency);
			_local2.push(_local1.offsetter);
			_local2.push(_local1.offScreenRange);
			_local2.push(_local1.maxSpawns);
			_local2.push(_local1.spawnEnemyID);
			_local2.push(_local1.spawnWeaponSKU);
			_local2.push(_local1.totalSpawns);
			if (_local1.shouldBeTriggered){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.spawnTally);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.frequency = Number(_arg1[0]);
					_local2.spawnTimer = _local2.frequency;
				};
				if (_arg1.length > 1){
					_local2.offsetter = Number(_arg1[1]);
				};
				if (_arg1.length > 2){
					_local2.offScreenRange = Number(_arg1[2]);
				};
				if (_arg1.length > 3){
					_local2.maxSpawns = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.spawnEnemyID = Number(_arg1[4]);
				};
				if (_arg1.length > 5){
					_local2.spawnWeaponSKU = String(_arg1[5]);
				};
				if (_arg1.length > 6){
					_local2.totalSpawns = Number(_arg1[6]);
				};
				if (_arg1.length > 7){
					if (Number(_arg1[7]) == 1){
						_local2.shouldBeTriggered = true;
					} else {
						_local2.shouldBeTriggered = false;
					};
				};
				if (_arg1.length > 8){
					if (Number(_arg1[8]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
				if (_arg1.length > 9){
					_local2.spawnTally = Number(_arg1[9]);
				} else {
					_local2.spawnTally = 0;
				};
			};
		}
		override public function endAnimationCycle(){
			var _local1:GameObject = this;
			var _local2:String = _local1.cycleName;
			super.endAnimationCycle();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject2 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (_local2.checkOnScreen(_local1));
		}
		override public function updateObject(){
			var _local1:GameObject2 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local1.isActivated){
				if ((((((_local1.spawnTally >= _local1.totalSpawns)) && ((_local1.totalSpawns > 0)))) && ((_local1.currentSpawns == 0)))){
					_local1.deactivateObject();
				};
				if ((((((_local1.xtile < _local4.currentXtileLeft)) && ((_local1.xtile >= (_local4.currentXtileLeft - _local1.offScreenRange))))) || (_local1.shouldBeTriggered))){
					_local1.spawnTimer++;
					if (_local1.spawnTimer >= _local1.frequency){
						_local1.checkForSpawning();
					};
				};
			};
			_local1.updateSprite();
		}
		public function checkForSpawning(){
			var _local3:Array;
			var _local1:GameObject2 = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			if ((((_local1.currentSpawns < _local1.maxSpawns)) && ((((_local1.spawnTally < _local1.totalSpawns)) || ((_local1.totalSpawns == 0)))))){
				if (Math.random() < _local1.offsetter){
					_local3 = [_local1.spawnDirection, _local1.spawnWeaponSKU, 0, _local1.id];
					if (_local1.shouldBeTriggered){
						_local3.push(1);
					};
					_local2.addEnemy(_local1.xtile, _local1.ytile, _local1.spawnEnemyID, _local1.whichScreen, 1, (_local2.counter + 1), _local3);
					_local1.spawnTally++;
					_local1.currentSpawns++;
					_local1.spawnTimer = 0;
				};
			};
		}
		override public function unregisterSpawn(){
			var _local1:GameObject2 = this;
			_local1.currentSpawns--;
			if (_local1.currentSpawns == (_local1.maxSpawns - 1)){
			};
			_local1.saveObjectData();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject20 (cactusGame.models.objects.GameObject20)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject20 extends GameObject {

		public function GameObject20(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject20 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_attack";
			objectname = "Training: Attack";
			type = 20;
			spritewidth = 128;
			spriteheight = 96;
			spriteCenterX = 64;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local1:GameObject20 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			var _local6:String = _local4.getKeyLabel(DataManager.KEY_ATTACK);
			_local5.key_attack.text = _local6;
			var _local7:TextFormat = new TextFormat("Arial", 24, 15388854, true);
			if (_local6.length > 1){
				_local7.size = 12;
			};
			_local5.key_attack.setTextFormat(_local7);
			if (_local4.isArrow(_local6)){
				_local5.arrow.gotoAndStop(_local6);
				_local5.key_attack.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject20 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject20 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject20 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject21 (cactusGame.models.objects.GameObject21)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject21 extends GameObject {

		public function GameObject21(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject21 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_aim";
			objectname = "Training: Aim";
			type = 21;
			spritewidth = 192;
			spriteheight = 96;
			spriteCenterX = 96;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject21 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_UP);
			_local5.key_up.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_up.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_up.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			_local7 = _local4.getKeyLabel(DataManager.KEY_ATTACK);
			_local5.key_attack.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_attack.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow2.gotoAndStop(_local7);
				_local5.key_attack.text = "";
			} else {
				_local5.arrow2.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject21 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject21 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (true);
		}
		override public function updateObject(){
			var _local1:GameObject21 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject22 (cactusGame.models.objects.GameObject22)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject22 extends GameObject {

		public function GameObject22(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject22 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_move";
			objectname = "Training: Move";
			type = 22;
			spritewidth = 192;
			spriteheight = 64;
			spriteCenterX = 96;
			spriteCenterY = 32;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject22 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_LEFT);
			_local5.key_left.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_left.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_left.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			_local7 = _local4.getKeyLabel(DataManager.KEY_RIGHT);
			_local5.key_right.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_right.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow2.gotoAndStop(_local7);
				_local5.key_right.text = "";
			} else {
				_local5.arrow2.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject22 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject22 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject22 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject23 (cactusGame.models.objects.GameObject23)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject23 extends GameObject {

		public function GameObject23(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject23 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_jump";
			objectname = "Training: Jump";
			type = 23;
			spritewidth = 64;
			spriteheight = 96;
			spriteCenterX = 32;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject23 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_JUMP);
			_local5.key_jump.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_jump.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_jump.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject23 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject23 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject23 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject24 (cactusGame.models.objects.GameObject24)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject24 extends GameObject {

		public function GameObject24(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject24 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_dropdown";
			objectname = "Training: Drop Down";
			type = 24;
			spritewidth = 128;
			spriteheight = 96;
			spriteCenterX = 64;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject24 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DOWN);
			_local5.key_down.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_down.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_down.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			_local7 = _local4.getKeyLabel(DataManager.KEY_JUMP);
			_local5.key_jump.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_jump.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow2.gotoAndStop(_local7);
				_local5.key_jump.text = "";
			} else {
				_local5.arrow2.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject24 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject24 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject24 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject25 (cactusGame.models.objects.GameObject25)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject25 extends GameObject {

		public function GameObject25(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject25 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_crate";
			objectname = "Training: Crate";
			type = 25;
			spritewidth = 160;
			spriteheight = 96;
			spriteCenterX = 80;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject25 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DOWN);
			_local5.key_down.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_down.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_down.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject25 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject25 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject25 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject26 (cactusGame.models.objects.GameObject26)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject26 extends GameObject {

		public function GameObject26(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject26 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_dropweapon";
			objectname = "Training: Drop Weapon";
			type = 26;
			spritewidth = 64;
			spriteheight = 96;
			spriteCenterX = 32;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject26 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DROP);
			_local5.key_drop.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_drop.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_drop.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject26 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject26 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject26 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject27 (cactusGame.models.objects.GameObject27)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject27 extends GameObject {

		public function GameObject27(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject27 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_moveropes";
			objectname = "Training: Move Ropes";
			type = 27;
			spritewidth = 160;
			spriteheight = 96;
			spriteCenterX = 80;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject27 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_LEFT);
			_local5.key_left.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_left.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_left.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			_local7 = _local4.getKeyLabel(DataManager.KEY_RIGHT);
			_local5.key_right.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_right.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow2.gotoAndStop(_local7);
				_local5.key_right.text = "";
			} else {
				_local5.arrow2.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject27 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject27 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject27 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject28 (cactusGame.models.objects.GameObject28)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject28 extends GameObject {

		public function GameObject28(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject28 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_droprope";
			objectname = "Training: Drop From Rope";
			type = 28;
			spritewidth = 160;
			spriteheight = 96;
			spriteCenterX = 80;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject28 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DOWN);
			_local5.key_drop.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_drop.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_drop.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject28 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject28 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject28 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject29 (cactusGame.models.objects.GameObject29)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject29 extends GameObject {

		public function GameObject29(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject29 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_dropobject";
			objectname = "Training: Drop Object";
			type = 29;
			spritewidth = 64;
			spriteheight = 96;
			spriteCenterX = 32;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject29 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DROP);
			_local5.key_drop.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_drop.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_drop.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject29 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject29 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject29 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject3 (cactusGame.models.objects.GameObject3)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject3 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var stage4CycleFrames:Array;
		public var isExploding:Boolean;// = false
		public var explosionTimer:Number;// = 0
		public var explosionTimerMax:Number;// = 30
		public var explosionTimerInterval:Number;// = 11
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject3(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			stage4CycleFrames = ["stage4", 2, 1, 0, 0, [3]];
			spriteFrameOffsets = [2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject3 = this;
		}
		override public function defineVars(){
			sheetname = "crate_object_sheet";
			objectname = "Crate";
			type = 3;
			spritewidth = 53;
			spriteheight = 54;
			spriteCenterX = 26;
			spriteCenterY = 27;
			spriteTargetX = 26;
			spriteTargetY = 29;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 50;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject3 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject3 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject3 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject3 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject3 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Boolean;
			var _local8:*;
			var _local9:Character;
			var _local1:GameObject3 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local7 = _local1.checkHittingEnemies();
							if (_local7){
								_local1.gameObj.challengeManager.recordTag("crateOnEnemy");
							};
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isExploding){
						} else {
							if (_local1.isStunned){
								_local1.stunTimer++;
								if (_local1.stunTimer >= _local1.stunTimerMax){
									_local1.isStunned = false;
									_local1.stunTimer = 0;
								};
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local8 = (_local1.standingChars.length - 1);
					while (_local8 >= 0) {
						_local9 = _local1.standingChars[_local8];
						_local9.y = (((_local1.y - _local1.spriteTargetY) - _local9.height) + _local1.standOffset);
						_local9.ytile = Math.floor((_local9.y / _local4.tileWidth));
						_local8--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject3 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject3 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local2.gameObj.soundManager.playSound("hit_crate_2.wav");
			};
			_local5.addEffect((_local2.x - 5), (_local2.y - 5), "CrateBreakEffect");
			_local5.addEffect((_local2.x + 12), (_local2.y + 2), "CrateBreakEffect");
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "CrateBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "CrateBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "CrateBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject3 = this;
			_local1.isExploding = true;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject3 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject3 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject3 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject3 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject30 (cactusGame.models.objects.GameObject30)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject30 extends GameObject {

		public function GameObject30(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject30 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_jumpladder";
			objectname = "Training: Jump Ladder";
			type = 30;
			spritewidth = 160;
			spriteheight = 96;
			spriteCenterX = 80;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject30 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_JUMP);
			_local5.key_jump.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_jump.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_jump.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject30 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject30 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject30 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject31 (cactusGame.models.objects.GameObject31)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject31 extends GameObject {

		public function GameObject31(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject31 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_diagonal";
			objectname = "Training: Diagonal";
			type = 31;
			spritewidth = 160;
			spriteheight = 96;
			spriteCenterX = 80;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject31 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_UP);
			_local5.key_up.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_up.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_up.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			_local7 = _local4.getKeyLabel(DataManager.KEY_RIGHT);
			_local5.key_right.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_right.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow2.gotoAndStop(_local7);
				_local5.key_right.text = "";
			} else {
				_local5.arrow2.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject31 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject31 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject31 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject32 (cactusGame.models.objects.GameObject32)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject32 extends GameObject {

		public function GameObject32(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject32 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_pickup";
			objectname = "Training: Pickup";
			type = 32;
			spritewidth = 128;
			spriteheight = 128;
			spriteCenterX = 64;
			spriteCenterY = 64;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject32 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DOWN);
			_local5.key_down.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_down.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_down.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject32 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject32 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject32 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject33 (cactusGame.models.objects.GameObject33)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject33 extends GameObject {

		public function GameObject33(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject33 = this;
		}
		override public function defineVars(){
			sheetname = "training_attack_sheet";
			objectname = "Attack Sign";
			type = 33;
			spritewidth = 64;
			spriteheight = 26;
			spriteCenterX = 32;
			spriteCenterY = 13;
			spriteTargetX = 32;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject33 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject33 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject34 (cactusGame.models.objects.GameObject34)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject34 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var rememberBroken:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject34(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject34 = this;
		}
		override public function defineVars(){
			sheetname = "derringertarget_object_sheet";
			objectname = "Derringer Target";
			type = 34;
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-12, -12, 24, 24);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 1;
			maxHealth = 1;
			foreground = false;
			isSteppable = false;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 1;
			canBeShot = true;
			shotByWeapons = ["Derringer"];
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject34 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject34 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject34 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject34 = this;
			_local1.updateSprite();
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject34;
			_local2 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
			};
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x + 8), (_local2.y - 8), "DerringerTargetBreakEffect", "piece1");
				_local5.addEffect((_local2.x - 8), (_local2.y - 8), "DerringerTargetBreakEffect", "piece2");
				_local5.addEffect((_local2.x + 8), (_local2.y + 8), "DerringerTargetBreakEffect", "piece3");
				_local5.addEffect((_local2.x - 8), (_local2.y + 8), "DerringerTargetBreakEffect", "piece4");
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.soundManager.playSound("breaktarget.wav");
				_local2.gameObj.challengeManager.recordTag("shotTarget");
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject35 (cactusGame.models.objects.GameObject35)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject35 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var rememberBroken:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject35(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject35 = this;
		}
		override public function defineVars(){
			sheetname = "scorpiontarget_object_sheet";
			objectname = "Scorpion Target";
			type = 35;
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 1;
			maxHealth = 1;
			foreground = false;
			isSteppable = false;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 1;
			canBeShot = true;
			shotByWeapons = ["Scorpion"];
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject35 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject35 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject35 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject35 = this;
			_local1.updateSprite();
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject35;
			_local2 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
			};
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x + 8), (_local2.y - 8), "ScorpionTargetBreakEffect", "piece1");
				_local5.addEffect((_local2.x - 8), (_local2.y - 8), "ScorpionTargetBreakEffect", "piece2");
				_local5.addEffect((_local2.x + 8), (_local2.y + 8), "ScorpionTargetBreakEffect", "piece3");
				_local5.addEffect((_local2.x - 8), (_local2.y + 8), "ScorpionTargetBreakEffect", "piece4");
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.soundManager.playSound("breaktarget.wav");
				_local2.gameObj.challengeManager.recordTag("scorpionBroken");
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject36 (cactusGame.models.objects.GameObject36)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;
	import cactusGame.models.effects.*;

	public class GameObject36 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var rememberBroken:Boolean;// = false
		public var canBreak:Boolean;// = true
		public var fireEffectID:Number;// = -1

		public function GameObject36(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			var _local9:EffectManager;
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject36 = this;
			if (_local8.isActivated){
				_local9 = _local8.gameObj.effectManager;
				_local8.fireEffectID = _local9.addEffect((_local8.x + 5), (_local8.y + 8), "TorchFlameEffect");
			};
		}
		override public function defineVars(){
			sheetname = "torch_object_sheet";
			objectname = "Torch to Water";
			type = 36;
			spritewidth = 32;
			spriteheight = 64;
			spriteCenterX = 16;
			spriteCenterY = 32;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 11;
			sheetHeight = 1;
			collRect = new Rectangle(-11, -8, 32, 32);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 10, 10, 10];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]];
			isActivated = true;
			currentHealth = 1;
			maxHealth = 1;
			foreground = false;
			isSteppable = false;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 1;
			canBeShot = true;
			shotByWeapons = ["SquirtGun"];
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject36 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject36 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject36 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject36 = this;
			_local1.updateSprite();
		}
		override public function getHit(_arg1:Number=1){
			var effect:Effect;
			var amount = _arg1;
			var ob:GameObject36 = this;
			var manager:ObjectManager = ob.gameObj.objectManager;
			var itemManager:ItemManager = ob.gameObj.itemManager;
			var fx:EffectManager = ob.gameObj.effectManager;
			if (((((ob.isActivated) && (!(ob.isDeactivating)))) && (!(ob.isDeactivated)))){
				ob.canBeShot = false;
				ob.canBeMeleed = false;
				ob.canBeBrokenByObjects = false;
				ob.blocksBullets = true;
				try {
					if (ob.fireEffectID > -1){
						effect = ob.gameObj.effectManager.getEffect(ob.fireEffectID);
						if (effect != null){
							TorchFlameEffect(effect).fadeOut();
							ob.fireEffectID = -1;
						};
					};
				} catch(err) {
				};
				ob.deactivateObject();
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject36 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			_local1.gameObj.challengeManager.recordTag("waterTorch");
			super.finishDeactivatingObject();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject37 (cactusGame.models.objects.GameObject37)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject37 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var rememberBroken:Boolean;// = false
		public var canBreak:Boolean;// = true
		public var fireEffectID:Number;// = -1

		public function GameObject37(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			var _local9:EffectManager;
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject37 = this;
			if (_local8.isDeactivated){
				_local9 = _local8.gameObj.effectManager;
				_local8.fireEffectID = _local9.addEffect((_local8.x + 5), (_local8.y + 8), "TorchFlameEffect");
			};
		}
		override public function defineVars(){
			sheetname = "torch_object_sheet";
			objectname = "Torch to Light";
			type = 37;
			spritewidth = 32;
			spriteheight = 64;
			spriteCenterX = 16;
			spriteCenterY = 32;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 11;
			sheetHeight = 1;
			collRect = new Rectangle(-11, -8, 32, 32);
			activeCycleFrames = ["active", 1, 1, 0, 10, 10, 10];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]];
			isActivated = true;
			currentHealth = 1;
			maxHealth = 1;
			foreground = false;
			isSteppable = false;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 1;
			canBeShot = true;
			shotByWeapons = ["Flamethrower"];
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject37 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject37 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject37 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject37 = this;
			_local1.updateSprite();
		}
		override public function saveObjectData(){
			var _local1:GameObject37 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject37 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (((((_local2.isActivated) && (!(_local2.isDeactivating)))) && (!(_local2.isDeactivated)))){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local2.deactivateObject();
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject37 = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			_local1.gameObj.challengeManager.recordTag("torchLit");
			var _local2:EffectManager = _local1.gameObj.effectManager;
			_local1.fireEffectID = _local2.addEffect((_local1.x + 5), (_local1.y + 8), "TorchFlameEffect");
			super.finishDeactivatingObject();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject38 (cactusGame.models.objects.GameObject38)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject38 extends GameObject {

		public function GameObject38(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject38 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_chest";
			objectname = "Training: Chest";
			type = 38;
			spritewidth = 96;
			spriteheight = 96;
			spriteCenterX = 48;
			spriteCenterY = 48;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject38 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_DOWN);
			_local5.key_down.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_down.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_down.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject38 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject38 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject38 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject39 (cactusGame.models.objects.GameObject39)
package cactusGame.models.objects {
	import flash.display.*;
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.text.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject39 extends GameObject {

		public function GameObject39(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject39 = this;
			_local8.createTrainingSign();
		}
		override public function defineVars(){
			sheetname = "trainingsign_throw";
			objectname = "Training: Throw";
			type = 39;
			spritewidth = 192;
			spriteheight = 64;
			spriteCenterX = 96;
			spriteCenterY = 32;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		public function createTrainingSign(){
			var _local6:TextFormat;
			var _local7:String;
			var _local1:GameObject39 = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:UserData = _local1.gameObj.userData;
			var _local4:DataManager = _local1.gameObj.dataManager;
			var _local5:MovieClip = _local1.gameObj.bitmapManager.loadMovieClip(_local1.sheetname);
			_local7 = _local4.getKeyLabel(DataManager.KEY_ATTACK);
			_local5.key_attack.text = _local7;
			_local6 = new TextFormat("Arial", 24, 15388854, true);
			if (_local7.length > 1){
				_local6.size = 12;
			};
			_local5.key_attack.setTextFormat(_local6);
			if (_local4.isArrow(_local7)){
				_local5.arrow.gotoAndStop(_local7);
				_local5.key_attack.text = "";
			} else {
				_local5.arrow.gotoAndStop("None");
			};
			if (_local2[("objectSheet" + _local1.type)]){
				_local2[("objectSheet" + _local1.type)].dispose();
			};
			_local2[("objectSheet" + _local1.type)] = new BitmapData(_local1.spritewidth, _local1.spriteheight, true, 0);
			BitmapData(_local2[("objectSheet" + _local1.type)]).draw(_local5);
			_local5 = null;
		}
		override public function updateTrainingSign(){
			var _local1:GameObject39 = this;
			_local1.createTrainingSign();
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject39 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 7))) && ((_local1.xtile < (_local2.currentXtileRight + 7))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject39 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject4 (cactusGame.models.objects.GameObject4)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject4 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var stage4CycleFrames:Array;
		public var isExploding:Boolean;// = false
		public var explosionTimer:Number;// = 0
		public var explosionTimerMax:Number;// = 30
		public var explosionTimerInterval:Number;// = 11
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject4(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			stage4CycleFrames = ["stage4", 2, 1, 0, 0, [3]];
			spriteFrameOffsets = [2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject4 = this;
		}
		override public function defineVars(){
			sheetname = "bramble_object_sheet";
			objectname = "Bramble Bush";
			type = 4;
			spritewidth = 59;
			spriteheight = 57;
			spriteCenterX = 29;
			spriteCenterY = 28;
			spriteTargetX = 29;
			spriteTargetY = 32;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = false;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 30;
			canBeShot = false;
			canBeMeleed = true;
			meleedByWeapons = ["Sickle", "Scythe", "Machete", "Longsword", "Cutlass", "Katana"];
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject4 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject4 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject4 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject4 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								_local1.getHit();
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isExploding){
						} else {
							if (_local1.isStunned){
								_local1.stunTimer++;
								if (_local1.stunTimer >= _local1.stunTimerMax){
									_local1.isStunned = false;
									_local1.stunTimer = 0;
								};
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject4 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject4 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				if (_local2.currentHealth == 0){
					_local2.gameObj.soundManager.playSound("hit_crate_1.wav");
				} else {
					_local2.gameObj.soundManager.playSound("hit_crate_1.wav");
				};
			};
			_local5.addEffect((_local2.x - 5), (_local2.y - 5), "BrambleBreakEffect");
			_local5.addEffect((_local2.x + 12), (_local2.y + 2), "BrambleBreakEffect");
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 15), (_local2.y - 20), "BrambleBreakEffect");
				_local5.addEffect((_local2.x + 8), (_local2.y - 10), "BrambleBreakEffect");
				_local5.addEffect((_local2.x - 7), (_local2.y - 15), "BrambleBreakEffect");
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (((_local2.showItemWhenBroken) || (!(_local2.releasedItem)))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.challengeManager.recordTag("brambleBreak");
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function destroy(){
			var _local1:GameObject4 = this;
			if (((_local1.isThrowing) && ((_local1.currentHealth > 0)))){
				if (_local1.rememberBroken){
					_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), [0]);
				};
				_local1.gameObj.challengeManager.recordTag("brambleBreak");
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject4 = this;
			_local1.isExploding = true;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject4 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject4 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject4 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject4 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject40 (cactusGame.models.objects.GameObject40)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject40 extends GameObject {

		public function GameObject40(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject40 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow1_sheet";
			objectname = "Arrow Sign";
			type = 40;
			spritewidth = 53;
			spriteheight = 73;
			spriteCenterX = 26;
			spriteCenterY = 36;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject40 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject40 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject41 (cactusGame.models.objects.GameObject41)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject41 extends GameObject {

		public function GameObject41(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject41 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow2_sheet";
			objectname = "Arrow Sign";
			type = 41;
			spritewidth = 61;
			spriteheight = 60;
			spriteCenterX = 30;
			spriteCenterY = 30;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject41 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject41 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject42 (cactusGame.models.objects.GameObject42)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject42 extends GameObject {

		public function GameObject42(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject42 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow3_sheet";
			objectname = "Arrow Sign";
			type = 42;
			spritewidth = 73;
			spriteheight = 53;
			spriteCenterX = 36;
			spriteCenterY = 26;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject42 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject42 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject43 (cactusGame.models.objects.GameObject43)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject43 extends GameObject {

		public function GameObject43(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject43 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow4_sheet";
			objectname = "Arrow Sign";
			type = 43;
			spritewidth = 61;
			spriteheight = 60;
			spriteCenterX = 30;
			spriteCenterY = 30;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject43 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject43 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject44 (cactusGame.models.objects.GameObject44)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject44 extends GameObject {

		public function GameObject44(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject44 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow5_sheet";
			objectname = "Arrow Sign";
			type = 44;
			spritewidth = 53;
			spriteheight = 73;
			spriteCenterX = 26;
			spriteCenterY = 36;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject44 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject44 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject45 (cactusGame.models.objects.GameObject45)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject45 extends GameObject {

		public function GameObject45(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject45 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow6_sheet";
			objectname = "Arrow Sign";
			type = 45;
			spritewidth = 61;
			spriteheight = 60;
			spriteCenterX = 30;
			spriteCenterY = 30;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject45 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject45 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject46 (cactusGame.models.objects.GameObject46)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject46 extends GameObject {

		public function GameObject46(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject46 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow7_sheet";
			objectname = "Arrow Sign";
			type = 46;
			spritewidth = 73;
			spriteheight = 53;
			spriteCenterX = 36;
			spriteCenterY = 26;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject46 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject46 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject47 (cactusGame.models.objects.GameObject47)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject47 extends GameObject {

		public function GameObject47(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject47 = this;
		}
		override public function defineVars(){
			sheetname = "sign_arrow8_sheet";
			objectname = "Arrow Sign";
			type = 47;
			spritewidth = 60;
			spriteheight = 60;
			spriteCenterX = 30;
			spriteCenterY = 30;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject47 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject47 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject48 (cactusGame.models.objects.GameObject48)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;

	public class GameObject48 extends GameObject {

		public function GameObject48(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject48 = this;
		}
		override public function defineVars(){
			sheetname = "sign_bottomlesspit_sheet";
			objectname = "Bottomless Pit Sign";
			type = 48;
			spritewidth = 52;
			spriteheight = 62;
			spriteCenterX = 26;
			spriteCenterY = 31;
			spriteTargetX = 26;
			spriteTargetY = 46;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject48 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject48 = this;
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject49 (cactusGame.models.objects.GameObject49)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject49 extends GameObject {

		public var itemInsideName:String;// = ""

		public function GameObject49(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject49 = this;
		}
		override public function defineVars(){
			sheetname = "suitcase_object_sheet";
			objectname = "Suitcase";
			type = 49;
			spritewidth = 55;
			spriteheight = 53;
			spriteCenterX = 27;
			spriteCenterY = 26;
			spriteTargetX = 27;
			spriteTargetY = 37;
			sheetWidth = 5;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -16, 52, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [3, 2, 1, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 1, 1, 2, 2, 3, 3, 4]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 4, 4, 4];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject49 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject49;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					};
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject49 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.itemInsideName);
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function updateObject(){
			var _local7:Rectangle;
			var _local1:GameObject49 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			var _local6:CactusChar = CactusChar(_local1.gameObj.playerObj);
			if (_local1.isActivated){
				_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
				if (((_local6.checkSpriteCollision(_local7)) && (_local6.duck))){
					_local1.deactivateObject();
				};
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject49 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			if (((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
			};
			_local1.gameObj.challengeManager.recordTag("openedLuggage");
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject5 (cactusGame.models.objects.GameObject5)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject5 extends GameObject {

		public function GameObject5(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject5 = this;
		}
		override public function defineVars(){
			sheetname = "bossdoor_object_sheet";
			objectname = "Boss Door";
			type = 5;
			spritewidth = 34;
			spriteheight = 128;
			spriteCenterX = 17;
			spriteCenterY = 64;
			spriteTargetX = 17;
			spriteTargetY = 16;
			sheetWidth = 5;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 4, 4, 4];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [3, 2, 1, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 1, 2, 3, 4]];
			isSolidActive = false;
			isSolidInactive = true;
			solidTilesRect = new Rectangle(0, 0, 1, 4);
			solidType = "collision";
			isShootable = false;
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			broadcastStyle = 2;
			broadcastReceiptMethod = 3;
			jigglecam = true;
			jiggleamount = 6;
			jiggleduration = 8;
		}
		override public function saveObjectData(){
			var _local1:GameObject5 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject5 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject5 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject5 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject5 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (_local1.checkOnScreen()){
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				_local1.updateSprite();
			};
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject5 = this;
			_local1.gameObj.soundManager.playSound("papow.wav");
		}
		override public function finishActivatingObject(){
			super.finishActivatingObject();
			var _local1:GameObject5 = this;
			_local1.gameObj.soundManager.playSound("papow.wav");
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject50 (cactusGame.models.objects.GameObject50)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject50 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30

		public function GameObject50(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject50 = this;
		}
		override public function defineVars(){
			sheetname = "statuebase_object_sheet";
			objectname = "Statue Pedestal";
			type = 50;
			spritewidth = 40;
			spriteheight = 16;
			spriteCenterX = 20;
			spriteCenterY = 8;
			spriteTargetX = 20;
			spriteTargetY = -6;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-6, -2, 12, 18);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = false;
			isSteppable = false;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 0;
			canBeShot = false;
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject50;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
						_local2.foreground = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
						_local2.foreground = true;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject50 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject50 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject50 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Boolean;
			var _local7:Rectangle;
			var _local8:*;
			var _local9:GameObject51;
			var _local1:GameObject50 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.isActivated){
				_local6 = false;
				_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
				_local8 = 0;
				while (_local8 < _local3.objects.length) {
					if ((((((((_local3.objects.length > _local8)) && (!((_local3.objects[_local8] == 0))))) && (!((_local3.objects[_local8] == null))))) && ((_local3.objects[_local8] is GameObject51)))){
						_local9 = _local3.objects[_local8];
						if (((((((((!(_local9.isGrabbed)) && (_local9.isActivated))) && (!(_local9.isDeactivating)))) && (!(_local9.isDeactivated)))) && (_local9.checkSpriteCollision(_local7)))){
							_local9.placeOnPedestal(_local1.xtile, _local1.ytile);
							_local6 = true;
							break;
						};
					};
					_local8++;
				};
				if (_local6){
					_local1.foreground = true;
					_local1.deactivateObject();
				};
			};
			_local1.updateSprite();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject51 (cactusGame.models.objects.GameObject51)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject51 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var activeYbuffer:Number;// = 8
		public var canAddDust:Boolean;// = true

		public function GameObject51(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject51 = this;
			if (_local8.isDeactivated){
				_local8.spriteTargetY = (_local8.spriteTargetY + _local8.activeYbuffer);
			};
		}
		override public function defineVars(){
			sheetname = "statue_object_sheet";
			objectname = "Statue";
			type = 51;
			spritewidth = 42;
			spriteheight = 138;
			spriteCenterX = 21;
			spriteCenterY = 69;
			spriteTargetX = 20;
			spriteTargetY = 114;
			sheetWidth = 5;
			sheetHeight = 1;
			collRect = new Rectangle(-18, -20, 36, 36);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 2, 1, 0, 8, [0, 1, 1, 2, 2, 3, 3, 4, 4, 3]];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = false;
			isGrabbable = true;
			grabWeight = 2;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 6;
			bounceY = true;
			bounceDecayY = 0.25;
			statAttack = 60;
			canBeShot = false;
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject51 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
						_local2.isActivating = false;
						_local2.isDeactivating = false;
						_local2.isGrabbable = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject51 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject51 = this;
			if (!_local1.isGrabbed){
				_local1.saveObjectData();
			};
		}
		public function placeOnPedestal(_arg1:Number, _arg2:Number){
			var _local3:GameObject51 = this;
			var _local4:GameDisplay = _local3.gameObj.gameDisplay;
			var _local5:EffectManager = _local3.gameObj.effectManager;
			if (((((_local3.isActivated) && (!(_local3.isDeactivating)))) && (!(_local3.isDeactivated)))){
				_local3.xtile = _arg1;
				_local3.ytile = _arg2;
				_local3.x = ((_local3.xtile * _local4.tileWidth) + (_local4.tileWidth / 2));
				_local3.y = ((_local3.ytile * _local4.tileWidth) + (_local4.tileWidth / 2));
				_local3.spriteTargetY = (_local3.spriteTargetY + _local3.activeYbuffer);
				_local5.addEffect(_local3.x, (_local3.y + 16), "DustEffect");
				_local5.addEffect((_local3.x - 6), (_local3.y + 16), "DustEffect");
				_local5.addEffect((_local3.x + 6), (_local3.y + 16), "DustEffect");
				_local5.addEffect((_local3.x - 12), (_local3.y + 16), "DustEffect", "anim", false, -1, 0);
				_local5.addEffect((_local3.x + 12), (_local3.y + 16), "DustEffect", "anim", false, 1, 0);
				_local3.isThrowing = false;
				_local3.isGrabbed = false;
				_local3.isGrabbable = false;
				_local3.jump = false;
				_local3.gameObj.challengeManager.recordTag("totemOnPedestal");
				_local3.deactivateObject();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject51 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject51 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Boolean;
			var _local1:GameObject51 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
				if (_local1.isThrowing){
					if (_local1.jump){
						_local6 = _local1.jumpspeed;
						_local1.jumpChar();
						if (_local1.dirx != 0){
							_local1.moveChar(_local1.dirx, 0, false, true, false);
						};
						_local7 = _local1.checkHittingEnemies();
						if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canAddDust))){
							_local5.addEffect(_local1.x, (_local1.y + 16), "DustEffect");
							_local5.addEffect((_local1.x - 6), (_local1.y + 16), "DustEffect");
							_local5.addEffect((_local1.x + 6), (_local1.y + 16), "DustEffect");
							_local5.addEffect((_local1.x - 12), (_local1.y + 16), "DustEffect", "anim", false, -1, 0);
							_local5.addEffect((_local1.x + 12), (_local1.y + 16), "DustEffect", "anim", false, 1, 0);
							_local1.canAddDust = false;
							_local1.gameObj.soundManager.playSound("papow.wav");
						};
					} else {
						_local1.canAddDust = true;
						_local1.isThrowing = false;
					};
				} else {
					if (_local1.isStunned){
						_local1.stunTimer++;
						if (_local1.stunTimer >= _local1.stunTimerMax){
							_local1.isStunned = false;
							_local1.stunTimer = 0;
						};
					};
				};
			};
			if (((((!(_local1.isGrabbed)) && (!(_local1.isThrowing)))) && (_local1.jump))){
				_local1.jumpChar();
			};
			_local1.updateSprite();
			_local1.gameObj.objectManager.checkSteppingOnObjects(_local1);
			_local1.fallChar();
		}
		override public function grabObject(){
			var _local1:GameObject51 = this;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (_local1.onMovingTile){
				if (_local1.whichMovingTile){
					_local1.whichMovingTile.stopStandingOnObject(_local1);
					_local1.onMovingTile = false;
					_local1.whichMovingTile = null;
				};
			};
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject52 (cactusGame.models.objects.GameObject52)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject52 extends GameObject {

		public var tilesWide:Number;// = 1
		public var tilesHigh:Number;// = 1

		public function GameObject52(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject52 = this;
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			objectname = "Train Car Sensor";
			type = 52;
			spritewidth = 32;
			spriteheight = 128;
			spriteCenterX = 16;
			spriteCenterY = 64;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 128);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
		}
		override public function saveObjectData(){
			var _local1:GameObject52 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.tilesWide);
			_local2.push(_local1.tilesHigh);
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject52 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.tilesWide = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.tilesHigh = Number(_arg1[1]);
				};
				_local2.collRect.x = -16;
				_local2.collRect.y = -16;
				_local2.collRect.width = (_local2.tilesWide * _local2.gameObj.gameDisplay.tileWidth);
				_local2.collRect.height = (_local2.tilesHigh * _local2.gameObj.gameDisplay.tileWidth);
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
					};
					_local2.saveState = true;
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject52 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if (((((_local1.xtile + _local1.tilesWide) > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:PlayerChar;
			var _local7:Rectangle;
			var _local1:GameObject52 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.checkOnScreen()){
				if (((((_local1.isActivated) && (!(_local1.isDeactivated)))) && (!(_local1.isDeactivating)))){
					_local6 = _local2.playerObj;
					_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
					if (_local6.checkSpriteCollision(_local7)){
						_local1.deactivateObject();
					};
				};
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject52 = this;
			_local1.gameObj.challengeManager.recordTag("enteredTrainCar");
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject53 (cactusGame.models.objects.GameObject53)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.media.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject53 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var standCycleFrames:Array;
		public var grabbedCycleFrames:Array;
		public var flyCycleFrames:Array;
		public var landCycleFrames:Array;
		public var walkCycleFrames:Array;
		public var peck1CycleFrames:Array;
		public var peck2CycleFrames:Array;
		public var turnCycleFrames:Array;
		public var isLanding:Boolean;// = false
		public var isPeckingLong:Boolean;// = false
		public var isPeckingShort:Boolean;// = false
		public var isResetting:Boolean;// = false
		public var crossRoomReset:Boolean;// = false
		public var originalXtile:Number;// = 0
		public var originalYtile:Number;// = 0
		public var xoffset:Number;// = 37
		public var featherTimer:Number;// = 0
		public var featherTimerInterval:Number;// = 10
		public var flapSoundTimer:Number;// = 0
		public var flapSoundTimerInterval:Number;// = 15
		public var flapSoundChannel:SoundChannel;

		public function GameObject53(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			standCycleFrames = ["stand", 2, 1, 0, 0, [15, 15, 15, 16, 16, 16, 17, 17, 17, 16, 16, 16]];
			grabbedCycleFrames = ["grabbed", 2, 1, 0, 0, [0, 1, 2, 1]];
			flyCycleFrames = ["fly", 2, 1, 0, 0, [3, 4, 5, 6, 7, 8]];
			landCycleFrames = ["land", 2, 1, 0, -1, [9, 10, 11, 12, 13, 14, 15]];
			walkCycleFrames = ["walk", 2, 1, 0, -1, [18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 28, 28]];
			peck1CycleFrames = ["peck1", 2, 1, 0, -1, [29, 30, 31, 32, 33, 34, 35, 36, 36, 36, 36, 36, 35, 34, 35, 36, 36, 35, 34, 33, 32, 31, 30, 29, 15]];
			peck2CycleFrames = ["peck2", 2, 1, 0, -1, [29, 30, 31, 32, 33, 34, 35, 36, 36, 35, 34, 34, 35, 36, 36, 35, 34, 33, 32, 31, 30, 29]];
			turnCycleFrames = ["turn", 2, 1, 0, -1, [37, 37, 38, 38, 39, 39, 40, 40, 41, 41]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject53 = this;
			if (Math.random() > 0.5){
				_local8.facingDir = 1;
				_local8.walkingDir = 1;
				_local8.dirx = 1;
			} else {
				_local8.facingDir = -1;
				_local8.walkingDir = -1;
				_local8.dirx = -1;
			};
			_local8.originalXtile = _local8.xtile;
			_local8.originalYtile = _local8.ytile;
		}
		override public function defineVars(){
			sheetname = "chicken_object_sheet";
			objectname = "Chicken";
			type = 53;
			spritewidth = 84;
			spriteheight = 72;
			spriteCenterX = 42;
			spriteCenterY = 36;
			spriteTargetX = 42;
			spriteTargetY = 36;
			flipBlitOffset = 144;
			sheetWidth = 21;
			sheetHeight = 4;
			collRect = new Rectangle(-18, -20, 36, 36);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 2, 1, 0, 8, [0, 1, 1, 2, 2, 3, 3, 4, 4, 3]];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [4, 3, 3, 2, 2, 1, 1, 0, 0, 0, 0, 0, 0, 1, 1, 2, 2, 2, 2, 2, 1, 1, 0, 0, 1, 1, 0, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = false;
			isGrabbable = true;
			grabWeight = 0;
			grabGravity = 0.05;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 10;
			speed = 1;
			walkspeed = 1;
			bounceY = true;
			bounceDecayY = 0.25;
			statAttack = 50;
			canBeShot = false;
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject53 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				} else {
					_local2.saveState = true;
				};
			} else {
				_local2.saveState = true;
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject53 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.saveState == true){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject53 = this;
			if (((!(_local1.isGrabbed)) && (!(_local1.crossRoomReset)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject53 = this;
			if (_local1.isTurning){
				_local2 = _local1.turnCycleFrames;
			} else {
				if (_local1.isLanding){
					_local2 = _local1.landCycleFrames;
				} else {
					if (_local1.isThrowing){
						_local2 = _local1.flyCycleFrames;
					} else {
						if (((_local1.isGrabbed) && (!(_local1.gameObj.playerObj.jump)))){
							_local2 = _local1.grabbedCycleFrames;
						} else {
							if (((_local1.isGrabbed) && (_local1.gameObj.playerObj.jump))){
								_local2 = _local1.flyCycleFrames;
							} else {
								if (_local1.jump){
									_local2 = _local1.flyCycleFrames;
								} else {
									if (_local1.isPeckingLong){
										_local2 = _local1.peck1CycleFrames;
									} else {
										if (_local1.isPeckingShort){
											_local2 = _local1.peck2CycleFrames;
										} else {
											if (_local1.isWalking){
												_local2 = _local1.walkCycleFrames;
											} else {
												_local2 = _local1.standCycleFrames;
											};
										};
									};
								};
							};
						};
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:GameObject53 = this;
			if (_local1.cycleName == "land"){
				_local1.isLanding = false;
			} else {
				if (_local1.cycleName == "walk"){
					_local1.isWalking = false;
				} else {
					if (_local1.cycleName == "peck1"){
						_local1.isPeckingLong = false;
					} else {
						if (_local1.cycleName == "peck2"){
							_local1.isPeckingShort = false;
						} else {
							if (_local1.cycleName == "turn"){
								_local1.isTurning = false;
								_local1.facingDir = (_local1.facingDir * -1);
								_local1.dirx = _local1.facingDir;
								_local1.walkingDir = _local1.facingDir;
								_local1.animationFrame = 15;
								_local1.cycleFrame = 0;
							};
						};
					};
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject53 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Boolean;
			var _local8:Number;
			var _local1:GameObject53 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.featherTimer++;
			if (((_local1.isThrowing) || (_local1.isResetting))){
				if (_local1.jump){
					_local6 = _local1.jumpspeed;
					if (((_local1.isResetting) && ((_local1.ytile < (_local1.originalYtile - 1))))){
						_local1.jumpChar(false);
					} else {
						_local1.jumpChar();
					};
					if (((!((_local1.dirx == 0))) && (!(_local1.isResetting)))){
						_local1.moveChar(_local1.dirx, 0, false, true, false);
						_local1.facingDir = _local1.dirx;
						_local1.walkingDir = _local1.dirx;
					};
					if (!_local1.isResetting){
						_local7 = _local1.checkHittingEnemies();
					};
					if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (!(_local1.isLanding)))){
						_local5.addEffect((_local1.x + 5), (_local1.y + 20), "DustEffect");
						_local5.addEffect((_local1.x - 5), (_local1.y + 20), "DustEffect");
						_local5.addEffect((_local1.x - 8), (_local1.y - 5), "FeatherEffect");
						_local5.addEffect((_local1.x + 9), (_local1.y - 7), "FeatherEffect");
						_local1.isLanding = true;
					};
					if ((_local1.featherTimer % _local1.featherTimerInterval) == 0){
						_local5.addEffect(_local1.x, _local1.y, "FeatherEffect");
					};
				} else {
					_local1.isThrowing = false;
					if (_local1.isResetting){
						_local1.isResetting = false;
					};
				};
			} else {
				if (_local1.isGrabbed){
					_local1.facingDir = _local1.gameObj.playerObj.facingDir;
					_local1.dirx = _local1.facingDir;
					_local1.walkingDir = _local1.facingDir;
					if (_local1.gameObj.playerObj.jump){
						if ((_local1.featherTimer % _local1.featherTimerInterval) == 0){
							_local5.addEffect(_local1.x, _local1.y, "FeatherEffect");
						};
					};
				} else {
					if (_local1.isWalking){
						if (_local1.dirx != 0){
							_local1.facingDir = _local1.dirx;
							_local1.walkingDir = _local1.dirx;
							_local1.speed = _local1.walkspeed;
							_local1.moveChar(_local1.dirx, 0, false, true, true);
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						} else {
							if (((((((!(_local1.isPeckingLong)) && (!(_local1.isPeckingShort)))) && (!(_local1.isWalking)))) && (!(_local1.isTurning)))){
								_local8 = Math.random();
								if (_local8 > 0.98){
									_local1.isPeckingLong = true;
									if (_local1.gameObj.gameDisplay.checkOnScreen(_local1)){
										_local1.gameObj.soundManager.playSound("chicken_cluck.wav");
									};
								} else {
									if (_local8 > 0.96){
										_local1.isPeckingShort = true;
									} else {
										if (_local8 > 0.94){
											_local1.isWalking = true;
										} else {
											if (_local8 > 0.92){
												_local1.isTurning = true;
											};
										};
									};
								};
							};
						};
					};
				};
			};
			if (((((((!(_local1.isGrabbed)) && (!(_local1.isThrowing)))) && (!(_local1.isResetting)))) && (_local1.jump))){
				_local1.jumpChar();
			};
			_local1.updateSprite();
			if (_local1.facingDir == 1){
				_local1.spriteTargetX = _local1.xoffset;
			} else {
				_local1.spriteTargetX = (_local1.spritewidth - _local1.xoffset);
			};
			_local1.gameObj.objectManager.checkSteppingOnObjects(_local1);
			_local1.fallChar();
			if (((((_local1.isThrowing) || (_local1.isResetting))) || (((_local1.isGrabbed) && (_local1.gameObj.playerObj.jump))))){
				if ((_local1.flapSoundTimer % _local1.flapSoundTimerInterval) == 0){
					_local1.flapSoundChannel = _local1.gameObj.soundManager.playSound("chicken_flap.wav");
				};
				_local1.flapSoundTimer++;
			} else {
				if (_local1.flapSoundChannel){
					_local1.flapSoundChannel.stop();
				};
			};
			if (_local1.ytile >= _local4.levelTileHeight){
				_local1.resetChicken();
			};
		}
		public function resetChicken(){
			var screen:ScreenData;
			var returnArray:Array;
			var ob:GameObject53 = this;
			var data:DataManager = ob.gameObj.dataManager;
			if ((((ob.originalScreenIndex == -1)) || ((data.currentScreenData.roomIndex == ob.originalScreenIndex)))){
				ob.xtile = ob.originalXtile;
				ob.ytile = 0;
				ob.x = ((ob.xtile * ob.gameObj.gameDisplay.tileWidth) + (ob.gameObj.gameDisplay.tileWidth / 2));
				ob.y = 1;
				ob.isResetting = true;
				ob.jump = true;
				ob.jumpspeed = 0;
				ob.isThrowing = false;
				ob.isLanding = false;
			} else {
				try {
					ob.crossRoomReset = true;
					ob.xtile = ob.originalXtile;
					ob.ytile = ob.originalYtile;
					screen = data.currentScreens[ob.originalScreenIndex];
					returnArray = [ob.type, ob.xtile, ob.ytile, ob.currentTriggers];
					if (ob.saveState == true){
						returnArray.push(1);
					} else {
						returnArray.push(0);
					};
					screen.saveObjectState((ob.screenObjID - 1), returnArray, true);
					ob.gameObj.objectManager.removeObject(ob.id);
				} catch(err) {
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject53 = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			_local1.gameObj.soundManager.playSound("chicken_grab.wav");
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.isResetting = false;
			_local1.isLanding = false;
			_local1.isPeckingLong = false;
			_local1.isPeckingShort = false;
			_local1.isWalking = false;
			_local1.isTurning = false;
			if (_local1.onMovingTile){
				if (_local1.whichMovingTile){
					_local1.whichMovingTile.stopStandingOnObject(_local1);
					_local1.onMovingTile = false;
					_local1.whichMovingTile = null;
				};
			};
			_local2.addEffect((_local1.x - 10), (_local1.y - 6), "FeatherEffect");
			_local2.addEffect(_local1.x, (_local1.y - 8), "FeatherEffect");
			_local2.addEffect((_local1.x + 8), (_local1.y - 7), "FeatherEffect");
			_local1.flapSoundTimer = 0;
		}
		override public function throwObject(_arg1:Number, _arg2:Boolean){
			super.throwObject(_arg1, _arg2);
			var _local3:GameObject53 = this;
			if (_arg2){
				if (_local3.gameObj.playerObj.isFinishingLevel){
					_local3.gameObj.challengeManager.recordTag("chickenChest");
				};
			};
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local11:Boolean;
			var _local3:GameObject53 = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (((!(_local9.isHit)) && (!(_local9.resistBullets)))){
						_local11 = _local9.getHit(_local3.statAttack, _local3.dirx, true);
						_local7 = true;
						if (_local11){
							_local3.gameObj.challengeManager.recordTag("chickenKill");
						};
					};
				};
				_local8++;
			};
			if (_local7){
				_local3.getHit();
			};
			return (_local7);
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject54 (cactusGame.models.objects.GameObject54)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject54 extends GameObject {

		public var maxChickensEver:Number;// = 0

		public function GameObject54(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject54 = this;
			_local8.gameObj.effectManager.addEffect(_local8.x, _local8.y, "ChickenCoopFront");
		}
		override public function defineVars(){
			sheetname = "chickencoop_back_sheet";
			objectname = "Chicken Coop";
			type = 54;
			spritewidth = 128;
			spriteheight = 66;
			spriteCenterX = 64;
			spriteCenterY = 33;
			spriteTargetX = 16;
			spriteTargetY = 10;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, 0, 128, 50);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
		}
		override public function saveObjectData(){
			var _local1:GameObject54 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.maxChickensEver);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject54;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
				if (_arg1.length > 2){
					_local2.maxChickensEver = Number(_arg1[2]);
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject54 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 6))) && ((_local1.xtile < (_local2.currentXtileRight + 6))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject54 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.checkOnScreen()){
				if (((((_local1.isActivated) && (!(_local1.isDeactivated)))) && (!(_local1.isDeactivating)))){
					_local1.checkForChickens();
				};
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject54 = this;
			_local1.gameObj.challengeManager.recordTag("chickenInCoop");
		}
		public function checkForChickens(){
			var _local8:GameObject;
			var _local9:Number;
			var _local10:*;
			var _local1:GameObject54 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local2.objectManager;
			var _local4:Rectangle = new Rectangle();
			_local4.x = (_local1.x + _local1.collRect.x);
			_local4.y = (_local1.y + _local1.collRect.y);
			_local4.width = _local1.collRect.width;
			_local4.height = _local1.collRect.height;
			var _local5:* = _local3.objects.length;
			var _local6:Number = 0;
			var _local7:* = 0;
			while (_local7 < _local5) {
				if ((((((((_local3.objects.length > _local7)) && (!((_local3.objects[_local7] == null))))) && ((_local3.objects[_local7] is GameObject)))) && (!((_local3.objects[_local7] == 0))))){
					_local8 = _local3.objects[_local7];
					if ((((_local8 is GameObject53)) && (_local8.checkSpriteCollision(_local4)))){
						if (((((!(_local8.isGrabbed)) && (!(_local8.isThrowing)))) && (!(_local8.jump)))){
							_local6++;
						};
					};
				};
				_local7++;
			};
			if (_local6 > _local1.maxChickensEver){
				_local9 = (_local6 - _local1.maxChickensEver);
				_local10 = 0;
				while (_local10 < _local9) {
					_local1.gameObj.challengeManager.recordTag("chickenInCoop");
					_local10++;
				};
				_local1.maxChickensEver = _local6;
				_local1.saveObjectData();
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject55 (cactusGame.models.objects.GameObject55)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject55 extends GameObject {

		public var initialLivesLost:Number;// = -1

		public function GameObject55(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject55 = this;
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			objectname = "Crossed Gorge";
			type = 55;
			spritewidth = 32;
			spriteheight = 128;
			spriteCenterX = 16;
			spriteCenterY = 64;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 600, 128);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
		}
		override public function saveObjectData(){
			var _local1:GameObject55 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.initialLivesLost);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject55;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
					};
					_local2.isDeactivating = false;
					_local2.isActivating = false;
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
				if ((((_arg1.length > 2)) && (!((Number(_arg1[2]) == -1))))){
					_local2.initialLivesLost = Number(_arg1[2]);
				} else {
					_local2.initialLivesLost = _local2.gameObj.userData.livesLost.value;
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject55 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 8))) && ((_local1.xtile < (_local2.currentXtileRight + 8))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:PlayerChar;
			var _local7:Rectangle;
			var _local1:GameObject55 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.checkOnScreen()){
				if (((((((_local1.isActivated) && (!(_local1.isDeactivating)))) && (!(_local1.isDeactivated)))) && ((_local2.userData.livesLost.value <= _local1.initialLivesLost)))){
					_local6 = _local2.playerObj;
					_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
					if (((_local6.checkSpriteCollision(_local7)) && (!(_local6.jump)))){
						_local1.deactivateObject();
					};
				};
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject55 = this;
			_local1.gameObj.challengeManager.recordTag("crossedGorge");
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject56 (cactusGame.models.objects.GameObject56)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject56 extends GameObject {

		public var shouldUnlockCamera:Boolean;// = false

		public function GameObject56(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject56 = this;
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			objectname = "End Fight";
			type = 56;
			spritewidth = 32;
			spriteheight = 128;
			spriteCenterX = 16;
			spriteCenterY = 64;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, 32, -16, 128);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
		}
		override public function saveObjectData(){
			var _local1:GameObject56 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject56;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject56 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 8))) && ((_local1.xtile < (_local2.currentXtileRight + 8))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject56 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.checkOnScreen()){
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject56 = this;
			_local1.gameObj.challengeManager.recordTag("finishedRumble");
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject57 (cactusGame.models.objects.GameObject57)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject57 extends GameObject {

		public var timesToPassBy:Number;// = 5
		public var passByTally:Number;// = 0
		public var appearedOnScreen:Boolean;// = false
		public var normalTargetY:Number;// = 154
		public var targetYrange:Number;// = 30
		public var xOffsetRange:Number;// = 35

		public function GameObject57(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject57 = this;
		}
		override public function defineVars(){
			sheetname = "railroad_sign_sheet";
			objectname = "Trail Railroad Sign";
			type = 57;
			spritewidth = 74;
			spriteheight = 160;
			spriteCenterX = 37;
			spriteCenterY = 80;
			spriteTargetX = 37;
			spriteTargetY = 144;
			sheetWidth = 2;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]];
			speed = 28;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject57 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 2))) && ((_local1.xtile < (_local2.currentXtileRight + 2))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject57 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.timesToPassBy = Number(_arg1[0]);
				};
			};
		}
		override public function updateObject(){
			var _local1:GameObject57 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.updateSprite();
			if (((_local1.checkOnScreen()) && (!(_local1.appearedOnScreen)))){
				_local1.appearedOnScreen = true;
			};
			if (_local1.appearedOnScreen){
				_local1.x = (_local1.x - _local1.speed);
				_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
				if (_local1.xtile < (_local4.currentXtileLeft - 20)){
					_local1.passByTally++;
					if ((((_local1.passByTally < _local1.timesToPassBy)) || ((_local1.timesToPassBy == 0)))){
						_local1.x = (((_local4.currentXtileRight + 1) + Math.floor((Math.random() * _local1.xOffsetRange))) * _local4.tileWidth);
						_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
					} else {
						_local3.removeObject(_local1.id);
					};
				};
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject58 (cactusGame.models.objects.GameObject58)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject58 extends GameObject {

		public var isExploding:Boolean;// = false
		public var explosionTimer:Number;// = 0
		public var explosionTimerMax:Number;// = 30
		public var explosionTimerInterval:Number;// = 11
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true

		public function GameObject58(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			spriteFrameOffsets = [2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject58 = this;
		}
		override public function defineVars(){
			sheetname = "luggage_trunk_sheet";
			objectname = "Luggage Trunk";
			type = 58;
			spritewidth = 84;
			spriteheight = 54;
			spriteCenterX = 42;
			spriteCenterY = 27;
			spriteTargetX = 42;
			spriteTargetY = 29;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 50;
			canBeShot = false;
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject58 = this;
			if (_arg1){
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject58 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject58 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject58 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject58 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Boolean;
			var _local8:*;
			var _local9:Character;
			var _local1:GameObject58 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local7 = _local1.checkHittingEnemies();
						} else {
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local8 = (_local1.standingChars.length - 1);
					while (_local8 >= 0) {
						_local9 = _local1.standingChars[_local8];
						_local9.y = (((_local1.y - _local1.spriteTargetY) - _local9.height) + _local1.standOffset);
						_local9.ytile = Math.floor((_local9.y / _local4.tileWidth));
						_local8--;
					};
				};
			};
			if ((_local1.y - _local1.spriteTargetY) >= _local4.levelPxHeight){
				_local1.gameObj.challengeManager.recordTag("luggageLost");
				_local1.currentHealth = 0;
				_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), [0]);
				_local1.gameObj.objectManager.removeObject(_local1.id);
			};
		}
		override public function grabObject(){
			var _local1:GameObject58 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject58 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local2.gameObj.soundManager.playSound("impact_2.wav");
			};
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (_local2.showItemWhenBroken))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject58 = this;
			_local1.isExploding = true;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject58 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject58 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject58 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject58 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject59 (cactusGame.models.objects.GameObject59)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject59 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true
		public var shimmerEffectID:Number;// = -1

		public function GameObject59(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject59 = this;
			this.shimmerEffectID = _local8.gameObj.effectManager.addEffect((_local8.x - 6), (_local8.y - 6), "ShimmerEffect", "", false, 44, 44);
		}
		override public function defineVars(){
			sheetname = "oreboulder_object_sheet";
			objectname = "Ore Boulder";
			type = 59;
			spritewidth = 64;
			spriteheight = 64;
			spriteCenterX = 32;
			spriteCenterY = 32;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-10, -10, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			isActivated = true;
			currentHealth = 1;
			maxHealth = 1;
			foreground = false;
			isSteppable = false;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 5;
			canBeShot = false;
			canBeMeleed = true;
			meleedByWeapons = ["Pickaxe"];
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject59 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.itemInsideName = _arg1[0];
				};
			};
		}
		override public function destroy(){
			var _local1:GameObject59 = this;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject59 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject59 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject59 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				_local1.updateSprite();
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject59 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
			};
			_local2.isStunned = true;
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				_local5.addEffect((_local2.x - 7), (_local2.y - 7), "OreBoulderBreakEffect");
				_local5.addEffect((_local2.x + 8), _local2.y, "OreBoulderBreakEffect");
				_local5.addEffect(_local2.x, _local2.y, "OreBoulderBreakEffect");
				_local5.addEffect((_local2.x + 20), (_local2.y - 6), "OreBoulderBreakEffect");
				_local5.addEffect((_local2.x + 15), (_local2.y + 15), "OreBoulderBreakEffect");
				_local5.addEffect((_local2.x + 32), (_local2.y + 32), "OreBoulderBreakEffect");
				_local2.gameObj.challengeManager.recordTag("goldMined");
				_local2.gameObj.soundManager.playSound("breakrock.wav");
				if (((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				if (_local2.shimmerEffectID > -1){
					_local2.gameObj.effectManager.removeEffect(_local2.shimmerEffectID);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject59 = this;
			super.deactivateObject();
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject6 (cactusGame.models.objects.GameObject6)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject6 extends GameObject {

		public var shouldLockCamera:Boolean;// = false
		public var cameraLockX:Number;// = 0
		public var cameraLockY:Number;// = 0

		public function GameObject6(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject6 = this;
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			objectname = "Start Fight";
			type = 6;
			spritewidth = 32;
			spriteheight = 128;
			spriteCenterX = 16;
			spriteCenterY = 64;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 128);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
		}
		override public function saveObjectData(){
			var _local1:GameObject6 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.shouldLockCamera){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.cameraLockX);
			_local2.push(_local1.cameraLockY);
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject6 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = true;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.shouldLockCamera = true;
					} else {
						_local2.shouldLockCamera = false;
					};
				};
				if (_arg1.length > 2){
					_local2.cameraLockX = Number(_arg1[2]);
				};
				if (_arg1.length > 3){
					_local2.cameraLockY = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					if (Number(_arg1[4]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject6 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:PlayerChar;
			var _local7:Rectangle;
			var _local1:GameObject6 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.checkOnScreen()){
				if (_local1.isActivated){
					_local6 = _local2.playerObj;
					_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
					if (_local6.checkSpriteCollision(_local7)){
						_local1.deactivateObject();
					};
				};
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject6 = this;
			if (_local1.shouldLockCamera){
				_local1.gameObj.gameCam.setCameraLock(_local1.cameraLockX, _local1.cameraLockY);
				_local1.gameObj.soundManager.playSound("rumblewhistle.wav");
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject60 (cactusGame.models.objects.GameObject60)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject60 extends GameObject {

		public var stage1CycleFrames:Array;
		public var stage2CycleFrames:Array;
		public var stage3CycleFrames:Array;
		public var numberOfStages:Number;// = 3
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 20
		public var willExplode:Boolean;// = false
		public var explodeTimer:Number;// = 0
		public var explodeTimerMax:Number;// = 4
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true
		public var blastRect:Rectangle;

		public function GameObject60(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			stage1CycleFrames = ["stage1", 2, 1, 0, 0, [0]];
			stage2CycleFrames = ["stage2", 2, 1, 0, 0, [1]];
			stage3CycleFrames = ["stage3", 2, 1, 0, 0, [2]];
			spriteFrameOffsets = [5, 5, 5, 5, 5, 5];
			standingChars = [];
			blastRect = new Rectangle(-65, -65, 130, 130);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject60 = this;
		}
		override public function defineVars(){
			sheetname = "tntbarrel_object_sheet";
			objectname = "TNT Barrel FOR GRENADE";
			type = 60;
			spritewidth = 38;
			spriteheight = 57;
			spriteCenterX = 19;
			spriteCenterY = 28;
			spriteTargetX = 19;
			spriteTargetY = 32;
			sheetWidth = 3;
			sheetHeight = 1;
			collRect = new Rectangle(-14, -24, 28, 48);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = true;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 100;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject60 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.currentHealth = Number(_arg1[0]);
					_local2.maxHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.itemInsideName = _arg1[1];
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.showItemWhenBroken = true;
					} else {
						_local2.showItemWhenBroken = false;
					};
				};
				if (_arg1.length > 3){
					if (Number(_arg1[3]) == 1){
						_local2.rememberBroken = true;
					} else {
						_local2.rememberBroken = false;
					};
				};
				if (_arg1.length > 4){
					_local2.currentHealth = Number(_arg1[4]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject60 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.maxHealth);
			_local2.push(_local1.itemInsideName);
			if (_local1.showItemWhenBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.rememberBroken){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local2.push(_local1.currentHealth);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject60 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local3:Number;
			var _local1:GameObject60 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local3 = Math.ceil(((1 - (_local1.currentHealth / _local1.maxHealth)) * _local1.numberOfStages));
						if ((((_local1.maxHealth == _local1.numberOfStages)) && ((_local1.currentHealth > 0)))){
							_local3 = (1 + (_local1.maxHealth - _local1.currentHealth));
						};
						if (_local3 < 1){
							_local3 = 1;
						};
						_local2 = _local1[(("stage" + _local3) + "CycleFrames")];
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject60 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:*;
			var _local8:Character;
			var _local1:GameObject60 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local1.checkHittingEnemies();
							if ((((((_local1.jumpspeed < _local6)) && (_local1.bounceY))) && (_local1.canBreak))){
								if (((!(_local1.wasDropped)) || (((_local1.wasDropped) && (((_local1.y - _local1.dropStartingY) > _local1.dropMaxSafeY)))))){
									_local1.getHit();
								};
								_local1.canBreak = false;
							};
						} else {
							if (!_local1.bounceY){
								_local1.getHit();
							};
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
					if (_local1.willExplode){
						_local1.explodeTimer++;
						if (_local1.explodeTimer > _local1.explodeTimerMax){
							_local1.explodeObject();
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local7 = (_local1.standingChars.length - 1);
					while (_local7 >= 0) {
						_local8 = _local1.standingChars[_local7];
						_local8.y = (((_local1.y - _local1.spriteTargetY) - _local8.height) + _local1.standOffset);
						_local8.ytile = Math.floor((_local8.y / _local4.tileWidth));
						_local7--;
					};
				};
			};
		}
		override public function grabObject(){
			var _local1:GameObject60 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject60 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (((!(_local2.isStunned)) && (!(_local2.willExplode)))){
				_local2.currentHealth = (_local2.currentHealth - _arg1);
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local5.addEffect((_local2.x - 5), (_local2.y - 5), "TNTBarrelBreakEffect");
				_local5.addEffect((_local2.x + 12), (_local2.y + 2), "TNTBarrelBreakEffect");
				_local2.gameObj.soundManager.playSound("hit_crate_2.wav");
			};
			_local2.isStunned = true;
			if ((((_local2.currentHealth <= 0)) && (!(_local2.willExplode)))){
				_local2.setupExplosion();
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject60 = this;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject60 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject60 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject60 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject60 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}
		override public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local10:Enemy;
			var _local11:Rectangle;
			var _local3:GameObject = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:Number = 0;
			var _local9:* = 0;
			while (_local9 < _local6) {
				_local10 = _local5.enemies[_local9];
				_local11 = new Rectangle();
				_local11.x = (_local3.x + _local3.collRect.x);
				_local11.y = (_local3.y + _local3.collRect.y);
				_local11.width = _local3.collRect.width;
				_local11.height = _local3.collRect.height;
				if (_local10.checkSpriteCollision(_local11)){
					if (((!(_local10.isHit)) && (!(_local10.resistBullets)))){
						_local10.getHit(_local3.statAttack, _local3.dirx, true);
						_local7 = true;
						if (_local10.isDead){
							_local8++;
						};
					};
				};
				_local9++;
			};
			_local3.gameObj.challengeManager.recordMultiExplosion(_local8);
			return (_local7);
		}
		public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:GameObject = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((((!((_local9 == _local2))) && (_local9.checkSpriteCollision(_local5)))) && (_local9.acceptsDamage("object", "TNTBarrel")))){
						_local9.getHit(_local2.statAttack);
						_local6 = true;
						if ((_local9 is GameObject17)){
							_local2.gameObj.challengeManager.recordTag("explodeBoulder");
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		public function setupExplosion(){
			var _local1:GameObject60 = this;
			_local1.willExplode = true;
			_local1.explodeTimer = 0;
		}
		public function explodeObject(){
			var _local1:GameObject60 = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:ItemManager = _local1.gameObj.itemManager;
			_local1.isShootable = false;
			_local1.blocksBullets = true;
			_local2.addEffect((_local1.x - 15), (_local1.y - 20), "TNTBarrelBreakEffect");
			_local2.addEffect((_local1.x + 8), (_local1.y - 10), "TNTBarrelBreakEffect");
			_local2.addEffect((_local1.x - 7), (_local1.y - 15), "TNTBarrelBreakEffect");
			_local1.collRect = _local1.blastRect;
			_local1.checkHittingEnemies();
			_local1.checkHittingObjects();
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local2.addEffect((_local1.x - 12), (_local1.y + 6), "ExplosionEffect", "delay1");
			_local2.addEffect((_local1.x + 12), (_local1.y - 6), "ExplosionEffect", "delay2");
			_local2.addEffect((_local1.x - 16), (_local1.y - 8), "ExplosionEffect", "delay3");
			_local1.gameObj.gameCam.setCameraJiggle(8, 10);
			if (((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && (_local1.showItemWhenBroken))){
				_local4.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
			};
			if (_local1.rememberBroken){
				_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), [0]);
			};
			_local1.gameObj.objectManager.removeObject(_local1.id);
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject61 (cactusGame.models.objects.GameObject61)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject61 extends GameObject {

		public var cloudSpacing:Number;// = 150
		public var addedSmoke:Boolean;// = false

		public function GameObject61(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject61 = this;
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			objectname = "Trail Railroad Sign";
			type = 61;
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 2, 1, 0, 0, [0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 1]];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject61 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 2))) && ((_local1.xtile < (_local2.currentXtileRight + 2))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject61 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.cloudSpacing = Number(_arg1[0]);
				};
			};
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local9:*;
			var _local1:GameObject61 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.addedSmoke){
				_local6 = ((_local4.currentXcoord + _local4.screenPxWidth) + 32);
				_local7 = _local4.screenPxWidth;
				_local8 = 2;
				_local9 = 0;
				while (_local9 < _local8) {
					_local5.addEffect((_local6 + (_local9 * _local1.cloudSpacing)), (_local1.y - 50), "TrainSmokeEffect");
					_local9++;
				};
				_local1.addedSmoke = true;
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject62 (cactusGame.models.objects.GameObject62)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject62 extends GameObject {

		public var isExploding:Boolean;// = false
		public var explosionTimer:Number;// = 0
		public var explosionTimerMax:Number;// = 30
		public var explosionTimerInterval:Number;// = 11
		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var spriteFrameOffsets:Array;
		public var standOffset:Number;// = 0
		public var standingChars:Array;
		public var itemInsideName:String;// = ""
		public var showItemWhenBroken:Boolean;// = false
		public var rememberBroken:Boolean;// = false
		public var releasedItem:Boolean;// = false
		public var canBreak:Boolean;// = true
		public var hasThrownSeat:Boolean;// = false

		public function GameObject62(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			spriteFrameOffsets = [2];
			standingChars = [];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject62 = this;
		}
		override public function defineVars(){
			sheetname = "trainseat_object_sheet";
			objectname = "Train Seat";
			type = 62;
			spritewidth = 52;
			spriteheight = 68;
			spriteCenterX = 26;
			spriteCenterY = 34;
			spriteTargetX = 26;
			spriteTargetY = 43;
			sheetWidth = 1;
			sheetHeight = 2;
			flipBlitOffset = 68;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]];
			isSolidActive = false;
			isSolidInactive = false;
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			solidType = "collision";
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isSteppable = false;
			isGrabbable = true;
			jumpspeed = 0;
			jumpstart = -16;
			jumpgravity = 2;
			normalgravity = 2;
			throwSpeed = 8;
			bounceY = true;
			statAttack = 50;
			canBeShot = false;
			canBeMeleed = false;
			canBeBrokenByObjects = false;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject62 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.facingDir = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					if (_arg1[1] == 1){
						_local2.hasThrownSeat = true;
					} else {
						_local2.hasThrownSeat = false;
					};
				} else {
					_local2.hasThrownSeat = false;
				};
			} else {
				_local2.hasThrownSeat = false;
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject62 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.facingDir);
			if (_local1.hasThrownSeat){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject62 = this;
			if (((!(_local1.isGrabbed)) && ((_local1.currentHealth > 0)))){
				_local1.saveObjectData();
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject62 = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject62 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Boolean;
			var _local8:*;
			var _local9:Character;
			var _local1:GameObject62 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (!_local1.isHit){
				if (((_local1.checkOnScreen()) || (_local1.isThrowing))){
					if (_local1.isThrowing){
						if (_local1.jump){
							_local6 = _local1.jumpspeed;
							_local1.jumpChar();
							if (_local1.dirx != 0){
								_local1.moveChar(_local1.dirx, 0, false, true, false);
							};
							_local7 = _local1.checkHittingEnemies();
						} else {
							_local1.canBreak = true;
							_local1.isThrowing = false;
						};
					} else {
						if (_local1.isStunned){
							_local1.stunTimer++;
							if (_local1.stunTimer >= _local1.stunTimerMax){
								_local1.isStunned = false;
								_local1.stunTimer = 0;
							};
						};
					};
				} else {
					if (_local1.xtile < (_local4.currentXtileLeft - 5)){
					};
				};
				if (((!(_local1.isThrowing)) && (!(_local1.isGrabbed)))){
					_local1.fallChar();
					if (_local1.jump){
						_local1.jumpChar();
					};
				};
				_local1.updateSprite();
				_local1.standOffset = _local1.spriteFrameOffsets[_local1.animationFrame];
				if (_local1.standingChars.length > 0){
					_local8 = (_local1.standingChars.length - 1);
					while (_local8 >= 0) {
						_local9 = _local1.standingChars[_local8];
						_local9.y = (((_local1.y - _local1.spriteTargetY) - _local9.height) + _local1.standOffset);
						_local9.ytile = Math.floor((_local9.y / _local4.tileWidth));
						_local8--;
					};
				};
			};
			if ((_local1.y - _local1.spriteTargetY) >= _local4.levelPxHeight){
				if (!_local1.hasThrownSeat){
					_local1.gameObj.challengeManager.recordTag("thrownSeat");
					_local1.hasThrownSeat = true;
				};
				_local1.currentHealth = 0;
				_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), [0]);
				_local1.gameObj.objectManager.removeObject(_local1.id);
			};
		}
		override public function grabObject(){
			var _local1:GameObject62 = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
			_local1.gameObj.soundManager.playSound("attack_punch_1.wav");
			if (((((((!((_local1.itemInsideName == null))) && (!((_local1.itemInsideName == ""))))) && ((_local1.showItemWhenBroken == false)))) && (!(_local1.releasedItem)))){
				_local2.addItem(_local1.xtile, _local1.ytile, _local1.itemInsideName, 1);
				_local1.releasedItem = true;
				_local1.itemInsideName = "";
			};
		}
		override public function throwObject(_arg1:Number, _arg2:Boolean){
			super.throwObject(_arg1, _arg2);
			var _local3:GameObject62 = this;
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject62 = this;
			var _local3:ObjectManager = _local2.gameObj.objectManager;
			var _local4:ItemManager = _local2.gameObj.itemManager;
			var _local5:EffectManager = _local2.gameObj.effectManager;
			if (!_local2.isStunned){
				if (_local2.currentHealth < 0){
					_local2.currentHealth = 0;
				};
				_local2.gameObj.soundManager.playSound("impact_2.wav");
			};
			if (_local2.currentHealth <= 0){
				_local2.canBeShot = false;
				_local2.canBeMeleed = false;
				_local2.canBeBrokenByObjects = false;
				_local2.blocksBullets = true;
				if (((((!((_local2.itemInsideName == null))) && (!((_local2.itemInsideName == ""))))) && (_local2.showItemWhenBroken))){
					_local4.addItem(_local2.xtile, _local2.ytile, _local2.itemInsideName, 1);
				};
				if (_local2.rememberBroken){
					_local2.gameObj.dataManager.currentScreenData.saveObjectState((_local2.id - 1), [0]);
				};
				_local2.gameObj.objectManager.removeObject(_local2.id);
			};
		}
		override public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			_local1.blocksBullets = false;
			_local1.isShootable = false;
			super.finishDeactivatingObject();
		}
		override public function deactivateObject(){
			var _local1:GameObject62 = this;
			_local1.isExploding = true;
			super.deactivateObject();
		}
		public function checkStartStepping(_arg1:Character){
			var _local5:*;
			var _local6:Number;
			var _local7:Number;
			var _local2:GameObject62 = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			var _local4:Number = 1;
			if (((!(_local2.isThrowing)) && (!(_local2.isGrabbed)))){
				_local5 = 0;
				while (_local5 < _local4) {
					if (((((_local2.xtile + _local5) == _arg1.leftX)) || (((_local2.xtile + _local5) == _arg1.rightX)))){
						_local6 = (_local2.y - _arg1.y);
						_local7 = (((_local2.spriteTargetY + _arg1.height) - _local2.standOffset) + 3);
						if ((((_local6 <= _local7)) && ((_arg1.y < _local2.y)))){
							if (((_arg1.jump) && ((_arg1.jumpspeed > 0)))){
								_local2.stepOnObject(_arg1);
								break;
							};
						};
					};
					_local5++;
				};
			};
		}
		public function stepOnObject(_arg1:Character){
			var _local2:GameObject62 = this;
			if (!_local2.isDeactivated){
				if (_local2.standingChars.indexOf(_arg1) == -1){
					_local2.standingChars.push(_arg1);
				};
				_arg1.isWalking = false;
				_arg1.jump = false;
				_arg1.onMovingTile = true;
				_arg1.whichMovingTile = _local2;
			};
			if (((_local2.isActivated) && (_local2.canReact))){
			};
		}
		public function checkStandingOnObject(_arg1:Character):Boolean{
			var _local2:GameObject62 = this;
			var _local3:Boolean;
			var _local4:* = _arg1.x;
			var _local5:* = _arg1.y;
			var _local6:* = (_arg1.x + _arg1.width);
			var _local7:* = (_arg1.x - _arg1.width);
			var _local8:* = ((_local2.x + _local2.spritewidth) - _local2.spriteTargetX);
			var _local9:* = (_local2.x - _local2.spriteTargetX);
			if ((((_local6 < _local9)) || ((_local7 > _local8)))){
				_local3 = false;
			} else {
				if (((_arg1.jump) && ((_arg1.jumpspeed < 0)))){
					_local3 = false;
				} else {
					if (_local2.isGrabbed){
						_local3 = false;
					};
				};
			};
			if (!_local3){
				_local2.stopStandingOnObject(_arg1);
			};
			return (_local3);
		}
		public function stopStandingOnObject(_arg1:Character){
			var _local2:GameObject62 = this;
			_arg1.onMovingTile = false;
			_arg1.whichMovingTile = null;
			var _local3:Number = _local2.standingChars.indexOf(_arg1);
			if (_local3 > -1){
				_local2.standingChars.splice(_local3, 1);
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject63 (cactusGame.models.objects.GameObject63)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject63 extends GameObject {

		public var upCycleFrames:Array;
		public var downCycleFrames:Array;
		public var droppingCycleFrames:Array;
		public var risingCycleFrames:Array;
		public var isUp:Boolean;// = false
		public var isDropping:Boolean;// = false
		public var isRising:Boolean;// = false
		public var mainTimer:Number;// = 0
		public var upDuration:Number;// = 30
		public var downDuration:Number;// = 30
		public var startedAsUp:Number;// = 0
		public var startedMainTimer:Number;// = 0
		public var upCollRect:Rectangle;
		public var downCollRect:Rectangle;

		public function GameObject63(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			upCycleFrames = ["up", 2, 1, 0, 0, [0]];
			downCycleFrames = ["down", 2, 1, 0, 0, [5]];
			droppingCycleFrames = ["dropping", 2, 1, 0, -1, [1, 2, 3, 4, 5]];
			risingCycleFrames = ["rising", 2, 1, 0, -1, [6, 7, 8, 9, 0]];
			upCollRect = new Rectangle(-16, -16, 96, 64);
			downCollRect = new Rectangle(-16, -16, 96, 192);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject63 = this;
		}
		override public function defineVars(){
			sheetname = "crusher_object_sheet";
			objectname = "The Crusher";
			type = 63;
			spritewidth = 96;
			spriteheight = 192;
			spriteCenterX = 48;
			spriteCenterY = 96;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 10;
			sheetHeight = 1;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			isShootable = false;
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			broadcastStyle = 2;
			broadcastReceiptMethod = 3;
			jigglecam = true;
			jiggleamount = 6;
			jiggleduration = 8;
			statAttack = 50;
		}
		override public function saveObjectData(){
			var _local1:GameObject63 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.startedAsUp);
			_local2.push(_local1.upDuration);
			_local2.push(_local1.downDuration);
			_local2.push(_local1.startedMainTimer);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject63 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isUp = true;
						_local2.startedAsUp = 1;
					} else {
						_local2.isUp = false;
						_local2.startedAsUp = 0;
					};
				};
				if (_arg1.length > 1){
					_local2.upDuration = Number(_arg1[1]);
				};
				if (_arg1.length > 2){
					_local2.downDuration = Number(_arg1[2]);
				};
				if (_arg1.length > 3){
					_local2.mainTimer = Number(_arg1[3]);
					_local2.startedMainTimer = Number(_arg1[3]);
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject63 = this;
			if (_local1.isDropping){
				_local2 = _local1.droppingCycleFrames;
			} else {
				if (_local1.isRising){
					_local2 = _local1.risingCycleFrames;
				} else {
					if (_local1.isUp){
						_local2 = _local1.upCycleFrames;
					} else {
						_local2 = _local1.downCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:GameObject63 = this;
			if (_local1.cycleName == "dropping"){
				_local1.finishDropping();
			} else {
				if (_local1.cycleName == "rising"){
					_local1.finishRising();
				};
			};
		}
		public function finishDropping(){
			var _local1:GameObject63 = this;
			_local1.isDropping = false;
			_local1.isRising = false;
			_local1.isUp = false;
			_local1.mainTimer = 0;
			if (_local1.checkReallyOnScreen()){
				_local1.gameObj.gameCam.setCameraJiggle(_local1.jiggleamount, _local1.jiggleduration);
				_local1.gameObj.soundManager.playSound("papow.wav");
			};
		}
		public function finishRising(){
			var _local1:GameObject63 = this;
			_local1.isDropping = false;
			_local1.isRising = false;
			_local1.isUp = true;
			_local1.mainTimer = 0;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject63 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		public function checkReallyOnScreen():Boolean{
			var _local1:GameObject63 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Boolean;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 2))))){
				if ((((_local1.ytile > (_local2.currentYtileUp - 8))) && ((_local1.ytile < (_local2.currentYtileDown + 2))))){
					_local3 = true;
				};
			};
			return (_local3);
		}
		override public function updateObject(){
			var _local1:GameObject63 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.mainTimer++;
			if (((((((_local1.isUp) && ((_local1.mainTimer >= _local1.upDuration)))) && (!(_local1.isDropping)))) && (!(_local1.isRising)))){
				_local1.isDropping = true;
				_local1.isUp = false;
			} else {
				if (((((((!(_local1.isUp)) && ((_local1.mainTimer >= _local1.downDuration)))) && (!(_local1.isDropping)))) && (!(_local1.isRising)))){
					_local1.isRising = true;
					_local1.isUp = false;
				};
			};
			_local1.updateSprite();
			if (_local1.isUp){
				_local1.collRect = _local1.upCollRect;
			} else {
				_local1.collRect = _local1.downCollRect;
			};
			_local1.checkForHittingPlayer();
		}
		public function checkForHittingPlayer(){
			var _local1:GameObject63 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Rectangle = new Rectangle();
			_local3.x = (_local1.x + _local1.collRect.x);
			_local3.y = (_local1.y + _local1.collRect.y);
			_local3.width = _local1.collRect.width;
			_local3.height = _local1.collRect.height;
			if (_local2.checkSpriteCollision(_local3)){
				if (_local2.canGetHit()){
					if (_local2.x <= (_local3.x + (_local3.width / 2))){
						_local2.hurtPlayer(-1, _local1.statAttack);
					} else {
						_local2.hurtPlayer(1, _local1.statAttack);
					};
				} else {
					if (_local2.x <= (_local3.x + (_local3.width / 2))){
						_local2.hurtPlayer(-1, 0);
					} else {
						_local2.hurtPlayer(1, 0);
					};
				};
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject64 (cactusGame.models.objects.GameObject64)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject64 extends GameObject {

		public var onUpCycleFrames:Array;
		public var onDownCycleFrames:Array;
		public var onRightCycleFrames:Array;
		public var onLeftCycleFrames:Array;
		public var offUpCycleFrames:Array;
		public var offDownCycleFrames:Array;
		public var offRightCycleFrames:Array;
		public var offLeftCycleFrames:Array;
		public var turningOnUpCycleFrames:Array;
		public var turningOnDownCycleFrames:Array;
		public var turningOnRightCycleFrames:Array;
		public var turningOnLeftCycleFrames:Array;
		public var turningOffUpCycleFrames:Array;
		public var turningOffDownCycleFrames:Array;
		public var turningOffRightCycleFrames:Array;
		public var turningOffLeftCycleFrames:Array;
		public var isOn:Boolean;// = false
		public var isTurningOn:Boolean;// = false
		public var isTurningOff:Boolean;// = false
		public var mainTimer:Number;// = 0
		public var onDuration:Number;// = 30
		public var offDuration:Number;// = 30
		public var startedAsOn:Number;// = 0
		public var startedMainTimer:Number;// = 0
		public var shootDirection:String;// = "Up"
		public var bulletFrequency:Number;// = 3
		public var bulletTimer:Number;// = 0
		public var bulletSoundFrequency:Number;// = 9
		public var upCollRect:Rectangle;
		public var downCollRect:Rectangle;

		public function GameObject64(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			onUpCycleFrames = ["onUp", 2, 1, 0, 0, [6, 7]];
			onDownCycleFrames = ["onDown", 2, 1, 0, 0, [14, 15]];
			onRightCycleFrames = ["onRight", 2, 1, 0, 0, [22, 23]];
			onLeftCycleFrames = ["onLeft", 2, 1, 0, 0, [30, 31]];
			offUpCycleFrames = ["offUp", 2, 1, 0, 0, [0]];
			offDownCycleFrames = ["offDown", 2, 1, 0, 0, [8]];
			offRightCycleFrames = ["offRight", 2, 1, 0, 0, [16]];
			offLeftCycleFrames = ["offLeft", 2, 1, 0, 0, [24]];
			turningOnUpCycleFrames = ["turningOnUp", 2, 1, 0, -1, [0, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 3, 4, 5]];
			turningOnDownCycleFrames = ["turningOnDown", 2, 1, 0, -1, [8, 9, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 11, 12, 13]];
			turningOnRightCycleFrames = ["turningOnRight", 2, 1, 0, -1, [16, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 20, 21]];
			turningOnLeftCycleFrames = ["turningOnLeft", 2, 1, 0, -1, [24, 25, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 28, 29]];
			turningOffUpCycleFrames = ["turningOffUp", 2, 1, 0, -1, [5, 4, 3, 2, 1, 0]];
			turningOffDownCycleFrames = ["turningOffDown", 2, 1, 0, -1, [13, 12, 11, 10, 9, 8]];
			turningOffRightCycleFrames = ["turningOffRight", 2, 1, 0, -1, [21, 20, 19, 18, 17, 16]];
			turningOffLeftCycleFrames = ["turningOffLeft", 2, 1, 0, -1, [29, 28, 27, 26, 25, 24]];
			upCollRect = new Rectangle(-16, -16, 96, 64);
			downCollRect = new Rectangle(-16, -16, 96, 192);
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject64 = this;
			if (_local8.shootDirection == "Up"){
				_local8.spriteTargetY = 10;
			};
		}
		override public function defineVars(){
			sheetname = "hotfoot_object_sheet";
			objectname = "Hotfoot";
			type = 64;
			spritewidth = 32;
			spriteheight = 32;
			spriteCenterX = 16;
			spriteCenterY = 16;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 8;
			sheetHeight = 4;
			flipBlitOffset = 0;
			collRect = new Rectangle(-26, -26, 52, 52);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			isShootable = false;
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = false;
			broadcastStyle = 2;
			broadcastReceiptMethod = 3;
			statAttack = 80;
		}
		override public function saveObjectData(){
			var _local1:GameObject64 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			_local2.push(_local1.shootDirection);
			_local2.push(_local1.startedAsOn);
			_local2.push(_local1.onDuration);
			_local2.push(_local1.offDuration);
			_local2.push(_local1.startedMainTimer);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject64 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.shootDirection = _arg1[0];
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.isOn = true;
						_local2.startedAsOn = 1;
					} else {
						_local2.isOn = false;
						_local2.startedAsOn = 0;
					};
				};
				if (_arg1.length > 2){
					_local2.onDuration = Number(_arg1[2]);
				};
				if (_arg1.length > 3){
					_local2.offDuration = Number(_arg1[3]);
				};
				if (_arg1.length > 4){
					_local2.mainTimer = Number(_arg1[4]);
					_local2.startedMainTimer = Number(_arg1[4]);
				};
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject64 = this;
			if (_local1.isTurningOn){
				_local2 = _local1[(("turningOn" + _local1.shootDirection) + "CycleFrames")];
			} else {
				if (_local1.isTurningOff){
					_local2 = _local1[(("turningOff" + _local1.shootDirection) + "CycleFrames")];
				} else {
					if (_local1.isOn){
						_local2 = _local1[(("on" + _local1.shootDirection) + "CycleFrames")];
					} else {
						_local2 = _local1[(("off" + _local1.shootDirection) + "CycleFrames")];
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:GameObject64 = this;
			if (_local1.cycleName.indexOf("turningOn") == 0){
				_local1.finishTurningOn();
			} else {
				if (_local1.cycleName.indexOf("turningOff") == 0){
					_local1.finishTurningOff();
				};
			};
		}
		public function finishTurningOff(){
			var _local1:GameObject64 = this;
			_local1.isTurningOff = false;
			_local1.isTurningOn = false;
			_local1.isOn = false;
			_local1.mainTimer = 0;
		}
		public function finishTurningOn(){
			var _local1:GameObject64 = this;
			_local1.isTurningOff = false;
			_local1.isTurningOn = false;
			_local1.isOn = true;
			_local1.mainTimer = 0;
			_local1.bulletTimer = 0;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject64 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 6))) && ((_local1.xtile < (_local2.currentXtileRight + 6))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local6:Number;
			var _local7:Number;
			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 _local1:GameObject64 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.mainTimer++;
			if (((((((_local1.isOn) && ((_local1.mainTimer >= _local1.onDuration)))) && (!(_local1.isTurningOn)))) && (!(_local1.isTurningOff)))){
				_local1.isTurningOff = true;
				_local1.isOn = false;
			} else {
				if (((((((!(_local1.isOn)) && ((_local1.mainTimer >= _local1.offDuration)))) && (!(_local1.isTurningOn)))) && (!(_local1.isTurningOff)))){
					_local1.isTurningOn = true;
					_local1.isOn = false;
				};
			};
			_local1.updateSprite();
			if (_local1.isOn){
				if ((_local1.bulletTimer % _local1.bulletFrequency) == 0){
					_local6 = 0;
					_local7 = 0;
					_local8 = _local1.x;
					_local9 = _local1.y;
					_local10 = _local1.x;
					_local11 = _local1.y;
					if (_local1.shootDirection == "Right"){
						_local6 = 1;
						_local7 = 0;
						_local10 = (_local10 + 50);
					} else {
						if (_local1.shootDirection == "Left"){
							_local6 = -1;
							_local7 = 0;
							_local10 = (_local10 - 50);
						} else {
							if (_local1.shootDirection == "Up"){
								_local6 = 0;
								_local7 = -1;
								_local11 = (_local11 - 50);
							} else {
								if (_local1.shootDirection == "Down"){
									_local6 = 0;
									_local7 = 1;
									_local11 = (_local11 + 50);
								};
							};
						};
					};
					_local12 = (_local8 - _local10);
					_local13 = (_local9 - _local11);
					_local14 = Math.sqrt(((_local12 * _local12) + (_local13 * _local13)));
					_local15 = Math.atan2(_local13, _local12);
					_local16 = 1;
					if (_local10 < _local1.x){
						_local16 = -1;
					};
					_local1.gameObj.bulletManager.addBullet(_local8, _local9, _local16, _local15, "FlamethrowerBullet", "", true, _local1.statAttack, true);
					if (((((((_local1.bulletTimer % _local1.bulletSoundFrequency) == 0)) && (_local1.gameObj.gameDisplay.checkOnScreen(_local1)))) && ((_local1.gameObj.gameControls.gameplayTimer > 2)))){
						_local1.gameObj.soundManager.playSound("shoot_flamethrower.wav");
					};
				};
				_local1.bulletTimer++;
			};
		}
		public function checkForHittingPlayer(){
			var _local1:GameObject64 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Rectangle = new Rectangle();
			_local3.x = (_local1.x + _local1.collRect.x);
			_local3.y = (_local1.y + _local1.collRect.y);
			_local3.width = _local1.collRect.width;
			_local3.height = _local1.collRect.height;
			if (_local2.checkSpriteCollision(_local3)){
				if (_local2.canGetHit()){
					if (_local2.x <= (_local3.x + (_local3.width / 2))){
						_local2.hurtPlayer(-1, _local1.statAttack);
					} else {
						_local2.hurtPlayer(1, _local1.statAttack);
					};
				} else {
					if (_local2.x <= (_local3.x + (_local3.width / 2))){
						_local2.hurtPlayer(-1, 0);
					} else {
						_local2.hurtPlayer(1, 0);
					};
				};
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject65 (cactusGame.models.objects.GameObject65)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject65 extends GameObject {

		public var stunTimer:Number;// = 0
		public var stunTimerMax:Number;// = 30
		public var floatCycleFrames:Array;
		public var explodeCycleFrames:Array;
		public var hidingCycleFrames:Array;
		public var isExploding:Boolean;// = false
		public var isFloating:Boolean;// = false
		public var detectionRange:Number;// = 128
		public var originalXtile:Number;// = 0
		public var originalYtile:Number;// = 0
		public var speedMax:Number;// = 2
		public var speedChangeAmount:Number;// = 1

		public function GameObject65(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			floatCycleFrames = ["float", 2, 1, 0, 0, [4, 4, 4, 5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 5, 5, 5, 4, 4, 4, 3, 3, 3, 2, 2, 2, 1, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 2, 2, 2, 3, 3, 3]];
			explodeCycleFrames = ["explode", 2, 1, 0, -1, [99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99, 99]];
			hidingCycleFrames = ["hiding", 2, 1, 0, 0, [99]];
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject65 = this;
			this.originalXtile = _local8.xtile;
			_local8.originalYtile = _local8.ytile;
		}
		override public function defineVars(){
			sheetname = "floatingbomb_object_sheet";
			objectname = "Floating Bomb";
			type = 65;
			spritewidth = 60;
			spriteheight = 83;
			spriteCenterX = 30;
			spriteCenterY = 41;
			spriteTargetX = 30;
			spriteTargetY = 67;
			sheetWidth = 9;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 99, 99, 99];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [99]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99, 3, 99]];
			isActivated = true;
			currentHealth = 3;
			maxHealth = 3;
			foreground = true;
			isGrabbable = false;
			jumpspeed = 0;
			jumpstart = 0;
			jumpgravity = 1;
			normalgravity = 1;
			maxjumpvelocity = 3;
			speed = 2;
			walkspeed = 2;
			bounceY = true;
			statAttack = 50;
			canBeShot = true;
			canBeMeleed = true;
			canBeBrokenByObjects = true;
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject65 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.detectionRange = Number(_arg1[0]);
				};
			};
		}
		override public function saveObjectData(){
			var _local1:GameObject65 = this;
			var _local2:Array = [_local1.type, _local1.originalXtile, _local1.originalYtile, _local1.currentTriggers];
			_local2.push(_local1.detectionRange);
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2, true);
		}
		override public function destroy(){
			var _local1:GameObject65 = this;
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject65 = this;
			if (_local1.isExploding){
				_local2 = _local1.explodeCycleFrames;
			} else {
				if (_local1.isFloating){
					_local2 = _local1.floatCycleFrames;
				} else {
					_local2 = _local1.hidingCycleFrames;
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:GameObject65 = this;
			if (_local1.cycleName == "explode"){
				_local1.resetBomb();
			};
		}
		public function resetBomb(){
			var _local1:GameObject65 = this;
			_local1.isExploding = false;
			_local1.isFloating = false;
			_local1.xtile = _local1.originalXtile;
			_local1.ytile = 0;
			_local1.x = ((_local1.xtile * _local1.gameObj.gameDisplay.tileWidth) + (_local1.gameObj.gameDisplay.tileWidth / 2));
			_local1.y = ((_local1.ytile * _local1.gameObj.gameDisplay.tileWidth) + (_local1.gameObj.gameDisplay.tileWidth / 2));
		}
		public function checkForHittingPlayer(){
			var _local1:GameObject65 = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			var _local3:Rectangle = new Rectangle();
			_local3.x = (_local1.x + _local1.collRect.x);
			_local3.y = (_local1.y + _local1.collRect.y);
			_local3.width = _local1.collRect.width;
			_local3.height = _local1.collRect.height;
			if (_local2.checkSpriteCollision(_local3)){
				if (_local2.canGetHit()){
					if (_local2.x <= (_local3.x + (_local3.width / 2))){
						_local2.hurtPlayer(-1, _local1.statAttack);
					} else {
						_local2.hurtPlayer(1, _local1.statAttack);
					};
					_local1.explodeObject();
				};
			};
		}
		public function explodeObject(){
			var _local1:GameObject65 = this;
			var _local2:EffectManager = _local1.gameObj.effectManager;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:ItemManager = _local1.gameObj.itemManager;
			_local1.checkForHittingPlayer();
			_local2.addEffect(_local1.x, _local1.y, "ExplosionEffect");
			_local2.addEffect((_local1.x - 12), (_local1.y + 6), "ExplosionEffect", "delay1");
			_local2.addEffect((_local1.x + 12), (_local1.y - 6), "ExplosionEffect", "delay2");
			_local2.addEffect((_local1.x - 16), (_local1.y - 8), "ExplosionEffect", "delay3");
			_local1.gameObj.gameCam.setCameraJiggle(8, 10);
			_local1.isFloating = false;
			_local1.isExploding = true;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject65 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject65 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			var _local6:PlayerChar = _local1.gameObj.playerObj;
			if (((!(_local1.isFloating)) && (!(_local1.isExploding)))){
				if ((((_local6.x > (_local1.x - (_local1.detectionRange / 2)))) && ((_local6.x < (_local1.x + (_local1.detectionRange / 2)))))){
					_local1.y = (_local4.currentYcoord - 16);
					if (((_local6.isWalking) && ((_local6.walkingDir == 1)))){
						_local1.x = (_local6.x + 64);
					} else {
						if (((_local6.isWalking) && ((_local6.walkingDir == -1)))){
							_local1.x = (_local6.x - 64);
						} else {
							_local1.x = _local6.x;
						};
					};
					_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
					_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
					_local1.isFloating = true;
				};
			};
			if (_local1.isFloating){
				_local1.jumpChar(false);
				if (_local6.x < (_local1.x - 16)){
					if ((((_local1.speed > (_local1.speedMax * -1))) && (((_local1.gameObj.gameControls.gameplayTimer % 2) == 0)))){
						_local1.speed = (_local1.speed - _local1.speedChangeAmount);
					};
				} else {
					if (_local6.x > (_local1.x + 16)){
						if ((((_local1.speed < _local1.speedMax)) && (((_local1.gameObj.gameControls.gameplayTimer % 2) == 0)))){
							_local1.speed = (_local1.speed + _local1.speedChangeAmount);
						};
					};
				};
				_local1.moveChar(1, 0, 0, false, false, false);
				_local1.checkForHittingPlayer();
				if (_local1.ytile >= (_local4.levelTileHeight + 3)){
					_local1.resetBomb();
				};
			};
			_local1.updateSprite();
		}
		override public function getHit(_arg1:Number=1){
			var _local2:GameObject65 = this;
			if (_local2.isFloating){
				_local2.explodeObject();
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject66 (cactusGame.models.objects.GameObject66)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject66 extends GameObject {

		public var timesToPassBy:Number;// = 5
		public var passByTally:Number;// = 0
		public var appearedOnScreen:Boolean;// = false
		public var normalTargetY:Number;// = 104
		public var targetYrange:Number;// = 30
		public var xOffsetRange:Number;// = 35

		public function GameObject66(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject66 = this;
		}
		override public function defineVars(){
			sheetname = "ghosttown_train_sheet";
			objectname = "Train Tree";
			type = 66;
			spritewidth = 134;
			spriteheight = 120;
			spriteCenterX = 67;
			spriteCenterY = 60;
			spriteTargetX = 67;
			spriteTargetY = 104;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			speed = 28;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject66 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 2))) && ((_local1.xtile < (_local2.currentXtileRight + 2))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject66 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.timesToPassBy = Number(_arg1[0]);
				};
			};
		}
		override public function updateObject(){
			var _local1:GameObject66 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.updateSprite();
			if (((_local1.checkOnScreen()) && (!(_local1.appearedOnScreen)))){
				_local1.appearedOnScreen = true;
			};
			if (_local1.appearedOnScreen){
				_local1.x = (_local1.x - _local1.speed);
				_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
				if (_local1.xtile < (_local4.currentXtileLeft - 2)){
					_local1.passByTally++;
					if ((((_local1.passByTally < _local1.timesToPassBy)) || ((_local1.timesToPassBy == 0)))){
						_local1.x = (((_local4.currentXtileRight + 1) + Math.floor((Math.random() * _local1.xOffsetRange))) * _local4.tileWidth);
						_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
						_local1.spriteTargetY = (_local1.normalTargetY - Math.floor((Math.random() * _local1.targetYrange)));
					} else {
						_local3.removeObject(_local1.id);
					};
				};
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject67 (cactusGame.models.objects.GameObject67)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject67 extends GameObject {

		public var timesToPassBy:Number;// = 5
		public var passByTally:Number;// = 0
		public var appearedOnScreen:Boolean;// = false
		public var normalTargetY:Number;// = 76
		public var targetYrange:Number;// = 12
		public var xOffsetRange:Number;// = 205

		public function GameObject67(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject67 = this;
		}
		override public function defineVars(){
			sheetname = "mountain_train_sheet";
			objectname = "Train Mountain";
			type = 67;
			spritewidth = 253;
			spriteheight = 92;
			spriteCenterX = 126;
			spriteCenterY = 46;
			spriteTargetX = 126;
			spriteTargetY = 76;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 0, 0, 0];
			speed = 28;
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject67 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject67 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.timesToPassBy = Number(_arg1[0]);
				};
			};
		}
		override public function updateObject(){
			var _local1:GameObject67 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			_local1.updateSprite();
			if (((_local1.checkOnScreen()) && (!(_local1.appearedOnScreen)))){
				_local1.appearedOnScreen = true;
			};
			if (_local1.appearedOnScreen){
				_local1.x = (_local1.x - _local1.speed);
				_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
				if (_local1.xtile < (_local4.currentXtileLeft - 4)){
					_local1.passByTally++;
					if ((((_local1.passByTally < _local1.timesToPassBy)) || ((_local1.timesToPassBy == 0)))){
						_local1.x = (((_local4.currentXtileRight + 4) + Math.floor((Math.random() * _local1.xOffsetRange))) * _local4.tileWidth);
						_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
						_local1.spriteTargetY = (_local1.normalTargetY - Math.floor((Math.random() * _local1.targetYrange)));
					} else {
						_local3.removeObject(_local1.id);
					};
				};
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject7 (cactusGame.models.objects.GameObject7)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject7 extends GameObject {

		public var shouldUnlockCamera:Boolean;// = false

		public function GameObject7(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject7 = this;
		}
		override public function defineVars(){
			sheetname = "blanksprite_sheet";
			objectname = "End Fight";
			type = 7;
			spritewidth = 32;
			spriteheight = 128;
			spriteCenterX = 16;
			spriteCenterY = 64;
			spriteTargetX = 16;
			spriteTargetY = 16;
			sheetWidth = 1;
			sheetHeight = 1;
			collRect = new Rectangle(-16, 32, -16, 128);
			isActivated = true;
			foreground = true;
			broadcastStyle = 1;
		}
		override public function saveObjectData(){
			var _local1:GameObject7 = this;
			var _local2:Array = [_local1.type, _local1.xtile, _local1.ytile, _local1.currentTriggers];
			if (_local1.isActivated){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.shouldUnlockCamera){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			if (_local1.saveState){
				_local2.push(1);
			} else {
				_local2.push(0);
			};
			_local1.gameObj.dataManager.currentScreenData.saveObjectState((_local1.id - 1), _local2);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject7;
			_local2 = this;
			if (_arg1){
				if (_arg1.length > 0){
					if (Number(_arg1[0]) == 1){
						_local2.isActivated = true;
						_local2.isDeactivated = false;
					} else {
						_local2.isActivated = false;
						_local2.isDeactivated = false;
					};
				};
				if (_arg1.length > 1){
					if (Number(_arg1[1]) == 1){
						_local2.shouldUnlockCamera = true;
					} else {
						_local2.shouldUnlockCamera = false;
					};
				};
				if (_arg1.length > 2){
					if (Number(_arg1[2]) == 1){
						_local2.saveState = true;
					} else {
						_local2.saveState = false;
					};
				};
			};
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject7 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local1:GameObject7 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			if (_local1.checkOnScreen()){
			};
			_local1.updateSprite();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject7 = this;
			if (_local1.shouldUnlockCamera){
				_local1.gameObj.gameCam.unlockCamera();
			};
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject8 (cactusGame.models.objects.GameObject8)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject8 extends GameObject {

		public function GameObject8(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject8 = this;
		}
		override public function defineVars(){
			sheetname = "mapchest_object_sheet";
			objectname = "Map Chest";
			type = 8;
			spritewidth = 98;
			spriteheight = 65;
			spriteCenterX = 49;
			spriteCenterY = 32;
			spriteTargetX = 49;
			spriteTargetY = 49;
			sheetWidth = 4;
			sheetHeight = 1;
			collRect = new Rectangle(-16, 32, -16, 128);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [3, 2, 1, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 1, 1, 2, 2, 3]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 3, 3, 3];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject8 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function updateObject(){
			var _local7:Number;
			var _local1:GameObject8 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			var _local6:CactusChar = CactusChar(_local1.gameObj.playerObj);
			if (_local1.isActivated){
				_local2.gameControls.stopActionControls = true;
				_local7 = (_local1.x - _local6.x);
				if (_local7 > 0){
					_local6.isWalking = true;
					_local6.isSkidding = false;
					_local6.skidSpeed = 0;
					if (_local7 > _local6.walkspeed){
						_local6.speed = _local6.walkspeed;
						_local6.moveChar(1, 0, 0);
					} else {
						_local6.speed = _local7;
						_local6.moveChar(1, 0, 0);
					};
				} else {
					if (_local7 < 0){
						_local6.isWalking = true;
						_local6.isSkidding = false;
						_local6.skidSpeed = 0;
						if (_local7 < (_local6.walkspeed * -1)){
							_local6.speed = _local6.walkspeed;
							_local6.moveChar(-1, 0, 0);
						} else {
							_local6.speed = (_local7 * -1);
							_local6.moveChar(-1, 0, 0);
						};
					} else {
						if (_local7 == 0){
							_local6.isWalking = false;
							_local1.deactivateObject();
						};
					};
				};
			};
			_local1.updateSprite();
		}
		override public function deactivateObject(){
			var _local1:GameObject8 = this;
			if (((!(_local1.isDeactivated)) && (!(_local1.isDeactivating)))){
				_local1.gameObj.soundManager.playSound("openchest.wav");
			};
			super.deactivateObject();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var _local1:GameObject8 = this;
			_local1.gameObj.playerObj.finishLevel();
			_local1.gameObj.effectManager.addEffect(_local1.x, (_local1.y - 20), "MapPieceEffect");
		}

	}
}//package cactusGame.models.objects 

****************

//GameObject9 (cactusGame.models.objects.GameObject9)
package cactusGame.models.objects {
	import cactusGame.models.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject9 extends GameObject {

		public var whichTreasure:Number;// = 1

		public function GameObject9(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			super(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			var _local8:GameObject9 = this;
			if (_local8.gameObj.userData.hasTreasure(_local8.gameObj.dataManager.currentLevel, _local8.whichTreasure)){
				_local8.isDeactivated = true;
				_local8.isActivated = false;
			} else {
				_local8.isDeactivated = false;
				_local8.isActivated = true;
			};
		}
		override public function defineVars(){
			sheetname = "smallchest_object_sheet";
			objectname = "Small Chest";
			type = 9;
			spritewidth = 66;
			spriteheight = 61;
			spriteCenterX = 33;
			spriteCenterY = 30;
			spriteTargetX = 33;
			spriteTargetY = 45;
			sheetWidth = 4;
			sheetHeight = 1;
			collRect = new Rectangle(-16, -16, 32, 32);
			isActivated = true;
			foreground = false;
			broadcastStyle = 1;
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [3, 2, 1, 0]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [0, 1, 1, 2, 2, 3]];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 3, 3, 3];
		}
		override public function checkOnScreen():Boolean{
			var _local1:GameObject9 = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if ((((_local1.xtile > (_local2.currentXtileLeft - 4))) && ((_local1.xtile < (_local2.currentXtileRight + 4))))){
				return (true);
			};
			return (false);
		}
		override public function setupParams(_arg1:Array){
			var _local2:GameObject9 = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.whichTreasure = Number(_arg1[0]);
				};
			};
		}
		override public function updateObject(){
			var _local7:Rectangle;
			var _local1:GameObject9 = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:EffectManager = _local2.effectManager;
			var _local6:CactusChar = CactusChar(_local1.gameObj.playerObj);
			if (_local1.isActivated){
				_local7 = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
				if (((_local6.checkSpriteCollision(_local7)) && (_local6.duck))){
					_local1.deactivateObject();
				};
			};
			_local1.updateSprite();
		}
		override public function deactivateObject(){
			var _local1:GameObject9 = this;
			if (((!(_local1.isDeactivated)) && (!(_local1.isDeactivating)))){
				_local1.gameObj.soundManager.playSound("openchest.wav");
			};
			super.deactivateObject();
		}
		override public function finishDeactivatingObject(){
			super.finishDeactivatingObject();
			var ob:GameObject9 = this;
			ob.gameObj.effectManager.addEffect(ob.x, (ob.y - 20), (("Treasure" + ob.whichTreasure) + "Effect"));
			ob.gameObj.userData.earnTreasure(ob.gameObj.dataManager.currentLevel, ob.whichTreasure);
			ob.gameObj.hudObj.showEarnedTreasure(ob.whichTreasure);
			try {
				ob.gameObj.challengeManager.checkCustomChallenges("treasures");
			} catch(err) {
			};
			ob.gameObj.userData.saveProgress("treasure");
			ob.gameObj.hudObj.updateDisplay();
		}

	}
}//package cactusGame.models.objects 

****************

//WeaponAxe (cactusGame.models.weapons.WeaponAxe)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponAxe extends Weapon {

		public function WeaponAxe(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 105;
			sheetWidth = 13;
			sheetHeight = 4;
			flipBlitOffset = 210;
			weaponType = "weapon2";
			sheetname = "weapon_axe_sheet";
			weaponTitle = "Axe";
			dropName = "Axe";
			statAttack = 60;
			maxDamage = 15;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBadge (cactusGame.models.weapons.WeaponBadge)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBadge extends Weapon {

		public function WeaponBadge(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 19;
			hasSprite = false;
			bulletType = "BadgeBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 42;
			weaponTitle = "Sheriff Badges";
			dropName = "Badge";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBanjo (cactusGame.models.weapons.WeaponBanjo)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBanjo extends Weapon {

		public function WeaponBanjo(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_banjo_sheet";
			weaponTitle = "Banjo";
			dropName = "Banjo";
			statAttack = 34;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBarbedWire (cactusGame.models.weapons.WeaponBarbedWire)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBarbedWire extends Weapon {

		public function WeaponBarbedWire(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_barbedwire_sheet";
			statAttack = 74;
			maxDamage = 40;
			weaponTitle = "Barbed Wire";
			dropName = "BarbedWire";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBat (cactusGame.models.weapons.WeaponBat)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBat extends Weapon {

		public function WeaponBat(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_bat_sheet";
			weaponTitle = "Bat";
			dropName = "Bat";
			statAttack = 32;
			maxDamage = 24;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBazooka (cactusGame.models.weapons.WeaponBazooka)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBazooka extends Weapon {

		public function WeaponBazooka(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 182;
			spriteheight = 214;
			sheetWidth = 8;
			sheetHeight = 4;
			flipBlitOffset = 428;
			weaponType = "bazooka";
			sheetname = "weapon_bazooka_sheet";
			weaponTitle = "Bazooka";
			dropName = "Bazooka";
			bulletType = "BazookaRocket";
			statAttack = 175;
			maxAmmo = 10;
			maxBulletsPerRound = 1;
			reloadDelay = 15;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBlunderbuss (cactusGame.models.weapons.WeaponBlunderbuss)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBlunderbuss extends Weapon {

		public function WeaponBlunderbuss(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 84;
			spriteheight = 111;
			sheetWidth = 13;
			sheetHeight = 2;
			flipBlitOffset = 111;
			weaponType = "longgun";
			weaponTitle = "Blunderbuss";
			dropName = "Blunderbuss";
			sheetname = "weapon_blunderbuss_sheet";
			statAttack = 64;
			bulletType = "BlunderbussBullet";
			sprayType = "GenericBullet";
			hasSpray = true;
			sprayAmount = 2;
			sprayAngleDifference = 0.2;
			maxAmmo = 32;
			maxBulletsPerRound = 1;
			reloadDelay = 6;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBone (cactusGame.models.weapons.WeaponBone)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBone extends Weapon {

		public function WeaponBone(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_bone_sheet";
			weaponTitle = "Bone";
			dropName = "Bone";
			statAttack = 54;
			maxDamage = 26;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBoxingGloves (cactusGame.models.weapons.WeaponBoxingGloves)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBoxingGloves extends Weapon {

		public function WeaponBoxingGloves(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 100;
			spriteheight = 87;
			sheetWidth = 11;
			sheetHeight = 4;
			flipBlitOffset = 174;
			weaponType = "gloves";
			sheetname = "weapon_boxinggloves_sheet";
			weaponTitle = "Boxing Gloves";
			dropName = "BoxingGloves";
			statAttack = 38;
			maxDamage = 40;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBrassKnuckles (cactusGame.models.weapons.WeaponBrassKnuckles)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBrassKnuckles extends Weapon {

		public function WeaponBrassKnuckles(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 100;
			spriteheight = 87;
			sheetWidth = 11;
			sheetHeight = 4;
			flipBlitOffset = 174;
			weaponType = "gloves";
			sheetname = "weapon_brassknuckles_sheet";
			weaponTitle = "Brass Knuckles";
			dropName = "BrassKnuckles";
			statAttack = 50;
			maxDamage = 50;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponBullWhip (cactusGame.models.weapons.WeaponBullWhip)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponBullWhip extends Weapon {

		public function WeaponBullWhip(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_bullwhip_sheet";
			statAttack = 47;
			maxDamage = 40;
			weaponTitle = "Bullwhip";
			dropName = "BullWhip";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponCactus (cactusGame.models.weapons.WeaponCactus)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponCactus extends Weapon {

		public function WeaponCactus(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_cactus_sheet";
			weaponTitle = "Cactus";
			dropName = "Cactus";
			statAttack = 23;
			maxDamage = 24;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponCatOfNineTails (cactusGame.models.weapons.WeaponCatOfNineTails)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponCatOfNineTails extends Weapon {

		public function WeaponCatOfNineTails(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_catofninetails_sheet";
			statAttack = 92;
			maxDamage = 50;
			weaponTitle = "Cat O' Nine Tails";
			dropName = "CatOfNineTails";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponChainWhip (cactusGame.models.weapons.WeaponChainWhip)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponChainWhip extends Weapon {

		public function WeaponChainWhip(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_chainwhip_sheet";
			statAttack = 55;
			maxDamage = 45;
			weaponTitle = "Chain";
			dropName = "ChainWhip";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponCherryBomb (cactusGame.models.weapons.WeaponCherryBomb)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponCherryBomb extends Weapon {

		public function WeaponCherryBomb(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 41;
			hasSprite = false;
			bulletType = "CherryBombBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 30;
			weaponTitle = "Cherry Bombs";
			dropName = "CherryBomb";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponClub (cactusGame.models.weapons.WeaponClub)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponClub extends Weapon {

		public function WeaponClub(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_club_sheet";
			weaponTitle = "Club";
			dropName = "Club";
			statAttack = 81;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponCrossbow (cactusGame.models.weapons.WeaponCrossbow)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponCrossbow extends Weapon {

		public function WeaponCrossbow(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 84;
			spriteheight = 111;
			sheetWidth = 13;
			sheetHeight = 2;
			flipBlitOffset = 111;
			weaponType = "longgun";
			weaponTitle = "Crossbow";
			dropName = "Crossbow";
			sheetname = "weapon_crossbow_sheet";
			statAttack = 62;
			bulletType = "CrossbowArrow";
			maxAmmo = 32;
			maxBulletsPerRound = 1;
			reloadDelay = 6;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponCrowbar (cactusGame.models.weapons.WeaponCrowbar)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponCrowbar extends Weapon {

		public function WeaponCrowbar(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_crowbar_sheet";
			weaponTitle = "Crowbar";
			dropName = "Crowbar";
			statAttack = 42;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponCutlass (cactusGame.models.weapons.WeaponCutlass)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponCutlass extends Weapon {

		public function WeaponCutlass(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_cutlass_sheet";
			weaponTitle = "Cutlass";
			dropName = "Cutlass";
			statAttack = 80;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponDagger (cactusGame.models.weapons.WeaponDagger)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponDagger extends Weapon {

		public function WeaponDagger(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 29;
			hasSprite = false;
			bulletType = "DaggerBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 25;
			weaponTitle = "Daggers";
			dropName = "Dagger";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponDart (cactusGame.models.weapons.WeaponDart)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponDart extends Weapon {

		public function WeaponDart(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 21;
			hasSprite = false;
			bulletType = "DartBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 40;
			weaponTitle = "Darts";
			dropName = "Dart";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponDerringer (cactusGame.models.weapons.WeaponDerringer)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponDerringer extends Weapon {

		public function WeaponDerringer(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 54;
			spriteheight = 72;
			sheetWidth = 12;
			sheetHeight = 2;
			flipBlitOffset = 72;
			weaponType = "pistol";
			sheetname = "weapon_derringer_sheet";
			statAttack = 30;
			bulletType = "GenericBullet";
			maxBulletsPerRound = 2;
			bulletFrequency = 5;
			reloadDelay = 1;
			maxAmmo = 30;
			weaponTitle = "Derringer";
			dropName = "Derringer";
			shoot_extra_offsetsX = [0, 0, 0, 0, -8];
			shoot_extra_offsetsY = [0, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponFlamethrower (cactusGame.models.weapons.WeaponFlamethrower)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponFlamethrower extends Weapon {

		public function WeaponFlamethrower(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 84;
			spriteheight = 111;
			sheetWidth = 13;
			sheetHeight = 2;
			flipBlitOffset = 111;
			weaponType = "longgun";
			weaponTitle = "Flamethrower";
			dropName = "Flamethrower";
			sheetname = "weapon_flamethrower_sheet";
			statAttack = 85;
			bulletType = "FlamethrowerBullet";
			maxAmmo = 60;
			maxBulletsPerRound = 60;
			bulletFrequency = 3;
			reloadDelay = 0;
			shoot_extra_offsetsX = [7, 4, 0, 0, -15];
			shoot_extra_offsetsY = [0, -10, 0, 0, -21];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponGatling (cactusGame.models.weapons.WeaponGatling)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponGatling extends Weapon {

		public function WeaponGatling(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 60;
			spriteheight = 65;
			sheetWidth = 16;
			sheetHeight = 2;
			flipBlitOffset = 65;
			weaponType = "gatling";
			sheetname = "weapon_gatling_sheet";
			statAttack = 70;
			bulletType = "GenericBullet";
			weaponTitle = "Gatling Gun";
			dropName = "Gatling";
			maxAmmo = 140;
			bulletFrequency = 2;
			reloadDelay = 1;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponGrenade (cactusGame.models.weapons.WeaponGrenade)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponGrenade extends Weapon {

		public function WeaponGrenade(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 57;
			hasSprite = false;
			bulletType = "GrenadeBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 20;
			weaponTitle = "Grenades";
			dropName = "Grenade";
			shoot_extra_offsetsX = [-8, 0, 0, 0, 0];
			shoot_extra_offsetsY = [-13, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponGuitar (cactusGame.models.weapons.WeaponGuitar)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponGuitar extends Weapon {

		public function WeaponGuitar(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_guitar_sheet";
			weaponTitle = "Guitar";
			dropName = "Guitar";
			statAttack = 40;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponHarpoonGun (cactusGame.models.weapons.WeaponHarpoonGun)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponHarpoonGun extends Weapon {

		public function WeaponHarpoonGun(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 84;
			spriteheight = 111;
			sheetWidth = 13;
			sheetHeight = 2;
			flipBlitOffset = 111;
			weaponType = "longgun";
			weaponTitle = "Harpoon Gun";
			dropName = "HarpoonGun";
			sheetname = "weapon_harpoongun_sheet";
			statAttack = 80;
			bulletType = "Harpoon";
			maxAmmo = 24;
			maxBulletsPerRound = 1;
			reloadDelay = 6;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponHatfieldPistol (cactusGame.models.weapons.WeaponHatfieldPistol)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponHatfieldPistol extends Weapon {

		public function WeaponHatfieldPistol(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 54;
			spriteheight = 72;
			sheetWidth = 12;
			sheetHeight = 2;
			flipBlitOffset = 72;
			weaponType = "pistol";
			sheetname = "weapon_hatfieldpistol_sheet";
			statAttack = 80;
			bulletType = "GenericBullet";
			sprayType = "GenericBullet";
			hasSpray = true;
			sprayAmount = 2;
			sprayAngleDifference = 0.1;
			maxAmmo = 160;
			maxBulletsPerRound = 1;
			reloadDelay = 5;
			weaponTitle = "Hatfield's Pistol";
			dropName = "HatfieldPistol";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponIron (cactusGame.models.weapons.WeaponIron)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponIron extends Weapon {

		public function WeaponIron(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 100;
			spriteheight = 87;
			sheetWidth = 11;
			sheetHeight = 4;
			flipBlitOffset = 174;
			weaponType = "gloves";
			sheetname = "weapon_iron_sheet";
			weaponTitle = "Iron";
			dropName = "Iron";
			statAttack = 44;
			maxDamage = 60;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponKatana (cactusGame.models.weapons.WeaponKatana)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponKatana extends Weapon {

		public function WeaponKatana(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 167;
			spriteheight = 128;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 384;
			weaponType = "weapon2b";
			sheetname = "weapon_katana_sheet";
			weaponTitle = "Katana";
			dropName = "Katana";
			statAttack = 78;
			maxDamage = 30;
			xoffset = -8;
			yoffset = -12;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponLantern (cactusGame.models.weapons.WeaponLantern)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponLantern extends Weapon {

		public function WeaponLantern(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 40;
			hasSprite = false;
			bulletType = "LanternBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 8;
			weaponTitle = "Lanterns";
			dropName = "Lantern";
			shoot_extra_offsetsX = [-8, 0, 0, 0, 0];
			shoot_extra_offsetsY = [-13, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponLongsword (cactusGame.models.weapons.WeaponLongsword)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponLongsword extends Weapon {

		public function WeaponLongsword(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 167;
			spriteheight = 128;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 384;
			weaponType = "weapon2b";
			sheetname = "weapon_longsword_sheet";
			weaponTitle = "Longsword";
			dropName = "Longsword";
			statAttack = 100;
			maxDamage = 24;
			xoffset = -8;
			yoffset = -12;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponMachete (cactusGame.models.weapons.WeaponMachete)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponMachete extends Weapon {

		public function WeaponMachete(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_machete_sheet";
			weaponTitle = "Machete";
			dropName = "Machete";
			statAttack = 40;
			maxDamage = 22;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponMallet (cactusGame.models.weapons.WeaponMallet)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponMallet extends Weapon {

		public function WeaponMallet(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 105;
			sheetWidth = 13;
			sheetHeight = 4;
			flipBlitOffset = 210;
			weaponType = "weapon2";
			sheetname = "weapon_mallet_sheet";
			weaponTitle = "Mallet";
			dropName = "Mallet";
			statAttack = 68;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponMeteor (cactusGame.models.weapons.WeaponMeteor)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponMeteor extends Weapon {

		public function WeaponMeteor(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_meteor_sheet";
			statAttack = 85;
			maxDamage = 50;
			weaponTitle = "Meteor";
			dropName = "Meteor";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponMorningstar (cactusGame.models.weapons.WeaponMorningstar)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponMorningstar extends Weapon {

		public function WeaponMorningstar(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 105;
			sheetWidth = 13;
			sheetHeight = 4;
			flipBlitOffset = 210;
			weaponType = "weapon2";
			sheetname = "weapon_morningstar_sheet";
			weaponTitle = "Morningstar";
			dropName = "Morningstar";
			statAttack = 90;
			maxDamage = 15;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponNightstick (cactusGame.models.weapons.WeaponNightstick)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponNightstick extends Weapon {

		public function WeaponNightstick(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_nightstick_sheet";
			weaponTitle = "Nightstick";
			dropName = "Nightstick";
			statAttack = 35;
			maxDamage = 36;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponPickaxe (cactusGame.models.weapons.WeaponPickaxe)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponPickaxe extends Weapon {

		public function WeaponPickaxe(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 105;
			sheetWidth = 13;
			sheetHeight = 4;
			flipBlitOffset = 210;
			weaponType = "weapon2";
			sheetname = "weapon_pickaxe_sheet";
			weaponTitle = "Pickaxe";
			dropName = "Pickaxe";
			statAttack = 50;
			maxDamage = 15;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponPipe (cactusGame.models.weapons.WeaponPipe)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponPipe extends Weapon {

		public function WeaponPipe(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_pipe_sheet";
			weaponTitle = "Pipe";
			dropName = "Pipe";
			statAttack = 27;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponPlayingCard (cactusGame.models.weapons.WeaponPlayingCard)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponPlayingCard extends Weapon {

		public function WeaponPlayingCard(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 15;
			hasSprite = false;
			bulletType = "PlayingCardBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 52;
			weaponTitle = "Playing Cards";
			dropName = "PlayingCard";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponPoolCue (cactusGame.models.weapons.WeaponPoolCue)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponPoolCue extends Weapon {

		public function WeaponPoolCue(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 203;
			spriteheight = 172;
			sheetWidth = 13;
			sheetHeight = 4;
			flipBlitOffset = 344;
			weaponType = "weapon2";
			sheetname = "weapon_poolcue_sheet";
			weaponTitle = "Pool Cue";
			dropName = "PoolCue";
			statAttack = 58;
			maxDamage = 10;
			xoffset = -28;
			yoffset = -30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponRattlesnake (cactusGame.models.weapons.WeaponRattlesnake)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponRattlesnake extends Weapon {

		public function WeaponRattlesnake(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_rattlesnake_sheet";
			statAttack = 70;
			maxDamage = 40;
			weaponTitle = "Rattlesnake";
			dropName = "Rattlesnake";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponRevolver (cactusGame.models.weapons.WeaponRevolver)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponRevolver extends Weapon {

		public function WeaponRevolver(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 54;
			spriteheight = 72;
			sheetWidth = 12;
			sheetHeight = 2;
			flipBlitOffset = 72;
			weaponType = "pistol";
			sheetname = "weapon_revolver_sheet";
			statAttack = 36;
			bulletType = "GenericBullet";
			maxBulletsPerRound = 6;
			bulletFrequency = 5;
			reloadDelay = 8;
			maxAmmo = 48;
			weaponTitle = "Revolver";
			dropName = "Revolver";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponRomanCandle (cactusGame.models.weapons.WeaponRomanCandle)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponRomanCandle extends Weapon {

		public function WeaponRomanCandle(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 54;
			spriteheight = 72;
			sheetWidth = 12;
			sheetHeight = 2;
			flipBlitOffset = 72;
			weaponType = "pistol";
			sheetname = "weapon_romancandle_sheet";
			statAttack = 40;
			bulletType = "RomanCandleBullet";
			maxBulletsPerRound = 1;
			bulletFrequency = 12;
			reloadDelay = 8;
			maxAmmo = 50;
			weaponTitle = "Roman Candle";
			dropName = "RomanCandle";
			shoot_extra_offsetsX = [0, 0, 0, 8, -23];
			shoot_extra_offsetsY = [12, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponRope (cactusGame.models.weapons.WeaponRope)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponRope extends Weapon {

		public function WeaponRope(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_rope_sheet";
			statAttack = 46;
			maxDamage = 35;
			weaponTitle = "Rope";
			dropName = "Rope";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponScorpion (cactusGame.models.weapons.WeaponScorpion)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponScorpion extends Weapon {

		public function WeaponScorpion(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 60;
			hasSprite = false;
			bulletType = "ScorpionBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 30;
			weaponTitle = "Scorpions";
			dropName = "Scorpion";
			shoot_extra_offsetsX = [-8, 0, 0, 0, 0];
			shoot_extra_offsetsY = [-13, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponScythe (cactusGame.models.weapons.WeaponScythe)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponScythe extends Weapon {

		public function WeaponScythe(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 203;
			spriteheight = 172;
			sheetWidth = 13;
			sheetHeight = 4;
			flipBlitOffset = 344;
			weaponType = "weapon2";
			sheetname = "weapon_scythe_sheet";
			weaponTitle = "Scythe";
			dropName = "Scythe";
			statAttack = 180;
			maxDamage = 10;
			xoffset = -28;
			yoffset = -30;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponShotgun (cactusGame.models.weapons.WeaponShotgun)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponShotgun extends Weapon {

		public function WeaponShotgun(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 84;
			spriteheight = 111;
			sheetWidth = 13;
			sheetHeight = 2;
			flipBlitOffset = 111;
			weaponType = "longgun";
			weaponTitle = "Shotgun";
			dropName = "Shotgun";
			sheetname = "weapon_shotgun_sheet";
			statAttack = 55;
			bulletType = "GenericBullet";
			sprayType = "GenericBullet";
			hasSpray = true;
			sprayAmount = 2;
			sprayAngleDifference = 0.06;
			maxAmmo = 32;
			maxBulletsPerRound = 1;
			reloadDelay = 6;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponShovel (cactusGame.models.weapons.WeaponShovel)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponShovel extends Weapon {

		public function WeaponShovel(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_shovel_sheet";
			weaponTitle = "Shovel";
			dropName = "Shovel";
			statAttack = 35;
			maxDamage = 24;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponSickle (cactusGame.models.weapons.WeaponSickle)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponSickle extends Weapon {

		public function WeaponSickle(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_sickle_sheet";
			weaponTitle = "Sickle";
			dropName = "Sickle";
			statAttack = 48;
			maxDamage = 24;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponSquirtGun (cactusGame.models.weapons.WeaponSquirtGun)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponSquirtGun extends Weapon {

		public function WeaponSquirtGun(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 54;
			spriteheight = 72;
			sheetWidth = 12;
			sheetHeight = 2;
			flipBlitOffset = 72;
			weaponType = "pistol";
			sheetname = "weapon_squirtgun_sheet";
			statAttack = 1;
			bulletType = "SquirtGunBullet";
			maxBulletsPerRound = 1;
			bulletFrequency = 5;
			reloadDelay = 1;
			maxAmmo = 1000;
			weaponTitle = "Squirt Gun";
			dropName = "SquirtGun";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponStick (cactusGame.models.weapons.WeaponStick)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponStick extends Weapon {

		public function WeaponStick(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 135;
			spriteheight = 96;
			sheetWidth = 10;
			sheetHeight = 4;
			flipBlitOffset = 192;
			weaponType = "weapon1";
			sheetname = "weapon_stick_sheet";
			weaponTitle = "Stick";
			dropName = "Stick";
			statAttack = 18;
			maxDamage = 24;
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponSubMachineGun (cactusGame.models.weapons.WeaponSubMachineGun)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponSubMachineGun extends Weapon {

		public function WeaponSubMachineGun(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 84;
			spriteheight = 111;
			sheetWidth = 13;
			sheetHeight = 2;
			flipBlitOffset = 111;
			weaponType = "longgun";
			weaponTitle = "Machine Gun";
			dropName = "SubMachineGun";
			sheetname = "weapon_submachinegun_sheet";
			statAttack = 65;
			bulletType = "GenericBullet";
			sprayType = "GenericBullet";
			maxAmmo = 96;
			maxBulletsPerRound = 32;
			bulletFrequency = 3;
			reloadDelay = 6;
			shoot_extra_offsetsX = [8, -6, 0, -5, 5];
			shoot_extra_offsetsY = [-4, -7, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponTearGas (cactusGame.models.weapons.WeaponTearGas)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponTearGas extends Weapon {

		public function WeaponTearGas(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 36;
			hasSprite = false;
			bulletType = "TearGasBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 6;
			weaponTitle = "Tear Gas";
			dropName = "TearGas";
			shoot_extra_offsetsX = [-8, 0, 0, 0, 0];
			shoot_extra_offsetsY = [-13, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponThornWhip (cactusGame.models.weapons.WeaponThornWhip)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponThornWhip extends Weapon {

		public function WeaponThornWhip(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_thornwhip_sheet";
			statAttack = 64;
			maxDamage = 44;
			weaponTitle = "Thorn Whip";
			dropName = "ThornWhip";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponTNT (cactusGame.models.weapons.WeaponTNT)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponTNT extends Weapon {

		public function WeaponTNT(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 70;
			hasSprite = false;
			bulletType = "TNTBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 20;
			weaponTitle = "TNT";
			dropName = "TNT";
			shoot_extra_offsetsX = [-8, 0, 0, 0, 0];
			shoot_extra_offsetsY = [-13, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponTomahawk (cactusGame.models.weapons.WeaponTomahawk)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponTomahawk extends Weapon {

		public function WeaponTomahawk(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			weaponType = "toss";
			statAttack = 52;
			hasSprite = false;
			bulletType = "TomahawkBullet";
			maxBulletsPerRound = 1;
			reloadDelay = 1;
			bulletTimerOffset = -3;
			maxAmmo = 30;
			weaponTitle = "Tomahawks";
			dropName = "Tomahawk";
			shoot_extra_offsetsX = [-8, 0, 0, 0, 0];
			shoot_extra_offsetsY = [-13, 0, 0, 0, 0];
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponTowChain (cactusGame.models.weapons.WeaponTowChain)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponTowChain extends Weapon {

		public function WeaponTowChain(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 189;
			spriteheight = 92;
			sheetWidth = 9;
			sheetHeight = 2;
			flipBlitOffset = 92;
			weaponType = "whip";
			sheetname = "weapon_towchain_sheet";
			statAttack = 82;
			maxDamage = 46;
			weaponTitle = "Tow Chain";
			dropName = "TowChain";
		}

	}
}//package cactusGame.models.weapons 

****************

//WeaponTwoByFour (cactusGame.models.weapons.WeaponTwoByFour)
package cactusGame.models.weapons {
	import cactusGame.models.*;

	public class WeaponTwoByFour extends Weapon {

		public function WeaponTwoByFour(_arg1:Character, _arg2:Number, _arg3:Number){
			super(_arg1, _arg2, _arg3);
		}
		override public function defineVars(){
			spritewidth = 145;
			spriteheight = 106;
			sheetWidth = 8;
			sheetHeight = 6;
			flipBlitOffset = 318;
			weaponType = "weapon2b";
			sheetname = "weapon_2x4_sheet";
			weaponTitle = "2x4";
			dropName = "TwoByFour";
			statAttack = 30;
			maxDamage = 30;
		}

	}
}//package cactusGame.models.weapons 

****************

//Bullet (cactusGame.models.Bullet)
package cactusGame.models {
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Bullet extends Character {

		public var facingDirX:Number;
		public var facingDirY:Number;
		public var isThrown:Boolean;// = false
		public var throwBounce:Boolean;// = false
		public var throwBounce2:Boolean;// = false
		public var collectY:Number;// = 0
		public var blitOffsetRight:Number;// = 0
		public var blitOffsetLeft:Number;// = 60
		public var blitOffset45Right:Number;// = 120
		public var blitOffset45Left:Number;// = 180
		public var blitOffsetUp:Number;// = 240
		public var blitOffsetDown:Number;// = 300
		public var blitOffset45DownLeft:Number;// = 300
		public var blitOffset45DownRight:Number;// = 300
		public var shotname:String;
		public var isFading:Boolean;// = false
		public var isCriticalHit:Boolean;// = false
		public var vspeed:Number;
		public var basespeed:Number;
		public var maxspeedx:Number;
		public var maxspeedy:Number;
		public var accelx:Number;
		public var accely:Number;
		public var acceldivide:Number;
		public var isLocal:Boolean;// = true
		public var statAttack:Number;// = 1
		public var giveStatusEffect:Boolean;// = false
		public var giveStatusType:String;
		public var fromEnemy:Boolean;// = false
		public var fromWeaponName:String;// = "none"

		public function Bullet(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8:Number=1, _arg9:Boolean=false, _arg10:String="none"){
			var _local11:Bullet;
			super(_arg1);
			_local11 = this;
			_local11.id = _arg7;
			_local11.type = _arg6;
			_local11.dirx = _arg4;
			_local11.diry = _arg5;
			_local11.statAttack = _arg8;
			_local11.fromEnemy = _arg9;
			_local11.fromWeaponName = _arg10;
		}
		override public function defineVars(){
		}
		public function setCritical(){
			var _local1:Bullet = this;
			_local1.isCriticalHit = true;
		}
		public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local11:Boolean;
			var _local3:Bullet = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (((_local9.isDead) || (((!(_local9.isHit)) && (!(_local9.resistBullets)))))){
						_local11 = _local9.getHit(_local3.statAttack, _local3.dirx, true, _local3.fromWeaponName);
						_local3.addImpactEffect(_local11);
						_local7 = true;
						break;
					};
				};
				_local8++;
			};
			if (_local7){
				_local3.fadeShot();
			};
			return (_local7);
		}
		public function checkHittingPlayers():Boolean{
			var _local3:Number;
			var _local7:Boolean;
			var _local1:Bullet = this;
			var _local2:GameModule = _local1.gameObj;
			var _local4:Boolean;
			var _local5:PlayerChar = _local2.playerObj;
			var _local6:Rectangle = new Rectangle();
			_local6.x = (_local1.x + _local1.collRect.x);
			_local6.y = (_local1.y + _local1.collRect.y);
			_local6.width = _local1.collRect.width;
			_local6.height = _local1.collRect.height;
			if (_local5.checkSpriteCollision(_local6)){
				if (((((!(_local1.isStunned)) && (!(_local1.isDead)))) && (_local5.canGetHit()))){
					if (_local1.x < _local5.x){
						_local3 = 1;
					} else {
						_local3 = -1;
					};
					_local7 = _local5.hurtPlayer(_local3, _local1.statAttack);
					_local1.addImpactEffect(true);
					_local1.fadeShot();
					_local4 = true;
				};
			};
			return (_local4);
		}
		public function addImpactEffect(_arg1:Boolean=false){
			var _local2:Bullet = this;
			var _local3:EffectManager = _local2.gameObj.effectManager;
			if (_arg1){
				_local3.addEffect(_local2.x, _local2.y, "BigImpactEffect");
			} else {
				_local3.addEffect(_local2.x, _local2.y, "ImpactEffect");
			};
		}
		public function fadeShot(){
			var _local1:Bullet = this;
			_local1.gameObj.bulletManager.removeBullet(_local1.id);
		}
		public function checkHittingObjects(_arg1:Boolean=false):Boolean{
			var _local9:GameObject;
			var _local2:Bullet = this;
			var _local3:GameModule = _local2.gameObj;
			var _local4:ObjectManager = _local3.objectManager;
			var _local5:Rectangle = new Rectangle();
			var _local6:Boolean;
			_local5.x = (_local2.x + _local2.collRect.x);
			_local5.y = (_local2.y + _local2.collRect.y);
			_local5.width = _local2.collRect.width;
			_local5.height = _local2.collRect.height;
			var _local7:* = _local4.objects.length;
			var _local8:* = 0;
			while (_local8 < _local7) {
				if ((((((((_local4.objects.length > _local8)) && (!((_local4.objects[_local8] == null))))) && ((_local4.objects[_local8] is GameObject)))) && (!((_local4.objects[_local8] == 0))))){
					_local9 = _local4.objects[_local8];
					if (((_local9.checkSpriteCollision(_local5)) && (_local9.acceptsDamage("bullet", _local2.fromWeaponName)))){
						_local9.getHit();
						_local2.addImpactEffect();
						_local2.fadeShot();
						_local6 = true;
						break;
					} else {
						if (((((_arg1) && (_local9.checkSpriteCollision(_local5)))) && (_local9.blocksBullets))){
							_local2.addImpactEffect();
							_local2.fadeShot();
							_local6 = true;
							break;
						};
					};
				};
				_local8++;
			};
			return (_local6);
		}
		public function checkIfCollecting(){
			var _local1:Bullet = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
		}
		public function checkBounce(){
			var _local1:Bullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:Number = _local2.tileWidth;
			var _local4:Number = (_local1.jumpspeed + _local1.gravity);
			var _local5:Number = (_local4 + _local1.y);
			var _local6:Number = (_local1.x + (_local1.speed * _local1.dirx));
			_local1.getMyCorners(_local6, _local5);
			if ((((_local1.jumpspeed >= 0)) && (_local1.isThrown))){
				if (((((_local1.HitDownLeft) || (_local1.HitDownRight))) || (_local1.checkIfOnSlope(_local6, _local5)))){
					if (!_local1.throwBounce){
						_local1.throwBounce = true;
						_local1.bounceY = true;
					} else {
						if (!_local1.throwBounce2){
							_local1.throwBounce2 = true;
							_local1.bounceY = true;
						} else {
							_local1.throwBounce = false;
							_local1.throwBounce2 = false;
							_local1.bounceY = false;
							_local1.dirx = 0;
							_local1.isWalking = false;
							_local1.isThrown = false;
						};
					};
					if (_local1.bounceY){
					};
				};
			};
		}
		override public function destroy(){
		}
		override public function updateObject(){
			var _local1:Bullet = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			if (((_local2.checkOnScreen(_local1)) || ((1 == 1)))){
				if (_local1.dirx != 0){
					_local1.moveChar(_local1.dirx, 0, 0);
				};
				if (_local1.diry != 0){
					_local1.moveChar(0, _local1.diry, 0);
				};
				_local1.checkHittingEnemies();
				_local1.checkHittingObjects();
				_local1.updateSprite();
				if ((_local1.x + _local1.spritewidth) < _local1.gameObj.gameDisplay.currentXcoord){
					_local1.fadeShot();
				} else {
					if (_local1.x > ((_local1.gameObj.gameDisplay.currentXcoord + _local1.gameObj.gameDisplay.screenPxWidth) + 80)){
						_local1.fadeShot();
					};
				};
			};
		}
		public function grabFlipOffset():Number{
			var _local1:Bullet = this;
			var _local2:Number = 0;
			if (_local1.facingDirX == 1){
				if (_local1.facingDirY == 0){
					_local2 = _local1.blitOffsetRight;
				} else {
					if (_local1.facingDirY == -1){
						_local2 = _local1.blitOffset45Right;
					} else {
						if (_local1.facingDirY == 1){
							_local2 = _local1.blitOffset45DownRight;
						};
					};
				};
			} else {
				if (_local1.facingDirX == -1){
					if (_local1.facingDirY == 0){
						_local2 = _local1.blitOffsetLeft;
					} else {
						if (_local1.facingDirY == -1){
							_local2 = _local1.blitOffset45Left;
						} else {
							if (_local1.facingDirY == 1){
								_local2 = _local1.blitOffset45DownLeft;
							};
						};
					};
				} else {
					if (_local1.facingDirY == 1){
						_local2 = _local1.blitOffsetDown;
					} else {
						if (_local1.facingDirY == -1){
							_local2 = _local1.blitOffsetUp;
						};
					};
				};
			};
			return (_local2);
		}

	}
}//package cactusGame.models 

****************

//Character (cactusGame.models.Character)
package cactusGame.models {
	import cactusGame.core.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Character {

		public var weightAmount:Number;// = 0
		public var gameObj:GameModule;
		public var id:Number;
		public var type;
		public var damageAmount:Number;// = 1
		public var sheetname:String;
		public var x:Number;// = 240
		public var y:Number;// = 144
		public var lastx:Number;
		public var lasty:Number;
		public var dirx:Number;// = 1
		public var diry:Number;// = 0
		public var xtile:Number;// = 8
		public var ytile:Number;// = 5
		public var height:Number;// = 15
		public var width:Number;// = 15
		public var collRect:Rectangle;
		public var objectname;
		public var facingDir:Number;// = -1
		public var walkingDir:Number;// = -1
		public var facingWalking:Boolean;// = false
		public var spriteheight:Number;// = 80
		public var spritewidth:Number;// = 128
		public var spriteCenterX:Number;// = 64
		public var spriteCenterY:Number;// = 40
		public var spriteTargetX:Number;// = 75
		public var spriteTargetY:Number;// = 75
		public var sheetWidth:Number;// = 18
		public var sheetHeight:Number;// = 18
		public var flipBlitOffset:Number;// = 0
		public var bounceY:Boolean;// = false
		public var bounceX:Boolean;// = false
		public var bounceDecayX:Number;// = 0.5
		public var bounceDecayY:Number;// = 0.5
		public var minFlyY:Number;
		public var maxFlyY:Number;
		public var flyOffset:Number;
		public var useFlightWave:Boolean;// = false
		public var heightmultiplier:Number;// = 1
		public var widthmultiplier:Number;// = 1
		public var speed:Number;// = 7
		public var walkspeed:Number;// = 7
		public var flySpeed:Number;// = 2
		public var climbSpeed:Number;// = 7
		public var climbDownSpeed:Number;// = 20
		public var ledgeSpeed:Number;// = 6
		public var jumpspeed:Number;// = 0
		public var jumpstart:Number;// = -26
		public var shortjump:Number;// = -10
		public var gravity:Number;// = 2
		public var normalgravity:Number;// = 2
		public var jumpgravity:Number;// = 2
		public var maxjumpvelocity:Number;// = 2147483647
		public var triggerjump:Boolean;// = false
		public var triggerjumpx:Boolean;// = false
		public var jump:Boolean;// = false
		public var duck:Boolean;// = false
		public var onGround:Boolean;// = false
		public var onMovingTile:Boolean;// = false
		public var whichMovingTile;
		public var isGrabbingObject:Boolean;// = false
		public var isCarryingObject:Boolean;// = false
		public var isThrowingObject:Boolean;// = false
		public var whichObjectGrabbed:GameObject;
		public var isWalking:Boolean;// = false
		public var isHit:Boolean;// = false
		public var isStunned:Boolean;// = false
		public var isDead:Boolean;// = false
		public var stunStartTime:Number;// = 0
		public var stunDuration:Number;// = 90
		public var hitStartTime:Number;// = 0
		public var hitDuration:Number;// = 700
		public var isTurning:Boolean;// = false
		public var isFlying:Boolean;// = false
		public var maxHealth:Number;// = 5
		public var currentHealth:Number;// = 5
		public var onWall:Boolean;// = false
		public var onCeiling:Boolean;// = false
		public var climbingledge:Boolean;// = false
		public var climbDirX:Number;// = 0
		public var climbDirY:Number;// = 0
		public var cloudGrab:Boolean;// = false
		public var canClimbUp:Boolean;// = true
		public var canClimbDown:Boolean;// = true
		public var canClimbLedge:Boolean;// = false
		public var canClimbLeft:Boolean;// = true
		public var canClimbRight:Boolean;// = true
		public var climbingWall:Boolean;// = false
		public var climbingCeiling:Boolean;// = false
		public var onSlope:Number;// = 0
		public var onSlopeWallRight:Boolean;// = false
		public var onSlopeWallLeft:Boolean;// = false
		public var upY:Number;
		public var downY:Number;
		public var leftX:Number;
		public var rightX:Number;
		public var midY:Number;
		public var downmidY:Number;
		public var upmidY:Number;
		public var standupY:Number;
		public var HitUpLeft:Boolean;
		public var HitMidLeft:Boolean;
		public var HitDownLeft:Boolean;
		public var HitUpRight:Boolean;
		public var HitMidRight:Boolean;
		public var HitDownRight:Boolean;
		public var HitStandUpLeft:Boolean;
		public var HitStandUpRight:Boolean;
		public var HitUpMidLeft:Boolean;
		public var HitUpMidRight:Boolean;
		public var HitDownMidLeft:Boolean;
		public var HitDownMidRight:Boolean;
		public var animationFrame:Number;// = 0
		public var cycleFrame:Number;// = 0
		public var cycleName:String;// = ""
		public var animationBlitStyle:Number;// = 1
		public var multiSprite:Boolean;// = false

		public function Character(_arg1){
			collRect = new Rectangle(0, 0, 32, 32);
			super();
			var _local2:Character = this;
			_local2.gameObj = _arg1;
			_local2.defineVars();
		}
		public function defineVars(){
		}
		public function checkIfOnCloud():Boolean{
			var _local1:Character = this;
			var _local2:MapManager = _local1.gameObj.mapManager;
			var _local3:* = _local2.getTileProperty(_local1.leftX, _local1.downY, "thrublock");
			var _local4:* = _local2.getTileProperty(_local1.rightX, _local1.downY, "thrublock");
			if ((((((_local3 == 1)) || ((_local4 == 1)))) && (!((_local1.ytile == _local1.downY))))){
				return (true);
			};
			return (false);
		}
		public function checkIfHalfOnCloud(_arg1:Number):Boolean{
			var _local2:Character = this;
			var _local3:MapManager = _local2.gameObj.mapManager;
			var _local4:* = _local3.getTileProperty(_local2.leftX, _local2.downY, "thrublock");
			var _local5:* = _local3.getTileProperty(_local2.rightX, _local2.downY, "thrublock");
			if ((((((_arg1 == -1)) && ((_local4 == 1)))) && (!((_local2.ytile == _local2.downY))))){
				return (true);
			};
			if ((((((_arg1 == 1)) && ((_local5 == 1)))) && (!((_local2.ytile == _local2.downY))))){
				return (true);
			};
			return (false);
		}
		public function checkMovingTiles(_arg1):Boolean{
			var _local2:Character = this;
			var _local3:* = false;
			if (_local2.onMovingTile){
				if (_local2.whichMovingTile){
					_local3 = _local2.whichMovingTile.checkStandingOnObject(_local2);
				};
			};
			if (_local3){
				if (((triggerjump) || (triggerjumpx))){
					triggerjump = false;
					triggerjumpx = false;
				};
			};
			return (_local3);
		}
		public function checkIfAtEdge(_arg1, _arg2){
			var _local3:Character = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			_local3.getMyCorners(_local3.x, (_local3.y + 1));
			if (((_local3.isWalking) && (!(_local3.jump)))){
				if (((((((((((!(_local3.HitDownLeft)) || ((_arg2 == 1)))) && (((!(_local3.HitDownRight)) || ((_arg2 == -1)))))) && (!(_local3.checkIfHalfOnCloud(_arg2))))) && (!(checkMovingTiles(1))))) && (!(_local3.onSlope)))){
					if (_local4.getTileProperty((_local3.xtile + _arg2), (_local3.ytile + 1), "slope")){
					} else {
						if (_local4.getTileProperty((_local3.xtile + _arg2), _local3.ytile, "slope")){
						} else {
							_local3.dirx = (_arg2 * -1);
						};
					};
				};
			};
		}
		public function moveChar(_arg1, _arg2, _arg3, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:Boolean=true){
			var _local11:*;
			var _local14:*;
			var _local15:*;
			var _local16:*;
			var _local17:*;
			var _local18:*;
			var _local19:*;
			var _local20:*;
			var _local21:*;
			var _local22:*;
			var _local7:Character = this;
			var _local8:GameDisplay = _local7.gameObj.gameDisplay;
			var _local9:Number = _local8.tileWidth;
			var _local10:MapManager = _local7.gameObj.mapManager;
			if (_arg3 != 0){
				_local11 = (_local7.jumpspeed * _arg3);
			} else {
				_local11 = _local7.speed;
			};
			if (((((_local7.isFlying) && (_arg2))) && (_local7.useFlightWave))){
				_local14 = Math.ceil(((_local7.maxFlyY * _local9) - _local7.y));
				_local15 = Math.ceil((_local7.y - ((_local7.minFlyY * _local9) + _local9)));
				_local16 = Math.min(_local14, _local15);
				_local17 = ((_local7.flyOffset * _local9) - (_local9 / 2));
				_local18 = Math.min(1, (_local16 / _local17));
				_local11 = Math.max(0.5, (_local7.flySpeed * _local18));
			};
			var _local12:* = Math.floor;
			var _local13:* = Math.abs;
			if (_arg6 == false){
				if (_arg2){
					_local7.y = (_local7.y + (_local11 * _arg2));
				};
				if (_arg1){
					_local7.x = (_local7.x + (_local11 * _arg1));
				};
				_local7.xtile = Math.floor((_local7.x / _local9));
				_local7.ytile = Math.floor((_local7.y / _local9));
			} else {
				_local7.lasty = _local7.y;
				_local7.getMyCorners(_local7.x, (_local7.y + (_local11 * _arg2)));
				if (_arg2 == -1){
					if (((!(_local7.HitUpLeft)) && (!(_local7.HitUpRight)))){
						_local7.y = (_local7.y + (_local11 * _arg2));
					} else {
						_local7.y = (((_local7.ytile - ((_local7.heightmultiplier - 1) / 2)) * _local9) + (_local7.height * _local7.heightmultiplier));
						_local7.checkForSlopes(_local7.dirx, 1);
						if (_local7.isFlying){
							_local7.diry = 1;
						};
						_local7.jumpspeed = 0;
					};
				};
				if (_arg2 == 1){
					if (((((((!(_local7.HitDownLeft)) && (!(_local7.HitDownRight)))) && (!(_local7.checkIfOnCloud())))) && (!(_local7.checkMovingTiles(y))))){
						_local7.y = (_local7.y + (_local11 * _arg2));
					} else {
						if (_local7.bounceY){
							_local7.jumpspeed = _local12((_local13((_local7.jumpspeed * _local7.bounceDecayY)) * -1));
							if (_local7.jumpspeed > -2){
								_local7.jump = false;
							};
							_local7.speed = _local12((_local7.speed * _local7.bounceDecayX));
						} else {
							_local7.jump = false;
							_local7.triggerjump = false;
							_local7.triggerjumpx = false;
						};
						if (_local7.isFlying){
							_local7.diry = -1;
						};
						if (_local7.onMovingTile){
						} else {
							_local7.y = (((_local7.ytile + 1) * _local9) - _local7.height);
							_local7.ytile = Math.floor((_local7.y / _local9));
						};
					};
				};
				_local7.getMyCorners((_local7.x + (_local11 * _arg1)), _local7.y);
				if ((((((_arg1 == -1)) && ((_local11 > 0)))) || ((((_arg1 == 1)) && ((_local11 < 0)))))){
					if (((((((((!(_local7.HitDownLeft)) && (!(_local7.HitUpLeft)))) && (!(_local7.HitUpMidLeft)))) && (!(_local7.HitDownMidLeft)))) || (((_local7.onSlope) && (!(_local7.onSlopeWallLeft)))))){
						_local7.x = (_local7.x + (_local11 * _arg1));
						_local7.isWalking = true;
					} else {
						_local7.x = ((_local7.xtile * _local9) + _local7.width);
						if (_arg4){
							_local7.dirx = 1;
						} else {
							_local7.isWalking = false;
							if (_local7.bounceX){
								_local7.speed = Math.floor((_local7.speed * _local7.bounceDecayX));
								_local7.dirx = 1;
							} else {
								_local7.dirx = 0;
							};
						};
					};
				};
				if ((((((_arg1 == 1)) && ((_local11 > 0)))) || ((((_arg1 == -1)) && ((_local11 < 0)))))){
					if (((((((((!(_local7.HitUpRight)) && (!(_local7.HitDownRight)))) && (!(_local7.HitUpMidRight)))) && (!(_local7.HitDownMidRight)))) || (((_local7.onSlope) && (!(_local7.onSlopeWallRight)))))){
						_local7.x = (_local7.x + (_local11 * _arg1));
						_local7.isWalking = true;
					} else {
						_local7.x = (((_local7.xtile + 1) * _local9) - _local7.width);
						if (_arg4){
							_local7.dirx = -1;
						} else {
							_local7.isWalking = false;
							if (_local7.bounceX){
								_local7.speed = Math.floor((_local7.speed * _local7.bounceDecayX));
								_local7.dirx = -1;
							} else {
								_local7.dirx = 0;
							};
						};
					};
				};
				_local19 = 0;
				_local20 = (_local8.gameObj.dataManager.currentScreenData.tileArray[0].length * _local8.tileWidth);
				_local21 = 0;
				_local22 = (_local8.gameObj.dataManager.currentScreenData.tileArray.length * _local8.tileWidth);
				if (_local7.x < _local19){
					_local7.x = _local19;
					_local7.dirx = 1;
					if ((_local7 is PlayerChar)){
						PlayerChar(_local7).checkGoingThroughDoor(-1, 0);
					};
				};
				if ((((_local7 is PlayerChar)) && (_local7.gameObj.gameCam.lockedCamera))){
					if (_local7.x < (_local8.currentXcoord + 16)){
						_local7.x = (_local8.currentXcoord + 16);
					} else {
						if (_local7.x > ((_local8.currentXcoord + _local8.screenPxWidth) - 16)){
							_local7.x = ((_local8.currentXcoord + _local8.screenPxWidth) - 16);
						};
					};
				};
				if (_local7.x > _local20){
					if ((((_local7 is PlayerChar)) && (PlayerChar(_local7).isFinishingLevel))){
						if (_local7.x > (_local20 + (_local7.spritewidth / 2))){
							if (!_local7.gameObj.gameDisplay.isTransitionOut){
								_local7.gameObj.gameDisplay.startTransition("out");
							};
							_local7.x = (_local20 + (_local7.spritewidth / 2));
							_local7.isWalking = false;
						};
					} else {
						_local7.x = _local20;
						_local7.dirx = -1;
						if ((_local7 is PlayerChar)){
							PlayerChar(_local7).checkGoingThroughDoor(1, 0);
						};
					};
				};
				if (_local7.y < _local21){
					_local7.y = _local21;
					if (_local7.onWall){
						_local7.canClimbUp = false;
					};
					if (_local7.isFlying){
						_local7.diry = 1;
					};
					if ((_local7 is PlayerChar)){
						PlayerChar(_local7).checkGoingThroughDoor(0, -1);
					};
				};
				if (_local7.y > _local22){
					if ((((_local7 is PlayerChar)) && (!(PlayerChar(_local7).isFinishingLevel)))){
						if (_local7.y > (_local22 + (_local7.heightmultiplier * _local7.height))){
							if (_local7.isDead){
								PlayerChar(_local7).restartPlayer();
							} else {
								_local7.y = ((_local22 + (_local7.heightmultiplier * _local7.height)) - 3);
								if (_local7.gameObj.dataManager.isOnTrain()){
									PlayerChar(_local7).fellOffTrain = true;
									PlayerChar(_local7).hurtPlayer(-1, int.MAX_VALUE, true);
								} else {
									PlayerChar(_local7).hurtPlayer(0, int.MAX_VALUE, true);
								};
								if ((_local7 is PlayerChar)){
									PlayerChar(_local7).checkGoingThroughDoor(0, 1);
								};
							};
						};
					};
					if (_local7.y > ((_local22 + _local7.spriteheight) + 50)){
						_local7.y = ((_local22 + _local7.spriteheight) + 50);
					};
					if (_local7.isFlying){
						_local7.diry = -1;
					};
				};
				_local7.xtile = Math.floor((_local7.x / _local9));
				_local7.ytile = Math.floor((_local7.y / _local9));
				_local7.checkForSlopes(_arg1, _arg2);
				if (_arg5){
					_local7.checkIfAtEdge(_local11, _arg1);
				};
			};
			return (true);
		}
		public function fallChar(){
			var _local1:Character = this;
			if (((!(_local1.jump)) && (!(_local1.isFlying)))){
				_local1.getMyCorners(_local1.x, (_local1.y + 1));
				if (((((((((!(_local1.HitDownLeft)) && (!(_local1.HitDownRight)))) && (!(_local1.checkIfOnCloud())))) && (!(checkMovingTiles(1))))) && (!(_local1.onSlope)))){
					_local1.jumpspeed = 0;
					_local1.jump = true;
				};
			};
		}
		public function jumpChar(_arg1:Boolean=true){
			var _local2:Character = this;
			var _local3:GameDisplay = _local2.gameObj.gameDisplay;
			_local2.jumpspeed = (_local2.jumpspeed + _local2.gravity);
			if (((_local2.isCarryingObject) && (!((_local2.whichObjectGrabbed == null))))){
				_local2.jumpspeed = (_local2.jumpspeed + _local2.whichObjectGrabbed.grabWeight);
			};
			var _local4:Number = Math.min(_local2.maxjumpvelocity, (_local3.tileWidth - _local2.height));
			if (_local2.jumpspeed > _local4){
				_local2.jumpspeed = _local4;
			};
			if (_local2.jumpspeed < 0){
				_local2.moveChar(0, -1, -1, false, false, _arg1);
			} else {
				if (_local2.jumpspeed > 0){
					_local2.gravity = _local2.normalgravity;
					if (((_local2.isCarryingObject) && (!((_local2.whichObjectGrabbed == null))))){
						_local2.gravity = _local2.whichObjectGrabbed.grabGravity;
					};
					_local2.moveChar(0, 1, 1, false, false, _arg1);
				};
			};
		}
		public function getMyCorners(_arg1, _arg2){
			var _local3:Character = this;
			var _local4:* = _local3.gameObj.gameDisplay.tileWidth;
			var _local5:* = Math.floor;
			var _local6:MapManager = _local3.gameObj.mapManager;
			_local3.downY = _local5((((_arg2 + _local3.height) - 1) / _local4));
			_local3.upY = _local5(((_arg2 - _local3.height) / _local4));
			if (_local3.duck){
				_local3.upY = _local5(((_arg2 - _local3.height) / _local4));
				_local3.standupY = _local5(((_arg2 - (_local3.height * _local3.heightmultiplier)) / _local4));
			} else {
				_local3.upY = _local5(((_arg2 - (_local3.height * _local3.heightmultiplier)) / _local4));
				_local3.standupY = _local3.upY;
			};
			_local3.leftX = _local5(((_arg1 - _local3.width) / _local4));
			_local3.rightX = _local5((((_arg1 + _local3.width) - 1) / _local4));
			if (_local3.downY != _local3.upY){
				_local3.midY = (_local3.upY + ((_local3.downY - _local3.upY) - 1));
				_local3.downmidY = _local3.midY;
				_local3.upmidY = (_local3.downY - ((_local3.downY - _local3.upY) - 1));
			} else {
				_local3.midY = _local3.downY;
				_local3.downmidY = _local3.midY;
				_local3.upmidY = _local3.midY;
			};
			_local3.HitUpLeft = Boolean(_local6.getTileProperty(_local3.leftX, _local3.upY, "collision"));
			_local3.HitDownLeft = Boolean(_local6.getTileProperty(_local3.leftX, _local3.downY, "collision"));
			_local3.HitUpRight = Boolean(_local6.getTileProperty(_local3.rightX, _local3.upY, "collision"));
			_local3.HitDownRight = Boolean(_local6.getTileProperty(_local3.rightX, _local3.downY, "collision"));
			_local3.HitMidLeft = Boolean(_local6.getTileProperty(_local3.leftX, _local3.midY, "collision"));
			_local3.HitMidRight = Boolean(_local6.getTileProperty(_local3.rightX, _local3.midY, "collision"));
			_local3.HitUpMidLeft = Boolean(_local6.getTileProperty(_local3.leftX, _local3.upmidY, "collision"));
			_local3.HitUpMidRight = Boolean(_local6.getTileProperty(_local3.rightX, _local3.upmidY, "collision"));
			_local3.HitDownMidLeft = _local3.HitMidLeft;
			_local3.HitDownMidRight = _local3.HitMidRight;
			_local3.HitStandUpLeft = Boolean(_local6.getTileProperty(_local3.leftX, _local3.standupY, "collision"));
			_local3.HitStandUpRight = Boolean(_local6.getTileProperty(_local3.rightX, _local3.standupY, "collision"));
			var _local7:Boolean;
			if (_local3.isDead){
				_local7 = false;
			};
		}
		public function checkIfOnSlope(_arg1, _arg2, _arg3:Boolean=false):Number{
			var _local10:*;
			var _local11:*;
			var _local4:Character = this;
			var _local5:MapManager = _local4.gameObj.mapManager;
			var _local6:* = _local4.gameObj.gameDisplay.tileWidth;
			var _local7:* = Math.floor;
			var _local8:* = Math.abs;
			var _local9:* = Math.ceil;
			var _local12:* = _local4.ytile;
			var _local13:* = _local4.xtile;
			var _local14:* = _local4.x;
			var _local15:* = _local4.y;
			if (((_local5.getTileProperty(_local13, (_local12 + 1), "slope")) && (((!(_local4.jump)) || (_arg3))))){
				_local12 = (_local12 + 1);
			};
			var _local16:* = 0;
			if (((_local5.getTileProperty(_local13, _local12, "slope")) && (!((_arg2 == -1))))){
				_local16 = _local5.getTileProperty(_local13, _local12, "slope");
			};
			return (_local16);
		}
		public function checkForSlopes(_arg1, _arg2){
			var _local9:*;
			var _local10:*;
			var _local13:*;
			var _local3:Character = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:Number = _local3.gameObj.gameDisplay.tileWidth;
			var _local6:* = Math.floor;
			var _local7:* = Math.abs;
			var _local8:* = Math.ceil;
			var _local11:* = _local3.dirx;
			var _local12:* = _local3.y;
			if (((((((((_local4.getTileProperty(_local3.xtile, (_local3.ytile + 1), "slope")) && (!(_local3.jump)))) && (!(_local3.isFlying)))) && (!(_local3.onWall)))) && (!(_local3.onCeiling)))){
				_local3.ytile = (_local3.ytile + 1);
				_local3.y = (((_local3.ytile + 1) * _local5) - _local3.height);
				_local9 = 0;
			} else {
				if (((((((((_local4.getTileProperty(_local3.xtile, (_local3.ytile - 1), "slope")) && (!(_local3.jump)))) && (!(_local3.isFlying)))) && (!(_local3.onWall)))) && (!(_local3.onCeiling)))){
					_local3.ytile = (_local3.ytile - 1);
					_local3.y = (((_local3.ytile - 1) * _local5) - _local3.height);
					_local9 = 0;
				};
			};
			if (((_local4.getTileProperty(_local3.xtile, _local3.ytile, "slope")) && (!((_arg2 == -1))))){
				if (_local3.isFlying){
					_local3.diry = -1;
				} else {
					if (_arg2 == 1){
						_local3.y = (((_local3.ytile + 1) * _local5) - _local3.height);
					};
				};
				_local13 = (_local3.x - (_local3.xtile * _local5));
				_local3.onSlope = _local4.getTileProperty(_local3.xtile, _local3.ytile, "slope");
				if (((_local3.jump) && ((_local3.jumpspeed > 0)))){
					if (_local3.bounceY){
						_local3.diry = -1;
						if ((((((_local3.onSlope == 1)) || ((_local3.onSlope == 3)))) || ((_local3.onSlope == 4)))){
							_local3.dirx = -1;
						} else {
							if ((((((_local3.onSlope == 2)) || ((_local3.onSlope == 5)))) || ((_local3.onSlope == 6)))){
								_local3.dirx = 1;
							};
						};
						if (_local3.jumpspeed != 0){
						} else {
							_local3.dirx = 0;
							_local3.jumpspeed = 0;
							_local3.speed = 0;
							_local3.bounceY = false;
							_local3.jump = false;
							_local3.triggerjump = false;
							_local3.triggerjumpx = false;
						};
					} else {
						_local3.jump = false;
						_local3.triggerjump = false;
						_local3.triggerjumpx = false;
					};
				};
				if (!_local3.onMovingTile){
					if (_local3.onSlope == 1){
						_local9 = _local13;
						_local3.y = ((((_local3.ytile + 1) * _local5) - _local3.height) - _local9);
					} else {
						if (_local3.onSlope == 2){
							_local9 = (_local5 - _local13);
							_local3.y = ((((_local3.ytile + 1) * _local5) - _local3.height) - _local9);
						} else {
							if (_local3.onSlope == 3){
								_local9 = _local13;
								_local3.y = ((((_local3.ytile + 1) * _local5) - _local3.height) - _local6((_local9 / 2)));
							} else {
								if (_local3.onSlope == 4){
									_local9 = _local13;
									_local3.y = ((((_local3.ytile + 1) * _local5) - _local3.height) - ((_local5 / 2) + _local6((_local9 / 2))));
								} else {
									if (_local3.onSlope == 5){
										_local9 = (_local5 - _local13);
										_local3.y = ((((_local3.ytile + 1) * _local5) - _local3.height) - ((_local5 / 2) + _local6((_local9 / 2))));
									} else {
										if (_local3.onSlope == 6){
											_local9 = (_local5 - _local13);
											_local3.y = ((((_local3.ytile + 1) * _local5) - _local3.height) - _local6((_local9 / 2)));
										};
									};
								};
							};
						};
					};
				};
				if (((_local4.getTileProperty((_local3.xtile + 1), (_local3.ytile - 1), "collision")) || (_local4.getTileProperty((_local3.xtile + 1), (_local3.ytile - 2), "collision")))){
					_local3.onSlopeWallRight = true;
				} else {
					_local3.onSlopeWallRight = false;
				};
				if (((_local4.getTileProperty((_local3.xtile - 1), (_local3.ytile - 1), "collision")) || (_local4.getTileProperty((_local3.xtile - 1), (_local3.ytile - 2), "collision")))){
					_local3.onSlopeWallLeft = true;
				} else {
					_local3.onSlopeWallLeft = false;
				};
			} else {
				if (_local3.onSlope){
					if ((((((((((_local3.onSlope == 1)) && ((_arg1 == 1)))) || ((((_local3.onSlope == 2)) && ((_arg1 == -1)))))) || ((((_local3.onSlope == 4)) && ((_arg1 == 1)))))) || ((((_local3.onSlope == 5)) && ((_arg1 == -1)))))){
						if (_local4.getTileProperty(_local3.xtile, _local3.ytile, "collision")){
							_local3.ytile = (_local3.ytile - 1);
						};
						_local3.y = (((_local3.ytile + 1) * _local5) - _local3.height);
					} else {
						if ((((((((((_local3.onSlope == 1)) && ((_arg1 == -1)))) || ((((_local3.onSlope == 2)) && ((_arg1 == 1)))))) || ((((_local3.onSlope == 3)) && ((_arg1 == -1)))))) || ((((_local3.onSlope == 6)) && ((_arg1 == 1)))))){
							_local3.y = (((_local3.ytile + 1) * _local5) - _local3.height);
						};
					};
				};
				if (((((_local3.jump) && ((_local3.diry == 1)))) && (_local3.onSlope))){
				};
				_local3.onSlope = 0;
				_local9 = 0;
			};
			if (_local3.isFlying){
				_local3.y = _local12;
				if (_local3.dirx == 1){
					if ((((((_local3.onSlope == 1)) || ((_local3.onSlope == 3)))) || ((_local3.onSlope == 4)))){
						_local3.dirx = -1;
					};
				} else {
					if (_local3.dirx == -1){
						if ((((((_local3.onSlope == 2)) || ((_local3.onSlope == 5)))) || ((_local3.onSlope == 6)))){
							_local3.dirx = 1;
						};
					};
				};
			};
		}
		public function grabAnimationCycle():Array{
			var _local1:Array = [];
			return (_local1);
		}
		public function randomizeAnimationCycle(){
		}
		public function endAnimationCycle(){
		}
		public function killMe(_arg1:Number=1){
		}
		public function adjustHealth(_arg1){
			var _local2:Character = this;
			_local2.currentHealth = (_local2.currentHealth + _arg1);
			if (_local2.currentHealth > _local2.maxHealth){
				_local2.currentHealth = _local2.maxHealth;
			} else {
				if (_local2.currentHealth <= 0){
					_local2.currentHealth = 0;
					_local2.killMe();
				};
			};
		}
		public function checkDropThruCloud():Boolean{
			var _local1:Character = this;
			var _local2:MapManager = _local1.gameObj.mapManager;
			_local1.getMyCorners(_local1.x, (_local1.y + 1));
			var _local3:* = _local2.getTileProperty(_local1.leftX, _local1.downY, "thrublock");
			var _local4:* = _local2.getTileProperty(_local1.rightX, _local1.downY, "thrublock");
			var _local5:* = _local2.getTileProperty(_local1.leftX, (_local1.downY + 1), "collision");
			var _local6:* = _local2.getTileProperty(_local1.rightX, (_local1.downY + 1), "collision");
			if ((((((((_local3 == 1)) || ((_local4 == 1)))) && (!((_local1.ytile == _local1.downY))))) && (((!(_local5)) && (!(_local6)))))){
				return (true);
			};
			return (false);
		}
		public function checkForCloudToBottom(_arg1:Number, _arg2:Number):Boolean{
			var _local3:Character = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:GameDisplay = _local3.gameObj.gameDisplay;
			var _local6:Boolean;
			var _local7:* = _arg2;
			while (_local7 < _local5.levelTileHeight) {
				if ((((_local4.getTileProperty(_arg1, _local7, "thrublock") == 1)) || ((_local4.getTileProperty(_arg1, _local7, "collision") == 1)))){
					_local6 = true;
					break;
				};
				_local7++;
			};
			return (_local6);
		}
		public function adjustFrameSync(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7){
			var _local8:Character = this;
			if (_arg1 != _arg2){
				_local8.animationFrame = _arg3;
				_local8.cycleFrame = 0;
				_local8.cycleName = _arg1;
			};
		}
		public function updateObject(){
		}
		public function updateSprite(){
			var _local2:Array;
			var _local4:*;
			var _local1:Character = this;
			_local2 = _local1.grabAnimationCycle();
			var _local3:* = _local1.animationFrame;
			var _local5:* = _local1.cycleFrame;
			var _local6:* = _local2[0];
			var _local7:* = _local2[1];
			if (_local7 == 1){
				_local4 = _local2[5];
			} else {
				if (_local7 == 2){
					_local4 = _local2[5][0];
				};
			};
			if (_local6 != _local1.cycleName){
				_local1.adjustFrameSync(_local6, _local1.cycleName, _local4, _local3, _local5, _local7, _local2);
			} else {
				_local1.adjustFrameSync(_local6, _local1.cycleName, _local4, _local3, _local5, _local7, _local2);
				_local1.spriteChangeFrame(1, _local2, _local7);
			};
			_local1.animationBlitStyle = _local2[2];
		}
		public function spriteChangeFrame(_arg1, _arg2:Array, _arg3){
			var _local5:*;
			var _local6:*;
			var _local7:*;
			var _local8:*;
			var _local9:*;
			var _local4:Character = this;
			if (_arg3 == 1){
				_local4.animationFrame = (_local4.animationFrame + _arg1);
				_local5 = _arg2[3];
				_local6 = _arg2[4];
				_local7 = _arg2[5];
				_local8 = _arg2[6];
				if (_local4.animationFrame > _local8){
					if (_local5){
						_local4.animationFrame = _local8;
						_local4.randomizeAnimationCycle();
					} else {
						if (_local6 == -1){
							_local4.animationFrame = _local8;
							_local4.endAnimationCycle();
						} else {
							_local4.animationFrame = _local6;
						};
					};
				};
				if ((((_local4.animationFrame < _local6)) && (!((_local4.facingDir == _local4.walkingDir))))){
					_local4.animationFrame = _local8;
				};
			} else {
				if (_arg3 == 2){
					_local9 = _arg2[5].length;
					_local5 = _arg2[3];
					_local6 = _arg2[4];
					_local7 = _arg2[5][0];
					_local8 = (_arg2[5].length - 1);
					_local4.cycleFrame = (_local4.cycleFrame + _arg1);
					if (_local4.cycleFrame < 0){
						_local4.cycleFrame = _local8;
					} else {
						if (_local4.cycleFrame > _local8){
							if (_local5){
								_local4.cycleFrame = _local8;
								_local4.randomizeAnimationCycle();
							} else {
								if (_local6 == -1){
									_local4.cycleFrame = _local8;
									_local4.endAnimationCycle();
								} else {
									_local4.cycleFrame = _local6;
								};
							};
						};
					};
					_local4.animationFrame = _arg2[5][_local4.cycleFrame];
				};
			};
		}
		public function checkSpriteCollision(_arg1:Rectangle):Boolean{
			var _local2:Character = this;
			var _local3:Boolean;
			var _local4:Rectangle = new Rectangle();
			_local4.x = (_local2.x + _local2.collRect.x);
			_local4.y = (_local2.y + _local2.collRect.y);
			_local4.width = _local2.collRect.width;
			_local4.height = _local2.collRect.height;
			_local3 = _local4.intersects(_arg1);
			return (_local3);
		}
		public function destroy(){
		}

	}
}//package cactusGame.models 

****************

//Effect (cactusGame.models.Effect)
package cactusGame.models {
	import cactusGame.core.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Effect extends Character {

		public var whichScreen:Number;// = -1
		public var subtype:String;
		public var followPlayer:Boolean;// = false
		public var playerXoffset:Number;// = 0
		public var playerYoffset:Number;// = 0
		public var foreground:Boolean;// = false

		public function Effect(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:String, _arg6:Boolean, _arg7:Number, _arg8:Number){
			super(_arg1);
			var _local9:Effect = this;
			_local9.id = _arg4;
			_local9.subtype = _arg5;
			_local9.followPlayer = _arg6;
			_local9.playerXoffset = _arg7;
			_local9.playerYoffset = _arg8;
			_local9.placeEffect(_arg2, _arg3);
		}
		public function setupParams(_arg1:Array){
		}
		public function placeEffect(_arg1:Number, _arg2:Number){
			var _local3:Effect = this;
			var _local4:GameDisplay = _local3.gameObj.gameDisplay;
			var _local5:* = Math.floor;
			_local3.x = _arg1;
			_local3.y = _arg2;
			_local3.xtile = Math.floor((_local3.x / _local4.tileWidth));
			_local3.ytile = Math.floor((_local3.y / _local4.tileWidth));
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Effect = this;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Effect = this;
		}
		public function checkOnScreen():Boolean{
			var _local1:Effect = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (_local2.checkOnScreen(_local1));
		}
		override public function updateObject(){
			var _local1:Effect = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EffectManager = _local1.gameObj.effectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				if (_local1.followPlayer){
					_local1.x = (_local2.playerObj.x + _local1.playerXoffset);
					_local1.y = (_local2.playerObj.y + _local1.playerYoffset);
					_local1.xtile = Math.floor((_local1.x / _local4.tileWidth));
					_local1.ytile = Math.floor((_local1.y / _local4.tileWidth));
				};
				_local1.updateSprite();
			} else {
				if (_local1.xtile < (_local4.currentXtileLeft - 4)){
					_local3.removeEffect(_local1.id);
				} else {
					if (_local1.y > (_local4.screenPxHeight * 2)){
						_local3.removeEffect(_local1.id);
					};
				};
			};
		}

	}
}//package cactusGame.models 

****************

//Enemy (cactusGame.models.Enemy)
package cactusGame.models {
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class Enemy extends Character {

		public var whichScreen:Number;// = -1
		public var whichTileset:Number;// = 0
		public var screenObjID:Number;// = -1
		public var canReact:Boolean;// = true
		public var waitingToDie:Boolean;// = false
		public var resistBullets:Boolean;// = false
		public var waitActivate:Boolean;// = false
		public var waitPanBack:Boolean;// = false
		public var waitType:String;
		public var globalStateID:Number;
		public var wasGloballyTriggered:Boolean;// = false
		public var currentTriggers:Number;// = 0
		public var necessaryTriggers:Number;// = 1
		public var tellTriggerArray;
		public var tellTriggerPan;
		public var tellTriggerPanTarget;
		public var fromTriggerArray;
		public var broadcastStyle:Number;// = 1
		public var broadcastOff:Boolean;// = false
		public var broadcastOn:Boolean;// = false
		public var broadcastAmount:Number;// = 0
		public var broadcastAmountOn:Number;// = -1
		public var broadcastAmountOff:Number;// = 1
		public var broadcastReceiptMethod:Number;// = 1
		public var dieJumpSpeed:Number;// = -24
		public var dieSpeed:Number;// = 3
		public var hitsWhileDead:Number;// = 0
		public var noticedPlayer:Boolean;// = false
		public var alwaysNoticePlayer:Boolean;// = false
		public var statAttack:Number;// = 1
		public var hasDroppedWeapon:Boolean;// = false
		public var dropWeaponChance:Number;// = 1
		public var dropWeaponSKU:String;// = ""
		public var rememberKilled:Boolean;// = true
		public var onSingleTile:Boolean;// = false
		public var weaponCycleData:Array;
		public var whichWeapon:Weapon;
		public var weaponSKU:String;// = ""
		public var usedWeapons:Array;
		public var usedWeaponsJuggling:Array;
		public var finalWeapon:String;// = ""
		public var points:Number;// = 100
		public var lookForPlayerRect:Rectangle;
		public var keepChasingPlayerRect:Rectangle;
		public var canDodgeAttacks:Boolean;// = false
		public var dodgeChance:Number;// = 0.3
		public var attackChangeInRange:Number;// = 0.03
		public var isDodging:Boolean;// = false
		public var isAttacking:Boolean;// = false

		public function Enemy(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number, _arg8:Array){
			usedWeapons = [];
			usedWeaponsJuggling = [];
			lookForPlayerRect = new Rectangle(-80, -80, 180, 80);
			keepChasingPlayerRect = new Rectangle(-450, -150, 900, 300);
			super(_arg1);
			var _local9:Enemy = this;
			_local9.xtile = _arg2;
			_local9.ytile = _arg3;
			_local9.id = _arg4;
			_local9.whichScreen = _arg5;
			_local9.whichTileset = _arg6;
			_local9.screenObjID = _arg7;
			_local9.setupParams(_arg8);
			_local9.placeEnemy(_arg2, _arg3);
		}
		public function setupParams(_arg1:Array){
		}
		public function placeEnemy(_arg1, _arg2){
			var _local3:Enemy = this;
			var _local4:GameDisplay = _local3.gameObj.gameDisplay;
			var _local5:* = Math.floor;
			_local3.xtile = _arg1;
			_local3.ytile = _arg2;
			_local3.x = ((_local3.xtile * _local4.tileWidth) + (_local4.tileWidth / 2));
			_local3.y = ((_local3.ytile * _local4.tileWidth) + (_local4.tileWidth / 2));
			if (((((((!(_local3.gameObj.mapManager.getTileProperty((_local3.xtile - 1), (_local3.ytile + 1), "collision"))) && (!(_local3.gameObj.mapManager.getTileProperty((_local3.xtile - 1), (_local3.ytile + 1), "thrublock"))))) && (((!(_local3.gameObj.mapManager.getTileProperty((_local3.xtile + 1), (_local3.ytile + 1), "collision"))) && (!(_local3.gameObj.mapManager.getTileProperty((_local3.xtile + 1), (_local3.ytile + 1), "thrublock"))))))) && (((_local3.gameObj.mapManager.getTileProperty(_local3.xtile, (_local3.ytile + 1), "collision")) || (_local3.gameObj.mapManager.getTileProperty(_local3.xtile, (_local3.ytile + 1), "thrublock")))))){
				_local3.onSingleTile = true;
			};
			_local3.fallChar();
		}
		public function getHit(_arg1:Number=1, _arg2:Number=1, _arg3:Boolean=false, _arg4:String="none"):Boolean{
			var _local5:Enemy = this;
			var _local6:Boolean;
			_local5.currentHealth = (_local5.currentHealth - _arg1);
			_local5.isHit = true;
			_local5.gameObj.playerObj.addToCombo();
			if (_local5.usedWeapons.indexOf(_arg4) == -1){
				_local5.usedWeapons.push(_arg4);
			};
			if ((((_local5.currentHealth <= 0)) && ((_local5.hitsWhileDead == 0)))){
				_local5.finalWeapon = _arg4;
			};
			if ((((_local5.currentHealth <= 0)) && ((_local5.usedWeaponsJuggling.indexOf(_arg4) == -1)))){
				if (_local5.hitsWhileDead > 0){
					_local5.usedWeaponsJuggling.push(_arg4);
				};
			};
			_local5.gameObj.soundManager.playSound((("impact_" + Math.ceil((Math.random() * 3))) + ".wav"));
			if (_local5.currentHealth <= 0){
				_local5.killMe(_arg2);
				_local6 = true;
			};
			return (_local6);
		}
		override public function killMe(_arg1:Number=1){
			var _local2:Enemy = this;
			var _local3:ItemManager = _local2.gameObj.itemManager;
			_local2.isHit = true;
			_local2.isDead = true;
			_local2.isFlying = false;
			_local2.hitsWhileDead++;
			_local2.speed = _local2.dieSpeed;
			_local2.dirx = _arg1;
			_local2.jumpspeed = (_local2.dieJumpSpeed / 2);
			if (_local2.hitsWhileDead > 1){
				_local2.jumpspeed = (_local2.jumpspeed - (_local2.hitsWhileDead * 2));
				if (_local2.jumpspeed < _local2.dieJumpSpeed){
					_local2.jumpspeed = _local2.dieJumpSpeed;
				};
				if (_local2.dirx == 0){
					if (Math.random() > 0.5){
						_local2.dirx = 1;
					} else {
						_local2.dirx = -1;
					};
				};
				if (_local2.hitsWhileDead > 3){
					_local2.speed = (_local2.speed + 1);
				};
			};
			_local2.jump = true;
			_local2.gameObj.userData.earnPoints(_local2.points);
			_local3.dropMoney(_local2.hitsWhileDead, _local2.xtile, _local2.ytile);
			if (((_local2.rememberKilled) && ((_local2.hitsWhileDead == 1)))){
				_local2.gameObj.dataManager.currentScreenData.saveEnemyState((_local2.id - 1), [0]);
			};
			if (((!(_local2.hasDroppedWeapon)) && (_local2.whichWeapon))){
				if (Math.random() < _local2.dropWeaponChance){
					_local2.gameObj.itemManager.addItem(_local2.xtile, _local2.ytile, _local2.whichWeapon.dropName, 1, null, true);
					_local2.hasDroppedWeapon = true;
					_local2.whichWeapon.destroy();
					_local2.whichWeapon = null;
				};
			};
			if (_local2.hitsWhileDead == 1){
				_local2.gameObj.enemyManager.jugglingEnemies++;
				_local2.gameObj.challengeManager.recordMultiJuggle(_local2.gameObj.enemyManager.jugglingEnemies);
			};
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:Enemy = this;
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:Enemy = this;
		}
		public function broadcastTriggered(_arg1:Number, _arg2:Boolean=false){
			var _local5:*;
			var _local6:*;
			var _local7:*;
			var _local8:*;
			var _local3:Enemy = this;
			var _local4:GameModule = _local3.gameObj;
			if (_local3.tellTriggerArray){
				_local5 = 0;
				while (_local5 < _local3.tellTriggerArray.length) {
					_local6 = _local3.tellTriggerArray[_local5][0];
					_local7 = _local3.tellTriggerArray[_local5][1];
					_local8 = 0;
					if (((_local3.tellTriggerPan) && ((_local3.tellTriggerPanTarget == (_local5 + 1))))){
						_local8 = 1;
					};
					if (_local7 == 1){
						_local4.objectManager.activateObject(_local3.whichScreen, _local6, _local8, _arg1, _arg2);
					};
					_local5++;
				};
			};
		}
		public function sendTriggered(_arg1:Number, _arg2, _arg3:Boolean=false){
			var _local4:Enemy = this;
			var _local5:Number = _arg1;
			_local4.killMe(1);
		}
		public function setCameraPan(_arg1, _arg2){
		}
		public function stopCameraPan(){
		}
		public function checkOnScreen():Boolean{
			var _local1:Enemy = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (_local2.checkOnScreen(_local1));
		}
		public function saveEnemyKill(){
			var _local1:Enemy = this;
			_local1.gameObj.userData.saveEnemyKill(_local1.type, _local1.weaponSKU, _local1.finalWeapon, _local1.hitsWhileDead, _local1.usedWeapons, _local1.usedWeaponsJuggling);
		}
		public function removeEnemy(){
			var _local1:Enemy = this;
			var _local2:EnemyManager = _local1.gameObj.enemyManager;
			_local1.broadcastTriggered(1);
			_local1.gameObj.enemyManager.jugglingEnemies--;
			if (_local1.gameObj.enemyManager.jugglingEnemies < 0){
				_local1.gameObj.enemyManager.jugglingEnemies = 0;
			};
			if (_local1.gameObj.dataManager.currentScreenData.roomID == 41){
				_local1.gameObj.challengeManager.recordTag("gorgeEnemy");
			};
			_local2.removeEnemy(_local1.id);
		}
		override public function updateObject(){
			var _local1:Enemy = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:EnemyManager = _local1.gameObj.enemyManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			_local1.jumpChar();
			_local1.moveChar(_local1.dirx, 0, 0, true, true);
			_local1.walkingDir = _local1.dirx;
			if (_local1.facingWalking){
				_local1.facingDir = _local1.walkingDir;
			};
			if (_local4.checkOnScreen(_local1)){
				_local1.updateSprite();
			} else {
				if (_local1.xtile < (_local4.currentXtileLeft - 4)){
					_local3.removeEnemy(_local1.id);
				} else {
					if (_local1.y > (_local4.screenPxHeight * 2)){
						_local3.removeEnemy(_local1.id);
					};
				};
			};
		}
		override public function destroy(){
			var _local1:Enemy = this;
			if (_local1.isDead){
				_local1.saveEnemyKill();
			};
		}
		public function startShoving(){
		}
		public function startQuickAttacking(){
		}
		public function startAttacking(){
		}
		public function lookForPlayer(){
			var _local3:Rectangle;
			var _local1:Enemy = this;
			var _local2:PlayerChar = _local1.gameObj.playerObj;
			if (!_local1.noticedPlayer){
				_local3 = new Rectangle((_local1.x + _local1.lookForPlayerRect.x), (_local1.y + _local1.lookForPlayerRect.y), _local1.lookForPlayerRect.width, _local1.lookForPlayerRect.height);
				if (_local1.facingDir == -1){
					_local3.x = ((_local1.x - _local1.lookForPlayerRect.x) - _local1.lookForPlayerRect.width);
				};
				if (_local2.checkSpriteCollision(_local3)){
					_local1.noticedPlayer = true;
				};
			} else {
				if (!_local1.alwaysNoticePlayer){
					_local3 = new Rectangle((_local1.x + _local1.keepChasingPlayerRect.x), (_local1.y + _local1.keepChasingPlayerRect.y), _local1.keepChasingPlayerRect.width, _local1.keepChasingPlayerRect.height);
					if (_local1.facingDir == -1){
						_local3.x = ((_local1.x - _local1.keepChasingPlayerRect.x) - _local1.keepChasingPlayerRect.width);
					};
					if (_local2.checkSpriteCollision(_local3) == false){
						_local1.noticedPlayer = false;
					};
				};
			};
		}
		public function setEventData(_arg1, _arg2, _arg3){
			var _local4:Enemy = this;
			_local4.tellTriggerArray = _arg1;
			_local4.tellTriggerPan = _arg2;
			_local4.tellTriggerPanTarget = _arg3;
		}
		public function setEventTriggers(_arg1, _arg2:Array=null){
			var _local3:Enemy = this;
			_local3.necessaryTriggers = int(_arg1);
			_local3.fromTriggerArray = _arg2;
		}

	}
}//package cactusGame.models 

****************

//GameHUD (cactusGame.models.GameHUD)
package cactusGame.models {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import flipline.api.utils.*;
	import fl.motion.easing.*;

	public class GameHUD {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var menuClip:MovieClip;
		public var buttonClip:MovieClip;
		public var interfaceClip:MovieClip;
		public var gameplayClip:MovieClip;
		public var gameplayLocation:Point;
		public var headLoc:Point;
		public var headSpacing:Number;// = 6
		public var headClips:Array;
		public var healthbarWidth:Number;// = 88
		public var dropdownHeight:Number;// = 81
		public var dropdownSpeed:Number;// = 8
		public var dropdownOnScreenWait:Number;// = 150
		public var dropdownOnScreenTimer:Number;// = 0

		public function GameHUD(_arg1:GameModule){
			gameplayLocation = new Point(0, 0);
			headLoc = new Point(6, 6);
			headClips = [];
			super();
			var _local2:GameHUD = this;
			_local2.gameObj = _arg1;
			_local2.setupHUD();
		}
		public function setupHUD(){
			var _local1:GameHUD = this;
			_local1.clip = new MovieClip();
			_local1.gameplayClip = new MovieClip();
			_local1.clip.addChild(_local1.gameplayClip);
			_local1.menuClip = new MovieClip();
			_local1.clip.addChild(_local1.menuClip);
			_local1.interfaceClip = new hudMC();
			_local1.interfaceClip.mouseEnabled = false;
			_local1.clip.addChild(_local1.interfaceClip);
			_local1.buttonClip = new MovieClip();
			_local1.clip.addChild(_local1.buttonClip);
			_local1.attachHUD();
			var _local2:* = 1;
			while (_local2 <= 5) {
				_local1.interfaceClip[("chest" + _local2)].visible = false;
				_local1.interfaceClip[("star" + _local2)].visible = false;
				_local2++;
			};
			_local1.hideBossHealth();
			_local1.hideComboMeter(true);
			_local1.updateDisplay();
			_local1.updateTimer();
			_local1.interfaceClip.tally.visible = false;
			_local1.interfaceClip.menu_btn.addEventListener(MouseEvent.CLICK, clickMenu);
			_local1.interfaceClip.mute_btn.addEventListener(MouseEvent.CLICK, clickMute);
			_local1.interfaceClip.unmute_btn.addEventListener(MouseEvent.CLICK, clickUnmute);
			_local1.interfaceClip.pause_btn.addEventListener(MouseEvent.CLICK, clickPause);
			_local1.interfaceClip.refresh_btn.addEventListener(MouseEvent.CLICK, clickRefresh);
			_local1.interfaceClip.sponsorlogo.addEventListener(MouseEvent.CLICK, _local1.clickSponsorLogo);
			_local1.interfaceClip.sponsorlogo.buttonMode = true;
			_local1.interfaceClip.sponsorlogo.tabEnabled = false;
			_local1.interfaceClip.sponsorlogo.useHandCursor = true;
			_local1.interfaceClip.licenselogo.addEventListener(MouseEvent.CLICK, _local1.clickLicenseLogo);
			_local1.interfaceClip.licenselogo.buttonMode = true;
			_local1.interfaceClip.licenselogo.tabEnabled = false;
			_local1.interfaceClip.licenselogo.useHandCursor = true;
			if (_local1.gameObj.apiHelper.api.onLicenseSite()){
				_local1.interfaceClip.sponsorlogo.visible = false;
				_local1.interfaceClip.licenselogo.visible = true;
			} else {
				_local1.interfaceClip.sponsorlogo.visible = true;
				_local1.interfaceClip.licenselogo.visible = false;
			};
			if (_local1.gameObj.soundManager.isMute){
				_local1.interfaceClip.mute_btn.visible = false;
				_local1.interfaceClip.unmute_btn.visible = true;
			} else {
				_local1.interfaceClip.mute_btn.visible = true;
				_local1.interfaceClip.unmute_btn.visible = false;
			};
			_local1.interfaceClip.gamegenie.speed_minus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.speed_plus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.jump_minus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.jump_plus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.gravity_minus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.gravity_plus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.skid_minus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.skid_plus_btn.addEventListener(MouseEvent.CLICK, _local1.clickAdjustment);
			_local1.interfaceClip.gamegenie.visible = false;
			_local1.interfaceClip.pausedMC.addEventListener(MouseEvent.CLICK, _local1.clickPause);
			_local1.interfaceClip.pausedMC.buttonMode = true;
			_local1.interfaceClip.pausedMC.useHandCursor = true;
			_local1.interfaceClip.pausedMC.visible = false;
			_local1.interfaceClip.healthbar.mask = _local1.interfaceClip.healthbar_mask;
			_local1.interfaceClip.weaponbar.mask = _local1.interfaceClip.weaponbar_mask;
			_local1.interfaceClip.bossclip.healthbar.mask = _local1.interfaceClip.bossclip.healthbar_mask;
			_local1.interfaceClip.healthbar_mask.visible = false;
			_local1.interfaceClip.weaponbar_mask.visible = false;
			_local1.interfaceClip.bossclip.healthbar_mask.visible = false;
			_local1.updateEquippedWeapon("None");
			_local1.updateBossHealth(1);
			_local1.interfaceClip.fps_txt.visible = false;
			_local1.interfaceClip.memory_txt.visible = false;
			_local1.hideHUD();
		}
		public function setupLifeHeads(){
			var _local1:GameHUD = this;
		}
		public function attachHUD(){
			var _local1:GameHUD = this;
			_local1.gameObj.gameStage.addChild(_local1.clip);
		}
		public function attachGameDisplay(_arg1:DisplayObject){
			var _local2:GameHUD = this;
			_local2.gameplayClip.addChild(_arg1);
		}
		public function attachMenu(_arg1:DisplayObject){
			var _local2:GameHUD = this;
			_local2.menuClip.addChild(_arg1);
		}
		public function removeMenu(_arg1:DisplayObject){
			var _local2:GameHUD = this;
			if (_local2.menuClip.contains(_arg1)){
				_local2.menuClip.removeChild(_arg1);
			};
		}
		public function attachButton(_arg1:DisplayObject){
			var _local2:GameHUD = this;
			_local2.buttonClip.addChild(_arg1);
		}
		public function removeButton(_arg1:DisplayObject){
			var _local2:GameHUD = this;
			if (_local2.buttonClip.contains(_arg1)){
				_local2.buttonClip.removeChild(_arg1);
			};
		}
		public function updateDisplay(){
			var _local3:Number;
			var _local1:GameHUD = this;
			var _local2:UserData = _local1.gameObj.userData;
			_local1.interfaceClip.lives_txt.htmlText = (("<b>x " + String(_local2.totalLives.value)) + "</b>");
			_local1.interfaceClip.points_txt.htmlText = (("<b>" + StringUtility.addCommasToNumber(_local2.getCurrentPoints())) + "</b>");
			_local1.interfaceClip.money_txt.htmlText = (("<b>" + StringUtility.addCommasToNumber(_local2.getCurrentMoney())) + "</b>");
			_local3 = 1;
			while (_local3 <= 5) {
				if (_local2.hasTreasure(_local1.gameObj.dataManager.currentLevel, _local3)){
					_local1.interfaceClip[("chest" + _local3)].visible = true;
				} else {
					_local1.interfaceClip[("chest" + _local3)].visible = false;
				};
				if (_local2.hasCompletedChallenge(_local1.gameObj.dataManager.currentLevel, _local3)){
					_local1.interfaceClip[("star" + _local3)].visible = true;
				} else {
					_local1.interfaceClip[("star" + _local3)].visible = false;
				};
				_local3++;
			};
		}
		public function updateTimer(){
			var _local1:GameHUD = this;
			var _local2:UserData = _local1.gameObj.userData;
			var _local3:Number = 0;
			if (_local1.gameObj.gameControls){
				_local3 = _local1.gameObj.gameControls.gameplayTimer;
			};
			_local1.interfaceClip.timer_txt.text = StringUtility.convertFramesToTimecode(_local3, true);
		}
		public function hideHUD(){
			var _local1:GameHUD = this;
			_local1.interfaceClip.visible = false;
		}
		public function showHUD(){
			var _local1:GameHUD = this;
			_local1.interfaceClip.visible = true;
			_local1.hideBossHealth();
			_local1.updateAdjustmentNumbers();
		}
		public function clickRefresh(_arg1:MouseEvent){
			var _local2:GameHUD = this;
			var _local3:GameControls = _local2.gameObj.gameControls;
			if (((((((!(_local2.gameObj.gameDisplay.isTransitioningIn)) && (!(_local2.gameObj.gameDisplay.isTransitionOut)))) && (!((_local3 == null))))) && (!(_local3.isPaused)))){
				_local2.gameObj.apiHelper.api.trackLevelMetric("RestartedLevel", (_local2.gameObj.dataManager.currentLevel + 1));
				_local2.gameObj.resetLevel();
			};
		}
		public function clickMenu(_arg1:MouseEvent){
			var _local2:GameHUD = this;
			if (((!(_local2.gameObj.gameDisplay.isTransitioningIn)) && (!(_local2.gameObj.gameDisplay.isTransitionOut)))){
				_local2.gameObj.gameControls.pauseGame();
				_local2.gameObj.apiHelper.api.showScreen("PauseMenu", {section:"area"});
			};
		}
		public function clickMute(_arg1:MouseEvent){
			var _local2:GameHUD = this;
			_local2.gameObj.soundManager.muteSound(true);
			_local2.updateMuteButton();
		}
		public function clickUnmute(_arg1:MouseEvent){
			var _local2:GameHUD = this;
			_local2.gameObj.soundManager.unmuteSound(true);
			_local2.updateMuteButton();
		}
		public function updateMuteButton(){
			var _local1:GameHUD = this;
			_local1.interfaceClip.mute_btn.visible = !(_local1.gameObj.soundManager.isMute);
			_local1.interfaceClip.unmute_btn.visible = _local1.gameObj.soundManager.isMute;
		}
		public function clickPause(_arg1:MouseEvent=null){
			var _local2:GameHUD = this;
			var _local3:GameControls = _local2.gameObj.gameControls;
			if (_local3 != null){
				if (!_local3.isPaused){
					_local3.pauseGame();
				} else {
					if (_local3.isPaused){
						_local3.resumeGame();
					};
				};
			};
		}
		public function clickSponsorLogo(_arg1:MouseEvent=null){
			var _local2:GameHUD = this;
			var _local3:GameControls = _local2.gameObj.gameControls;
			if (_local3 != null){
				if (!_local3.isPaused){
					_local3.pauseGame();
				};
			};
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.sponsorLink, "SponsorHUDLogo", "LogoLinks");
		}
		public function clickLicenseLogo(_arg1:MouseEvent=null){
			var _local2:GameHUD = this;
			var _local3:GameControls = _local2.gameObj.gameControls;
			if (_local3 != null){
				if (!_local3.isPaused){
					_local3.pauseGame();
				};
			};
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.licenseLink, "LicenseHUDLogo", "LogoLinks");
		}
		public function showBossHealth(){
			var _local1:GameHUD = this;
			_local1.interfaceClip.bossclip.visible = true;
		}
		public function hideBossHealth(){
			var _local1:GameHUD = this;
			_local1.interfaceClip.bossclip.visible = false;
		}
		public function updateBossHealth(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.bossclip.healthbar_mask.width = (_local2.healthbarWidth * _arg1);
		}
		public function updatePlayerHealth(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.healthbar_mask.width = (_local2.healthbarWidth * _arg1);
		}
		public function updateWeaponHealth(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.weaponbar_mask.width = (_local2.healthbarWidth * _arg1);
			_local2.interfaceClip.weaponbar_mask.x = ((_local2.interfaceClip.weaponbar.x + _local2.healthbarWidth) - _local2.interfaceClip.weaponbar_mask.width);
		}
		public function updateEquippedWeapon(_arg1:String, _arg2:String="", _arg3:Number=0){
			var _local4:GameHUD = this;
			_local4.interfaceClip.weapontitle_txt.htmlText = (("<b>" + String(_arg2)) + "</b>");
			_local4.interfaceClip.weapon_icon.gotoAndStop(_arg1);
			_local4.updateWeaponHealth(_arg3);
		}
		public function destroy(){
			var _local1:GameHUD = this;
			_local1.clip.removeChild(_local1.gameplayClip);
			_local1.gameplayClip = null;
			_local1.clip.removeChild(_local1.menuClip);
			_local1.menuClip = null;
			if (_local1.interfaceClip.dropdown.hasEventListener(Event.ENTER_FRAME)){
				_local1.interfaceClip.dropdown.removeEventListener(Event.ENTER_FRAME, _local1.animateDropdown);
			};
			_local1.interfaceClip.menu_btn.removeEventListener(MouseEvent.CLICK, clickMenu);
			_local1.interfaceClip.mute_btn.removeEventListener(MouseEvent.CLICK, clickMute);
			_local1.interfaceClip.unmute_btn.removeEventListener(MouseEvent.CLICK, clickUnmute);
			_local1.interfaceClip.refresh_btn.removeEventListener(MouseEvent.CLICK, clickRefresh);
			_local1.interfaceClip.sponsorlogo.removeEventListener(MouseEvent.CLICK, _local1.clickSponsorLogo);
			_local1.interfaceClip.mouseEnabled = false;
			_local1.clip.removeChild(_local1.interfaceClip);
			_local1.interfaceClip = null;
			_local1.clip.removeChild(_local1.buttonClip);
			_local1.buttonClip = null;
			_local1.gameObj.gameStage.removeChild(_local1.clip);
			_local1.clip = null;
		}
		public function clickAdjustment(_arg1:MouseEvent){
			var _local2:GameHUD = this;
			var _local3:* = _arg1.currentTarget.name;
			var _local4:CactusChar = CactusChar(_local2.gameObj.playerObj);
			var _local5:Number = 0;
			if (_local3.indexOf("minus") > -1){
				_local5 = -1;
			} else {
				if (_local3.indexOf("plus") > -1){
					_local5 = 1;
				};
			};
			if (_local3.indexOf("skid") > -1){
				if ((((_local5 == -1)) && ((_local4.skidDecayTimerInterval > 1)))){
					_local4.skidDecayTimerInterval--;
				} else {
					if (_local5 == 1){
						_local4.skidDecayTimerInterval++;
					};
				};
			} else {
				if (_local3.indexOf("gravity") > -1){
					if ((((_local5 == -1)) && ((_local4.normalgravity > 1)))){
						_local4.normalgravity--;
					} else {
						if (_local5 == 1){
							_local4.normalgravity++;
						};
					};
				} else {
					if (_local3.indexOf("jump") > -1){
						if ((((_local5 == -1)) && ((_local4.jumpstart < -1)))){
							_local4.jumpstart++;
						} else {
							if ((((_local5 == 1)) && ((_local4.jumpstart > -30)))){
								_local4.jumpstart--;
							};
						};
					} else {
						if (_local3.indexOf("speed") > -1){
							if ((((_local5 == -1)) && ((_local4.walkspeed > 1)))){
								_local4.walkspeed--;
								_local4.speed--;
							} else {
								if ((((_local5 == 1)) && ((_local4.walkspeed < 30)))){
									_local4.walkspeed++;
									_local4.speed++;
								};
							};
						};
					};
				};
			};
			_local2.updateAdjustmentNumbers();
		}
		public function updateAdjustmentNumbers(){
			var _local1:GameHUD = this;
			var _local2:CactusChar = CactusChar(_local1.gameObj.playerObj);
			_local1.interfaceClip.gamegenie.speed_txt.text = String(_local2.walkspeed);
			_local1.interfaceClip.gamegenie.jump_txt.text = String((_local2.jumpstart * -1));
			_local1.interfaceClip.gamegenie.gravity_txt.text = String(_local2.normalgravity);
			_local1.interfaceClip.gamegenie.skid_txt.text = String(_local2.skidDecayTimerInterval);
		}
		public function showComboMeter(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.combometer.textclip.combo_txt.text = ("x" + _arg1);
			_local2.interfaceClip.combometer.gotoAndPlay(1);
			_local2.interfaceClip.combometer.visible = true;
		}
		public function hideComboMeter(_arg1:Boolean=false){
			var _local2:GameHUD = this;
			if (_local2.interfaceClip){
				if (_arg1){
					_local2.interfaceClip.combometer.visible = false;
				} else {
					_local2.interfaceClip.combometer.gotoAndPlay((_local2.interfaceClip.combometer.totalFrames - 6));
				};
			};
		}
		public function showEarnedTreasure(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.dropdown.treasure.visible = true;
			_local2.interfaceClip.dropdown.challenge.visible = false;
			_local2.interfaceClip.dropdown.badge.visible = false;
			_local2.interfaceClip.dropdown.debug.visible = false;
			_local2.interfaceClip.dropdown.treasure.chest.gotoAndStop(_arg1);
			_local2.interfaceClip.dropdown.treasure.number_txt.text = String(_arg1);
			if (_arg1 == 1){
				_local2.interfaceClip.dropdown.treasure.treasure_txt.text = "st Secret Treasure!";
			} else {
				if (_arg1 == 2){
					_local2.interfaceClip.dropdown.treasure.treasure_txt.text = "nd Secret Treasure!";
				} else {
					if (_arg1 == 3){
						_local2.interfaceClip.dropdown.treasure.treasure_txt.text = "rd Secret Treasure!";
					} else {
						if ((((_arg1 == 4)) || ((_arg1 == 5)))){
							_local2.interfaceClip.dropdown.treasure.treasure_txt.text = "th Secret Treasure!";
						};
					};
				};
			};
			_local2.startAnimatingDropdown();
		}
		public function showCompletedChallenge(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.dropdown.treasure.visible = false;
			_local2.interfaceClip.dropdown.challenge.visible = true;
			_local2.interfaceClip.dropdown.badge.visible = false;
			_local2.interfaceClip.dropdown.debug.visible = false;
			_local2.interfaceClip.dropdown.challenge.star.gotoAndStop(_arg1);
			_local2.interfaceClip.dropdown.challenge.title_txt.text = String((("Challenge " + _arg1) + " Complete!"));
			var _local3:String = ((("<b><font color=\"#000000\">" + _local2.gameObj.challengeManager.getChallengeTitle(_local2.gameObj.dataManager.currentLevel, _arg1)) + "</font><br>") + _local2.gameObj.challengeManager.getChallengeDescription(_local2.gameObj.dataManager.currentLevel, _arg1));
			_local3 = (_local3 + "</b>");
			_local2.interfaceClip.dropdown.challenge.challenge_txt.htmlText = _local3;
			_local2.gameObj.soundManager.playSound("challenge_chime.wav");
			_local2.startAnimatingDropdown();
		}
		public function showEarnedBadge(_arg1:Number){
			var _local2:GameHUD = this;
			_local2.interfaceClip.dropdown.treasure.visible = false;
			_local2.interfaceClip.dropdown.challenge.visible = false;
			_local2.interfaceClip.dropdown.badge.visible = true;
			_local2.interfaceClip.dropdown.debug.visible = false;
			_local2.interfaceClip.dropdown.badge.panel.title_txt.text = _local2.gameObj.challengeManager.getChallengeTitle(-1, -1, _arg1);
			_local2.interfaceClip.dropdown.badge.panel.description_txt.text = _local2.gameObj.challengeManager.getChallengeDescription(-1, -1, _arg1);
			_local2.interfaceClip.dropdown.badge.panel.reward_txt.text = ("+ $" + StringUtility.addCommasToNumber(_local2.gameObj.challengeManager.getChallengeRewardAmount(-1, -1, _arg1)));
			_local2.interfaceClip.dropdown.badge.panel.points_txt.text = (_local2.gameObj.challengeManager.getChallengeRewardAmount(-1, -1, _arg1) + " Pts.");
			_local2.interfaceClip.dropdown.badge.panel.thumb.gotoAndStop((_arg1 + 1));
			_local2.gameObj.soundManager.playSound("challenge_chime.wav");
			_local2.startAnimatingDropdown();
		}
		public function showDebugMessage(_arg1:String){
			var _local2:GameHUD = this;
			_local2.interfaceClip.dropdown.treasure.visible = false;
			_local2.interfaceClip.dropdown.challenge.visible = false;
			_local2.interfaceClip.dropdown.badge.visible = false;
			_local2.interfaceClip.dropdown.debug.visible = true;
			_local2.interfaceClip.dropdown.debug.msg_txt.text = _arg1;
			_local2.startAnimatingDropdown();
		}
		public function startAnimatingDropdown(){
			var _local1:GameHUD = this;
			_local1.dropdownOnScreenTimer = 0;
			_local1.interfaceClip.dropdown.y = (0 - _local1.dropdownHeight);
			if (!_local1.interfaceClip.dropdown.hasEventListener(Event.ENTER_FRAME)){
				_local1.interfaceClip.dropdown.addEventListener(Event.ENTER_FRAME, _local1.animateDropdown);
			};
		}
		public function animateDropdown(_arg1:Event){
			var _local3:Number;
			var _local2:GameHUD = this;
			if (((!(_local2.gameObj.gameControls.isPaused)) && (!(_local2.gameObj.gameControls.stopCycle)))){
				if (_local2.dropdownOnScreenTimer == 0){
					if (_local2.interfaceClip.dropdown.y < 0){
						_local3 = (0 - _local2.interfaceClip.dropdown.y);
						_local2.interfaceClip.dropdown.y = (_local2.interfaceClip.dropdown.y + (_local3 / _local2.dropdownSpeed));
						if ((((_local3 >= -1)) && ((_local3 <= 1)))){
							_local2.interfaceClip.dropdown.y = 0;
							_local2.dropdownOnScreenTimer++;
						};
					};
				} else {
					if (_local2.dropdownOnScreenTimer == _local2.dropdownOnScreenWait){
						if (_local2.interfaceClip.dropdown.y > (0 - _local2.dropdownHeight)){
							_local3 = ((0 - _local2.dropdownHeight) - _local2.interfaceClip.dropdown.y);
							_local2.interfaceClip.dropdown.y = (_local2.interfaceClip.dropdown.y + (_local3 / _local2.dropdownSpeed));
							if ((((_local3 >= -1)) && ((_local3 <= 1)))){
								_local2.interfaceClip.dropdown.y = (0 - _local2.dropdownHeight);
								if (_local2.interfaceClip.dropdown.hasEventListener(Event.ENTER_FRAME)){
									_local2.interfaceClip.dropdown.removeEventListener(Event.ENTER_FRAME, _local2.animateDropdown);
								};
							};
						};
					} else {
						_local2.dropdownOnScreenTimer++;
					};
				};
			};
		}
		public function showTally(_arg1:Number, _arg2:Number){
			var _local3:GameHUD = this;
			if (_arg1 > _arg2){
				_arg1 = _arg2;
			};
			_local3.interfaceClip.tally.inside.tally_txt.text = String(((_arg1 + "/") + _arg2));
			_local3.interfaceClip.tally.visible = true;
			_local3.interfaceClip.tally.gotoAndPlay(1);
			if (!_local3.interfaceClip.tally.hasEventListener(Event.ENTER_FRAME)){
				_local3.interfaceClip.tally.addEventListener(Event.ENTER_FRAME, _local3.animateTally);
			};
		}
		public function animateTally(_arg1:Event){
			var _local2:GameHUD = this;
			var _local3:PlayerChar = _local2.gameObj.playerObj;
			var _local4:GameDisplay = _local2.gameObj.gameDisplay;
			if (((_local3) && (_local4))){
				_local2.interfaceClip.tally.x = (_local3.x - _local4.currentXcoord);
				_local2.interfaceClip.tally.y = (_local3.y - _local4.currentYcoord);
			};
			if (_local2.interfaceClip.tally.currentFrame == _local2.interfaceClip.tally.totalFrames){
				_local2.interfaceClip.tally.visible = false;
				_local2.interfaceClip.tally.removeEventListener(Event.ENTER_FRAME, _local2.animateTally);
			};
		}

	}
}//package cactusGame.models 

****************

//GameItem (cactusGame.models.GameItem)
package cactusGame.models {
	import cactusGame.core.*;
	import cactusGame.data.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameItem extends Character {

		public var whichScreen:Number;// = -1
		public var background:Boolean;// = false
		public var foreground:Boolean;// = false
		public var jigglecam:Boolean;// = false
		public var jiggleamount:Number;// = 10
		public var jiggleduration:Number;// = 20
		public var points:Number;// = 100
		public var moneyValue:Number;// = 1
		public var droppedTimer:Number;// = 0
		public var timeBeforeFlicker:Number;// = 150
		public var timeBeforeDisappear:Number;// = 240
		public var isFlickering:Boolean;// = false
		public var weaponSKU:String;// = ""
		public var isWeapon:Boolean;// = false
		public var isEmpty:Boolean;// = false
		public var remainingHealth:Number;// = -1
		public var remainingAmmo:Number;// = -1
		public var hasShownEffect:Boolean;// = false
		public var animCycleFrames:Array;
		public var flickerCycleFrames:Array;
		public var hasBounced:Boolean;// = false
		public var isDropped:Boolean;// = false

		public function GameItem(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Array, _arg7:Boolean){
			animCycleFrames = ["anim", 2, 1, 0, 0, [0]];
			flickerCycleFrames = ["flicker", 2, 1, 0, 0, [0, 99]];
			super(_arg1);
			var _local8:GameItem = this;
			_local8.id = _arg4;
			_local8.whichScreen = _arg5;
			_local8.x = -1;
			_local8.y = -1;
			_local8.isDropped = _arg7;
			_local8.setupParams(_arg6);
			if (((!((_local8.x == -1))) && (!((_local8.y == -1))))){
				_local8.placeObject(_arg2, _arg3, true);
			} else {
				_local8.placeObject(_arg2, _arg3);
			};
		}
		public function getItemData():Array{
			var _local1:GameItem = this;
			var _local2:Array = [];
			_local2[0] = String(_local1.type).substr(1);
			_local2[1] = _local1.xtile;
			_local2[2] = _local1.ytile;
			if (_local1.remainingHealth > -1){
				_local2[3] = _local1.remainingHealth;
			};
			if (_local1.remainingAmmo > -1){
				_local2[4] = _local1.remainingAmmo;
			};
			return (_local2);
		}
		public function canPickUp():Boolean{
			var _local1:GameItem = this;
			var _local2:Boolean;
			if (_local1.isWeapon){
				if (((((_local1.hasBounced) && (!(_local1.isEmpty)))) && (_local1.gameObj.playerObj.duck))){
					_local2 = true;
				};
			} else {
				_local2 = true;
			};
			return (_local2);
		}
		public function setupParams(_arg1:Array){
			var _local2:GameItem = this;
			if (_arg1){
				if (_arg1.length > 0){
					_local2.remainingHealth = Number(_arg1[0]);
				};
				if (_arg1.length > 1){
					_local2.remainingAmmo = Number(_arg1[1]);
				};
			};
			if ((((_local2.remainingHealth == 0)) || ((_local2.remainingAmmo == 0)))){
				_local2.isEmpty = true;
			};
		}
		public function collectItem(){
			var _local1:GameItem = this;
			var _local2:ItemManager = _local1.gameObj.itemManager;
			_local1.gameObj.playerObj.addWeapon(_local1.weaponSKU, _local1.remainingHealth, _local1.remainingAmmo);
			_local2.removeItem(_local1.id);
		}
		public function placeObject(_arg1, _arg2, _arg3:Boolean=false){
			var _local4:GameItem = this;
			var _local5:GameDisplay = _local4.gameObj.gameDisplay;
			var _local6:* = Math.floor;
			if (!_arg3){
				_local4.xtile = _arg1;
				_local4.ytile = _arg2;
				_local4.x = ((_local4.xtile * _local5.tileWidth) + (_local5.tileWidth / 2));
				_local4.y = ((_local4.ytile * _local5.tileWidth) + (_local5.tileWidth / 2));
			};
			_local4.jump = true;
			_local4.jumpspeed = 0;
			_local4.fallChar();
		}
		override public function grabAnimationCycle():Array{
			var _local1:GameItem = this;
			var _local2:Array;
			if (_local1.isFlickering){
				_local2 = _local1.flickerCycleFrames;
			} else {
				_local2 = _local1.animCycleFrames;
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
		}
		public function checkOnScreen():Boolean{
			var _local1:GameItem = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (_local2.checkOnScreen(_local1));
		}
		override public function updateObject(){
			var _local1:GameItem = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ItemManager = _local1.gameObj.itemManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			var _local5:Number = _local1.jumpspeed;
			if (((!(_local1.isWeapon)) || (((_local1.isWeapon) && (_local1.isEmpty))))){
				_local1.droppedTimer++;
			};
			_local1.updateSprite();
			_local1.jumpChar();
			if (_local1.dirx != 0){
				_local1.moveChar(_local1.dirx, 0, 0, true);
			};
			if (((!(_local1.hasBounced)) && (((!(_local1.jump)) || ((((_local5 >= 0)) && ((_local1.jumpspeed < 0)))))))){
				_local1.hasBounced = true;
				if (((_local1.isWeapon) && (_local1.isDropped))){
				};
				if (_local1.hasShownEffect == false){
					if (((((((_local1.isWeapon) && (!(_local1.isEmpty)))) && ((_local1.gameObj.dataManager.currentLevel == 0)))) && (!(_local1.hasShownEffect)))){
						_local1.gameObj.effectManager.addEffect(_local1.x, _local1.y, "GrabWeaponEffect", String(_local1.id), false, 0, 0);
						_local1.hasShownEffect = true;
					};
				};
			};
			if (_local1.droppedTimer >= _local1.timeBeforeDisappear){
				_local3.removeItem(_local1.id);
			} else {
				if ((((_local1.droppedTimer >= _local1.timeBeforeFlicker)) && (!(_local1.isFlickering)))){
					_local1.isFlickering = true;
				};
			};
		}

	}
}//package cactusGame.models 

****************

//GameObject (cactusGame.models.GameObject)
package cactusGame.models {
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class GameObject extends Character {

		public var whichScreen:Number;// = -1
		public var screenObjID:Number;// = -1
		public var originalScreenIndex:Number;// = -1
		public var isInteractive:Boolean;// = true
		public var isActivated:Boolean;// = true
		public var isDeactivated:Boolean;// = false
		public var isActivating:Boolean;// = false
		public var isDeactivating:Boolean;// = false
		public var canReactivate:Boolean;// = true
		public var isSteppable:Boolean;// = false
		public var isSolidActive:Boolean;// = false
		public var isSolidInactive:Boolean;// = false
		public var solidType:String;// = "none"
		public var solidTilesRect:Rectangle;
		public var isGrabbable:Boolean;// = false
		public var isGrabbed:Boolean;// = false
		public var isThrowing:Boolean;// = false
		public var grabWeight:Number;// = 0
		public var grabGravity:Number;// = 2
		public var wasDropped:Boolean;// = false
		public var dropStartingY:Number;// = 0
		public var dropMaxSafeY:Number;// = 130
		public var activeCycleFrames;
		public var inactiveCycleFrames;
		public var activatingCycleFrames;
		public var deactivatingCycleFrames;
		public var jigglecam:Boolean;// = false
		public var jiggleamount:Number;// = 10
		public var jiggleduration:Number;// = 20
		public var foreground:Boolean;// = false
		public var isPlaced:Boolean;// = false
		public var isShootable:Boolean;// = false
		public var blocksBullets:Boolean;// = false
		public var throwSpeed:Number;// = 4
		public var statAttack:Number;// = 1
		public var saveState:Boolean;// = false
		public var canReact:Boolean;// = true
		public var waitActivate:Boolean;// = false
		public var waitPanBack:Boolean;// = false
		public var waitType:String;
		public var globalStateID:Number;
		public var wasGloballyTriggered:Boolean;// = false
		public var currentTriggers:Number;// = 0
		public var necessaryTriggers:Number;// = 1
		public var tellTriggerArray;
		public var tellTriggerPan;
		public var tellTriggerPanTarget;
		public var fromTriggerArray;
		public var broadcastStyle:Number;// = 1
		public var broadcastOff:Boolean;// = true
		public var broadcastOn:Boolean;// = false
		public var broadcastAmount:Number;// = 0
		public var broadcastAmountOn:Number;// = -1
		public var broadcastAmountOff:Number;// = 1
		public var broadcastReceiptMethod:Number;// = 2
		public var canBeShot:Boolean;// = false
		public var canBeMeleed:Boolean;// = false
		public var canBeBrokenByObjects:Boolean;// = false
		public var shotByWeapons:Array;
		public var meleedByWeapons:Array;
		public var brokenByObjects:Array;

		public function GameObject(_arg1:GameModule, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Array){
			solidTilesRect = new Rectangle(0, 0, 2, 2);
			activeCycleFrames = ["active", 1, 1, 0, 0, 0, 0];
			inactiveCycleFrames = ["inactive", 1, 1, 0, 3, 3, 3];
			activatingCycleFrames = ["activating", 2, 1, 0, -1, [3, 2, 1]];
			deactivatingCycleFrames = ["deactivating", 2, 1, 0, -1, [1, 2, 3]];
			shotByWeapons = ["all"];
			meleedByWeapons = ["all"];
			brokenByObjects = ["all"];
			super(_arg1);
			var _local8:GameObject = this;
			_local8.id = _arg4;
			_local8.whichScreen = _arg5;
			_local8.screenObjID = _arg6;
			_local8.setupParams(_arg7);
			_local8.placeObject(_arg2, _arg3);
		}
		public function setupParams(_arg1:Array){
		}
		public function updateTrainingSign(){
		}
		public function placeObject(_arg1, _arg2){
			var _local3:GameObject = this;
			var _local4:GameDisplay = _local3.gameObj.gameDisplay;
			var _local5:* = Math.floor;
			_local3.xtile = _arg1;
			_local3.ytile = _arg2;
			_local3.x = ((_local3.xtile * _local4.tileWidth) + (_local4.tileWidth / 2));
			_local3.y = ((_local3.ytile * _local4.tileWidth) + (_local4.tileWidth / 2));
			if (((!(_local3.isActivated)) && (_local3.isSolidInactive))){
				_local3.addCollision();
			} else {
				if (((_local3.isActivated) && (_local3.isSolidActive))){
					_local3.addCollision();
				};
			};
			_local3.isPlaced = true;
		}
		public function moveCarriedObject(_arg1:Number, _arg2:Number){
			var _local3:GameObject = this;
			_local3.x = _arg1;
			_local3.y = _arg2;
			_local3.xtile = Math.floor((_local3.x / _local3.gameObj.gameDisplay.tileWidth));
			_local3.ytile = Math.floor((_local3.y / _local3.gameObj.gameDisplay.tileWidth));
		}
		public function addCollision(){
			var _local8:*;
			var _local1:GameObject = this;
			var _local2:MapManager = _local1.gameObj.mapManager;
			var _local3:Number = (_local1.xtile + _local1.solidTilesRect.x);
			var _local4:Number = (_local1.ytile + _local1.solidTilesRect.y);
			var _local5:Number = _local1.solidTilesRect.width;
			var _local6:Number = _local1.solidTilesRect.height;
			var _local7:* = 0;
			while (_local7 < _local6) {
				_local8 = 0;
				while (_local8 < _local5) {
					_local2.setProperty((_local3 + _local8), (_local4 + _local7), _local1.solidType);
					_local8++;
				};
				_local7++;
			};
		}
		public function removeCollision(){
			var _local8:*;
			var _local1:GameObject = this;
			var _local2:MapManager = _local1.gameObj.mapManager;
			var _local3:Number = (_local1.xtile + _local1.solidTilesRect.x);
			var _local4:Number = (_local1.ytile + _local1.solidTilesRect.y);
			var _local5:Number = _local1.solidTilesRect.width;
			var _local6:Number = _local1.solidTilesRect.height;
			var _local7:* = 0;
			while (_local7 < _local6) {
				_local8 = 0;
				while (_local8 < _local5) {
					_local2.unsetProperty((_local3 + _local8), (_local4 + _local7), _local1.solidType);
					_local8++;
				};
				_local7++;
			};
		}
		override public function destroy(){
		}
		public function saveObjectData(){
		}
		override public function grabAnimationCycle():Array{
			var _local2:Array;
			var _local1:GameObject = this;
			if (_local1.isActivating){
				_local2 = _local1.activatingCycleFrames;
			} else {
				if (_local1.isDeactivating){
					_local2 = _local1.deactivatingCycleFrames;
				} else {
					if (_local1.isActivated){
						_local2 = _local1.activeCycleFrames;
					} else {
						_local2 = _local1.inactiveCycleFrames;
					};
				};
			};
			return (_local2);
		}
		override public function endAnimationCycle(){
			var _local1:GameObject = this;
			var _local2:String = _local1.cycleName;
			if (_local2.indexOf("deactivating") > -1){
				_local1.finishDeactivatingObject();
			} else {
				if (_local2.indexOf("activating") > -1){
					_local1.finishActivatingObject();
				};
			};
		}
		public function activateObject(){
			var _local1:GameObject = this;
			if (!_local1.isActivating){
				_local1.isActivating = true;
			};
		}
		public function deactivateObject(){
			var _local1:GameObject = this;
			if (!_local1.isDeactivating){
				_local1.isDeactivating = true;
			};
		}
		public function finishActivatingObject(){
			var _local1:GameObject = this;
			var _local2:GameCam = _local1.gameObj.gameCam;
			var _local3:GameControls = _local1.gameObj.gameControls;
			_local1.isActivating = false;
			_local1.isActivated = true;
			_local1.isDeactivated = false;
			_local1.isDeactivating = false;
			if (((_local1.isSolidActive) && (!(_local1.isSolidInactive)))){
				_local1.addCollision();
			} else {
				if (((!(_local1.isSolidActive)) && (_local1.isSolidInactive))){
					_local1.removeCollision();
				};
			};
			if (_local1.jigglecam){
				_local2.setCameraJiggle(_local1.jiggleamount, _local1.jiggleduration);
			};
			if (broadcastAmount == 0){
				_local1.broadcastAmount = _local1.broadcastAmountOn;
			};
			if (_local1.broadcastOn){
				_local1.broadcastTriggered(_local1.broadcastAmount);
			} else {
				_local1.allowReactions();
			};
			_local1.broadcastAmount = 0;
			if (_local1.saveState){
				_local1.saveObjectData();
			};
		}
		public function finishDeactivatingObject(){
			var _local1:GameObject = this;
			var _local2:GameCam = _local1.gameObj.gameCam;
			var _local3:GameControls = _local1.gameObj.gameControls;
			_local1.isDeactivating = false;
			_local1.isDeactivated = true;
			_local1.isActivated = false;
			_local1.isActivating = false;
			if (((!(_local1.isSolidInactive)) && (_local1.isSolidActive))){
				_local1.removeCollision();
			} else {
				if (((_local1.isSolidInactive) && (!(_local1.isSolidActive)))){
					_local1.addCollision();
				};
			};
			if (_local1.jigglecam){
				_local2.setCameraJiggle(_local1.jiggleamount, _local1.jiggleduration);
			};
			if (broadcastAmount == 0){
				_local1.broadcastAmount = _local1.broadcastAmountOff;
			};
			if (_local1.broadcastOff){
				_local1.broadcastTriggered(_local1.broadcastAmount);
			} else {
				_local1.allowReactions();
			};
			_local1.broadcastAmount = 0;
			if (_local1.saveState){
				_local1.saveObjectData();
			};
		}
		public function broadcastTriggered(_arg1:Number, _arg2:Boolean=false){
			var _local5:*;
			var _local6:*;
			var _local7:*;
			var _local8:*;
			var _local3:GameObject = this;
			var _local4:GameModule = _local3.gameObj;
			if (_local3.tellTriggerArray){
				_local5 = 0;
				while (_local5 < _local3.tellTriggerArray.length) {
					_local6 = _local3.tellTriggerArray[_local5][0];
					_local7 = _local3.tellTriggerArray[_local5][1];
					_local8 = 0;
					if (((_local3.tellTriggerPan) && ((_local3.tellTriggerPanTarget == (_local5 + 1))))){
						_local8 = 1;
					};
					if (_local7 == 1){
						_local4.objectManager.activateObject(_local3.whichScreen, _local6, _local8, _arg1, _arg2);
					} else {
						if (_local7 == 2){
							_local4.enemyManager.activateObject(_local3.whichScreen, _local6, _local8, _arg1, _arg2);
						};
					};
					_local5++;
				};
			} else {
				_local3.allowReactions();
			};
		}
		public function unregisterSpawn(){
		}
		public function sendTriggered(_arg1:Number, _arg2, _arg3:Boolean=false){
			var _local4:GameObject = this;
			var _local5:GameControls = _local4.gameObj.gameControls;
			var _local6:GameCam = _local4.gameObj.gameCam;
			var _local7:Boolean;
			_local4.currentTriggers = (_local4.currentTriggers + _arg1);
			if (_local4.currentTriggers < 0){
				_local4.currentTriggers = 0;
				_local7 = true;
			};
			if (_local4.canReact){
				if (_local4.currentTriggers == _local4.necessaryTriggers){
					if (((((!(_local4.isActivating)) && (!(_local4.isActivated)))) && ((((_local4.broadcastReceiptMethod == 1)) || ((_local4.broadcastReceiptMethod == 3)))))){
						if (_arg3){
							_local4.finishActivatingObject();
						} else {
							_local4.activateObject();
						};
					} else {
						if (((((!(_local4.isDeactivating)) && (!(_local4.isDeactivated)))) && ((((_local4.broadcastReceiptMethod == 2)) || ((_local4.broadcastReceiptMethod == 3)))))){
							if (_arg3){
								_local4.finishDeactivatingObject();
							} else {
								_local4.deactivateObject();
							};
						} else {
							_local4.allowTriggerReactions();
						};
					};
				} else {
					if (_local4.currentTriggers < _local4.necessaryTriggers){
						if (((_local4.isActivated) && ((((_local4.broadcastReceiptMethod == 1)) || ((_local4.broadcastReceiptMethod == 3)))))){
							if (_arg3){
								_local4.finishDeactivatingObject();
							} else {
								_local4.deactivateObject();
							};
						} else {
							if (((_local4.isDeactivated) && ((((_local4.broadcastReceiptMethod == 2)) || ((_local4.broadcastReceiptMethod == 3)))))){
								if (_arg3){
									_local4.finishActivatingObject();
								} else {
									_local4.activateObject();
								};
							} else {
								_local4.allowTriggerReactions();
							};
						};
					} else {
						if (_local4.currentTriggers > _local4.necessaryTriggers){
							if (((_local4.isActivated) && ((_local4.broadcastReceiptMethod == 3)))){
								if (_arg3){
									_local4.finishDeactivatingObject();
								} else {
									_local4.deactivateObject();
								};
							} else {
								if (((_local4.isDeactivated) && ((_local4.broadcastReceiptMethod == 3)))){
									if (_arg3){
										_local4.finishActivatingObject();
									} else {
										_local4.activateObject();
									};
								} else {
									_local4.allowTriggerReactions();
								};
							};
						};
					};
				};
			} else {
				_local4.allowTriggerReactions();
			};
		}
		public function setCameraPan(_arg1, _arg2){
		}
		public function stopCameraPan(){
		}
		public function checkOnScreen():Boolean{
			var _local1:GameObject = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			return (_local2.checkOnScreen(_local1));
		}
		public function checkAdditionalBlitting(_arg1:Boolean=false){
		}
		public function stopReactions(){
			var _local1:GameObject = this;
			_local1.canReact = false;
		}
		public function allowReactions(){
			var _local1:GameObject = this;
			_local1.canReact = true;
		}
		public function allowTriggerReactions(){
		}
		override public function updateObject(){
			var _local1:GameObject = this;
			var _local2:GameModule = _local1.gameObj;
			var _local3:ObjectManager = _local1.gameObj.objectManager;
			var _local4:GameDisplay = _local2.gameDisplay;
			if (_local4.checkOnScreen(_local1)){
				_local1.updateSprite();
			};
		}
		public function setEventData(_arg1, _arg2, _arg3){
			var _local4:GameObject = this;
			_local4.tellTriggerArray = _arg1;
			_local4.tellTriggerPan = _arg2;
			_local4.tellTriggerPanTarget = _arg3;
		}
		public function setEventTriggers(_arg1, _arg2:Array=null){
			var _local3:GameObject = this;
			_local3.necessaryTriggers = int(_arg1);
			_local3.fromTriggerArray = _arg2;
		}
		public function getHit(_arg1:Number=1){
		}
		public function acceptsDamage(_arg1:String, _arg2:String):Boolean{
			var _local3:GameObject = this;
			var _local4:Boolean;
			if ((((_arg1 == "bullet")) && (_local3.canBeShot))){
				if ((((_local3.shotByWeapons.indexOf("all") > -1)) || ((_local3.shotByWeapons.indexOf(_arg2) > -1)))){
					_local4 = true;
				};
			} else {
				if ((((_arg1 == "object")) && (_local3.canBeBrokenByObjects))){
					if ((((_local3.brokenByObjects.indexOf("all") > -1)) || ((_local3.brokenByObjects.indexOf(_arg2) > -1)))){
						_local4 = true;
					};
				} else {
					if ((((_arg1 == "weapon")) && (_local3.canBeMeleed))){
						if ((((_local3.meleedByWeapons.indexOf("all") > -1)) || ((_local3.meleedByWeapons.indexOf(_arg2) > -1)))){
							_local4 = true;
						};
					};
				};
			};
			return (_local4);
		}
		public function grabObject(){
			var _local1:GameObject = this;
			_local1.isGrabbed = true;
			_local1.isThrowing = false;
		}
		public function throwObject(_arg1:Number, _arg2:Boolean){
			var _local3:GameObject = this;
			_local3.isGrabbed = false;
			_local3.isThrowing = true;
			_local3.dirx = _arg1;
			_local3.speed = _local3.throwSpeed;
			_local3.gravity = _local3.jumpgravity;
			if (_arg2){
				_local3.jumpspeed = 0;
			} else {
				_local3.jumpspeed = _local3.jumpstart;
			};
			_local3.jump = true;
			_local3.dropStartingY = _local3.y;
			if (_arg2){
				_local3.wasDropped = true;
			} else {
				_local3.wasDropped = false;
			};
		}
		public function checkHittingEnemies(_arg1:Number=0, _arg2:Number=0):Boolean{
			var _local9:Enemy;
			var _local10:Rectangle;
			var _local3:GameObject = this;
			var _local4:GameModule = _local3.gameObj;
			var _local5:EnemyManager = _local4.enemyManager;
			var _local6:Number = _local5.enemies.length;
			var _local7:Boolean;
			var _local8:* = 0;
			while (_local8 < _local6) {
				_local9 = _local5.enemies[_local8];
				_local10 = new Rectangle();
				_local10.x = (_local3.x + _local3.collRect.x);
				_local10.y = (_local3.y + _local3.collRect.y);
				_local10.width = _local3.collRect.width;
				_local10.height = _local3.collRect.height;
				if (_local9.checkSpriteCollision(_local10)){
					if (((!(_local9.isHit)) && (!(_local9.resistBullets)))){
						_local9.getHit(_local3.statAttack, _local3.dirx, true);
						_local7 = true;
					};
				};
				_local8++;
			};
			if (_local7){
				_local3.getHit();
			};
			return (_local7);
		}

	}
}//package cactusGame.models 

****************

//PlayerChar (cactusGame.models.PlayerChar)
package cactusGame.models {
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.media.*;
	import cactusGame.events.*;
	import cactusGame.display.*;
	import cactusGame.managers.*;

	public class PlayerChar extends Character {

		public var standCollRect:Rectangle;
		public var duckCollRect:Rectangle;
		public var jumpCollRect:Rectangle;
		public var isDucking:Boolean;// = false
		public var isGrabbing:Boolean;// = false
		public var isStartingGrabbing:Boolean;// = false
		public var grabTileYOffset:Number;// = -2
		public var statAttack:Number;// = 1
		public var hasPowerup:Boolean;// = false
		public var isInvincible:Boolean;// = false
		public var invincibleTimer:Number;// = 0
		public var invincibleTimerMax:Number;// = 450
		public var invincibleTimerWarning:Number;// = 390
		public var invincibleFXID:Number;// = -1
		public var isFinishingLevel:Boolean;// = false
		public var isPausingAfterMiniboss:Boolean;// = false
		public var isHiding:Boolean;// = false
		public var forceGrabYoffset:Number;// = 0
		public var isShoved:Boolean;// = false
		public var shoveTimer:Number;// = 0
		public var shoveTimerMax:Number;// = 6
		public var isAttacking:Boolean;// = false
		public var canAttack:Boolean;// = true
		public var canDealDamage:Boolean;// = true
		public var lastSafeX:Number;// = 0
		public var lastSafeY:Number;// = 0
		public var lastSafeTime:Number;// = 0
		public var lastSafeTimeBuffer:Number;// = 6
		public var canPressJump:Boolean;// = true
		public var canPressAction:Boolean;// = true
		public var canPressLeft:Boolean;// = true
		public var canPressRight:Boolean;// = true
		public var canPressDown:Boolean;// = true
		public var waitToEnterDoor;// = false
		public var doorDirX;// = 0
		public var doorDirY;// = 0
		public var doorXtile;// = 0
		public var doorYtile;// = 0
		public var fellOffTrain:Boolean;// = false
		public var comboTally:Number;// = 0
		public var comboTimer:Number;// = 0
		public var comboTimerMax:Number;// = 90
		public var trainSound:SoundChannel;

		public function PlayerChar(_arg1){
			super(_arg1);
		}
		public function getNormalAttackPower():Number{
			return (this.statAttack);
		}
		public function addToCombo(_arg1:Number=1){
			var _local2:PlayerChar = this;
			_local2.comboTally = (_local2.comboTally + _arg1);
			_local2.comboTimer = 0;
			if (_local2.comboTally > 1){
				_local2.gameObj.hudObj.showComboMeter(_local2.comboTally);
				_local2.gameObj.challengeManager.recordCombo(_local2.comboTally);
			};
		}
		public function updateComboTimer(){
			var _local1:PlayerChar = this;
			if (_local1.comboTally > 0){
				_local1.comboTimer++;
				if (_local1.comboTimer >= _local1.comboTimerMax){
					if (_local1.comboTally > 1){
						_local1.gameObj.hudObj.hideComboMeter();
					};
					_local1.comboTimer = 0;
					_local1.comboTally = 0;
				};
			};
		}
		public function clearCombo(){
			var _local1:PlayerChar = this;
			if (_local1.comboTally > 1){
				_local1.gameObj.hudObj.hideComboMeter();
			};
			_local1.comboTimer = 0;
			_local1.comboTally = 0;
		}
		public function canGetHit():Boolean{
			var _local1:PlayerChar = this;
			if (((((((((((((!(_local1.isHit)) && (!(_local1.isStunned)))) && (!(_local1.isInvincible)))) && (!(_local1.isDead)))) && (!(_local1.isFinishingLevel)))) && (!(_local1.isPausingAfterMiniboss)))) && (!(_local1.isHiding)))){
				return (true);
			};
			return (false);
		}
		public function startDucking(){
			var _local1:PlayerChar = this;
			_local1.duck = true;
			_local1.isDucking = true;
		}
		public function startupPlayer(_arg1:Number, _arg2:Number, _arg3:Boolean=false, _arg4:Boolean=false){
			var ob:PlayerChar;
			var xtile = _arg1;
			var ytile = _arg2;
			var startingLevel = _arg3;
			var throughDoor = _arg4;
			ob = this;
			var display:GameDisplay = ob.gameObj.gameDisplay;
			var fx:EffectManager = ob.gameObj.effectManager;
			ob.x = ((xtile * display.tileWidth) + (display.tileWidth / 2));
			ob.y = ((ytile * display.tileWidth) + (display.tileWidth / 2));
			ob.xtile = xtile;
			ob.ytile = ytile;
			ob.lastSafeX = xtile;
			ob.lastSafeY = ytile;
			if (!throughDoor){
				ob.facingDir = 1;
				ob.walkingDir = 1;
			};
			ob.isWalking = false;
			ob.isDead = false;
			ob.isHit = false;
			ob.fellOffTrain = false;
			if (!throughDoor){
				ob.statAttack = (DataManager.PUNCH_STAT + ((ob.gameObj.userData.getUpgradeLevel("punching") - 1) * DataManager.STAT_ADDED_PER_UPGRADE));
			};
			ob.canPressLeft = true;
			ob.canPressRight = true;
			ob.gameObj.gameControls.stopHurtControls = false;
			if (!throughDoor){
				ob.isStunned = true;
				ob.stunStartTime = 0;
			};
			if (ob.isInvincible){
				ob.isInvincible = false;
				try {
					if (ob.invincibleFXID > -1){
						fx.removeEffect(ob.invincibleFXID);
						ob.invincibleFXID = -1;
					};
				} catch(err) {
				};
			};
			if (startingLevel){
				ob.isFinishingLevel = false;
				ob.gameObj.gameControls.stopActionControls = false;
				if (ob.gameObj.userData.hasEarnedEverything()){
					ob.addWeapon("HatfieldPistol");
				};
			};
			if (!throughDoor){
				ob.currentHealth = ob.maxHealth;
				ob.gameObj.hudObj.updatePlayerHealth(1);
			};
			ob.fallChar();
		}
		public function hurtPlayer(_arg1:Number, _arg2:Number, _arg3:Boolean=false){
			var _local4:PlayerChar;
			_local4 = this;
			var _local5:EffectManager = _local4.gameObj.effectManager;
			if (((_arg3) && (((_local4.isPausingAfterMiniboss) || (_local4.isFinishingLevel))))){
				_arg3 = false;
			};
			if (((_local4.canGetHit()) || (_arg3))){
				if (_arg3){
				};
				_local4.currentHealth = (_local4.currentHealth - _arg2);
				_local4.isHit = true;
				_local4.hitStartTime = 0;
				_local4.isGrabbing = false;
				_local4.isStartingGrabbing = false;
				_local4.isShoved = false;
				_local4.clearCombo();
				_local4.gameObj.userData.gotHurt = true;
				if (_local4.currentHealth <= 0){
					_local4.gameObj.gameCam.setCameraJiggle(12, 10);
					_local4.cancelAttack();
					_local4.dropWeapon();
					_local4.dirx = _arg1;
					if (_arg1 != 0){
						_local4.walkingDir = _arg1;
						_local4.facingDir = (_arg1 * -1);
					};
					_local4.setSpeed(_local4.walkspeed);
					_local4.jumpspeed = _local4.jumpstart;
					_local4.jump = true;
					_local4.isDead = true;
					_local4.hasPowerup = false;
					_local4.isInvincible = false;
					if (_local4.invincibleFXID > -1){
						_local4.gameObj.effectManager.removeEffect(_local4.invincibleFXID);
						_local4.invincibleFXID = -1;
					};
					_local4.gameObj.soundManager.playSound("cactusdying.wav");
					_local4.gameObj.gameControls.stopHurtControls = true;
					_local5.addEffect(_local4.x, (_local4.y - 24), "BigImpactEffect", "", true, 0, -24);
				} else {
					_local4.gameObj.gameCam.setCameraJiggle(6, 8);
					_local4.dirx = _arg1;
					if (_arg1 != 0){
						_local4.walkingDir = _arg1;
						_local4.facingDir = (_arg1 * -1);
					};
					_local4.setSpeed(12);
					_local4.cancelAttack();
					_local4.gameObj.gameControls.stopHurtControls = true;
					_local5.addEffect(_local4.x, (_local4.y - 24), "BigImpactEffect", "", true, 0, -24);
					_local4.gameObj.soundManager.playSound((("impact_" + Math.ceil((Math.random() * 3))) + ".wav"));
				};
				_local5.addEffect((_local4.x + ((_local4.width * 2) * _arg1)), (_local4.y - 50), "HurtNeedleEffect", "", false, _arg1, -1);
				_local5.addEffect((_local4.x + ((_local4.width * 2) * _arg1)), (_local4.y - 40), "HurtNeedleEffect", "", false, _arg1, -1);
				_local5.addEffect((_local4.x + ((_local4.width * 2) * _arg1)), (_local4.y - 32), "HurtNeedleEffect", "", false, _arg1, -1);
				_local5.addEffect(((_local4.x + ((_local4.width * 2) * _arg1)) - 3), (_local4.y - 20), "HurtNeedleEffect", "", false, _arg1, -1);
				_local5.addEffect(((_local4.x + ((_local4.width * 2) * _arg1)) + 3), (_local4.y - 30), "HurtNeedleEffect", "", false, _arg1, -1);
				_local5.addEffect((_local4.x + ((_local4.width * 2) * _arg1)), (_local4.y - 10), "HurtNeedleEffect", "", false, _arg1, -1);
				_local5.addEffect(_local4.x, (_local4.y - 69), "HurtSymbolEffect", "static");
				_local5.addEffect((_local4.x + 12), (_local4.y - 64), "HurtSymbolEffect", "static");
				_local5.addEffect((_local4.x - 13), (_local4.y - 62), "HurtSymbolEffect", "static");
				_local5.addEffect((_local4.x + 26), (_local4.y - 60), "HurtSymbolEffect", "static");
				_local5.addEffect((_local4.x - 28), (_local4.y - 58), "HurtSymbolEffect", "static");
				_local4.gameObj.hudObj.updatePlayerHealth((_local4.currentHealth / _local4.maxHealth));
				_local4.throwCarriedObject(0);
				_local4.isThrowingObject = false;
			};
		}
		public function throwCarriedObject(_arg1:Number, _arg2:Boolean=false){
			var _local3:PlayerChar = this;
			if (((_local3.isCarryingObject) && (_local3.whichObjectGrabbed))){
				_local3.whichObjectGrabbed.throwObject(_arg1, _arg2);
				_local3.whichObjectGrabbed = null;
				_local3.isCarryingObject = false;
				_local3.isGrabbingObject = false;
				_local3.gravity = _local3.normalgravity;
			};
		}
		public function shovePlayer(_arg1:Number, _arg2:Number=4){
			var _local3:PlayerChar = this;
			if (((!(_local3.isGrabbing)) && (!(_local3.isStartingGrabbing)))){
				_local3.isShoved = true;
				_local3.isTurning = false;
				_local3.shoveTimer = 0;
				_local3.dirx = _arg1;
				if (_arg1 != 0){
					_local3.walkingDir = _arg1;
					_local3.facingDir = (_arg1 * -1);
				};
				if (_arg1 == 1){
					_local3.canPressLeft = false;
				} else {
					if (_arg1 == -1){
						_local3.canPressRight = false;
					};
				};
				_local3.setSpeed(_arg2);
			};
		}
		public function setSpeed(_arg1:Number){
			var _local2:PlayerChar = this;
			_local2.speed = _arg1;
		}
		public function restartPlayer(){
			var _local1:PlayerChar = this;
			var _local2:GameDisplay = _local1.gameObj.gameDisplay;
			var _local3:MapManager = _local1.gameObj.mapManager;
			var _local4:Boolean = _local1.gameObj.userData.adjustLives(-1);
			if (_local4){
				_local1.gameObj.gameControls.stopHurtControls = false;
				_local1.isDead = false;
				_local1.gameObj.gameControls.resetKeys();
				_local1.startupPlayer(_local1.lastSafeX, _local1.lastSafeY);
			} else {
				_local1.gameObj.apiHelper.api.trackLevelMetric("Died", (_local1.gameObj.dataManager.currentLevel + 1));
				_local1.gameObj.soundManager.endMusic();
				_local1.gameObj.gameControls.stopCycle = true;
				_local1.gameObj.gameDisplay.startMainIrisOut();
			};
		}
		public function updateStunTime(){
			var ob:PlayerChar = this;
			var fx:EffectManager = ob.gameObj.effectManager;
			if (ob.isStunned){
				ob.stunStartTime++;
				if (ob.stunStartTime >= ob.stunDuration){
					ob.isStunned = false;
				};
			};
			if (ob.isShoved){
				ob.shoveTimer++;
				if (ob.shoveTimer >= ob.shoveTimerMax){
					ob.isShoved = false;
					ob.canPressRight = true;
					ob.canPressLeft = true;
					ob.walkingDir = ob.facingDir;
					ob.isWalking = true;
				};
			};
			if (ob.isInvincible){
				ob.invincibleTimer++;
				if (ob.invincibleTimer >= ob.invincibleTimerMax){
					ob.isInvincible = false;
					if (ob.invincibleFXID > -1){
						fx.removeEffect(ob.invincibleFXID);
						ob.invincibleFXID = -1;
					};
				} else {
					if (ob.invincibleTimer == ob.invincibleTimerWarning){
						if (ob.invincibleFXID > -1){
							try {
								fx[("Effect" + ob.invincibleFXID)].subtype = "ending";
							} catch(err) {
							};
						};
					};
				};
			};
		}
		public function checkForHittingEnemies(_arg1:Boolean=false):Boolean{
			var _local5:*;
			var _local6:Enemy;
			var _local2:PlayerChar = this;
			var _local3:Rectangle = new Rectangle((_local2.x + _local2.collRect.x), (_local2.y + _local2.collRect.y), _local2.collRect.width, _local2.collRect.height);
			var _local4:EnemyManager = _local2.gameObj.enemyManager;
			if (_local2.canGetHit()){
				_local5 = 0;
				while (_local5 < _local4.enemies.length) {
					if (_local4.enemies[_local5] != 0){
						_local6 = _local4.enemies[_local5];
						if (((_local6.checkSpriteCollision(_local3)) && (!(_local6.isDead)))){
							break;
						};
					};
					_local5++;
				};
			};
			return (false);
		}
		public function checkForHittingObjects():Boolean{
			return (false);
		}
		public function checkForCollectingItems(){
			var _local1:PlayerChar = this;
			var _local2:Rectangle = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
			var _local3:ItemManager = _local1.gameObj.itemManager;
			_local3.checkForCollecting(_local2);
		}
		public function checkForGrabbingTile(){
			var _local3:*;
			var _local1:PlayerChar = this;
			var _local2:MapManager = _local1.gameObj.mapManager;
			if (((((_local1.jump) && ((_local1.jumpspeed >= 0)))) && (!(_local1.isGrabbing)))){
				_local3 = _local2.getTileProperty(_local1.xtile, (_local1.ytile + _local1.grabTileYOffset), "grab");
				if (_local3 > 0){
					_local1.isStartingGrabbing = true;
					_local1.isGrabbing = true;
					_local1.jump = false;
					_local1.y = (_local1.ytile * _local1.gameObj.gameDisplay.tileWidth);
				};
			};
		}
		public function checkForGrabbingObjects():Boolean{
			var _local5:*;
			var _local6:GameObject;
			var _local1:PlayerChar = this;
			var _local2:ObjectManager = _local1.gameObj.objectManager;
			var _local3:Rectangle = new Rectangle((_local1.x + _local1.collRect.x), (_local1.y + _local1.collRect.y), _local1.collRect.width, _local1.collRect.height);
			var _local4:Boolean;
			if (!_local1.isCarryingObject){
				_local5 = 0;
				while (_local5 < _local2.objects.length) {
					_local6 = _local2.objects[_local5];
					if (((((((((_local6.checkOnScreen()) && (_local6.isGrabbable))) && (!(_local6.isGrabbed)))) && (!(_local6.isThrowing)))) && (((_local6.checkSpriteCollision(_local3)) || (((_local1.onMovingTile) && ((_local1.whichMovingTile == _local6)))))))){
						_local4 = true;
						_local1.isGrabbingObject = true;
						_local1.isCarryingObject = true;
						_local1.whichObjectGrabbed = _local6;
						_local1.cancelAttack();
						_local1.dropWeapon();
						_local6.grabObject();
						break;
					};
					_local5++;
				};
			};
			return (_local4);
		}
		public function adjustCarriedObject(){
			var _local1:PlayerChar = this;
		}
		public function checkIfCanGrab(_arg1:Number, _arg2:Number):Boolean{
			var _local3:PlayerChar = this;
			var _local4:MapManager = _local3.gameObj.mapManager;
			var _local5:* = _local4.getTileProperty(_arg1, _arg2, "grab");
			if (_local5 > 0){
				return (true);
			};
			return (false);
		}
		public function getPowerUp(){
			var _local1:PlayerChar = this;
			_local1.hasPowerup = true;
			_local1.gameObj.soundManager.playSound("get_powerup.wav");
		}
		public function getInvincibility(_arg1:Boolean=false){
			var _local2:PlayerChar = this;
			var _local3:EffectManager = _local2.gameObj.effectManager;
			_local2.isInvincible = true;
			_local2.invincibleTimer = 0;
			if (_arg1){
				_local2.invincibleTimer = int.MIN_VALUE;
			};
			_local2.gameObj.soundManager.playSound("powerup2.wav");
		}
		public function pauseAfterMiniboss(){
			var _local1:PlayerChar = this;
			_local1.isWalking = false;
			_local1.gameObj.gameControls.stopActionControls = true;
			_local1.isPausingAfterMiniboss = true;
			_local1.gameObj.soundManager.endMusic();
		}
		public function beatMiniboss(){
			var _local1:PlayerChar = this;
			_local1.dirx = 1;
			_local1.facingDir = 1;
			_local1.walkingDir = 1;
			_local1.isWalking = true;
			_local1.isFinishingLevel = true;
			_local1.isPausingAfterMiniboss = false;
			_local1.duck = false;
			_local1.gameObj.soundManager.playSound("beatlevel.wav");
		}
		public function finishLevel(){
			var _local1:PlayerChar = this;
			_local1.isFinishingLevel = true;
			_local1.isWalking = false;
			_local1.dropWeapon();
			if (((((_local1.isCarryingObject) && (!(_local1.isThrowingObject)))) && (!(_local1.isGrabbingObject)))){
				_local1.throwCarriedObject(0, true);
				_local1.isThrowingObject = false;
			};
			_local1.gameObj.challengeManager.recordCompletionTime(_local1.gameObj.gameControls.gameplayTimer);
			_local1.gameObj.challengeManager.checkCustomChallenges();
		}
		public function cancelAttack(){
			var _local1:PlayerChar = this;
			_local1.isAttacking = false;
			_local1.canAttack = true;
		}
		public function addWeapon(_arg1:String, _arg2:Number=-1, _arg3:Number=-1){
		}
		public function dropWeapon(){
		}
		public function usingGun():Boolean{
			return (false);
		}
		public function getWeaponSheetName():String{
			return (null);
		}
		public function checkIfOnDoor(){
			var _local1:PlayerChar = this;
			var _local2:* = _local1.gameObj.mapManager.getTileProperty(_local1.xtile, _local1.ytile, "door");
			if (((_local2) && (!(_local1.isDead)))){
				_local1.waitToEnterDoor = true;
				_local1.doorDirX = _local2[4];
				_local1.doorDirY = _local2[5];
				_local1.doorXtile = _local1.xtile;
				_local1.doorYtile = _local1.ytile;
			} else {
				if (_local1.gameObj.mapManager.isWithinBounds(_local1.xtile, _local1.ytile)){
					_local1.waitToEnterDoor = false;
				};
			};
		}
		public function checkGoingThroughDoor(_arg1:Number, _arg2:Number){
			var _local3:PlayerChar = this;
			if (((_local3.waitToEnterDoor) && (!(_local3.gameObj.gameDisplay.isTransitioningIn)))){
				if ((((_arg1 == _local3.doorDirX)) && ((_arg2 == _local3.doorDirY)))){
					_local3.enterDoor(_local3.doorXtile, _local3.doorYtile);
				};
			};
		}
		public function enterDoor(_arg1, _arg2){
			var _local5:*;
			var _local6:*;
			var _local7:*;
			var _local8:*;
			var _local9:*;
			var _local10:*;
			var _local3:PlayerChar = this;
			var _local4:* = gameObj.mapManager.getTileProperty(_arg1, _arg2, "door");
			if (_local4){
				_local5 = (_local4[0] - 1);
				_local6 = _local4[1];
				_local7 = _local4[2];
				_local8 = _local4[3];
				_local9 = _local4[4];
				_local10 = _local4[5];
				_local3.cancelAttack();
				if (_local10 == -1){
					_local3.jump = true;
					_local3.jumpspeed = _local3.jumpstart;
				} else {
					if (_local10 == 1){
						_local3.jump = false;
					} else {
						_local3.jump = false;
					};
				};
				_local3.gameObj.gameControls.travelThroughDoor(_local5, _local6, _local7, _local8, _local9, _local10);
			};
		}
		public function canFudgeJump():Boolean{
			var _local1:PlayerChar = this;
			if ((((_local1.gameObj.gameControls.gameplayTimer < (_local1.lastSafeTime + _local1.lastSafeTimeBuffer))) && (((!(_local1.jump)) || (((_local1.jump) && ((_local1.jumpspeed >= 0)))))))){
				return (true);
			};
			return (false);
		}
		override public function destroy(){
			var _local1:PlayerChar = this;
			_local1.stopTrainSound();
			super.destroy();
		}
		public function startTrainSound(){
			var _local1:PlayerChar = this;
			if (_local1.gameObj.dataManager.isOnTrain()){
				_local1.trainSound = _local1.gameObj.soundManager.playSound("train_tracks.wav", true);
			};
		}
		public function stopTrainSound(){
			var ob:PlayerChar = this;
			if (ob.gameObj.dataManager.isOnTrain()){
				try {
					ob.trainSound.stop();
					ob.trainSound = null;
				} catch(err) {
				};
			};
		}

	}
}//package cactusGame.models 

****************

//Weapon (cactusGame.models.Weapon)
package cactusGame.models {
	import flash.display.*;
	import cactusGame.models.characters.*;
	import cactusGame.core.*;
	import cactusGame.managers.*;

	public class Weapon {

		public var char:Character;
		public var spriteheight:Number;// = 80
		public var spritewidth:Number;// = 128
		public var spriteCenterX:Number;// = 64
		public var spriteCenterY:Number;// = 40
		public var spriteTargetX:Number;// = 75
		public var spriteTargetY:Number;// = 75
		public var sheetWidth:Number;// = 18
		public var sheetHeight:Number;// = 18
		public var flipBlitOffset:Number;// = 0
		public var spritesheet:BitmapData;
		public var sheetname:String;// = "blanksprite_sheet"
		public var hasSprite:Boolean;// = true
		public var statAttack:Number;// = 1
		public var currentDamage:Number;// = 0
		public var maxDamage:Number;// = 100
		public var xoffset:Number;// = 0
		public var yoffset:Number;// = 0
		public var weaponType:String;// = "none"
		public var dropName:String;// = ""
		public var weaponTitle:String;// = "???"
		public var isRapidFire:Boolean;// = false
		public var bulletFrequency:Number;// = 99
		public var maxBulletsPerRound:Number;// = 2147483647
		public var reloadDelay:Number;// = 4
		public var totalAmmo:Number;// = 2147483647
		public var maxAmmo:Number;// = 2147483647
		public var shoot_extra_offsetsX:Array;
		public var shoot_extra_offsetsY:Array;
		public var bulletTimerOffset:Number;// = 0
		public var bulletType:String;// = ""
		public var hasSpray:Boolean;// = false
		public var sprayType:String;// = ""
		public var sprayAmount:Number;// = 0
		public var sprayAngleDifference:Number;// = 0
		public var isOnPlayer:Boolean;// = false

		public function Weapon(_arg1:Character, _arg2:Number, _arg3:Number){
			shoot_extra_offsetsX = [0, 0, 0, 0, 0];
			shoot_extra_offsetsY = [0, 0, 0, 0, 0];
			super();
			var _local4:Weapon = this;
			_local4.char = _arg1;
			if ((((_arg1 is CactusChar)) || ((_arg1 is PlayerChar)))){
				_local4.isOnPlayer = true;
			} else {
				_local4.isOnPlayer = false;
			};
			_local4.defineVars();
			if (_arg2 > -1){
				_local4.currentDamage = (_local4.maxDamage - _arg2);
			};
			if (_arg3 > -1){
				_local4.totalAmmo = _arg3;
			} else {
				_local4.totalAmmo = _local4.maxAmmo;
			};
			if (_local4.isOnPlayer){
				_local4.spritesheet = _local4.char.gameObj.bitmapManager.loadBitmap(_local4.sheetname);
			} else {
				_local4.spritesheet = _local4.char.gameObj.enemyManager.getWeaponSheet(_local4.sheetname);
			};
			if (_local4.isOnPlayer){
				CactusChar(_local4.char).weaponCycleData = CactusChar(_local4.char).grabWeaponAnimationCycle();
			};
		}
		public function defineVars(){
			var _local1:Weapon = this;
		}
		public function destroy(){
			var _local1:Weapon = this;
			if (((_local1.spritesheet) && (_local1.isOnPlayer))){
				_local1.spritesheet.dispose();
				_local1.spritesheet = null;
			} else {
				_local1.spritesheet = null;
			};
		}
		public function createDrop(){
			var _local1:Weapon = this;
			var _local2:ItemManager = _local1.char.gameObj.itemManager;
			var _local3:Array = [];
			_local3[0] = (_local1.maxDamage - _local1.currentDamage);
			_local3[1] = _local1.totalAmmo;
			_local2.addItem(_local1.char.xtile, _local1.char.ytile, _local1.dropName, 1, _local3, true);
		}
		public function getAttackStat():Number{
			var _local1:Weapon = this;
			return (_local1.statAttack);
		}
		public function getType():String{
			var _local1:Weapon = this;
			return (_local1.weaponType);
		}
		public function damageWeapon(_arg1:Number=1){
			var _local2:Weapon = this;
			if (_local2.isOnPlayer){
				_local2.currentDamage = (_local2.currentDamage + _arg1);
				if (_local2.currentDamage >= _local2.maxDamage){
					CactusChar(_local2.char).dropWeapon();
				} else {
					_local2.char.gameObj.hudObj.updateWeaponHealth(_local2.getPercent());
				};
			};
		}
		public function useBullet(_arg1:Number=1){
			var _local2:Weapon = this;
			if (_local2.isOnPlayer){
				_local2.totalAmmo--;
				if (_local2.totalAmmo <= 0){
					CactusChar(_local2.char).dropWeapon();
				} else {
					_local2.char.gameObj.hudObj.updateWeaponHealth(_local2.getPercent());
				};
			};
		}
		public function getPercent():Number{
			var _local1:Weapon = this;
			var _local2:Number = 0;
			if ((((((((((_local1.weaponType == "longgun")) || ((_local1.weaponType == "bazooka")))) || ((_local1.weaponType == "gatling")))) || ((_local1.weaponType == "pistol")))) || ((_local1.weaponType == "toss")))){
				_local2 = (_local1.totalAmmo / _local1.maxAmmo);
			} else {
				_local2 = ((_local1.maxDamage - _local1.currentDamage) / _local1.maxDamage);
			};
			return (_local2);
		}

	}
}//package cactusGame.models 

****************

//FliplineLogoScreen (cactusGame.screens.FliplineLogoScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import Playtomic.*;

	public class FliplineLogoScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;

		public function FliplineLogoScreen(_arg1:GameModule){
			var _local2:FliplineLogoScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
			_local2.gameObj.apiHelper.api.trackCustomMetric("FliplineLogoScreen", "PreGame");
		}
		public function setupScreen(){
			var _local1:FliplineLogoScreen = this;
			_local1.clip = new fliplineLogoMC();
			_local1.gameObj.addChild(_local1.clip);
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.btn.addEventListener(MouseEvent.CLICK, _local1.clickScreen);
		}
		public function updateScreen(_arg1:Event){
			var _local2:FliplineLogoScreen = this;
			if (_local2.clip.currentLabel == "stopframe"){
				_local2.clip.stop();
				_local2.gameObj.apiHelper.api.showScreen("SplashScreen");
				_local2.gameObj.apiHelper.api.trackCustomMetric("SplashScreen", "PreGame");
				_local2.gameObj.removeFliplineLogoScreen();
			} else {
				if (_local2.clip.currentLabel == "soundframe"){
					_local2.gameObj.soundManager.playSound("flipline_sound.wav");
				};
			};
		}
		public function clickScreen(_arg1:MouseEvent){
			var _local2:FliplineLogoScreen = this;
			_local2.gameObj.apiHelper.api.goToLink("http://www.flipline.com", "FliplinePreroll", "LogoLinks");
		}
		public function destroy(){
			var _local1:FliplineLogoScreen = this;
			_local1.clip.removeEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.btn.removeEventListener(MouseEvent.CLICK, _local1.clickScreen);
			_local1.gameObj.removeChild(_local1.clip);
			_local1.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//GameIntroScreen (cactusGame.screens.GameIntroScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;

	public class GameIntroScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var currentPage:Number;// = 1
		public var totalPages:Number;// = 7

		public function GameIntroScreen(_arg1:GameModule){
			var _local2:GameIntroScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
		}
		public function setupScreen(){
			var _local1:GameIntroScreen = this;
			_local1.clip = new gameIntroMC();
			_local1.gameObj.gameStage.addChild(_local1.clip);
			_local1.gameObj.soundManager.endMusic();
			_local1.gameObj.soundManager.playTrack("gameintro.wav");
			_local1.clip.next_btn.addEventListener(MouseEvent.CLICK, _local1.clickNext);
			_local1.clip.skip_btn.addEventListener(MouseEvent.CLICK, _local1.clickSkip);
			_local1.clip.next_btn.visible = false;
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
		}
		public function updateScreen(_arg1:Event){
			var e = _arg1;
			var screen:GameIntroScreen = this;
			var whichClip:MovieClip;
			try {
				whichClip = screen.clip[("page" + screen.currentPage)];
			} catch(err) {
			};
			if (whichClip != null){
				if (whichClip.currentLabel == "shownext"){
					screen.clip.next_btn.visible = true;
					screen.clip.next_btn.alpha = 0;
				} else {
					if (whichClip.currentLabel == "stopframe"){
						screen.clip.next_btn.visible = true;
						screen.clip.next_btn.alpha = 1;
					} else {
						if (whichClip.currentFrame == whichClip.totalFrames){
							if (screen.currentPage < screen.totalPages){
								screen.currentPage++;
								screen.clip.gotoAndStop(screen.currentPage);
							} else {
								screen.finishGameIntro();
							};
						};
					};
				};
			};
		}
		public function clickNext(_arg1:MouseEvent=null){
			var e = _arg1;
			var screen:GameIntroScreen = this;
			screen.clip.next_btn.visible = false;
			try {
				screen.clip[("page" + screen.currentPage)].gotoAndPlay("ender");
			} catch(err) {
			};
		}
		public function clickSkip(_arg1:MouseEvent=null){
			var _local2:GameIntroScreen = this;
			_local2.gameObj.apiHelper.api.trackCustomMetric("SkipIntro", "Screens");
			_local2.clip.skip_btn.visible = false;
			_local2.finishGameIntro();
		}
		public function finishGameIntro(){
			var _local1:GameIntroScreen = this;
			_local1.gameObj.selectedLevel = 0;
			_local1.gameObj.setupGame();
			_local1.gameObj.apiHelper.api.trackLevelMetric("StartedLevel", 1);
			_local1.gameObj.removeGameIntroScreen();
		}
		public function destroy(){
			var screen:GameIntroScreen = this;
			try {
				screen.clip.removeEventListener(Event.ENTER_FRAME, screen.updateScreen);
			} catch(err) {
			};
			screen.clip.next_btn.removeEventListener(MouseEvent.CLICK, screen.clickNext);
			screen.clip.skip_btn.removeEventListener(MouseEvent.CLICK, screen.clickSkip);
			screen.gameObj.gameStage.removeChild(screen.clip);
			screen.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//GameOutroScreen (cactusGame.screens.GameOutroScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;

	public class GameOutroScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var currentPage:Number;// = 1
		public var totalPages:Number;// = 4

		public function GameOutroScreen(_arg1:GameModule){
			var _local2:GameOutroScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
		}
		public function setupScreen(){
			var _local1:GameOutroScreen = this;
			_local1.clip = new gameOutroMC();
			_local1.gameObj.gameStage.addChild(_local1.clip);
			_local1.gameObj.soundManager.endMusic();
			_local1.gameObj.soundManager.playTrack("gameintro.wav");
			_local1.clip.next_btn.addEventListener(MouseEvent.CLICK, _local1.clickNext);
			_local1.clip.skip_btn.addEventListener(MouseEvent.CLICK, _local1.clickSkip);
			_local1.clip.next_btn.visible = false;
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
		}
		public function updateScreen(_arg1:Event){
			var e = _arg1;
			var screen:GameOutroScreen = this;
			var whichClip:MovieClip;
			try {
				whichClip = screen.clip[("page" + screen.currentPage)];
			} catch(err) {
			};
			if (whichClip != null){
				if (whichClip.currentLabel == "shownext"){
					screen.clip.next_btn.visible = true;
					screen.clip.next_btn.alpha = 0;
				} else {
					if (whichClip.currentLabel == "stopframe"){
						screen.clip.next_btn.visible = true;
						screen.clip.next_btn.alpha = 1;
					} else {
						if (whichClip.currentFrame == whichClip.totalFrames){
							if (screen.currentPage < screen.totalPages){
								screen.currentPage++;
								screen.clip.gotoAndStop(screen.currentPage);
							} else {
								screen.finishGameOutro();
							};
						};
					};
				};
			};
		}
		public function clickNext(_arg1:MouseEvent=null){
			var e = _arg1;
			var screen:GameOutroScreen = this;
			screen.clip.next_btn.visible = false;
			try {
				screen.clip[("page" + screen.currentPage)].gotoAndPlay("ender");
			} catch(err) {
			};
		}
		public function clickSkip(_arg1:MouseEvent=null){
			var _local2:GameOutroScreen = this;
			_local2.gameObj.apiHelper.api.trackCustomMetric("SkipOutro", "Screens");
			_local2.clip.skip_btn.visible = false;
			_local2.finishGameOutro();
		}
		public function finishGameOutro(){
			var _local1:GameOutroScreen = this;
			_local1.gameObj.finishLevel();
			_local1.gameObj.removeGameOutroScreen();
		}
		public function destroy(){
			var screen:GameOutroScreen = this;
			try {
				screen.clip.removeEventListener(Event.ENTER_FRAME, screen.updateScreen);
			} catch(err) {
			};
			screen.clip.next_btn.removeEventListener(MouseEvent.CLICK, screen.clickNext);
			screen.clip.skip_btn.removeEventListener(MouseEvent.CLICK, screen.clickSkip);
			screen.gameObj.gameStage.removeChild(screen.clip);
			screen.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//LicenseLogoScreen (cactusGame.screens.LicenseLogoScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import Playtomic.*;

	public class LicenseLogoScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;

		public function LicenseLogoScreen(_arg1:GameModule){
			var _local2:LicenseLogoScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
			_local2.gameObj.apiHelper.api.trackCustomMetric("LicenseLogoScreen", "PreGame");
		}
		public function setupScreen(){
			var _local1:LicenseLogoScreen = this;
			_local1.clip = new licenseLogoMC();
			_local1.gameObj.addChild(_local1.clip);
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.btn.addEventListener(MouseEvent.CLICK, _local1.clickScreen);
			_local1.gameObj.stage.frameRate = 45;
		}
		public function updateScreen(_arg1:Event){
			var _local2:LicenseLogoScreen = this;
			if (_local2.clip.currentFrame == _local2.clip.totalFrames){
				_local2.gameObj.stage.frameRate = 30;
				_local2.gameObj.showFliplineLogoScreen();
				_local2.gameObj.removeLicenseLogoScreen();
			};
		}
		public function clickScreen(_arg1:MouseEvent){
			var _local2:LicenseLogoScreen = this;
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.licenseLink, "LicensePreroll", "LogoLinks");
		}
		public function destroy(){
			var _local1:LicenseLogoScreen = this;
			_local1.clip.removeEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.btn.removeEventListener(MouseEvent.CLICK, _local1.clickScreen);
			_local1.gameObj.removeChild(_local1.clip);
			_local1.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//LoadingLevelsScreen (cactusGame.screens.LoadingLevelsScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import mochi.as3.*;
	import flipline.api.assets.*;

	public class LoadingLevelsScreen {

		public var licenseAutoPlay:Boolean;// = true
		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var shouldAutoPlay:Boolean;// = false
		public var playButton:SmartButton;

		public function LoadingLevelsScreen(_arg1:GameModule){
			var _local2:LoadingLevelsScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
			_local2.gameObj.apiHelper.api.trackCustomMetric("LoadingLevelsScreen", "PreGame");
		}
		public function setupScreen(){
			var _local1:LoadingLevelsScreen = this;
			_local1.clip = new loadingLevelsMC();
			_local1.clip.bar.scaleX = 0;
			_local1.gameObj.addChild(_local1.clip);
			_local1.clip.sponsorlogo.addEventListener(MouseEvent.CLICK, _local1.clickSponsorLogo);
			_local1.clip.sponsorlogo.buttonMode = true;
			_local1.clip.sponsorlogo.tabEnabled = false;
			_local1.clip.sponsorlogo.useHandCursor = true;
			_local1.clip.licenselogo.addEventListener(MouseEvent.CLICK, _local1.clickLicenseLogo);
			_local1.clip.licenselogo.buttonMode = true;
			_local1.clip.licenselogo.tabEnabled = false;
			_local1.clip.licenselogo.useHandCursor = true;
			_local1.playButton = new SmartButton(null, "Play!", "large", "button", "clickPlayBtn", null, false, false, false, null, false, 120);
			_local1.playButton.x = 236;
			_local1.playButton.y = 379;
			_local1.clip.addChild(_local1.playButton);
			_local1.playButton.visible = false;
			_local1.playButton.addEventListener("clickPlayBtn", _local1.clickPlayButton);
			if (_local1.gameObj.apiHelper.api.onLicenseSite()){
				_local1.shouldAutoPlay = licenseAutoPlay;
				_local1.clip.sponsorlogo.visible = false;
				_local1.clip.licenselogo.visible = true;
			} else {
				_local1.shouldAutoPlay = false;
				_local1.clip.sponsorlogo.visible = true;
				_local1.clip.licenselogo.visible = false;
			};
		}
		public function clickSponsorLogo(_arg1:MouseEvent){
			var _local2:LoadingLevelsScreen = this;
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.sponsorLink, "SponsorLoadingLevelsLogo", "LogoLinks");
		}
		public function clickLicenseLogo(_arg1:MouseEvent){
			var _local2:LoadingLevelsScreen = this;
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.licenseLink, "LicenseLoadingLevelsLogo", "LogoLinks");
		}
		public function showPlayButton(){
			var _local1:LoadingLevelsScreen = this;
			if (_local1.shouldAutoPlay){
				if (_local1.gameObj.apiHelper.api.onLicenseSite()){
					_local1.gameObj.showLicenseLogoScreen();
				} else {
					_local1.gameObj.showSponsorLogoScreen();
				};
				_local1.gameObj.removeLoadingLevelsScreen();
			} else {
				_local1.playButton.visible = true;
				_local1.clip.loading_label.visible = false;
				_local1.clip.bar.scaleX = 1;
			};
		}
		public function clickPlayButton(_arg1:Event=null){
			var _local2:LoadingLevelsScreen = this;
			if (_local2.gameObj.apiHelper.api.onLicenseSite()){
				_local2.gameObj.showLicenseLogoScreen();
			} else {
				_local2.gameObj.showSponsorLogoScreen();
			};
			_local2.gameObj.removeLoadingLevelsScreen();
		}
		public function destroy(){
			var screen:LoadingLevelsScreen = this;
			screen.clip.sponsorlogo.removeEventListener(MouseEvent.CLICK, screen.clickSponsorLogo);
			screen.playButton.removeEventListener("clickPlayBtn", screen.clickPlayButton);
			screen.playButton.destroy();
			screen.playButton = null;
			screen.gameObj.removeChild(screen.clip);
			screen.clip = null;
			try {
				screen.gameObj.dataManager.loadingClip = null;
			} catch(err) {
			};
		}

	}
}//package cactusGame.screens 

****************

//LoadingScreen (cactusGame.screens.LoadingScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import mochi.as3.*;

	public class LoadingScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var maxSpeed:Number;// = 20
		public var startProgressX:Number;// = 10
		public var progressDistance:Number;// = 544

		public function LoadingScreen(_arg1:GameModule){
			var gameObj = _arg1;
			super();
			var screen:LoadingScreen = this;
			screen.gameObj = gameObj;
			screen.gameObj.apiHelper.api.trackCustomMetric("LoadingScreen", "PreGame");
			if (screen.gameObj.apiHelper.api.onLicenseSite()){
				screen.gameObj.apiHelper.api.trackCustomMetric("LicenseArmor", "SiteSources");
			} else {
				screen.gameObj.apiHelper.api.trackCustomMetric("ViralFromArmor", "SiteSources");
			};
			if (((screen.gameObj.apiHelper.api.onFliplineSite()) && (screen.gameObj.apiHelper.showAdsOnFlipline))){
				MochiAd.showPreGameAd({clip:screen.gameObj, id:"5b11984509387fa1", res:"608x480", ad_started:function (){
				}, ad_finished:screen.setupScreen, background:16777161, color:5359422, outline:4170542, no_bg:true});
			} else {
				if (screen.gameObj.apiHelper.api.domainBlocksAds()){
					screen.setupScreen();
				} else {
					MochiAd.showPreGameAd({clip:screen.gameObj, id:"5b11984509387fa1", res:"608x480", ad_started:function (){
					}, ad_finished:screen.setupScreen, background:16777161, color:5359422, outline:4170542, no_bg:true});
				};
			};
		}
		private function getMainLoaderInfo():LoaderInfo{
			var _local1:LoaderInfo = this.gameObj.root.loaderInfo;
			if (_local1.loader != null){
				_local1 = _local1.loader.loaderInfo;
			};
			return (_local1);
		}
		public function setupScreen(_arg1=null){
			var _local2:LoadingScreen = this;
			_local2.clip = new loadingMC();
			_local2.gameObj.addChild(_local2.clip);
			_local2.clip.addEventListener(Event.ENTER_FRAME, _local2.updateScreen);
			_local2.clip.sponsorlogo.addEventListener(MouseEvent.CLICK, _local2.clickSponsorLogo);
			_local2.clip.sponsorlogo.buttonMode = true;
			_local2.clip.sponsorlogo.tabEnabled = false;
			_local2.clip.sponsorlogo.useHandCursor = true;
			_local2.clip.licenselogo.addEventListener(MouseEvent.CLICK, _local2.clickLicenseLogo);
			_local2.clip.licenselogo.buttonMode = true;
			_local2.clip.licenselogo.tabEnabled = false;
			_local2.clip.licenselogo.useHandCursor = true;
			if (_local2.gameObj.apiHelper.api.onLicenseSite()){
				_local2.clip.sponsorlogo.visible = false;
				_local2.clip.licenselogo.visible = true;
			} else {
				_local2.clip.sponsorlogo.visible = true;
				_local2.clip.licenselogo.visible = false;
			};
			_local2.clip.loader_bar.percent_txt.text = "0%";
		}
		public function adFinished(_arg1=null){
			var _local2:LoadingScreen = this;
			_local2.setupScreen();
		}
		public function updateScreen(_arg1:Event){
			var _local3:Number;
			var _local4:Number;
			var _local5:Number;
			var _local2:LoadingScreen = this;
			if (_local2.clip.currentFrame == 28){
				_local3 = (_local2.getMainLoaderInfo().bytesLoaded / _local2.getMainLoaderInfo().bytesTotal);
				_local4 = ((_local2.clip.loader_bar.x - _local2.startProgressX) / _local2.progressDistance);
				_local5 = 0;
				if (((_local3 * _local2.progressDistance) - (_local4 * _local2.progressDistance)) <= _local2.maxSpeed){
					_local2.clip.loader_bar.x = (_local2.startProgressX + (_local3 * _local2.progressDistance));
					_local5 = _local3;
				} else {
					_local2.clip.loader_bar.x = (_local2.clip.loader_bar.x + _local2.maxSpeed);
					_local5 = ((_local2.clip.loader_bar.x - _local2.startProgressX) / _local2.progressDistance);
				};
				_local2.clip.loader_bar.percent_txt.text = (String(Math.round((_local5 * 100))) + "%");
				if (_local2.clip.loader_bar.x >= (_local2.startProgressX + _local2.progressDistance)){
					_local2.clip.loader_bar.x = 2000;
					_local2.clip.gotoAndPlay("animout");
				};
			} else {
				if (_local2.clip.currentFrame == _local2.clip.totalFrames){
					if (_local2.gameObj.apiHelper.api.isAllowedDomain()){
						_local2.gameObj.initializeModule();
						_local2.gameObj.removeLoadingScreen();
					} else {
						_local2.gameObj.showLockScreen();
					};
				};
			};
		}
		public function clickSponsorLogo(_arg1:MouseEvent){
			var _local2:LoadingScreen = this;
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.sponsorLink, "SponsorLoadingLogo", "LogoLinks");
		}
		public function clickLicenseLogo(_arg1:MouseEvent){
			var _local2:LoadingScreen = this;
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.licenseLink, "LicenseLoadingLogo", "LogoLinks");
		}
		public function destroy(){
			var _local1:LoadingScreen = this;
			_local1.clip.removeEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.sponsorlogo.removeEventListener(MouseEvent.CLICK, _local1.clickSponsorLogo);
			_local1.gameObj.removeChild(_local1.clip);
			_local1.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//LockScreen (cactusGame.screens.LockScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import flash.net.*;

	public class LockScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;

		public function LockScreen(_arg1:GameModule){
			var _local2:LockScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
		}
		public function setupScreen(){
			var _local1:LockScreen = this;
			_local1.clip = new lockScreenMC();
			_local1.gameObj.addChild(_local1.clip);
			_local1.clip.btn.addEventListener(MouseEvent.CLICK, _local1.clickScreen);
		}
		public function clickScreen(_arg1:MouseEvent){
			var _local2:LockScreen = this;
			navigateToURL(new URLRequest("http://www.flipline.com"), "_blank");
		}

	}
}//package cactusGame.screens 

****************

//MainMenuScreen (cactusGame.screens.MainMenuScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.geom.*;
	import flash.filters.*;
	import flipline.api.assets.*;
	import cactusGame.managers.*;
	import flipline.api.utils.*;

	public class MainMenuScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var container:MovieClip;
		public var currentSection:String;// = ""
		public var newSection:String;// = ""
		public var tweenSpeed:Number;// = 2
		public var isTransitioning:Boolean;// = false
		public var isClosing:Boolean;// = false
		private var params:Object;
		public var isStartingLevel:Boolean;// = false
		public var isOpeningMapDetail:Boolean;// = false
		public var whichLevel:Number;// = -1
		public var isQuittingLevel:Boolean;// = false
		public var isContinuingToMap:Boolean;// = false
		public var isReturningToMap:Boolean;// = false
		private var previousMoney:Number;// = 0
		private var deductMoneyTimer:Number;// = 0
		private var deductMoneyTimerMax:Number;// = 30
		private var medalsPage:Number;// = 0
		private var medalsPerPage:Number;// = 10
		private var medalsDirection:String;// = "next"
		private var medalsTransitioning:Boolean;// = true
		private var confirmYesButton:SmartButton;
		private var confirmNoButton:SmartButton;
		private var settingWhichKey:String;// = "none"
		private var keysWereChanged:Boolean;// = false

		public function MainMenuScreen(_arg1:GameModule, _arg2:MovieClip, _arg3:Object=null){
			this.gameObj = _arg1;
			this.container = _arg2;
			this.params = _arg3;
			this.setupScreen();
		}
		public function setupScreen(){
			var _local1:MainMenuScreen = this;
			_local1.clip = new mainMenuMC();
			_local1.container.addChild(_local1.clip);
			_local1.container.addEventListener("clickMap", _local1.clickMap);
			_local1.container.addEventListener("clickUpgrades", _local1.clickUpgrades);
			_local1.container.addEventListener("clickMedals", _local1.clickMedals);
			_local1.container.addEventListener("clickControls", _local1.clickControls);
			_local1.container.addEventListener("clickCredits", _local1.clickCredits);
			_local1.container.addEventListener("clickHelp", _local1.clickHelp);
			_local1.container.addEventListener("clickExit", _local1.clickExit);
			_local1.container.addEventListener("clickArea", _local1.clickArea);
			_local1.container.addEventListener("clickBackToGame", _local1.clickBackToGame);
			_local1.container.addEventListener("clickQuit", _local1.clickQuit);
			_local1.container.addEventListener("clickContinueToMap", _local1.clickContinueToMap);
			_local1.container.addEventListener("clickExitUpgrade", _local1.clickExitUpgrade);
			_local1.container.addEventListener("clickStartLevel", _local1.clickStartLevel);
			_local1.container.addEventListener("clickBackToMap", _local1.clickBackToMap);
			_local1.container.addEventListener("clickExitMapSelect", _local1.clickExitMapSelect);
			_local1.setupMap();
			_local1.setupArea();
			_local1.setupControls();
			_local1.setupCredits();
			_local1.setupHelp();
			_local1.setupUpgrades();
			_local1.setupMedals();
			_local1.setupConfirmQuit();
			if ((((_local1.gameObj.dataManager.currentWorldData == null)) && (!((_local1.gameObj.soundManager.currentTrack == "otherscreens.wav"))))){
				_local1.gameObj.soundManager.endMusic();
				_local1.gameObj.soundManager.playTrack("otherscreens.wav");
			};
			if (((!((this.params == null))) && (this.params.hasOwnProperty("useLevel")))){
				_local1.whichLevel = Number(this.params.useLevel);
			};
			if (((!((this.params == null))) && (this.params.hasOwnProperty("section")))){
				_local1.setSection(this.params.section);
			} else {
				_local1.setSection("map");
			};
		}
		public function setupConfirmQuit(_arg1:Boolean=true){
			var _local2:MainMenuScreen = this;
			if (_arg1){
				_local2.confirmYesButton = new SmartButton(null, "YES", "small", "button", "clickYesQuit", null, false, false, false, null, false, 80);
				_local2.confirmYesButton.x = 187;
				_local2.confirmYesButton.y = 230;
				_local2.confirmNoButton = new SmartButton(null, "NO", "small", "button", "clickNoQuit", null, false, false, false, null, false, 80);
				_local2.confirmNoButton.x = 340;
				_local2.confirmNoButton.y = _local2.confirmYesButton.y;
				_local2.clip.confirmquit.addChild(_local2.confirmYesButton);
				_local2.clip.confirmquit.addChild(_local2.confirmNoButton);
				_local2.confirmYesButton.addEventListener("clickYesQuit", _local2.clickConfirmQuit);
				_local2.confirmNoButton.addEventListener("clickNoQuit", _local2.clickCancelQuit);
				_local2.clip.confirmquit.visible = false;
			} else {
				_local2.clip.confirmquit.removeChild(_local2.confirmYesButton);
				_local2.clip.confirmquit.removeChild(_local2.confirmNoButton);
				_local2.confirmYesButton.removeEventListener("clickYesQuit", _local2.clickConfirmQuit);
				_local2.confirmNoButton.removeEventListener("clickNoQuit", _local2.clickCancelQuit);
				_local2.confirmYesButton.destroy();
				_local2.confirmNoButton.destroy();
				_local2.confirmYesButton = null;
				_local2.confirmNoButton = null;
			};
		}
		public function setupMedals(_arg1:Boolean=true){
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:ChallengeManager = _local2.gameObj.challengeManager;
			_local2.medalsPage = 0;
			_local2.medalsDirection = "next";
			_local2.medalsTransitioning = true;
			if (_arg1){
				_local2.clip.medals.next_btn.addEventListener(MouseEvent.CLICK, _local2.clickNextMedals);
				_local2.clip.medals.prev_btn.addEventListener(MouseEvent.CLICK, _local2.clickPrevMedals);
				_local2.clip.medals.prev_btn.visible = false;
				_local2.clip.medals.total_txt.text = String(((_local3.getTotalBadgesEarned() + "/") + _local4.getNumberOfBadges()));
				_local2.populateMedals();
				_local2.clip.medals.panel.addEventListener(Event.ENTER_FRAME, _local2.animateMedalsTransition);
			} else {
				_local2.clip.medals.next_btn.removeEventListener(MouseEvent.CLICK, _local2.clickNextMedals);
				_local2.clip.medals.prev_btn.removeEventListener(MouseEvent.CLICK, _local2.clickPrevMedals);
				if (_local2.clip.medals.panel.hasEventListener(Event.ENTER_FRAME)){
					_local2.clip.medals.panel.removeEventListener(Event.ENTER_FRAME, _local2.animateMedalsTransition);
				};
			};
		}
		public function getDesaturatedFilter():ColorMatrixFilter{
			var _local1:* = 0.212671;
			var _local2:* = 0.71516;
			var _local3:* = 0.072169;
			return (new ColorMatrixFilter([_local1, _local2, _local3, 0, 0, _local1, _local2, _local3, 0, 0, _local1, _local2, _local3, 0, 0, 0, 0, 0, 1, 0]));
		}
		public function populateMedals(){
			var _local9:MovieClip;
			var _local10:Number;
			var _local1:MainMenuScreen = this;
			var _local2:UserData = _local1.gameObj.userData;
			var _local3:ChallengeManager = _local1.gameObj.challengeManager;
			var _local4:Number = (0 + (_local1.medalsPage * _local1.medalsPerPage));
			var _local5:Number = Math.min((_local3.getNumberOfBadges() - 1), (_local4 + (_local1.medalsPerPage - 1)));
			var _local6:Number = ((_local5 - _local4) + 1);
			var _local7:* = 0;
			while (_local7 < _local1.medalsPerPage) {
				_local9 = _local1.clip.medals.panel[("panel" + (_local7 + 1))];
				_local10 = (_local7 + _local4);
				if (_local7 < _local6){
					_local9.visible = true;
					_local9.title_txt.text = _local3.getChallengeTitle(-1, -1, _local10);
					_local9.description_txt.text = ((_local3.getChallengeDescription(-1, -1, _local10) + " ") + _local3.getBadgeTallyString(_local10));
					_local9.reward_txt.text = ("+ $" + StringUtility.addCommasToNumber(_local3.getChallengeRewardAmount(-1, -1, _local10)));
					_local9.points_txt.text = (_local3.getChallengeRewardAmount(-1, -1, _local10) + " Pts.");
					_local9.thumb.gotoAndStop((_local10 + 1));
					if (_local2.hasBadge(_local10)){
						_local9.earned.visible = true;
						_local9.thumb.filters = [];
					} else {
						_local9.earned.visible = false;
						_local9.thumb.filters = [_local1.getDesaturatedFilter()];
					};
				} else {
					_local9.visible = false;
				};
				_local7++;
			};
			var _local8:Number = Math.ceil((_local3.getNumberOfBadges() / _local1.medalsPerPage));
			if (_local1.medalsPage > 0){
				_local1.clip.medals.prev_btn.visible = true;
			} else {
				_local1.clip.medals.prev_btn.visible = false;
			};
			if (_local1.medalsPage < (_local8 - 1)){
				_local1.clip.medals.next_btn.visible = true;
			} else {
				_local1.clip.medals.next_btn.visible = false;
			};
			_local1.clip.medals.page_txt.text = (((_local1.medalsPage + 1) + " / ") + _local8);
			if (_local1.medalsDirection == "next"){
				_local1.clip.medals.panel.gotoAndPlay("innext");
			} else {
				_local1.clip.medals.panel.gotoAndPlay("inprev");
			};
		}
		public function clickNextMedals(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			if (!_local2.medalsTransitioning){
				_local2.medalsPage++;
				_local2.medalsDirection = "next";
				_local2.medalsTransitioning = true;
				_local2.clip.medals.panel.gotoAndPlay("outnext");
				_local2.clip.medals.panel.addEventListener(Event.ENTER_FRAME, _local2.animateMedalsTransition);
			};
		}
		public function clickPrevMedals(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			if (!_local2.medalsTransitioning){
				_local2.medalsPage--;
				_local2.medalsDirection = "prev";
				_local2.medalsTransitioning = true;
				_local2.clip.medals.panel.gotoAndPlay("outprev");
				_local2.clip.medals.panel.addEventListener(Event.ENTER_FRAME, _local2.animateMedalsTransition);
			};
		}
		public function animateMedalsTransition(_arg1:Event){
			var _local2:MainMenuScreen = this;
			if ((((_local2.clip.medals.panel.currentLabel == "outnextframe")) || ((_local2.clip.medals.panel.currentLabel == "outprevframe")))){
				_local2.populateMedals();
			} else {
				if ((((_local2.clip.medals.panel.currentLabel == "innextframe")) || ((_local2.clip.medals.panel.currentLabel == "inprevframe")))){
					_local2.clip.medals.panel.removeEventListener(Event.ENTER_FRAME, _local2.animateMedalsTransition);
					_local2.medalsTransitioning = false;
				};
			};
		}
		public function setupArea(_arg1:Boolean=true){
			var _local6:Number;
			var _local7:Number;
			var _local8:Number;
			var _local9:*;
			var _local10:Number;
			var _local11:String;
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:DataManager = _local2.gameObj.dataManager;
			var _local5:Boolean;
			if (((_arg1) && (((!((_local4.currentWorldData == null))) || (((!((_local2.params == null))) && (_local2.params.hasOwnProperty("useLevel")))))))){
				_local6 = 0;
				if (_local4.currentWorldData != null){
					_local6 = _local4.currentLevel;
				} else {
					if (((!((_local2.params == null))) && (_local2.params.hasOwnProperty("useLevel")))){
						_local6 = Number(_local2.params.useLevel);
						_local5 = true;
					};
				};
				_local2.clip.area.area_txt.text = (("Area " + (_local6 + 1)) + ":");
				_local2.clip.area.title_txt.text = _local2.gameObj.dataManager.getWorldTitle(_local6);
				if (_local5){
					_local2.clip.area.arealabels.visible = false;
					_local2.clip.area.maplabels.visible = true;
					_local10 = _local3.getLevelBestTime(_local6);
					_local2.clip.area.time_txt.text = "";
					_local2.clip.area.maplabels.time_txt.text = StringUtility.convertFramesToTimecode(_local10);
					if (_local10 == 0){
						_local2.clip.area.maplabels.time_txt.text = "--";
					};
				} else {
					_local2.clip.area.arealabels.visible = true;
					_local2.clip.area.maplabels.visible = false;
					_local2.clip.area.time_txt.text = StringUtility.convertFramesToTimecode(_local2.gameObj.gameControls.gameplayTimer);
				};
				if (_local5){
					_local2.clip.area.points_txt.text = "";
				} else {
					_local2.clip.area.points_txt.text = StringUtility.addCommasToNumber(_local3.getCurrentPoints());
				};
				if (_local5){
					_local2.clip.area.levelmoney_txt.text = "";
					_local2.clip.area.maplabels.score_txt.text = StringUtility.addCommasToNumber(_local3.getLevelHighScore(_local6));
				} else {
					_local2.clip.area.levelmoney_txt.text = ("$" + StringUtility.addCommasToNumber(_local3.getCurrentMoney()));
				};
				_local2.clip.area.totalmoney_txt.text = ("$" + StringUtility.addCommasToNumber(_local3.getTotalMoney()));
				_local7 = 0;
				_local8 = 0;
				_local9 = 1;
				while (_local9 <= 5) {
					if (_local3.hasTreasure(_local6, _local9)){
						_local2.clip.area[("chest" + _local9)].visible = true;
						_local7++;
					} else {
						_local2.clip.area[("chest" + _local9)].visible = false;
					};
					if (_local3.hasCompletedChallenge(_local6, _local9)){
						_local2.clip.area[("star" + _local9)].visible = true;
						_local8++;
					} else {
						_local2.clip.area[("star" + _local9)].visible = false;
					};
					_local11 = ((("<b><font color=\"#000000\">" + _local2.gameObj.challengeManager.getChallengeTitle(_local6, _local9)) + "</font><br>") + _local2.gameObj.challengeManager.getChallengeDescription(_local6, _local9));
					if (((!(_local3.hasCompletedChallenge(_local6, _local9))) && (!(_local5)))){
						_local11 = (_local11 + (" " + _local2.gameObj.challengeManager.getChallengeTallyString(_local6, _local9)));
					};
					_local11 = (_local11 + "</b>");
					_local2.clip.area[(("challenge" + _local9) + "_txt")].htmlText = _local11;
					_local9++;
				};
				_local2.clip.area.treasure_txt.text = String((_local7 + " / 5"));
				_local2.clip.area.challenges_txt.text = String((_local8 + " / 5"));
			} else {
				if (_arg1){
				};
			};
		}
		public function setupMap(_arg1:Boolean=true){
			var _local5:Number;
			var _local6:Number;
			var _local7:MovieClip;
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:DataManager = _local2.gameObj.dataManager;
			if (_arg1){
				_local2.clip.map.totalscore_txt.text = StringUtility.addCommasToNumber(_local3.getTotalScore());
				_local5 = 0;
				while (_local5 < 12) {
					_local7 = _local2.clip.map[("world" + (_local5 + 1))];
					if (_local3.areasUnlocked[_local5] == 1){
						_local2.clip.map.bg.gotoAndStop((_local5 + 1));
						_local7.visible = true;
						_local7.num_txt.text = String((_local5 + 1));
						_local7.score_txt.text = StringUtility.addCommasToNumber(_local3.getLevelHighScore(_local5));
						_local6 = 0;
						while (_local6 < 5) {
							if (_local3.challengesCompleted[_local5][_local6] == 0){
								_local7[("star" + (_local6 + 1))].visible = false;
							} else {
								_local7[("star" + (_local6 + 1))].visible = true;
							};
							_local6++;
						};
						_local6 = 0;
						while (_local6 < 5) {
							if (_local3.treasuresUnlocked[_local5][_local6] == 0){
								_local7[("chest" + (_local6 + 1))].visible = false;
							} else {
								_local7[("chest" + (_local6 + 1))].visible = true;
							};
							_local6++;
						};
						_local7.title_txt.text = _local4.getWorldTitle(_local5);
						_local7.play_btn.addEventListener(MouseEvent.CLICK, _local2.clickPlayMap);
						_local7.play_btn.tabEnabled = false;
						_local7.arrowMC.visible = false;
						_local7.arrowMC.mouseEnabled = false;
						_local7.arrowMC.mouseChildren = false;
						if (_local3.getLevelHighScore(_local5) == 0){
							_local7.arrowMC.visible = true;
						};
					} else {
						_local7.visible = false;
					};
					_local5++;
				};
			} else {
				_local5 = 1;
				while (_local5 <= 12) {
					if (_local2.clip.map[("world" + _local5)].play_btn.hasEventListener(MouseEvent.CLICK)){
						_local2.clip.map[("world" + _local5)].play_btn.removeEventListener(MouseEvent.CLICK, _local2.clickPlayMap);
					};
					_local5++;
				};
			};
		}
		public function clickPlayMap(_arg1:MouseEvent){
			var _local3:Number;
			var _local2:MainMenuScreen = this;
			var _local4:Number = -1;
			_local3 = 1;
			while (_local3 <= 12) {
				if (_arg1.currentTarget == _local2.clip.map[("world" + _local3)].play_btn){
					_local4 = (_local3 - 1);
					break;
				};
				_local3++;
			};
			if (_local4 > -1){
				_local2.whichLevel = _local4;
				_local2.isOpeningMapDetail = true;
				_local2.gameObj.apiHelper.api.showScreen("MapSelectMenu", {section:"area", useLevel:_local2.whichLevel});
				_local2.gameObj.apiHelper.api.removeScreen("MainMenu");
			};
		}
		public function clickStartLevel(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.isStartingLevel = true;
			_local2.startClosingScreen();
		}
		public function setupCredits(_arg1:Boolean=true){
			var _local2:MainMenuScreen = this;
			if (_arg1){
				_local2.clip.credits.jig_btn.addEventListener(MouseEvent.CLICK, _local2.clickJIGButton);
			} else {
				_local2.clip.credits.jig_btn.removeEventListener(MouseEvent.CLICK, _local2.clickJIGButton);
			};
			_local2.clip.credits.jig_btn.mouseEnabled = true;
			_local2.clip.credits.jig_btn.useHandCursor = true;
			_local2.clip.credits.jig_btn.tabEnabled = false;
			if (_local2.gameObj.apiHelper.api.onLicenseSite()){
				_local2.clip.credits.jig_btn.visible = false;
			};
		}
		public function clickJIGButton(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			_local2.gameObj.apiHelper.api.goToLink("http://www.jayisgames.com", "MenuJIGButton", "Links");
		}
		public function setupHelpLabels(){
			var _local4:String;
			var _local5:MovieClip;
			var _local9:*;
			var _local1:MainMenuScreen = this;
			var _local2:UserData = _local1.gameObj.userData;
			var _local3:DataManager = _local1.gameObj.dataManager;
			var _local6:Array = ["left", "right", "up", "down", "attack", "jump", "drop"];
			var _local7:Array = [DataManager.KEY_LEFT, DataManager.KEY_RIGHT, DataManager.KEY_UP, DataManager.KEY_DOWN, DataManager.KEY_ATTACK, DataManager.KEY_JUMP, DataManager.KEY_DROP];
			var _local8:* = 0;
			while (_local8 < _local6.length) {
				_local9 = 1;
				while (_local9 <= 3) {
					if (((!((_local6[_local8] == "drop"))) || ((((_local6[_local8] == "drop")) && ((_local9 == 1)))))){
						if (_local9 == 1){
							_local5 = _local1.clip.help.inside[("key_" + _local6[_local8])];
						} else {
							_local5 = _local1.clip.help.inside[(("key_" + _local6[_local8]) + _local9)];
						};
						_local4 = _local3.getKeyLabel(_local7[_local8]);
						if (_local3.isArrow(_local4)){
							_local5.arrow.gotoAndStop(_local4);
							_local5.label_txt.text = "";
						} else {
							_local5.arrow.gotoAndStop("None");
							_local5.label_txt.text = _local4;
						};
					};
					_local9++;
				};
				_local8++;
			};
		}
		public function setupHelp(_arg1:Boolean=true){
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:DataManager = _local2.gameObj.dataManager;
			if (_arg1){
				_local2.setupHelpLabels();
				_local2.clip.help.movement_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.attacking_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.weapons_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.objects_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.juggling_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.challenges_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.upgrades_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.badges_btn.addEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.movement_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.attacking_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.weapons_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.objects_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.juggling_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.challenges_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.upgrades_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.badges_btn.addEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.movement_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.attacking_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.weapons_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.objects_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.juggling_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.challenges_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.upgrades_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.badges_btn.addEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.movement_btn.gotoAndStop(3);
				_local2.clip.help.attacking_btn.gotoAndStop(1);
				_local2.clip.help.weapons_btn.gotoAndStop(1);
				_local2.clip.help.objects_btn.gotoAndStop(1);
				_local2.clip.help.juggling_btn.gotoAndStop(1);
				_local2.clip.help.challenges_btn.gotoAndStop(1);
				_local2.clip.help.upgrades_btn.gotoAndStop(1);
				_local2.clip.help.badges_btn.gotoAndStop(1);
				_local2.clip.help.inside.gotoAndStop(1);
			} else {
				_local2.clip.help.movement_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.attacking_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.weapons_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.objects_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.juggling_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.challenges_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.upgrades_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.badges_btn.removeEventListener(MouseEvent.CLICK, _local2.clickHelpSection);
				_local2.clip.help.movement_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.attacking_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.weapons_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.objects_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.juggling_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.challenges_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.upgrades_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.badges_btn.removeEventListener(MouseEvent.ROLL_OVER, _local2.rolloverHelpSection);
				_local2.clip.help.movement_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.attacking_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.weapons_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.objects_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.juggling_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.challenges_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.upgrades_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
				_local2.clip.help.badges_btn.removeEventListener(MouseEvent.ROLL_OUT, _local2.rolloutHelpSection);
			};
		}
		public function clickHelpSection(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			var _local3:String = String(_arg1.currentTarget.name).split("_")[0];
			_local2.clip.help.inside.gotoAndStop(_local3);
			_local2.clip.help.movement_btn.gotoAndStop(1);
			_local2.clip.help.attacking_btn.gotoAndStop(1);
			_local2.clip.help.weapons_btn.gotoAndStop(1);
			_local2.clip.help.objects_btn.gotoAndStop(1);
			_local2.clip.help.juggling_btn.gotoAndStop(1);
			_local2.clip.help.challenges_btn.gotoAndStop(1);
			_local2.clip.help.upgrades_btn.gotoAndStop(1);
			_local2.clip.help.badges_btn.gotoAndStop(1);
			_arg1.currentTarget.gotoAndStop(3);
		}
		public function rolloverHelpSection(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			_arg1.currentTarget.gotoAndStop(2);
		}
		public function rolloutHelpSection(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			var _local3:String = String(_arg1.currentTarget.name).split("_")[0];
			if (_local2.clip.help.inside.currentLabel == _local3){
				_arg1.currentTarget.gotoAndStop(3);
			} else {
				_arg1.currentTarget.gotoAndStop(1);
			};
		}
		public function setupControls(_arg1:Boolean=true){
			var init = _arg1;
			var screen:MainMenuScreen = this;
			var user:UserData = screen.gameObj.userData;
			var data:DataManager = screen.gameObj.dataManager;
			if (init){
				screen.clip.controls.attack_txt.text = data.getKeyLabel(DataManager.KEY_ATTACK);
				screen.clip.controls.jump_txt.text = data.getKeyLabel(DataManager.KEY_JUMP);
				screen.clip.controls.drop_txt.text = data.getKeyLabel(DataManager.KEY_DROP);
				screen.clip.controls.down_txt.text = data.getKeyLabel(DataManager.KEY_DOWN);
				screen.clip.controls.up_txt.text = data.getKeyLabel(DataManager.KEY_UP);
				screen.clip.controls.left_txt.text = data.getKeyLabel(DataManager.KEY_LEFT);
				screen.clip.controls.right_txt.text = data.getKeyLabel(DataManager.KEY_RIGHT);
				screen.clip.controls.attack_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.jump_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.drop_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.down_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.up_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.left_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.right_btn.addEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.attack_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.jump_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.drop_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.down_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.up_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.left_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.right_btn.addEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.attack_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.jump_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.drop_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.down_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.up_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.left_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.right_btn.addEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.attack_btn.buttonMode = true;
				screen.clip.controls.jump_btn.buttonMode = true;
				screen.clip.controls.drop_btn.buttonMode = true;
				screen.clip.controls.down_btn.buttonMode = true;
				screen.clip.controls.up_btn.buttonMode = true;
				screen.clip.controls.left_btn.buttonMode = true;
				screen.clip.controls.right_btn.buttonMode = true;
				screen.clip.controls.attack_btn.useHandCursor = true;
				screen.clip.controls.jump_btn.useHandCursor = true;
				screen.clip.controls.drop_btn.useHandCursor = true;
				screen.clip.controls.down_btn.useHandCursor = true;
				screen.clip.controls.up_btn.useHandCursor = true;
				screen.clip.controls.left_btn.useHandCursor = true;
				screen.clip.controls.right_btn.useHandCursor = true;
				screen.clip.controls.attack_btn.tabEnabled = false;
				screen.clip.controls.jump_btn.tabEnabled = false;
				screen.clip.controls.drop_btn.tabEnabled = false;
				screen.clip.controls.down_btn.tabEnabled = false;
				screen.clip.controls.up_btn.tabEnabled = false;
				screen.clip.controls.left_btn.tabEnabled = false;
				screen.clip.controls.right_btn.tabEnabled = false;
				screen.clip.controls.attack_btn.gotoAndStop("click");
				screen.clip.controls.jump_btn.gotoAndStop("click");
				screen.clip.controls.drop_btn.gotoAndStop("click");
				screen.clip.controls.down_btn.gotoAndStop("click");
				screen.clip.controls.up_btn.gotoAndStop("click");
				screen.clip.controls.left_btn.gotoAndStop("click");
				screen.clip.controls.right_btn.gotoAndStop("click");
			} else {
				screen.clip.controls.attack_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.jump_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.drop_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.down_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.up_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.left_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.right_btn.removeEventListener(MouseEvent.CLICK, screen.clickControlsButton);
				screen.clip.controls.attack_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.jump_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.drop_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.down_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.up_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.left_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.right_btn.removeEventListener(MouseEvent.ROLL_OVER, screen.rolloverControlsButton);
				screen.clip.controls.attack_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.jump_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.drop_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.down_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.up_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.left_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				screen.clip.controls.right_btn.removeEventListener(MouseEvent.ROLL_OUT, screen.rolloutControlsButton);
				try {
					screen.gameObj.stage.removeEventListener(KeyboardEvent.KEY_DOWN, screen.controlsKeyListener);
				} catch(err) {
				};
			};
		}
		public function clickControlsButton(_arg1:MouseEvent){
			var _local3:String;
			var _local2:MainMenuScreen = this;
			if (_local2.settingWhichKey == "none"){
				_arg1.currentTarget.gotoAndStop("presskey");
				_local3 = _arg1.currentTarget.name.split("_")[0];
				_local2.settingWhichKey = _local3;
				_local2.gameObj.stage.addEventListener(KeyboardEvent.KEY_DOWN, _local2.controlsKeyListener);
			};
		}
		public function cancelSettingControls(){
			var screen:MainMenuScreen = this;
			if (screen.settingWhichKey != "none"){
				try {
					screen.gameObj.stage.removeEventListener(KeyboardEvent.KEY_DOWN, screen.controlsKeyListener);
				} catch(err) {
				};
				screen.clip.controls.attack_btn.gotoAndStop("click");
				screen.clip.controls.jump_btn.gotoAndStop("click");
				screen.clip.controls.drop_btn.gotoAndStop("click");
				screen.clip.controls.down_btn.gotoAndStop("click");
				screen.clip.controls.up_btn.gotoAndStop("click");
				screen.clip.controls.left_btn.gotoAndStop("click");
				screen.clip.controls.right_btn.gotoAndStop("click");
				screen.settingWhichKey = "none";
			};
		}
		public function controlsKeyListener(_arg1:KeyboardEvent){
			var e = _arg1;
			var screen:MainMenuScreen = this;
			var user:UserData = screen.gameObj.userData;
			var data:DataManager = screen.gameObj.dataManager;
			var changeSuccess:Boolean = user.setKey(e.keyCode, screen.settingWhichKey);
			if (changeSuccess){
				screen.clip.controls[(screen.settingWhichKey + "_btn")].gotoAndStop("click");
				screen.clip.controls.attack_txt.text = data.getKeyLabel(DataManager.KEY_ATTACK);
				screen.clip.controls.jump_txt.text = data.getKeyLabel(DataManager.KEY_JUMP);
				screen.clip.controls.drop_txt.text = data.getKeyLabel(DataManager.KEY_DROP);
				screen.clip.controls.down_txt.text = data.getKeyLabel(DataManager.KEY_DOWN);
				screen.clip.controls.up_txt.text = data.getKeyLabel(DataManager.KEY_UP);
				screen.clip.controls.left_txt.text = data.getKeyLabel(DataManager.KEY_LEFT);
				screen.clip.controls.right_txt.text = data.getKeyLabel(DataManager.KEY_RIGHT);
				screen.keysWereChanged = true;
				screen.gameObj.apiHelper.api.trackCustomMetric("ChangedControls", "Screens", true);
			} else {
				screen.clip.controls[(screen.settingWhichKey + "_btn")].gotoAndStop("alreadyused");
			};
			try {
				screen.gameObj.stage.removeEventListener(KeyboardEvent.KEY_DOWN, screen.controlsKeyListener);
			} catch(err) {
			};
			screen.settingWhichKey = "none";
		}
		public function rolloverControlsButton(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			if (_local2.settingWhichKey == "none"){
				_arg1.currentTarget.gotoAndStop("rollover");
			};
		}
		public function rolloutControlsButton(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			if (_local2.settingWhichKey == "none"){
				_arg1.currentTarget.gotoAndStop("click");
			};
		}
		public function setupUpgrades(_arg1:Boolean=true){
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:DataManager = _local2.gameObj.dataManager;
			if (_arg1){
				_local2.clip.upgrades.punching_btn.addEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.swinging_btn.addEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.shooting_btn.addEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.throwing_btn.addEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.whipping_btn.addEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.punching_btn.tabEnabled = false;
				_local2.clip.upgrades.swinging_btn.tabEnabled = false;
				_local2.clip.upgrades.shooting_btn.tabEnabled = false;
				_local2.clip.upgrades.throwing_btn.tabEnabled = false;
				_local2.clip.upgrades.whipping_btn.tabEnabled = false;
				_local2.previousMoney = _local3.getTotalMoney();
				_local2.clip.upgrades.money_txt.text = ("$" + StringUtility.addCommasToNumber(previousMoney));
				_local2.setupUpgradeStrip("punching");
				_local2.setupUpgradeStrip("swinging");
				_local2.setupUpgradeStrip("shooting");
				_local2.setupUpgradeStrip("throwing");
				_local2.setupUpgradeStrip("whipping");
				if (_local4.currentWorldData != null){
					_local2.clip.upgrades.noupgrade.visible = true;
				} else {
					_local2.clip.upgrades.noupgrade.visible = false;
				};
			} else {
				_local2.clip.upgrades.punching_btn.removeEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.swinging_btn.removeEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.shooting_btn.removeEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.throwing_btn.removeEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				_local2.clip.upgrades.whipping_btn.removeEventListener(MouseEvent.CLICK, _local2.clickBuyUpgrade);
				if (_local2.clip.upgrades.hasEventListener(Event.ENTER_FRAME)){
					_local2.clip.upgrades.removeEventListener(Event.ENTER_FRAME, _local2.animateUpgradeMoneyDeduction);
				};
			};
		}
		public function setupUpgradeStrip(_arg1:String){
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:DataManager = _local2.gameObj.dataManager;
			_local2.clip.upgrades[(_arg1 + "_level")].text = _local3.getUpgradeLevel(_arg1);
			var _local5:Number = _local4.getUpgradeCost(_arg1, (_local3.getUpgradeLevel(_arg1) + 1));
			if (_local5 > 0){
				_local2.clip.upgrades[(_arg1 + "_price")].text = ("$" + StringUtility.addCommasToNumber(_local5));
				_local2.clip.upgrades[(_arg1 + "_max")].visible = false;
				if (_local5 > _local3.getTotalMoney()){
					_local2.clip.upgrades[(_arg1 + "_btn")].visible = false;
				} else {
					_local2.clip.upgrades[(_arg1 + "_btn")].visible = true;
				};
			} else {
				_local2.clip.upgrades[(_arg1 + "_price")].text = "";
				_local2.clip.upgrades[(_arg1 + "_btn")].visible = false;
				_local2.clip.upgrades[(_arg1 + "_max")].visible = true;
			};
		}
		public function clickBuyUpgrade(_arg1:MouseEvent){
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:String = String(_arg1.currentTarget.name).split("_")[0];
			if (_local3.upgradeStat(_local4, true) == true){
				_local2.setupUpgradeStrip("punching");
				_local2.setupUpgradeStrip("swinging");
				_local2.setupUpgradeStrip("shooting");
				_local2.setupUpgradeStrip("throwing");
				_local2.setupUpgradeStrip("whipping");
				_local2.clip.upgrades[(_local4 + "_burst")].gotoAndPlay("anim");
				_local2.deductMoneyTimer = 0;
				if (!_local2.clip.upgrades.hasEventListener(Event.ENTER_FRAME)){
					_local2.clip.upgrades.addEventListener(Event.ENTER_FRAME, _local2.animateUpgradeMoneyDeduction);
				};
			};
		}
		public function animateUpgradeMoneyDeduction(_arg1:Event){
			var _local4:Number;
			var _local2:MainMenuScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			_local2.deductMoneyTimer++;
			if (_local2.deductMoneyTimer >= _local2.deductMoneyTimerMax){
				_local2.previousMoney = _local3.getTotalMoney();
				_local2.clip.upgrades.money_txt.text = ("$" + StringUtility.addCommasToNumber(_local2.previousMoney));
				_local2.deductMoneyTimer = 0;
				_local2.clip.upgrades.removeEventListener(Event.ENTER_FRAME, _local2.animateUpgradeMoneyDeduction);
			} else {
				_local4 = (_local2.previousMoney - _local3.getTotalMoney());
				_local2.clip.upgrades.money_txt.text = ("$" + StringUtility.addCommasToNumber(Math.round((_local2.previousMoney - (_local4 * (_local2.deductMoneyTimer / _local2.deductMoneyTimerMax))))));
			};
		}
		public function destroy(){
			var _local1:MainMenuScreen = this;
			_local1.container.removeEventListener("clickMap", _local1.clickMap);
			_local1.container.removeEventListener("clickUpgrades", _local1.clickUpgrades);
			_local1.container.removeEventListener("clickMedals", _local1.clickMedals);
			_local1.container.removeEventListener("clickControls", _local1.clickControls);
			_local1.container.removeEventListener("clickCredits", _local1.clickCredits);
			_local1.container.removeEventListener("clickHelp", _local1.clickHelp);
			_local1.container.removeEventListener("clickExit", _local1.clickExit);
			_local1.container.removeEventListener("clickArea", _local1.clickArea);
			_local1.container.removeEventListener("clickBackToGame", _local1.clickBackToGame);
			_local1.container.removeEventListener("clickQuit", _local1.clickQuit);
			_local1.container.removeEventListener("clickContinueToMap", _local1.clickContinueToMap);
			_local1.container.removeEventListener("clickExitUpgrade", _local1.clickExitUpgrade);
			_local1.container.removeEventListener("clickStartLevel", _local1.clickStartLevel);
			_local1.container.removeEventListener("clickBackToMap", _local1.clickBackToMap);
			_local1.container.removeEventListener("clickExitMapSelect", _local1.clickExitMapSelect);
			_local1.setupMap(false);
			_local1.setupArea(false);
			_local1.setupControls(false);
			_local1.setupUpgrades(false);
			_local1.setupMedals(false);
			_local1.setupCredits(false);
			_local1.setupHelp(false);
			_local1.setupConfirmQuit(false);
			_local1.container.removeChild(_local1.clip);
			_local1.clip = null;
		}
		public function clickMap(_arg1:Event){
			this.setSection("map");
		}
		public function clickMedals(_arg1:Event){
			this.setSection("medals");
		}
		public function clickUpgrades(_arg1:Event){
			this.setSection("upgrades");
		}
		public function clickControls(_arg1:Event){
			this.setSection("controls");
		}
		public function clickCredits(_arg1:Event){
			this.setSection("credits");
		}
		public function clickHelp(_arg1:Event){
			this.setupHelpLabels();
			this.setSection("help");
			this.gameObj.apiHelper.api.trackCustomMetric("ClickHelp", "Screens", true);
		}
		public function clickArea(_arg1:Event){
			this.setSection("area");
		}
		public function clickBackToGame(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.startClosingScreen();
		}
		public function clickContinueToMap(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.isContinuingToMap = true;
			_local2.startClosingScreen();
		}
		public function clickQuit(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.clip.confirmquit.visible = true;
			_local2.gameObj.apiHelper.api.disableButtons();
		}
		public function clickConfirmQuit(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.isQuittingLevel = true;
			_local2.clip.confirmquit.visible = false;
			_local2.startClosingScreen();
		}
		public function clickCancelQuit(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.clip.confirmquit.visible = false;
			_local2.gameObj.apiHelper.api.enableButtons();
		}
		public function clickExit(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.gameObj.apiHelper.api.showScreen("SplashScreen");
			_local2.gameObj.apiHelper.api.removeScreen("MainMenu");
		}
		public function clickExitUpgrade(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.gameObj.apiHelper.api.showScreen("SplashScreen");
			_local2.gameObj.apiHelper.api.removeScreen("UpgradeMenu");
		}
		public function clickExitMapSelect(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.gameObj.apiHelper.api.showScreen("SplashScreen");
			_local2.gameObj.apiHelper.api.removeScreen("MapSelectMenu");
		}
		public function clickBackToMap(_arg1:Event){
			var _local2:MainMenuScreen = this;
			_local2.isReturningToMap = true;
			_local2.gameObj.apiHelper.api.showScreen("MainMenu", {section:"map"});
			_local2.gameObj.apiHelper.api.removeScreen("MapSelectMenu");
		}
		public function setSection(_arg1:String){
			var _local2:MainMenuScreen = this;
			if (_arg1 != _local2.currentSection){
				_local2.newSection = _arg1;
				_local2.clip.map.visible = false;
				_local2.clip.area.visible = false;
				_local2.clip.upgrades.visible = false;
				_local2.clip.controls.visible = false;
				_local2.clip.medals.visible = false;
				_local2.clip.credits.visible = false;
				_local2.clip.help.visible = false;
				if (_local2.currentSection != ""){
					_local2.clip[_local2.currentSection].visible = true;
					_local2.clip[_local2.currentSection].y = 0;
				};
				if (_local2.newSection != "none"){
					_local2.clip[_local2.newSection].visible = true;
					_local2.clip[_local2.newSection].y = 480;
				};
				if (_local2.currentSection == "controls"){
					_local2.cancelSettingControls();
				};
				_local2.gameObj.apiHelper.api.disableButtons();
				_local2.isTransitioning = true;
				_local2.clip.addEventListener(Event.ENTER_FRAME, _local2.tweenSections);
			};
		}
		public function tweenSections(_arg1:Event){
			var _local4:Number;
			var _local2:MainMenuScreen = this;
			var _local3:Number = 999;
			if (_local2.currentSection != ""){
				_local3 = (-480 - _local2.clip[_local2.currentSection].y);
				_local2.clip[_local2.currentSection].y = (_local2.clip[_local2.currentSection].y + (_local3 / _local2.tweenSpeed));
			};
			if (_local2.newSection != "none"){
				_local4 = (0 - _local2.clip[_local2.newSection].y);
				_local2.clip[_local2.newSection].y = (_local2.clip[_local2.newSection].y + (_local4 / _local2.tweenSpeed));
				if (Math.abs(_local4) <= 1){
					_local2.clip[_local2.newSection].y = 0;
					if (_local2.currentSection != ""){
						_local2.clip[_local2.currentSection].visible = false;
					};
					_local2.currentSection = _local2.newSection;
					_local2.newSection = "";
					_local2.isTransitioning = false;
					_local2.clip.removeEventListener(Event.ENTER_FRAME, _local2.tweenSections);
					_local2.gameObj.apiHelper.api.setScreenTitle(_local2.getSectionTitle());
					_local2.gameObj.apiHelper.api.enableButtons();
				};
			} else {
				if (Math.abs(_local3) <= 1){
					_local2.isTransitioning = false;
					_local2.clip.removeEventListener(Event.ENTER_FRAME, _local2.tweenSections);
					if (_local2.isClosing){
						_local2.closeMainMenuScreen();
					};
				};
			};
		}
		public function startClosingScreen(){
			var _local1:MainMenuScreen = this;
			_local1.isClosing = true;
			_local1.gameObj.apiHelper.api.transitionScreenOut();
			_local1.setSection("none");
		}
		public function closeMainMenuScreen(_arg1:MouseEvent=null){
			var e = _arg1;
			var screen:MainMenuScreen = this;
			if (screen.isStartingLevel){
				if (screen.gameObj.userData.getLevelHighScore(screen.whichLevel) == 0){
					screen.gameObj.apiHelper.api.trackLevelMetric("StartedLevel", (screen.whichLevel + 1));
				} else {
					screen.gameObj.apiHelper.api.trackLevelMetric("RepeatLevel", (screen.whichLevel + 1));
				};
				screen.gameObj.selectedLevel = screen.whichLevel;
				screen.gameObj.setupGame();
				screen.gameObj.apiHelper.api.removeScreen("MapSelectMenu");
			} else {
				if (screen.isOpeningMapDetail){
					screen.gameObj.apiHelper.api.showScreen("MapSelectMenu", {section:"area", useLevel:screen.whichLevel});
					screen.gameObj.apiHelper.api.removeScreen("MainMenu");
				} else {
					if (screen.isQuittingLevel){
						if (screen.gameObj.soundManager.isMute == false){
							screen.gameObj.soundManager.unmuteSound(false);
						};
						screen.gameObj.apiHelper.api.trackLevelMetric("QuitLevel", (screen.gameObj.dataManager.currentLevel + 1));
						screen.gameObj.apiHelper.api.trackingForceSend();
						screen.gameObj.userData.saveProgress("quitlevel");
						screen.gameObj.removeGame();
						screen.gameObj.apiHelper.api.showScreen("MainMenu", {section:"map"});
						screen.gameObj.apiHelper.api.removeScreen("PauseMenu");
					} else {
						if (screen.isReturningToMap){
							screen.gameObj.apiHelper.api.showScreen("MainMenu", {section:"map"});
							screen.gameObj.apiHelper.api.removeScreen("MapSelectMenu");
						} else {
							if (screen.isContinuingToMap){
								screen.gameObj.apiHelper.api.showScreen("MainMenu", {section:"map"});
								screen.gameObj.apiHelper.api.removeScreen("UpgradeMenu");
							} else {
								try {
									screen.gameObj.gameControls.resumeGame(screen.keysWereChanged);
								} catch(err) {
								};
								screen.gameObj.apiHelper.api.removeScreen("PauseMenu");
							};
						};
					};
				};
			};
		}
		public function getSectionTitle():String{
			var _local1:MainMenuScreen = this;
			if (_local1.currentSection == "map"){
				return ("MAP");
			};
			if (_local1.currentSection == "controls"){
				return ("CONTROLS");
			};
			if (_local1.currentSection == "upgrades"){
				return ("UPGRADES");
			};
			if (_local1.currentSection == "credits"){
				return ("CREDITS");
			};
			if (_local1.currentSection == "medals"){
				return ("BADGES");
			};
			if (_local1.currentSection == "help"){
				return ("HELP");
			};
			if (_local1.currentSection == "area"){
				return ("AREA INFO");
			};
			return (_local1.currentSection.toUpperCase());
		}

	}
}//package cactusGame.screens 

****************

//ScoreTallyScreen (cactusGame.screens.ScoreTallyScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flipline.api.utils.*;

	public class ScoreTallyScreen {

		public var gameObj:GameModule;
		public var irisClip:MovieClip;
		public var clip:MovieClip;
		public var container:MovieClip;
		public var speed:Number;// = 32
		public var screenHeight:Number;// = 480
		public var animatingIn:Boolean;// = false
		public var animatingOut:Boolean;// = false
		public var delayBetweenReveals:Number;// = 15
		public var delayTimer:Number;// = -20
		public var revealingWhich:String;// = "treasure"
		public var fromGameOver:Boolean;// = false
		public var endAction:String;// = "none"
		public var didSubmitScore:Boolean;// = false
		public var isNewHighScore:Boolean;// = false
		public var tally_treasure:Number;// = 0
		public var tally_challenge:Number;// = 0
		public var tally_life:Number;// = 0
		public var tally_lives_lost:Number;// = 0
		public var tally_time:Number;// = 0
		public var tally_money:Number;// = 0
		public var tally_points:Number;// = 0
		public var tally_area:Number;// = 0
		public var tally_high:Number;// = 0
		public var tally_high_previous:Number;// = 0
		public var tally_total:Number;// = 0
		public var tally_total_previous:Number;// = 0
		public var tally_totalmoney:Number;// = 0
		public var tally_totalmoney_previous:Number;// = 0
		public var whichTallyIndex:Number;// = 0
		public var tallyLabels:Array;

		public function ScoreTallyScreen(_arg1:GameModule, _arg2:MovieClip, _arg3:Object=null){
			tallyLabels = ["treasure", "challenge", "time", "life", "money", "points", "area", "anim", "high", "total", "done"];
			super();
			var _local4:ScoreTallyScreen = this;
			_local4.gameObj = _arg1;
			_local4.container = _arg2;
			_local4.fromGameOver = false;
			_local4.setupScreen();
		}
		public function setupScreen(){
			var _local4:Number;
			var _local7:String;
			var _local1:ScoreTallyScreen = this;
			var _local2:UserData = _local1.gameObj.userData;
			var _local3:Number = _local1.gameObj.dataManager.currentLevel;
			_local1.clip = new scoreTallyMC();
			_local1.container.addChild(_local1.clip);
			_local1.clip.visible = false;
			_local1.clip.leaderboard_cover.visible = false;
			_local1.irisClip = new irisTransitionMC();
			_local1.container.addChild(_local1.irisClip);
			_local1.clip.area_txt.text = (("Area " + (_local3 + 1)) + ":");
			_local1.clip.title_txt.text = _local1.gameObj.dataManager.getWorldTitle(_local3);
			_local1.clip.time_txt.text = StringUtility.convertFramesToTimecode(_local1.gameObj.gameControls.gameplayTimer);
			var _local5:Number = 0;
			var _local6:Number = 0;
			_local4 = 1;
			while (_local4 <= 5) {
				if (_local2.hasTreasure(_local3, _local4)){
					_local1.clip[("chest" + _local4)].visible = true;
					_local5++;
				} else {
					_local1.clip[("chest" + _local4)].visible = false;
				};
				if (_local2.hasCompletedChallenge(_local3, _local4)){
					_local1.clip[("star" + _local4)].visible = true;
					_local6++;
				} else {
					_local1.clip[("star" + _local4)].visible = false;
				};
				_local7 = ((("<b><font color=\"#000000\">" + _local1.gameObj.challengeManager.getChallengeTitle(_local3, _local4)) + "</font><br>") + _local1.gameObj.challengeManager.getChallengeDescription(_local3, _local4));
				if (!_local2.hasCompletedChallenge(_local3, _local4)){
					_local7 = (_local7 + (" " + _local1.gameObj.challengeManager.getChallengeTallyString(_local3, _local4)));
				};
				_local7 = (_local7 + "</b>");
				_local1.clip[(("challenge" + _local4) + "_txt")].htmlText = _local7;
				_local4++;
			};
			_local1.clip.treasure_txt.text = String((_local5 + " / 5"));
			_local1.clip.challenges_txt.text = String((_local6 + " / 5"));
			_local1.getScoreValues();
			_local1.gameObj.apiHelper.api.trackLevelMetric("MoneyEarned", (_local3 + 1), "average", _local1.tally_money);
			_local1.gameObj.apiHelper.api.trackLevelMetric("TreasuresFound", (_local3 + 1), "average", _local5);
			_local1.gameObj.apiHelper.api.trackLevelMetric("ChallengesComplete", (_local3 + 1), "average", _local6);
			_local1.gameObj.apiHelper.api.trackLevelMetric("LivesLost", (_local3 + 1), "average", _local1.tally_lives_lost);
			if (_local1.tally_high_previous == 0){
				_local1.gameObj.apiHelper.api.trackLevelMetric("InitialTime", (_local3 + 1), "average", (_local1.gameObj.gameControls.gameplayTimer / 30));
			};
			_local1.gameObj.apiHelper.api.trackingForceSend();
			_local1.clip.tallyclip.inside.mask = _local1.clip.tallyclip.masker;
			_local1.clip.tallyclip.masker.visible = false;
			_local1.clip.tallyclip.gotoAndStop(1);
			_local1.clip.tallyclip.inside.treasure_score.text = "";
			_local1.clip.tallyclip.inside.challenge_score.text = "";
			_local1.clip.tallyclip.inside.time_score.text = "";
			_local1.clip.tallyclip.inside.life_score.text = "";
			_local1.clip.tallyclip.inside.money_score.text = "";
			_local1.clip.tallyclip.inside.points_score.text = "";
			_local1.clip.tallyclip.inside.area_score.text = "";
			_local1.clip.tallyclip.inside.high_score.text = StringUtility.addCommasToNumber(_local1.tally_high_previous);
			_local1.clip.tallyclip.inside.total_score.text = StringUtility.addCommasToNumber(_local1.tally_total_previous);
			_local1.clip.tallyclip.inside.newhighscore.visible = false;
			_local1.clip.totalmoney_txt.text = ("$" + StringUtility.addCommasToNumber(_local1.tally_totalmoney_previous));
			_local1.container.addEventListener("clickContinue", _local1.clickContinue);
			_local1.container.addEventListener("clickSubmitScore", _local1.clickSubmit);
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.animatingIn = true;
			_local1.irisClip.gotoAndPlay("irisout");
		}
		public function getScoreValues(){
			var _local1:ScoreTallyScreen = this;
			var _local2:UserData = _local1.gameObj.userData;
			_local1.tally_treasure = _local2.getTreasureBonus();
			_local1.tally_challenge = _local2.getChallengeBonus();
			_local1.tally_time = _local2.getTimeBonus();
			_local1.tally_life = _local2.getLivesBonus();
			_local1.tally_money = _local2.getCurrentMoney();
			_local1.tally_points = _local2.getCurrentPoints();
			_local1.tally_high_previous = _local2.getLevelHighScore();
			_local1.tally_total_previous = _local2.getTotalScore();
			_local1.tally_totalmoney_previous = _local2.getTotalMoney();
			_local1.tally_lives_lost = _local2.getLivesLostTally();
			_local2.unlockNextLevel();
			_local2.setLevelTime(_local1.gameObj.gameControls.gameplayTimer);
			_local1.tally_area = _local2.updateAndGetLevelScore();
			_local1.tally_high = _local2.getLevelHighScore();
			_local1.tally_total = _local2.getTotalScore();
			_local1.tally_totalmoney = _local2.getTotalMoney();
			if (_local1.tally_area > _local1.tally_high_previous){
				_local1.isNewHighScore = true;
			} else {
				_local1.isNewHighScore = false;
			};
		}
		public function nextTally(){
			var _local1:ScoreTallyScreen = this;
			_local1.delayTimer = (0 - _local1.delayBetweenReveals);
			_local1.whichTallyIndex++;
			if (_local1.tallyLabels.length > _local1.whichTallyIndex){
				_local1.revealingWhich = _local1.tallyLabels[_local1.whichTallyIndex];
				if ((((_local1.revealingWhich == "high")) && ((_local1.isNewHighScore == false)))){
					_local1.revealingWhich = "done";
				};
			} else {
				_local1.revealingWhich = "done";
			};
		}
		public function tallyScore(){
			var _local4:String;
			var _local1:ScoreTallyScreen = this;
			var _local2:UserData = _local1.gameObj.userData;
			var _local3:DataManager = _local1.gameObj.dataManager;
			if (checkAndIncrement()){
				_local1.clip.tallyclip.inside[(_local1.revealingWhich + "_score")].text = StringUtility.addCommasToNumber(_local1[("tally_" + _local1.revealingWhich)]);
				if (_local1.revealingWhich == "money"){
					_local1.clip.totalmoney_txt.text = ("$" + StringUtility.addCommasToNumber(_local1.tally_totalmoney));
				};
				_local1.nextTally();
			} else {
				if (_local1.delayTimer > 0){
					_local4 = "0";
					if (_local1.revealingWhich == "high"){
						_local4 = StringUtility.addCommasToNumber(Math.round((_local1.tally_high_previous + ((_local1.tally_high - _local1.tally_high_previous) * (_local1.delayTimer / _local1.delayBetweenReveals)))));
						if (_local1.isNewHighScore){
							_local1.clip.tallyclip.inside.newhighscore.visible = true;
						};
					} else {
						if (_local1.revealingWhich == "total"){
							_local4 = StringUtility.addCommasToNumber(Math.round((_local1.tally_total_previous + ((_local1.tally_total - _local1.tally_total_previous) * (_local1.delayTimer / _local1.delayBetweenReveals)))));
						} else {
							_local4 = StringUtility.addCommasToNumber(Math.round((_local1[("tally_" + _local1.revealingWhich)] * (_local1.delayTimer / _local1.delayBetweenReveals))));
							if (_local1.revealingWhich == "money"){
								_local1.clip.totalmoney_txt.text = ("$" + StringUtility.addCommasToNumber(Math.round((_local1.tally_totalmoney_previous + (_local1.tally_money * (_local1.delayTimer / _local1.delayBetweenReveals))))));
							};
						};
					};
					_local1.clip.tallyclip.inside[(_local1.revealingWhich + "_score")].text = _local4;
				};
			};
		}
		public function updateScreen(_arg1:Event){
			var _local2:ScoreTallyScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:DataManager = _local2.gameObj.dataManager;
			if (_local2.animatingIn){
				if (_local2.irisClip.currentLabel == "stopirisout"){
					_local2.clip.visible = true;
					_local2.animatingIn = false;
					_local2.gameObj.soundManager.playTrack("otherscreens.wav");
					_local2.irisClip.gotoAndPlay("irisin");
				};
			} else {
				if (_local2.animatingOut){
					if (_local2.irisClip.currentLabel == "stopirisout"){
						_local2.animatingOut = false;
						_local2.scoreTallyClosed();
					};
				} else {
					if (_local2.revealingWhich == "anim"){
						if (checkAndIncrement()){
							_local2.nextTally();
						} else {
							if (_local2.delayTimer == 1){
								_local2.clip.tallyclip.gotoAndPlay("anim");
							};
						};
					} else {
						if (_local2.revealingWhich == "done"){
							_local2.delayTimer = 0;
							_local2.revealingWhich = "none";
							_local2.gameObj.apiHelper.api.enableButtons();
						} else {
							if (_local2.revealingWhich == "none"){
							} else {
								_local2.tallyScore();
							};
						};
					};
				};
			};
		}
		public function checkAndIncrement():Boolean{
			var _local1:ScoreTallyScreen = this;
			_local1.delayTimer++;
			if (_local1.delayTimer == _local1.delayBetweenReveals){
				return (true);
			};
			return (false);
		}
		public function scoreTallyClosed(){
			var _local1:ScoreTallyScreen = this;
			if (_local1.endAction == "continue"){
				if (_local1.fromGameOver){
				} else {
					_local1.gameObj.removeGame();
					_local1.gameObj.apiHelper.api.showScreen("UpgradeMenu", {section:"upgrades"});
				};
			};
			_local1.gameObj.apiHelper.api.removeScreen("BeatLevel");
		}
		public function clickContinue(_arg1:Event=null){
			var _local2:ScoreTallyScreen = this;
			_local2.endAction = "continue";
			_local2.animatingOut = true;
			_local2.irisClip.gotoAndPlay("irisout");
			_local2.clip.leaderboard_cover.visible = false;
			_local2.gameObj.apiHelper.closeLeaderboard();
		}
		public function clickSubmit(_arg1:Event=null){
			var _local4:Object;
			var _local2:ScoreTallyScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			if (!_local2.didSubmitScore){
				_local2.clip.leaderboard_cover.visible = true;
				if (_local2.gameObj.apiHelper.api.onLicenseSite()){
					_local2.gameObj.apiHelper.setupScoreboardDetails(54, 16, _local2.leaderboardClosed, new highScoreLogo());
					_local2.gameObj.apiHelper.submitArmorScore(_local2.gameObj.userData.getTotalScore(), _local2.gameObj, _local2.gameObj.userData.playerName, "High Score", [{type:"High Score"}]);
				} else {
					_local4 = new Object();
					_local4.completion = _local3.getCompletionPercentage();
					_local4.badges = _local3.getTotalBadgesEarned();
					_local4.treasures = _local3.getTotalTreasuresEarned();
					_local4.challenges = _local3.getTotalChallengesCompleted();
					_local4.totalTime = StringUtility.convertFramesToTimecode(_local3.totalTimePlayed.value, false, true);
					_local2.gameObj.apiHelper.submitScore(_local2.gameObj.userData.getTotalScore(), _local2.gameObj.userData.playerName, _local2.leaderboardClosed, _local4);
				};
				_local2.didSubmitScore = true;
			};
		}
		public function leaderboardClosed(_arg1:Event=null){
			var _local2:ScoreTallyScreen = this;
			_local2.clip.leaderboard_cover.visible = false;
		}
		public function destroy(){
			var screen:ScoreTallyScreen = this;
			try {
				screen.clip.removeEventListener(Event.ENTER_FRAME, screen.updateScreen);
			} catch(err) {
			};
			screen.container.removeEventListener("clickContinue", screen.clickContinue);
			screen.container.removeEventListener("clickSubmitScore", screen.clickSubmit);
			screen.container.removeChild(screen.irisClip);
			screen.container.removeChild(screen.clip);
			screen.clip = null;
			screen.irisClip = null;
		}

	}
}//package cactusGame.screens 

****************

//SlotSelectScreen (cactusGame.screens.SlotSelectScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import cactusGame.data.*;
	import flash.text.*;
	import flipline.api.assets.*;
	import flipline.api.utils.*;
	import flash.ui.*;

	public class SlotSelectScreen {

		public var gameObj:GameModule;
		public var container:MovieClip;
		public var clip:MovieClip;
		public var selectedSlot:Number;// = 0
		public var isClosing:Boolean;// = false
		public var isNewSlot:Boolean;// = false
		public var currentMode:String;// = "slots"
		public var nameContinueButton:SmartButton;
		public var nameBackButton:SmartButton;

		public function SlotSelectScreen(_arg1:GameModule, _arg2:MovieClip, _arg3:Object=null){
			var _local4:SlotSelectScreen = this;
			_local4.gameObj = _arg1;
			_local4.container = _arg2;
			_local4.setupScreen();
		}
		public function setupScreen(){
			var _local4:MovieClip;
			var _local1:SlotSelectScreen = this;
			_local1.clip = new slotSelectMC();
			var _local2:* = 1;
			while (_local2 <= 3) {
				_local4 = _local1.clip.slots[(("slot" + _local2) + "MC")];
				_local4.new_btn.addEventListener(MouseEvent.CLICK, _local1.clickNewSlot);
				_local4.select_btn.addEventListener(MouseEvent.CLICK, _local1.clickExistingSlot);
				_local4.delete_btn.addEventListener(MouseEvent.CLICK, _local1.clickDeleteSlot);
				_local4.new_btn.tabEnabled = false;
				_local4.select_btn.tabEnabled = false;
				_local4.delete_btn.tabEnabled = false;
				_local2++;
			};
			_local1.nameBackButton = new SmartButton(null, "< BACK", "small", "button", "clickNameCancel", null, false, false, false, null, false, 112);
			_local1.nameBackButton.x = 0;
			_local1.nameBackButton.y = 75;
			_local1.nameContinueButton = new SmartButton(null, "CONTINUE >", "small", "button", "clickNameOK", null, false, false, false, null, false, 112);
			_local1.nameContinueButton.x = 181;
			_local1.nameContinueButton.y = 75;
			_local1.clip.entername.input_holder.addChild(_local1.nameBackButton);
			_local1.clip.entername.input_holder.addChild(_local1.nameContinueButton);
			_local1.nameContinueButton.addEventListener("clickNameOK", _local1.clickEnterNameOK);
			_local1.nameBackButton.addEventListener("clickNameCancel", _local1.clickEnterNameCancel);
			var _local3:TextFormat = new TextFormat();
			_local3.font = "Arial";
			_local3.size = 24;
			_local3.bold = true;
			_local3.align = TextFormatAlign.CENTER;
			_local1.clip.entername.input_holder.input_txt.setStyle("textFormat", _local3);
			_local1.clip.entername.input_holder.input_txt.maxChars = 16;
			_local1.clip.entername.input_holder.input_txt.restrict = "0-9A-Za-z '\\-";
			_local1.container.addEventListener("clickBack", _local1.clickBack);
			_local1.container.addChild(_local1.clip);
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.animateScreen);
			_local1.clip.entername.gotoAndStop(1);
			_local1.clip.slots.gotoAndStop(1);
			_local1.showSlots();
		}
		public function clickBack(_arg1:Event){
			var _local2:SlotSelectScreen = this;
			_local2.gameObj.apiHelper.api.showScreen("SplashScreen");
			_local2.gameObj.apiHelper.api.removeScreen("SlotSelect");
		}
		public function getSlotData(){
			var _local3:Object;
			var _local4:MovieClip;
			var _local1:SlotSelectScreen = this;
			var _local2:* = 1;
			while (_local2 <= 3) {
				_local3 = _local1.gameObj.userData.loadLabelsForSlot(_local2);
				_local4 = _local1.clip.slots[(("slot" + _local2) + "MC")];
				if (_local3){
					_local4.name_txt.text = String(_local3.name);
					_local4.textclip.score_txt.text = StringUtility.addCommasToNumber(Number(_local3.score));
					_local4.textclip.money_txt.text = ("$" + StringUtility.addCommasToNumber(Number(_local3.money)));
					_local4.textclip.time_txt.text = StringUtility.convertFramesToTimecode(Number(_local3.time), false, true);
					_local4.areaMC.visible = true;
					if (_local3.areasCompleted == 0){
						_local4.areaMC.gotoAndStop(1);
					} else {
						if (_local3.areasCompleted >= 11){
							_local4.areaMC.gotoAndStop(12);
						} else {
							_local4.areaMC.gotoAndStop((_local3.areasCompleted + 1));
						};
					};
					_local4.textclip.completion_txt.text = String(_local3.completion);
					_local4.select_btn.visible = true;
					_local4.new_btn.visible = false;
					_local4.delete_btn.visible = true;
					if (_local3.completion == "100%"){
						_local4.textclip.badge.visible = true;
					} else {
						_local4.textclip.badge.visible = false;
					};
				} else {
					_local4.name_txt.text = "Empty Slot";
					_local4.areaMC.visible = false;
					_local4.textclip.visible = false;
					_local4.new_btn.visible = true;
					_local4.select_btn.visible = false;
					_local4.delete_btn.visible = false;
				};
				_local2++;
			};
		}
		public function clickNewSlot(_arg1:MouseEvent){
			var _local2:SlotSelectScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:Number = 0;
			if (_arg1.currentTarget == _local2.clip.slots.slot1MC.new_btn){
				_local4 = 1;
			} else {
				if (_arg1.currentTarget == _local2.clip.slots.slot2MC.new_btn){
					_local4 = 2;
				} else {
					if (_arg1.currentTarget == _local2.clip.slots.slot3MC.new_btn){
						_local4 = 3;
					};
				};
			};
			_local2.selectedSlot = _local4;
			_local2.isNewSlot = true;
			_local2.showEnterName();
		}
		public function clickExistingSlot(_arg1:MouseEvent){
			var _local2:SlotSelectScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:Number = 0;
			if (_arg1.currentTarget == _local2.clip.slots.slot1MC.select_btn){
				_local4 = 1;
			} else {
				if (_arg1.currentTarget == _local2.clip.slots.slot2MC.select_btn){
					_local4 = 2;
				} else {
					if (_arg1.currentTarget == _local2.clip.slots.slot3MC.select_btn){
						_local4 = 3;
					};
				};
			};
			_local3.loadData(_local4);
			_local2.isNewSlot = false;
			_local2.clip.slots.gotoAndPlay("hide");
			_local2.startClosingScreen();
		}
		public function clickDeleteSlot(_arg1:MouseEvent){
			var _local2:SlotSelectScreen = this;
			var _local3:UserData = _local2.gameObj.userData;
			var _local4:Number = 0;
			if (_arg1.currentTarget == _local2.clip.slots.slot1MC.delete_btn){
				_local4 = 1;
			} else {
				if (_arg1.currentTarget == _local2.clip.slots.slot2MC.delete_btn){
					_local4 = 2;
				} else {
					if (_arg1.currentTarget == _local2.clip.slots.slot3MC.delete_btn){
						_local4 = 3;
					};
				};
			};
			_local3.eraseSlot(_local4);
			_local2.showSlots();
		}
		public function clickEnterNameOK(_arg1:Event=null){
			var _local2:SlotSelectScreen = this;
			var _local3:String = _local2.clip.entername.input_holder.input_txt.text;
			if ((((((_local3 == "")) || ((_local3 == " ")))) || ((_local3 == "  ")))){
				_local3 = "Cactus McCoy";
			};
			_local2.gameObj.userData.createNewSlot(_local2.selectedSlot, _local3, "cactus");
			_local2.clip.entername.gotoAndPlay("hide");
			_local2.startClosingScreen();
		}
		public function clickEnterNameCancel(_arg1:Event=null){
			var _local2:SlotSelectScreen = this;
			_local2.showSlots();
		}
		public function showSlots(){
			var _local1:SlotSelectScreen = this;
			_local1.currentMode = "slots";
			_local1.getSlotData();
			if ((((_local1.clip.entername.currentFrame > 1)) && ((_local1.clip.entername.currentFrame < _local1.clip.entername.totalFrames)))){
				_local1.clip.entername.gotoAndPlay("hide");
			};
			_local1.clip.slots.gotoAndPlay("show");
		}
		public function showEnterName(){
			var _local1:SlotSelectScreen = this;
			_local1.currentMode = "entername";
			_local1.clip.entername.input_holder.input_txt.text = "";
			_local1.clip.entername.input_holder.input_txt.setFocus();
			if ((((_local1.clip.slots.currentFrame > 1)) && ((_local1.clip.slots.currentFrame < _local1.clip.slots.totalFrames)))){
				_local1.clip.slots.gotoAndPlay("hide");
			};
			_local1.clip.entername.gotoAndPlay("show");
		}
		public function animateScreen(_arg1:Event){
			var _local2:SlotSelectScreen = this;
			if (_local2.isClosing){
				if ((((_local2.currentMode == "entername")) && ((_local2.clip.entername.currentFrame == _local2.clip.entername.totalFrames)))){
					_local2.closeSlotSelectScreen();
				} else {
					if ((((_local2.currentMode == "slots")) && ((_local2.clip.slots.currentFrame == _local2.clip.slots.totalFrames)))){
						_local2.closeSlotSelectScreen();
					};
				};
			};
		}
		public function clickStart(_arg1:Event){
			var _local2:SlotSelectScreen = this;
			_local2.gameObj.useInternalLevels = false;
			_local2.clip.iris.gotoAndPlay("irisout");
			_local2.gameObj.apiHelper.api.transitionScreenOut("SlotSelectScreen");
		}
		public function destroy(){
			var _local1:SlotSelectScreen = this;
			if (_local1.clip.hasEventListener(Event.ENTER_FRAME)){
				_local1.clip.removeEventListener(Event.ENTER_FRAME, _local1.animateScreen);
			};
			_local1.container.removeEventListener("clickBack", _local1.clickBack);
			_local1.clip.entername.input_holder.removeChild(_local1.nameContinueButton);
			_local1.clip.entername.input_holder.removeChild(_local1.nameBackButton);
			_local1.nameContinueButton.removeEventListener("clickNameOK", _local1.clickEnterNameOK);
			_local1.nameBackButton.removeEventListener("clickNameCancel", _local1.clickEnterNameCancel);
			_local1.nameContinueButton.destroy();
			_local1.nameBackButton.destroy();
			_local1.nameContinueButton = null;
			_local1.nameBackButton = null;
			_local1.container.removeChild(_local1.clip);
			_local1.clip = null;
		}
		public function startClosingScreen(){
			var _local1:SlotSelectScreen = this;
			_local1.isClosing = true;
			_local1.gameObj.apiHelper.api.transitionScreenOut();
		}
		public function closeSlotSelectScreen(_arg1:MouseEvent=null){
			var _local2:SlotSelectScreen = this;
			_local2.clip.removeEventListener(Event.ENTER_FRAME, _local2.animateScreen);
			if (_local2.isNewSlot){
				_local2.gameObj.showGameIntroScreen();
			} else {
				_local2.gameObj.apiHelper.api.showScreen("MainMenu");
			};
			_local2.gameObj.apiHelper.api.removeScreen("SlotSelect");
		}

	}
}//package cactusGame.screens 

****************

//SplashScreen (cactusGame.screens.SplashScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import flash.ui.*;

	public class SplashScreen {

		public var gameObj:GameModule;
		public var container:MovieClip;
		public var clip:MovieClip;
		public var bgSpeed:Number;// = 1
		public var mgSpeed:Number;// = 2
		public var isShowingCredits:Boolean;// = false
		public var creditsDivisor:Number;// = 4

		public function SplashScreen(_arg1:GameModule, _arg2:MovieClip, _arg3:Object=null){
			var _local4:SplashScreen = this;
			_local4.gameObj = _arg1;
			_local4.container = _arg2;
			_local4.setupScreen();
		}
		public function setupScreen(){
			var _local1:SplashScreen = this;
			_local1.clip = new splashScreenMC();
			_local1.clip.iris.gotoAndStop(1);
			_local1.clip.mccoy.gotoAndPlay(1);
			_local1.container.addChild(_local1.clip);
			_local1.container.addEventListener("clickStart", _local1.clickStart);
			_local1.container.addEventListener("clickCredits", _local1.clickCredits);
			_local1.container.addEventListener("clickHighScores", _local1.clickHighScores);
			_local1.clip.fader.mouseEnabled = false;
			_local1.clip.credits.y = 480;
			_local1.clip.credits.addEventListener(MouseEvent.CLICK, _local1.hideCredits);
			_local1.gameObj.soundManager.endMusic();
			_local1.gameObj.soundManager.playTrack("otherscreens.wav");
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.animateScreen);
			_local1.clip.credits.jig_btn.addEventListener(MouseEvent.CLICK, _local1.clickJIGButton);
			_local1.clip.credits.jig_btn.mouseEnabled = true;
			_local1.clip.credits.jig_btn.useHandCursor = true;
			_local1.clip.credits.jig_btn.tabEnabled = false;
			if (_local1.gameObj.apiHelper.api.onLicenseSite()){
				_local1.clip.credits.jig_btn.visible = false;
			};
		}
		public function animateScreen(_arg1:Event){
			var _local2:SplashScreen = this;
			_local2.clip.bg.x = (_local2.clip.bg.x - _local2.bgSpeed);
			_local2.clip.mg.x = (_local2.clip.mg.x - _local2.mgSpeed);
			if (_local2.clip.bg.x < (0 - (_local2.clip.bg.width / 2))){
				_local2.clip.bg.x = (_local2.clip.bg.x + (_local2.clip.bg.width / 2));
			};
			if (_local2.clip.mg.x < (0 - (_local2.clip.mg.width / 2))){
				_local2.clip.mg.x = (_local2.clip.mg.x + (_local2.clip.mg.width / 2));
			};
			var _local3:Number = 999;
			if (((_local2.isShowingCredits) && ((_local2.clip.credits.y > 0)))){
				_local3 = _local2.clip.credits.y;
				_local2.clip.credits.y = (_local2.clip.credits.y - (_local3 / _local2.creditsDivisor));
			} else {
				if (((!(_local2.isShowingCredits)) && ((_local2.clip.credits.y < 480)))){
					_local3 = (480 - _local2.clip.credits.y);
					_local2.clip.credits.y = (_local2.clip.credits.y + (_local3 / _local2.creditsDivisor));
				};
			};
			if (_local2.clip.iris.currentFrame == _local2.clip.iris.totalFrames){
				_local2.closeSplashScreen();
			};
		}
		public function clickStart(_arg1:Event){
			var _local2:SplashScreen = this;
			_local2.gameObj.useInternalLevels = false;
			if (_local2.isShowingCredits){
				_local2.hideCredits();
			};
			_local2.gameObj.apiHelper.closeLeaderboard();
			_local2.gameObj.apiHelper.api.trackStartPlay();
			_local2.clip.iris.gotoAndPlay("irisout");
			_local2.clip.mccoy.gotoAndPlay("hide");
			_local2.gameObj.apiHelper.api.transitionScreenOut("SplashScreen");
		}
		public function clickHighScores(_arg1:Event){
			var _local2:SplashScreen = this;
			if (_local2.gameObj.apiHelper.api.onLicenseSite()){
				_local2.gameObj.apiHelper.setupScoreboardDetails(54, 16, _local2.closedHighScores, new highScoreLogo(), 1, _local2.errorHighScores);
				_local2.gameObj.apiHelper.showArmorScoreboard(_local2.gameObj, "High Score", [{type:"High Score"}]);
			} else {
				_local2.gameObj.apiHelper.showLeaderboard();
			};
		}
		public function closedHighScores(_arg1:Event=null){
			var _local2:SplashScreen = this;
		}
		public function errorHighScores(_arg1:Event=null){
			var _local2:SplashScreen = this;
		}
		public function clickCredits(_arg1:Event){
			var _local2:SplashScreen = this;
			_local2.gameObj.apiHelper.closeLeaderboard();
			_local2.isShowingCredits = !(_local2.isShowingCredits);
		}
		public function hideCredits(_arg1:MouseEvent=null){
			var _local2:SplashScreen = this;
			_local2.isShowingCredits = false;
		}
		public function clickJIGButton(_arg1:MouseEvent){
			var _local2:SplashScreen = this;
			_local2.gameObj.apiHelper.api.goToLink("http://www.jayisgames.com", "SplashJIGButton", "Links");
		}
		public function destroy(){
			var _local1:SplashScreen = this;
			_local1.container.removeEventListener("clickStart", _local1.clickStart);
			_local1.container.removeEventListener("clickCredits", _local1.clickCredits);
			_local1.container.removeEventListener("clickHighScores", _local1.clickHighScores);
			_local1.clip.credits.removeEventListener(MouseEvent.CLICK, _local1.hideCredits);
			_local1.clip.removeEventListener(Event.ENTER_FRAME, _local1.animateScreen);
			_local1.clip.credits.jig_btn.removeEventListener(MouseEvent.CLICK, _local1.clickJIGButton);
			_local1.container.removeChild(_local1.clip);
			_local1.clip = null;
		}
		public function closeSplashScreen(_arg1:MouseEvent=null){
			var _local2:SplashScreen = this;
			_local2.gameObj.apiHelper.api.showScreen("SlotSelect");
			_local2.gameObj.apiHelper.api.removeScreen("SplashScreen");
		}

	}
}//package cactusGame.screens 

****************

//SponsorLogoScreen (cactusGame.screens.SponsorLogoScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import Playtomic.*;

	public class SponsorLogoScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;

		public function SponsorLogoScreen(_arg1:GameModule){
			var _local2:SponsorLogoScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
			_local2.gameObj.apiHelper.api.trackCustomMetric("SponsorLogoScreen", "PreGame");
		}
		public function setupScreen(){
			var _local1:SponsorLogoScreen = this;
			_local1.clip = new sponsorLogoMC();
			_local1.gameObj.addChild(_local1.clip);
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.inside.btn.addEventListener(MouseEvent.CLICK, _local1.clickScreen);
		}
		public function updateScreen(_arg1:Event){
			var _local2:SponsorLogoScreen = this;
			if (_local2.clip.inside.currentFrame == _local2.clip.inside.totalFrames){
				_local2.gameObj.showFliplineLogoScreen();
				_local2.gameObj.removeSponsorLogoScreen();
			};
		}
		public function clickScreen(_arg1:MouseEvent){
			var _local2:SponsorLogoScreen = this;
			_local2.gameObj.apiHelper.api.goToLink(_local2.gameObj.apiHelper.sponsorLink, "SponsorPreroll", "LogoLinks");
		}
		public function destroy(){
			var _local1:SponsorLogoScreen = this;
			_local1.clip.removeEventListener(Event.ENTER_FRAME, _local1.updateScreen);
			_local1.clip.inside.btn.removeEventListener(MouseEvent.CLICK, _local1.clickScreen);
			_local1.gameObj.removeChild(_local1.clip);
			_local1.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//StageIntroScreen (cactusGame.screens.StageIntroScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;

	public class StageIntroScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var delayTimer:Number;// = 0
		public var startFadeTimer:Number;// = 20
		public var delayTimerMax:Number;// = 60

		public function StageIntroScreen(_arg1:GameModule){
			var _local2:StageIntroScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
		}
		public function setupScreen(){
			var _local1:StageIntroScreen = this;
			_local1.clip = new stageIntroMC();
			_local1.gameObj.gameStage.addChild(_local1.clip);
			_local1.gameObj.soundManager.endMusic();
			_local1.gameObj.soundManager.playSound("startlevel.wav");
			var _local2:Number = _local1.gameObj.dataManager.currentLevel;
			_local1.clip.number_txt.text = String((_local2 + 1));
			_local1.clip.title_txt.text = _local1.gameObj.dataManager.getWorldTitle(_local2);
			_local1.clip.areaMC.gotoAndStop((_local2 + 1));
			_local1.clip.addEventListener(Event.ENTER_FRAME, _local1.updateScreen);
		}
		public function updateScreen(_arg1:Event){
			var _local2:StageIntroScreen = this;
			_local2.delayTimer++;
			if (_local2.clip.currentFrame == _local2.clip.totalFrames){
				_local2.gameObj.startLevel();
				_local2.gameObj.removeStageIntroScreen();
			};
		}
		public function destroy(){
			var screen:StageIntroScreen = this;
			try {
				screen.clip.removeEventListener(Event.ENTER_FRAME, screen.updateScreen);
			} catch(err) {
			};
			screen.gameObj.gameStage.removeChild(screen.clip);
			screen.clip = null;
		}

	}
}//package cactusGame.screens 

****************

//StageSelectScreen (cactusGame.screens.StageSelectScreen)
package cactusGame.screens {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;

	public class StageSelectScreen {

		public var gameObj:GameModule;
		public var clip:MovieClip;
		public var useWhichSlot:Number;// = 0
		public var whichModeOpen:String;// = ""
		public var selectedLevel:Number;// = 0

		public function StageSelectScreen(_arg1:GameModule){
			var _local2:StageSelectScreen = this;
			_local2.gameObj = _arg1;
			_local2.setupScreen();
		}
		public function setupScreen(){
		}
		public function clickStage1(_arg1:MouseEvent){
		}
		public function clickStage2(_arg1:MouseEvent){
		}
		public function clickStage3(_arg1:MouseEvent){
		}
		public function destroy(){
		}
		public function closeStageSelectScreen(){
		}

	}
}//package cactusGame.screens 

****************

//APIHelper (cactusGame.utils.APIHelper)
package cactusGame.utils {
	import flash.display.*;
	import flash.events.*;
	import cactusGame.core.*;
	import flipline.api.*;
	import Playtomic.*;
	import flipline.api.data.*;
	import flash.net.*;
	import mochi.as3.*;
	import flash.system.*;

	public class APIHelper {

		public var gameObj:GameModule;
		public var api:FliplineAPI;
		private var leaderboardName:String;// = "mccoy_leaderboard"
		private var allowedSites:Array;
		private var blockAdsOnSites:Array;
		private var unlockBonusOnSites:Array;
		private var sponsorSite:Array;
		private var licenseSite:Array;
		private var devSandbox:Array;
		private var fliplineSites:Array;
		public var sponsorLink:String;// = "http://www.notdoppler.com"
		public var licenseLink:String;// = "http://www.armorgames.com"
		public var fliplineLink:String;// = "http://www.flipline.com"
		public var showAdsOnFlipline:Boolean;// = true
		public var agi;
		private var agi_url:String;// = "http://agi.armorgames.com/assets/agi/AGI.swf"
		private var devKey:String;// = "b9365840087d7a22e59e3ab63810af79"
		private var gameKey:String;// = "cactus-mccoy"
		private var apiLoader:Loader;

		public function APIHelper(_arg1:GameModule){
			allowedSites = ["flipline.com"];
			blockAdsOnSites = ["flipline.com"];
			unlockBonusOnSites = ["flipline.com"];
			sponsorSite = ["flipline.com"];
			licenseSite = ["armorgames.com", "fliplinestudios.com"];
			devSandbox = ["file:///L|/Games/Cactus%20McCoy/", "file:///L:/Games/Cactus McCoy/", "file:///D|/Cactus%20McCoy/", "file:///D:/Cactus McCoy/"];
			fliplineSites = ["flipline.com", "papalouie.com", "papalouie.net", "cactusmccoy.com"];
			super();
			this.gameObj = _arg1;
		}
		public function initArmorAPI(){
			var _local1:APIHelper = this;
			Security.allowDomain(_local1.agi_url);
			if (_local1.api.onLicenseSite()){
				_local1.apiLoader = new Loader();
				_local1.apiLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, _local1.armorAPILoaded);
				_local1.apiLoader.load(new URLRequest(_local1.agi_url));
			};
		}
		public function armorAPILoaded(_arg1:Event){
			var _local2:APIHelper = this;
			_local2.agi = _arg1.currentTarget.content;
			_local2.gameObj.addChild(_local2.agi);
			_local2.agi.init(_local2.devKey, _local2.gameKey);
		}
		public function submitArmorScore(_arg1, _arg2:MovieClip, _arg3:String=null, _arg4:String=null, _arg5:Array=null){
			var _local6:APIHelper = this;
			if (_local6.agi){
				_local6.agi.showScoreboardSubmit(_arg1, _arg3, _arg4, _arg5, _arg2);
			};
		}
		public function showArmorScoreboard(_arg1:MovieClip, _arg2:String, _arg3:Array=null){
			var _local4:APIHelper = this;
			if (_local4.agi){
				_local4.agi.showScoreboardList(_arg3, _arg2, _arg1);
			};
		}
		public function setupScoreboardDetails(_arg1:Number, _arg2:Number, _arg3, _arg4:DisplayObject=null, _arg5:Number=1, _arg6=null){
			var _local7:APIHelper = this;
			var _local8:Object = new Object();
			_local8.x = _arg1;
			_local8.y = _arg2;
			_local8.onClose = _arg3;
			_local8.scale = _arg5;
			if (_arg4 != null){
				_local8.iconGraphic = _arg4;
			};
			if (_arg6 != null){
				_local8.onError = _arg6;
			};
			if (_local7.agi){
				_local7.agi.initAGUI(_local8);
			};
		}
		public function initAPI(){
			var _local1:APIHelper = this;
			_local1.api = new FliplineAPI(_local1.gameObj, _local1.gameObj.gameStage, 608, 480);
			_local1.api.initPlaytomic(1521, "248017bc89dd405a");
			_local1.api.initSiteLocking(_local1.allowedSites, _local1.blockAdsOnSites, _local1.unlockBonusOnSites, _local1.sponsorSite, _local1.licenseSite, _local1.devSandbox, _local1.fliplineSites);
			var _local2:MenuScreenData = _local1.api.defineScreen("SplashScreen", "cactusGame.screens.SplashScreen", false, "", true, "bottom right", true);
			_local2.setupNormalButton("HIGH SCORES", "clickHighScores");
			_local2.setupNormalButton("CREDITS", "clickCredits");
			if (_local1.api.onLicenseSite()){
				_local2.setupLinkButton("MORE GAMES", _local1.licenseLink);
			} else {
				_local2.setupLinkButton("MORE GAMES", _local1.sponsorLink);
			};
			_local2.setupLargeButton("Start Game!", "clickStart", true);
			_local2.setupFliplineLogo(true, "top left", _local1.fliplineLink, true, "large");
			if (!_local1.api.onLicenseSite()){
				_local2.setupGetThisGame(true, "http://www.flipline.com/cactusmccoy_licenseredirect.html");
			};
			_local2.setupCopyrightMessage(true, "Game and Characters © 2011 Flipline Studios. All Rights Reserved.");
			if (_local1.api.onLicenseSite()){
				_local2.setupLicenseLogo(true, "top right", _local1.licenseLink, "large");
			} else {
				_local2.setupSponsorLogo(true, "top right", _local1.sponsorLink, true, "large");
			};
			var _local3:MenuScreenData = _local1.api.defineScreen("SlotSelect", "cactusGame.screens.SlotSelectScreen", true, "CHOOSE A SLOT", true, "top right");
			_local3.setupTopButton("BACK", "clickBack", true);
			_local3.setupFliplineLogo();
			if (_local1.api.onLicenseSite()){
				_local3.setupLicenseLogo(true, "bottom right", _local1.licenseLink, "small");
			} else {
				_local3.setupSponsorLogo(true, "bottom right", _local1.sponsorLink, false, "small");
			};
			var _local4:MenuScreenData = _local1.api.defineScreen("MainMenu", "cactusGame.screens.MainMenuScreen");
			_local4.setupNormalButton("MAP", "clickMap");
			_local4.setupNormalButton("UPGRADES", "clickUpgrades");
			_local4.setupNormalButton("BADGES", "clickMedals");
			_local4.setupNormalButton("CREDITS", "clickCredits");
			_local4.setupNormalButton("CONTROLS", "clickControls");
			_local4.setupNormalButton("HELP", "clickHelp");
			if (_local1.api.onLicenseSite()){
				_local4.setupLinkButton("MORE GAMES", _local1.licenseLink);
			} else {
				_local4.setupLinkButton("MORE GAMES", _local1.sponsorLink);
			};
			_local4.setupFliplineLogo();
			_local4.setupTopButton("EXIT", "clickExit", true);
			if (_local1.api.onLicenseSite()){
				_local4.setupLicenseLogo(true, "bottom right", _local1.licenseLink, "small");
			} else {
				_local4.setupSponsorLogo(true, "bottom right", _local1.sponsorLink, false, "small");
			};
			var _local5:MenuScreenData = _local1.api.defineScreen("PauseMenu", "cactusGame.screens.MainMenuScreen");
			_local5.setupNormalButton("AREA", "clickArea");
			_local5.setupNormalButton("UPGRADES", "clickUpgrades");
			_local5.setupNormalButton("BADGES", "clickMedals");
			_local5.setupNormalButton("CREDITS", "clickCredits");
			_local5.setupNormalButton("CONTROLS", "clickControls");
			_local5.setupNormalButton("HELP", "clickHelp");
			if (_local1.api.onLicenseSite()){
				_local5.setupLinkButton("MORE GAMES", _local1.licenseLink);
			} else {
				_local5.setupLinkButton("MORE GAMES", _local1.sponsorLink);
			};
			_local5.setupLargeButton("Back to Game", "clickBackToGame", false);
			_local5.setupTopButton("QUIT LEVEL", "clickQuit", true);
			_local5.setupFliplineLogo();
			if (_local1.api.onLicenseSite()){
				_local5.setupLicenseLogo(true, "bottom right", _local1.licenseLink, "small");
			} else {
				_local5.setupSponsorLogo(true, "bottom right", _local1.sponsorLink, false, "small");
			};
			var _local6:MenuScreenData = _local1.api.defineScreen("UpgradeMenu", "cactusGame.screens.MainMenuScreen");
			_local6.setupLargeButton("Continue", "clickContinueToMap", false);
			if (_local1.api.onLicenseSite()){
				_local6.setupLinkButton("MORE GAMES", _local1.licenseLink);
			} else {
				_local6.setupLinkButton("MORE GAMES", _local1.sponsorLink);
			};
			_local6.setupFliplineLogo();
			_local6.setupTopButton("EXIT", "clickExitUpgrade", true);
			if (_local1.api.onLicenseSite()){
				_local6.setupLicenseLogo(true, "bottom right", _local1.licenseLink, "small");
			} else {
				_local6.setupSponsorLogo(true, "bottom right", _local1.sponsorLink, false, "small");
			};
			var _local7:MenuScreenData = _local1.api.defineScreen("MapSelectMenu", "cactusGame.screens.MainMenuScreen");
			_local7.setupLargeButton("Start Level", "clickStartLevel", false);
			_local7.setupNormalButton("BACK TO MAP", "clickBackToMap", false);
			_local7.setupFliplineLogo();
			if (_local1.api.onLicenseSite()){
				_local7.setupLicenseLogo(true, "bottom right", _local1.licenseLink, "small");
			} else {
				_local7.setupSponsorLogo(true, "bottom right", _local1.sponsorLink, false, "small");
			};
			var _local8:MenuScreenData = _local1.api.defineScreen("BeatLevel", "cactusGame.screens.ScoreTallyScreen");
			_local8.setupNormalButton("SUBMIT SCORE", "clickSubmitScore", true);
			_local8.setupLargeButton("Continue", "clickContinue", false, true);
			_local8.setupFliplineLogo();
			if (_local1.api.onLicenseSite()){
				_local8.setupLicenseLogo(true, "bottom right", _local1.licenseLink, "small");
			} else {
				_local8.setupSponsorLogo(true, "bottom right", _local1.sponsorLink, false, "small");
			};
			_local1.initArmorAPI();
		}
		public function initMuteListeners(_arg1){
			var _local2:APIHelper = this;
			_local2.api.initMuteListeners(_arg1);
		}
		public function submitScore(_arg1:Number, _arg2:String="Anonymous", _arg3:Function=null, _arg4:Object=null){
			var _local5:APIHelper = this;
			_local5.api.showScoreboard(_local5.leaderboardName, _arg3, true, true, true, _arg2, _arg1, _arg4);
		}
		public function showLeaderboard(_arg1:Function=null){
			var _local2:APIHelper = this;
			_local2.api.showScoreboard(_local2.leaderboardName, _arg1);
		}
		public function closeLeaderboard(){
			var _local1:APIHelper = this;
			if (_local1.api.onLicenseSite()){
				_local1.agi.closeAGUI();
			} else {
				_local1.api.removeScoreboard();
			};
		}
		private function getMainLoaderInfo():LoaderInfo{
			var _local1:LoaderInfo = this.gameObj.root.loaderInfo;
			if (_local1.loader != null){
				_local1 = _local1.loader.loaderInfo;
			};
			return (_local1);
		}

	}
}//package cactusGame.utils 

****************

//ag_intro_mc_235 (cactusmccoy_armorgames_fla.ag_intro_mc_235)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class ag_intro_mc_235 extends MovieClip {

		public var btn:SimpleButton;

		public function ag_intro_mc_235(){
			addFrameScript(217, frame218);
		}
		function frame218(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//ending_page1_230 (cactusmccoy_armorgames_fla.ending_page1_230)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class ending_page1_230 extends MovieClip {

		public function ending_page1_230(){
			addFrameScript(31, frame32, 46, frame47);
		}
		function frame32(){
			stop();
		}
		function frame47(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//ending_page2_231 (cactusmccoy_armorgames_fla.ending_page2_231)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class ending_page2_231 extends MovieClip {

		public function ending_page2_231(){
			addFrameScript(76, frame77, 112, frame113);
		}
		function frame77(){
			stop();
		}
		function frame113(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//ending_page3_232 (cactusmccoy_armorgames_fla.ending_page3_232)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class ending_page3_232 extends MovieClip {

		public function ending_page3_232(){
			addFrameScript(61, frame62, 90, frame91);
		}
		function frame62(){
			stop();
		}
		function frame91(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//ending_page4_233 (cactusmccoy_armorgames_fla.ending_page4_233)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class ending_page4_233 extends MovieClip {

		public function ending_page4_233(){
			addFrameScript(31, frame32, 46, frame47);
		}
		function frame32(){
			stop();
		}
		function frame47(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//hud_challengetallyclip_170 (cactusmccoy_armorgames_fla.hud_challengetallyclip_170)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class hud_challengetallyclip_170 extends MovieClip {

		public var inside:MovieClip;

		public function hud_challengetallyclip_170(){
			addFrameScript(47, frame48);
		}
		function frame48(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//hud_combo_meter_161 (cactusmccoy_armorgames_fla.hud_combo_meter_161)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class hud_combo_meter_161 extends MovieClip {

		public var textclip:MovieClip;

		public function hud_combo_meter_161(){
			addFrameScript(8, frame9, 93, frame94);
		}
		function frame9(){
			gotoAndPlay(5);
		}
		function frame94(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//hud_weapon_icon_158 (cactusmccoy_armorgames_fla.hud_weapon_icon_158)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class hud_weapon_icon_158 extends MovieClip {

		public function hud_weapon_icon_158(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page1_216 (cactusmccoy_armorgames_fla.intro_page1_216)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page1_216 extends MovieClip {

		public function intro_page1_216(){
			addFrameScript(91, frame92, 127, frame128);
		}
		function frame92(){
			stop();
		}
		function frame128(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page2_223 (cactusmccoy_armorgames_fla.intro_page2_223)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page2_223 extends MovieClip {

		public function intro_page2_223(){
			addFrameScript(111, frame112, 152, frame153);
		}
		function frame112(){
			stop();
		}
		function frame153(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page3_224 (cactusmccoy_armorgames_fla.intro_page3_224)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page3_224 extends MovieClip {

		public function intro_page3_224(){
			addFrameScript(91, frame92, 127, frame128);
		}
		function frame92(){
			stop();
		}
		function frame128(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page4_225 (cactusmccoy_armorgames_fla.intro_page4_225)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page4_225 extends MovieClip {

		public function intro_page4_225(){
			addFrameScript(51, frame52, 73, frame74);
		}
		function frame52(){
			stop();
		}
		function frame74(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page5_226 (cactusmccoy_armorgames_fla.intro_page5_226)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page5_226 extends MovieClip {

		public function intro_page5_226(){
			addFrameScript(91, frame92, 129, frame130);
		}
		function frame92(){
			stop();
		}
		function frame130(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page6_227 (cactusmccoy_armorgames_fla.intro_page6_227)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page6_227 extends MovieClip {

		public function intro_page6_227(){
			addFrameScript(91, frame92, 129, frame130);
		}
		function frame92(){
			stop();
		}
		function frame130(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//intro_page7_228 (cactusmccoy_armorgames_fla.intro_page7_228)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class intro_page7_228 extends MovieClip {

		public function intro_page7_228(){
			addFrameScript(111, frame112, 156, frame157);
		}
		function frame112(){
			stop();
		}
		function frame157(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//introFlash_37 (cactusmccoy_armorgames_fla.introFlash_37)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class introFlash_37 extends MovieClip {

		public function introFlash_37(){
			addFrameScript(5, frame6);
		}
		function frame6(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//license_logo_ingame_160 (cactusmccoy_armorgames_fla.license_logo_ingame_160)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class license_logo_ingame_160 extends MovieClip {

		public function license_logo_ingame_160(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//medals_panel_84 (cactusmccoy_armorgames_fla.medals_panel_84)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class medals_panel_84 extends MovieClip {

		public var panel1:MovieClip;
		public var panel2:MovieClip;
		public var panel3:MovieClip;
		public var panel4:MovieClip;
		public var panel10:MovieClip;
		public var panel5:MovieClip;
		public var panel6:MovieClip;
		public var panel7:MovieClip;
		public var panel8:MovieClip;
		public var panel9:MovieClip;

		public function medals_panel_84(){
			addFrameScript(9, frame10, 19, frame20, 29, frame30, 39, frame40);
		}
		function frame10(){
			stop();
		}
		function frame20(){
			stop();
		}
		function frame30(){
			stop();
		}
		function frame40(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//notDoppler_intro_35 (cactusmccoy_armorgames_fla.notDoppler_intro_35)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class notDoppler_intro_35 extends MovieClip {

		public var btn:SimpleButton;

		public function notDoppler_intro_35(){
			addFrameScript(185, frame186);
		}
		function frame186(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//PRELOADER_1 (cactusmccoy_armorgames_fla.PRELOADER_1)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class PRELOADER_1 extends MovieClip {

		public function PRELOADER_1(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//progress_fade_132 (cactusmccoy_armorgames_fla.progress_fade_132)
package cactusmccoy_armorgames_fla {
	import flash.display.*;
	import flash.text.*;

	public dynamic class progress_fade_132 extends MovieClip {

		public var percent_txt:TextField;

		public function progress_fade_132(){
			addFrameScript(13, frame14);
		}
		function frame14(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//saveSlotAnimMC_119 (cactusmccoy_armorgames_fla.saveSlotAnimMC_119)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class saveSlotAnimMC_119 extends MovieClip {

		public var slot1MC:MovieClip;
		public var slot2MC:MovieClip;
		public var slot3MC:MovieClip;

		public function saveSlotAnimMC_119(){
			addFrameScript(0, frame1, 1, frame2, 13, frame14, 25, frame26);
		}
		function frame1(){
			stop();
		}
		function frame2(){
			stop();
		}
		function frame14(){
			stop();
		}
		function frame26(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//scoretally_tallyclip_holder_138 (cactusmccoy_armorgames_fla.scoretally_tallyclip_holder_138)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class scoretally_tallyclip_holder_138 extends MovieClip {

		public var masker:MovieClip;
		public var inside:MovieClip;

		public function scoretally_tallyclip_holder_138(){
			addFrameScript(0, frame1, 14, frame15);
		}
		function frame1(){
			stop();
		}
		function frame15(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//splash_enternameMC_127 (cactusmccoy_armorgames_fla.splash_enternameMC_127)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class splash_enternameMC_127 extends MovieClip {

		public var input_holder:MovieClip;

		public function splash_enternameMC_127(){
			addFrameScript(0, frame1, 9, frame10, 19, frame20);
		}
		function frame1(){
			stop();
		}
		function frame10(){
			stop();
		}
		function frame20(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//splash_faderMC_184 (cactusmccoy_armorgames_fla.splash_faderMC_184)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class splash_faderMC_184 extends MovieClip {

		public function splash_faderMC_184(){
			addFrameScript(16, frame17);
		}
		function frame17(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//splash_mccoy_anim_177 (cactusmccoy_armorgames_fla.splash_mccoy_anim_177)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class splash_mccoy_anim_177 extends MovieClip {

		public var inside:MovieClip;

		public function splash_mccoy_anim_177(){
			addFrameScript(19, frame20, 30, frame31);
		}
		function frame20(){
			stop();
		}
		function frame31(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//splash_subtitle_main_181 (cactusmccoy_armorgames_fla.splash_subtitle_main_181)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class splash_subtitle_main_181 extends MovieClip {

		public function splash_subtitle_main_181(){
			addFrameScript(39, frame40);
		}
		function frame40(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//splashTransitionMC_186 (cactusmccoy_armorgames_fla.splashTransitionMC_186)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class splashTransitionMC_186 extends MovieClip {

		public function splashTransitionMC_186(){
			addFrameScript(0, frame1, 19, frame20);
		}
		function frame1(){
			stop();
		}
		function frame20(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//sponsor_logo_ingame_159 (cactusmccoy_armorgames_fla.sponsor_logo_ingame_159)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class sponsor_logo_ingame_159 extends MovieClip {

		public function sponsor_logo_ingame_159(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//trainingsign_arrowholder_47 (cactusmccoy_armorgames_fla.trainingsign_arrowholder_47)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class trainingsign_arrowholder_47 extends MovieClip {

		public function trainingsign_arrowholder_47(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//upgrade_levelup_anim_76 (cactusmccoy_armorgames_fla.upgrade_levelup_anim_76)
package cactusmccoy_armorgames_fla {
	import flash.display.*;

	public dynamic class upgrade_levelup_anim_76 extends MovieClip {

		public function upgrade_levelup_anim_76(){
			addFrameScript(0, frame1, 15, frame16);
		}
		function frame1(){
			stop();
		}
		function frame16(){
			stop();
		}

	}
}//package cactusmccoy_armorgames_fla 

****************

//wav (challenge_chime.wav)
package challenge_chime {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package challenge_chime 

****************

//wav (chicken_cluck.wav)
package chicken_cluck {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package chicken_cluck 

****************

//wav (chicken_flap.wav)
package chicken_flap {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package chicken_flap 

****************

//wav (chicken_grab.wav)
package chicken_grab {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package chicken_grab 

****************

//wav (dropweapon.wav)
package dropweapon {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package dropweapon 

****************

//BaseButton (fl.controls.BaseButton)
package fl.controls {
	import flash.display.*;
	import flash.events.*;
	import fl.core.*;
	import flash.utils.*;
	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 

****************

//Button (fl.controls.Button)
package fl.controls {
	import flash.display.*;
	import fl.core.*;
	import fl.managers.*;

	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 

****************

//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 

****************

//LabelButton (fl.controls.LabelButton)
package fl.controls {
	import flash.display.*;
	import flash.events.*;
	import fl.core.*;
	import flash.text.*;
	import fl.managers.*;
	import fl.events.*;
	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 

****************

//TextInput (fl.controls.TextInput)
package fl.controls {
	import flash.display.*;
	import flash.events.*;
	import fl.core.*;
	import flash.text.*;
	import fl.managers.*;
	import fl.events.*;
	import flash.ui.*;

	public class TextInput extends UIComponent implements IFocusManagerComponent {

		protected var _html:Boolean;// = false
		protected var _savedHTML:String;
		protected var background:DisplayObject;
		protected var _editable:Boolean;// = true
		public var textField:TextField;

		private static var defaultStyles:Object = {upSkin:"TextInput_upSkin", disabledSkin:"TextInput_disabledSkin", focusRectSkin:null, focusRectPadding:null, textFormat:null, disabledTextFormat:null, textPadding:0, embedFonts:false};
		public static var createAccessibilityImplementation:Function;

		public function TextInput(){
			_editable = true;
			_html = false;
			super();
		}
		override public function drawFocus(_arg1:Boolean):void{
			if (focusTarget != null){
				focusTarget.drawFocus(_arg1);
				return;
			};
			super.drawFocus(_arg1);
		}
		public function set imeMode(_arg1:String):void{
			_imeMode = _arg1;
		}
		override protected function isOurFocus(_arg1:DisplayObject):Boolean{
			return ((((_arg1 == textField)) || (super.isOurFocus(_arg1))));
		}
		protected function handleKeyDown(_arg1:KeyboardEvent):void{
			if (_arg1.keyCode == Keyboard.ENTER){
				dispatchEvent(new ComponentEvent(ComponentEvent.ENTER, true));
			};
		}
		public function set text(_arg1:String):void{
			textField.text = _arg1;
			_html = false;
			invalidate(InvalidationType.DATA);
			invalidate(InvalidationType.STYLES);
		}
		protected function updateTextFieldType():void{
			textField.type = (((enabled) && (editable))) ? TextFieldType.INPUT : TextFieldType.DYNAMIC;
			textField.selectable = enabled;
		}
		public function get selectionEndIndex():int{
			return (textField.selectionEndIndex);
		}
		public function get editable():Boolean{
			return (_editable);
		}
		override protected function focusInHandler(_arg1:FocusEvent):void{
			var _local2:IFocusManager;
			if (_arg1.target == this){
				stage.focus = textField;
			};
			_local2 = focusManager;
			if (((editable) && (_local2))){
				_local2.showFocusIndicator = true;
				if (((textField.selectable) && ((textField.selectionBeginIndex == textField.selectionBeginIndex)))){
					setSelection(0, textField.length);
				};
			};
			super.focusInHandler(_arg1);
			if (editable){
				setIMEMode(true);
			};
		}
		public function get selectionBeginIndex():int{
			return (textField.selectionBeginIndex);
		}
		public function set alwaysShowSelection(_arg1:Boolean):void{
			textField.alwaysShowSelection = _arg1;
		}
		override public function set enabled(_arg1:Boolean):void{
			super.enabled = _arg1;
			updateTextFieldType();
		}
		protected function setEmbedFont(){
			var _local1:Object;
			_local1 = getStyleValue("embedFonts");
			if (_local1 != null){
				textField.embedFonts = _local1;
			};
		}
		public function get horizontalScrollPosition():int{
			return (textField.scrollH);
		}
		public function set condenseWhite(_arg1:Boolean):void{
			textField.condenseWhite = _arg1;
		}
		public function set displayAsPassword(_arg1:Boolean):void{
			textField.displayAsPassword = _arg1;
		}
		public function set horizontalScrollPosition(_arg1:int):void{
			textField.scrollH = _arg1;
		}
		public function get restrict():String{
			return (textField.restrict);
		}
		public function get textWidth():Number{
			return (textField.textWidth);
		}
		public function get textHeight():Number{
			return (textField.textHeight);
		}
		public function set editable(_arg1:Boolean):void{
			_editable = _arg1;
			updateTextFieldType();
		}
		public function get maxChars():int{
			return (textField.maxChars);
		}
		public function get length():int{
			return (textField.length);
		}
		public function getLineMetrics(_arg1:int):TextLineMetrics{
			return (textField.getLineMetrics(_arg1));
		}
		public function get imeMode():String{
			return (_imeMode);
		}
		override protected function focusOutHandler(_arg1:FocusEvent):void{
			super.focusOutHandler(_arg1);
			if (editable){
				setIMEMode(false);
			};
		}
		public function set htmlText(_arg1:String):void{
			if (_arg1 == ""){
				text = "";
				return;
			};
			_html = true;
			_savedHTML = _arg1;
			textField.htmlText = _arg1;
			invalidate(InvalidationType.DATA);
			invalidate(InvalidationType.STYLES);
		}
		public function get text():String{
			return (textField.text);
		}
		override public function get enabled():Boolean{
			return (super.enabled);
		}
		public function get condenseWhite():Boolean{
			return (textField.condenseWhite);
		}
		public function get alwaysShowSelection():Boolean{
			return (textField.alwaysShowSelection);
		}
		override protected function draw():void{
			var _local1:Object;
			if (isInvalid(InvalidationType.STYLES, InvalidationType.STATE)){
				drawTextFormat();
				drawBackground();
				_local1 = getStyleValue("embedFonts");
				if (_local1 != null){
					textField.embedFonts = _local1;
				};
				invalidate(InvalidationType.SIZE, false);
			};
			if (isInvalid(InvalidationType.SIZE)){
				drawLayout();
			};
			super.draw();
		}
		protected function handleTextInput(_arg1:TextEvent):void{
			_arg1.stopPropagation();
			dispatchEvent(new TextEvent(TextEvent.TEXT_INPUT, true, false, _arg1.text));
		}
		override protected function configUI():void{
			super.configUI();
			tabChildren = true;
			textField = new TextField();
			addChild(textField);
			updateTextFieldType();
			textField.addEventListener(TextEvent.TEXT_INPUT, handleTextInput, false, 0, true);
			textField.addEventListener(Event.CHANGE, handleChange, false, 0, true);
			textField.addEventListener(KeyboardEvent.KEY_DOWN, handleKeyDown, false, 0, true);
		}
		public function setSelection(_arg1:int, _arg2:int):void{
			textField.setSelection(_arg1, _arg2);
		}
		public function get displayAsPassword():Boolean{
			return (textField.displayAsPassword);
		}
		public function appendText(_arg1:String):void{
			textField.appendText(_arg1);
		}
		public function set restrict(_arg1:String):void{
			if (((componentInspectorSetting) && ((_arg1 == "")))){
				_arg1 = null;
			};
			textField.restrict = _arg1;
		}
		public function get htmlText():String{
			return (textField.htmlText);
		}
		protected function drawBackground():void{
			var _local1:DisplayObject;
			var _local2:String;
			_local1 = background;
			_local2 = (enabled) ? "upSkin" : "disabledSkin";
			background = getDisplayObjectInstance(getStyleValue(_local2));
			if (background == null){
				return;
			};
			addChildAt(background, 0);
			if (((((!((_local1 == null))) && (!((_local1 == background))))) && (contains(_local1)))){
				removeChild(_local1);
			};
		}
		override public function setFocus():void{
			stage.focus = textField;
		}
		protected function drawLayout():void{
			var _local1:Number;
			_local1 = Number(getStyleValue("textPadding"));
			if (background != null){
				background.width = width;
				background.height = height;
			};
			textField.width = (width - (2 * _local1));
			textField.height = (height - (2 * _local1));
			textField.x = (textField.y = _local1);
		}
		public function set maxChars(_arg1:int):void{
			textField.maxChars = _arg1;
		}
		public function get maxHorizontalScrollPosition():int{
			return (textField.maxScrollH);
		}
		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();
			if (_html){
				textField.htmlText = _savedHTML;
			};
		}
		protected function handleChange(_arg1:Event):void{
			_arg1.stopPropagation();
			dispatchEvent(new Event(Event.CHANGE, true));
		}

		public static function getStyleDefinition():Object{
			return (defaultStyles);
		}

	}
}//package fl.controls 

****************

//ComponentShim (fl.core.ComponentShim)
package fl.core {
	import flash.display.*;

	public dynamic class ComponentShim extends MovieClip {

	}
}//package fl.core 

****************

//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 

****************

//UIComponent (fl.core.UIComponent)
package fl.core {
	import flash.display.*;
	import flash.events.*;
	import flash.text.*;
	import flash.utils.*;
	import fl.managers.*;
	import fl.events.*;
	import flash.system.*;

	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 

****************

//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 

****************

//FocusManager (fl.managers.FocusManager)
package fl.managers {
	import fl.controls.*;
	import flash.display.*;
	import flash.events.*;
	import fl.core.*;
	import flash.text.*;
	import flash.utils.*;
	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 

****************

//IFocusManager (fl.managers.IFocusManager)
package fl.managers {
	import fl.controls.*;
	import flash.display.*;

	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 

****************

//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 

****************

//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 

****************

//StyleManager (fl.managers.StyleManager)
package fl.managers {
	import fl.core.*;
	import flash.text.*;
	import flash.utils.*;

	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 

****************

//Quadratic (fl.motion.easing.Quadratic)
package fl.motion.easing {

	public class Quadratic {

		public static function easeIn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
			_arg1 = (_arg1 / _arg4);
			return ((((_arg3 * _arg1) * _arg1) + _arg2));
		}
		public static function easeOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
			_arg1 = (_arg1 / _arg4);
			return ((((-(_arg3) * _arg1) * (_arg1 - 2)) + _arg2));
		}
		public static function easeInOut(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number):Number{
			_arg1 = (_arg1 / (_arg4 / 2));
			if (_arg1 < 1){
				return (((((_arg3 / 2) * _arg1) * _arg1) + _arg2));
			};
			--_arg1;
			return ((((-(_arg3) / 2) * ((_arg1 * (_arg1 - 2)) - 1)) + _arg2));
		}

	}
}//package fl.motion.easing 

****************

//MenuScreen (flipline.api.assets.MenuScreen)
package flipline.api.assets {
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flipline.api.*;
	import Playtomic.*;
	import flipline.api.data.*;
	import flash.text.*;

	public class MenuScreen {

		private var api:FliplineAPI;
		private var data:MenuScreenData;
		private var paramsForClass:Object;// = null
		private var clip:MovieClip;
		private var topPanel:MovieClip;
		private var bottomPanel:MovieClip;
		private var buttonStrip:MovieClip;
		private var buttonPadding:Number;// = 4
		private var titlePaddingTop:Number;// = 0
		private var splashStripY:Number;// = 45
		private var normalStripY:Number;// = 11
		private var splashLargeY:Number;// = -15
		private var normalLargeY:Number;// = 45
		private var mutePadTop:Number;// = 3
		private var mutePadBottom:Number;// = 10
		private var mutePadX:Number;// = 10
		private var topButtonPadTop:Number;// = 7
		private var topButtonPadX:Number;// = 10
		private var getThisGamePadY:Number;// = 78
		private var copyrightPadY:Number;// = 3
		private var largeButton:SmartButton;
		private var topButton:SmartButton;
		private var devLogo:MovieClip;
		private var sponsorLogo:MovieClip;
		private var licenseLogo:MovieClip;
		private var muteButton:SimpleButton;
		private var unmuteButton:SimpleButton;
		private var getThisGameButton:MovieClip;
		private var raisedButtonBG:MovieClip;
		private var hasRaisedButton:Boolean;// = false
		private var topPanelClassName:String;// = "api_menu_top_panel"
		private var bottomPanelClassName:String;// = "api_menu_bottom_panel"
		private var largeRaisedBGName:String;// = "startgame_bg"
		private var largeRaisedXoffset:Number;// = -13
		private var largeRaisedYoffset:Number;// = -5
		private var flipLogoLargeClassName:String;// = "flip_logo_large"
		private var flipLogoClassName:String;// = "flip_logo_small"
		private var sponsorLogoLargeClassName:String;// = "sponsor_logo_large"
		private var sponsorLogoClassName:String;// = "sponsor_logo_small"
		private var licenseLogoLargeClassName:String;// = "license_logo_large"
		private var licenseLogoClassName:String;// = "license_logo_small"
		private var devTagClassName:String;// = "developedby_tag"
		private var sponsorTagClassName:String;// = "sponsoredby_tag"
		private var muteClassName:String;// = "api_mute_btn"
		private var unmuteClassName:String;// = "api_unmute_btn"
		private var getThisGameClassName:String;// = "api_getthisgame_button"
		private var logoPaddingX:Number;// = 12
		private var logoPaddingTop:Number;// = 15
		private var logoPaddingBottom:Number;// = 10
		private var tagPaddingTop:Number;// = 2
		private var splashTopHeight:Number;// = 73
		private var splashBottomHeight:Number;// = 120
		private var normalTopHeight:Number;// = 43
		private var normalBottomHeight:Number;// = 101
		private var topTargetY:Number;// = 0
		private var bottomTargetY:Number;// = 0
		private var easeSpeed:Number;// = 4
		private var openDelayTimerMax:Number;// = 0
		private var openDelayTimer:Number;// = 0
		private var isTransitioningOut:Boolean;// = false
		private var titleField:TextField;
		private var gameClass;

		public function MenuScreen(_arg1:FliplineAPI, _arg2:MenuScreenData, _arg3:Object=null){
			this.api = _arg1;
			this.data = _arg2;
			this.paramsForClass = _arg3;
			this.setupScreen();
		}
		public function setupScreen(){
			var _local2:Array;
			var _local3:Number;
			var _local4:MenuButtonData;
			var _local5:SmartButton;
			var _local6:MovieClip;
			var _local7:Array;
			var _local8:TextField;
			var _local9:MovieClip;
			var _local10:MovieClip;
			var _local1:MenuScreen = this;
			_local1.clip = new MovieClip();
			_local1.topPanel = api.util.getNewMovieClip(topPanelClassName);
			_local1.bottomPanel = api.util.getNewMovieClip(bottomPanelClassName);
			if (data.isSplash){
				_local1.topTargetY = (0 - (_local1.topPanel.height - splashTopHeight));
				_local1.bottomTargetY = (api.gameHeight - splashBottomHeight);
				_local1.topPanel.y = (((0 - _local1.topPanel.height) + (api.gameHeight / 2)) - 30);
				_local1.bottomPanel.y = ((api.gameHeight - (api.gameHeight / 2)) + 30);
			} else {
				_local1.topTargetY = (0 - (_local1.topPanel.height - normalTopHeight));
				_local1.bottomTargetY = (api.gameHeight - normalBottomHeight);
				_local1.topPanel.y = (0 - _local1.topPanel.height);
				_local1.bottomPanel.y = api.gameHeight;
			};
			_local1.titleField = new TextField();
			_local1.titleField.embedFonts = true;
			_local1.titleField.antiAliasType = AntiAliasType.ADVANCED;
			_local1.titleField.gridFitType = GridFitType.SUBPIXEL;
			_local1.titleField.wordWrap = false;
			_local1.titleField.multiline = false;
			_local1.titleField.defaultTextFormat = _local1.getTextFormat();
			_local1.titleField.text = "";
			_local1.titleField.mouseEnabled = false;
			_local1.titleField.y = ((0 - _local1.topTargetY) + _local1.titlePaddingTop);
			if (_local1.data.showTitle){
				_local1.titleField.text = _local1.data.titleLabel;
			};
			_local1.titleField.height = (_local1.titleField.textHeight + 4);
			_local1.titleField.width = _local1.api.gameWidth;
			_local1.topPanel.addChild(_local1.titleField);
			_local1.buttonStrip = new MovieClip();
			if (data.isSplash){
				_local1.buttonStrip.y = _local1.splashStripY;
			} else {
				_local1.buttonStrip.y = _local1.normalStripY;
			};
			if (_local1.data.menuButtons.length > 0){
				_local3 = 0;
				while (_local3 < _local1.data.menuButtons.length) {
					_local4 = _local1.data.menuButtons[_local3];
					_local5 = new SmartButton(_local4);
					if (_local4.isTopButton){
						_local5.x = _local1.logoPaddingX;
						_local5.y = ((0 - _local1.topTargetY) + _local1.topButtonPadTop);
						_local1.topPanel.addChild(_local5);
						_local1.topButton = _local5;
					} else {
						if (_local4.size == "large"){
							_local5.x = Math.floor(((_local1.api.gameWidth - _local5.width) / 2));
							if (_local4.isRaised){
								_local5.y = _local1.splashLargeY;
							} else {
								_local5.y = _local1.normalLargeY;
							};
							if (_local4.isRaised){
								_local6 = api.util.getNewMovieClip(_local1.largeRaisedBGName);
								_local6.x = (_local5.x + _local1.largeRaisedXoffset);
								_local6.y = (_local5.y + _local1.largeRaisedYoffset);
								_local1.bottomPanel.addChild(_local6);
								_local1.raisedButtonBG = _local6;
								_local1.hasRaisedButton = true;
							};
							_local1.bottomPanel.addChild(_local5);
							_local1.largeButton = _local5;
						} else {
							_local5.x = (_local1.buttonStrip.width + _local1.buttonPadding);
							if (_local1.buttonStrip.width == 0){
								_local5.x = 0;
							};
							_local1.buttonStrip.addChild(_local5);
						};
					};
					_local3++;
				};
			};
			_local1.bottomPanel.addChild(_local1.buttonStrip);
			_local1.buttonStrip.x = Math.floor(((_local1.api.gameWidth - _local1.buttonStrip.width) / 2));
			if (data.showMute){
				_local7 = data.mutePosition.split(" ");
				_local1.muteButton = _local1.api.util.getNewSimpleButton(_local1.muteClassName);
				_local1.unmuteButton = _local1.api.util.getNewSimpleButton(_local1.unmuteClassName);
				_local1.muteButton.addEventListener(MouseEvent.CLICK, _local1.clickMuteButton);
				_local1.unmuteButton.addEventListener(MouseEvent.CLICK, _local1.clickUnmuteButton);
				if (_local1.api.isMuted){
					_local1.muteButton.visible = false;
					_local1.unmuteButton.visible = true;
				} else {
					_local1.muteButton.visible = true;
					_local1.unmuteButton.visible = false;
				};
				if (_local7.indexOf("top") > -1){
					_local1.muteButton.y = ((0 - _local1.topTargetY) + _local1.mutePadTop);
				} else {
					if (_local7.indexOf("bottom") > -1){
						_local1.muteButton.y = (((_local1.api.gameHeight - _local1.bottomTargetY) - _local1.muteButton.height) - _local1.mutePadBottom);
					};
				};
				if (_local7.indexOf("left") > -1){
					_local1.muteButton.x = _local1.mutePadX;
				} else {
					if (_local7.indexOf("right") > -1){
						_local1.muteButton.x = ((_local1.api.gameWidth - _local1.mutePadX) - _local1.muteButton.width);
					} else {
						if (_local7.indexOf("center") > -1){
							_local1.muteButton.x = ((_local1.api.gameWidth - _local1.muteButton.width) / 2);
						};
					};
				};
				_local1.unmuteButton.x = _local1.muteButton.x;
				_local1.unmuteButton.y = _local1.muteButton.y;
				if (_local7.indexOf("top") > -1){
					_local1.topPanel.addChild(_local1.unmuteButton);
					_local1.topPanel.addChild(_local1.muteButton);
				} else {
					if (_local7.indexOf("bottom") > -1){
						_local1.bottomPanel.addChild(_local1.unmuteButton);
						_local1.bottomPanel.addChild(_local1.muteButton);
					};
				};
			};
			if (data.showGetThisGame){
				_local1.getThisGameButton = _local1.api.util.getNewMovieClip(_local1.getThisGameClassName);
				_local1.getThisGameButton.buttonMode = true;
				_local1.getThisGameButton.mouseEnabled = true;
				_local1.getThisGameButton.mouseChildren = false;
				_local1.getThisGameButton.useHandCursor = true;
				_local1.getThisGameButton.addEventListener(MouseEvent.CLICK, _local1.clickGetThisGame);
				_local1.getThisGameButton.y = _local1.getThisGamePadY;
				_local1.getThisGameButton.x = ((_local1.api.gameWidth - _local1.getThisGameButton.width) / 2);
				_local1.bottomPanel.addChild(_local1.getThisGameButton);
			};
			if (data.showCopyrightMessage){
				_local8 = new TextField();
				_local8.embedFonts = true;
				_local8.antiAliasType = AntiAliasType.ADVANCED;
				_local8.gridFitType = GridFitType.PIXEL;
				_local8.wordWrap = false;
				_local8.multiline = false;
				_local8.defaultTextFormat = _local1.getCopyrightTextFormat();
				_local8.text = data.copyrightText;
				_local8.mouseEnabled = false;
				_local8.tabEnabled = false;
				_local8.height = (_local8.textHeight + 4);
				_local8.width = (_local8.textWidth + 6);
				_local8.y = (((_local1.api.gameHeight - _local1.bottomTargetY) - _local8.height) - _local1.copyrightPadY);
				_local8.x = ((_local1.api.gameWidth - _local8.width) / 2);
				_local1.bottomPanel.addChild(_local8);
			};
			if (data.showFliplineLogo){
				if (data.fliplineLogoSize == "small"){
					_local1.devLogo = _local1.api.util.getNewMovieClip(_local1.flipLogoClassName);
				} else {
					_local1.devLogo = _local1.api.util.getNewMovieClip(_local1.flipLogoLargeClassName);
				};
				_local2 = data.fliplineLogoPosition.split(" ");
				if (_local2.indexOf("top") > -1){
					_local1.devLogo.y = (_local1.logoPaddingTop - _local1.topTargetY);
				} else {
					if (_local2.indexOf("bottom") > -1){
						_local1.devLogo.y = (((_local1.api.gameHeight - _local1.bottomTargetY) - _local1.devLogo.height) - _local1.logoPaddingBottom);
					};
				};
				if (_local2.indexOf("left") > -1){
					_local1.devLogo.x = _local1.logoPaddingX;
				} else {
					if (_local2.indexOf("right") > -1){
						_local1.devLogo.x = ((_local1.api.gameWidth - _local1.devLogo.width) - _local1.logoPaddingX);
					} else {
						if (_local2.indexOf("center") > -1){
							_local1.devLogo.x = ((_local1.api.gameWidth - _local1.devLogo.width) / 2);
						};
					};
				};
				if (((!((data.fliplineLogoURL == null))) && (!((data.fliplineLogoURL == ""))))){
					_local1.devLogo.buttonMode = true;
					_local1.devLogo.mouseEnabled = true;
					_local1.devLogo.mouseChildren = false;
					_local1.devLogo.useHandCursor = true;
					_local1.devLogo.addEventListener(MouseEvent.CLICK, _local1.clickDevLogo);
				};
				if (data.showDevTag){
					_local9 = _local1.api.util.getNewMovieClip(_local1.devTagClassName);
					_local9.y = (devLogo.y - _local9.height);
					if (_local2.indexOf("left") > -1){
						_local9.x = devLogo.x;
					} else {
						if (_local2.indexOf("center") > -1){
							_local9.x = (devLogo.x + ((devLogo.width - _local9.width) / 2));
						} else {
							if (_local2.indexOf("right") > -1){
								_local9.x = ((devLogo.x + devLogo.width) - _local9.width);
							};
						};
					};
					if (_local2.indexOf("top") > -1){
						_local1.topPanel.addChild(_local9);
					} else {
						if (_local2.indexOf("bottom") > -1){
							_local1.bottomPanel.addChild(_local9);
						};
					};
				};
				if (_local2.indexOf("top") > -1){
					_local1.topPanel.addChild(_local1.devLogo);
				} else {
					if (_local2.indexOf("bottom") > -1){
						_local1.bottomPanel.addChild(_local1.devLogo);
					};
				};
			};
			if (data.showSponsorLogo){
				if (data.sponsorLogoSize == "small"){
					_local1.sponsorLogo = _local1.api.util.getNewMovieClip(_local1.sponsorLogoClassName);
				} else {
					_local1.sponsorLogo = _local1.api.util.getNewMovieClip(_local1.sponsorLogoLargeClassName);
				};
				_local2 = data.sponsorLogoPosition.split(" ");
				if (_local2.indexOf("top") > -1){
					_local1.sponsorLogo.y = (_local1.logoPaddingTop - _local1.topTargetY);
				} else {
					if (_local2.indexOf("bottom") > -1){
						_local1.sponsorLogo.y = (((_local1.api.gameHeight - _local1.bottomTargetY) - _local1.sponsorLogo.height) - _local1.logoPaddingBottom);
					};
				};
				if (_local2.indexOf("left") > -1){
					_local1.sponsorLogo.x = _local1.logoPaddingX;
				} else {
					if (_local2.indexOf("right") > -1){
						_local1.sponsorLogo.x = ((_local1.api.gameWidth - _local1.sponsorLogo.width) - _local1.logoPaddingX);
					} else {
						if (_local2.indexOf("center") > -1){
							_local1.sponsorLogo.x = ((_local1.api.gameWidth - _local1.sponsorLogo.width) / 2);
						};
					};
				};
				if (((!((data.sponsorLogoURL == null))) && (!((data.sponsorLogoURL == ""))))){
					_local1.sponsorLogo.buttonMode = true;
					_local1.sponsorLogo.mouseEnabled = true;
					_local1.sponsorLogo.mouseChildren = false;
					_local1.sponsorLogo.useHandCursor = true;
					_local1.sponsorLogo.addEventListener(MouseEvent.CLICK, _local1.clickSponsorLogo);
				};
				if (data.showSponsorTag){
					_local10 = _local1.api.util.getNewMovieClip(_local1.sponsorTagClassName);
					_local10.y = (sponsorLogo.y - _local10.height);
					if (_local2.indexOf("left") > -1){
						_local10.x = sponsorLogo.x;
					} else {
						if (_local2.indexOf("center") > -1){
							_local10.x = (sponsorLogo.x + ((sponsorLogo.width - _local10.width) / 2));
						} else {
							if (_local2.indexOf("right") > -1){
								_local10.x = ((sponsorLogo.x + sponsorLogo.width) - _local10.width);
							};
						};
					};
					if (_local2.indexOf("top") > -1){
						_local1.topPanel.addChild(_local10);
					} else {
						if (_local2.indexOf("bottom") > -1){
							_local1.bottomPanel.addChild(_local10);
						};
					};
				};
				if (_local2.indexOf("top") > -1){
					_local1.topPanel.addChild(_local1.sponsorLogo);
				} else {
					if (_local2.indexOf("bottom") > -1){
						_local1.bottomPanel.addChild(_local1.sponsorLogo);
					};
				};
			};
			if (data.showLicenseLogo){
				if (data.licenseLogoSize == "small"){
					_local1.licenseLogo = _local1.api.util.getNewMovieClip(_local1.licenseLogoClassName);
				} else {
					_local1.licenseLogo = _local1.api.util.getNewMovieClip(_local1.licenseLogoLargeClassName);
				};
				_local2 = data.licenseLogoPosition.split(" ");
				if (_local2.indexOf("top") > -1){
					_local1.licenseLogo.y = (_local1.logoPaddingTop - _local1.topTargetY);
				} else {
					if (_local2.indexOf("bottom") > -1){
						_local1.licenseLogo.y = (((_local1.api.gameHeight - _local1.bottomTargetY) - _local1.licenseLogo.height) - _local1.logoPaddingBottom);
					};
				};
				if (_local2.indexOf("left") > -1){
					_local1.licenseLogo.x = _local1.logoPaddingX;
				} else {
					if (_local2.indexOf("right") > -1){
						_local1.licenseLogo.x = ((_local1.api.gameWidth - _local1.licenseLogo.width) - _local1.logoPaddingX);
					} else {
						if (_local2.indexOf("center") > -1){
							_local1.licenseLogo.x = ((_local1.api.gameWidth - _local1.licenseLogo.width) / 2);
						};
					};
				};
				if (((!((data.licenseLogoURL == null))) && (!((data.licenseLogoURL == ""))))){
					_local1.licenseLogo.buttonMode = true;
					_local1.licenseLogo.mouseEnabled = true;
					_local1.licenseLogo.mouseChildren = false;
					_local1.licenseLogo.useHandCursor = true;
					_local1.licenseLogo.addEventListener(MouseEvent.CLICK, _local1.clickLicenseLogo);
				};
				if (_local2.indexOf("top") > -1){
					_local1.topPanel.addChild(_local1.licenseLogo);
				} else {
					if (_local2.indexOf("bottom") > -1){
						_local1.bottomPanel.addChild(_local1.licenseLogo);
					};
				};
			};
			if (((!((data.gameClass == null))) && (!((data.gameClass == ""))))){
				_local1.gameClass = _local1.api.util.getClassInstance(data.gameClass, _local1.api.gameRoot, _local1.clip, _local1.paramsForClass);
			};
			_local1.clip.addChild(_local1.topPanel);
			_local1.clip.addChild(_local1.bottomPanel);
			_local1.topPanel.addEventListener(Event.ENTER_FRAME, _local1.animatePanels);
			_local1.api.container.addChild(_local1.clip);
		}
		public function startTransitionOut(){
			var _local1:MenuScreen = this;
			_local1.isTransitioningOut = true;
			_local1.disableButtons();
			_local1.topTargetY = (0 - _local1.topPanel.height);
			_local1.bottomTargetY = api.gameHeight;
			if (_local1.hasRaisedButton){
				_local1.bottomTargetY = (_local1.bottomTargetY + ((_local1.splashLargeY + _local1.largeRaisedYoffset) * -1));
			};
			if (!_local1.topPanel.hasEventListener(Event.ENTER_FRAME)){
				_local1.topPanel.addEventListener(Event.ENTER_FRAME, _local1.animatePanels);
			};
		}
		public function animatePanels(_arg1:Event){
			var _local3:Number;
			var _local4:Number;
			var _local2:MenuScreen = this;
			_local2.openDelayTimer++;
			if ((((_local2.openDelayTimer > _local2.openDelayTimerMax)) || (_local2.isTransitioningOut))){
				_local3 = (_local2.topTargetY - _local2.topPanel.y);
				_local4 = (_local2.bottomTargetY - _local2.bottomPanel.y);
				if (Math.abs(_local3) > 1){
					_local2.topPanel.y = (_local2.topPanel.y + (_local3 / _local2.easeSpeed));
				} else {
					_local2.topPanel.y = _local2.topTargetY;
				};
				if (Math.abs(_local4) > 1){
					_local2.bottomPanel.y = (_local2.bottomPanel.y + (_local4 / _local2.easeSpeed));
				} else {
					_local2.bottomPanel.y = _local2.bottomTargetY;
				};
				if ((((_local2.topPanel.y == _local2.topTargetY)) && ((_local2.bottomPanel.y == _local2.bottomTargetY)))){
					_local2.topPanel.removeEventListener(Event.ENTER_FRAME, _local2.animatePanels);
				};
			};
		}
		public function clickDevLogo(_arg1:MouseEvent){
			var _local2:MenuScreen = this;
			if (((_local2.data.fliplineLogoURL) && (!((_local2.data.fliplineLogoURL == ""))))){
				_local2.api.goToLink(_local2.data.fliplineLogoURL, "FliplineLogo", "LogoLinks");
			};
		}
		public function clickSponsorLogo(_arg1:MouseEvent){
			var _local2:MenuScreen = this;
			if (((_local2.data.sponsorLogoURL) && (!((_local2.data.sponsorLogoURL == ""))))){
				_local2.api.goToLink(_local2.data.sponsorLogoURL, "SponsorLogo", "LogoLinks");
			};
		}
		public function clickLicenseLogo(_arg1:MouseEvent){
			var _local2:MenuScreen = this;
			if (((_local2.data.licenseLogoURL) && (!((_local2.data.licenseLogoURL == ""))))){
				_local2.api.goToLink(_local2.data.licenseLogoURL, "LicenseLogo", "LogoLinks");
			};
		}
		public function clickGetThisGame(_arg1:MouseEvent){
			var _local2:MenuScreen = this;
			if (((_local2.data.getThisGameURL) && (!((_local2.data.getThisGameURL == ""))))){
				_local2.api.goToLink(_local2.data.getThisGameURL, "GetThisGame", "LogoLinks");
			};
		}
		public function clickMuteButton(_arg1:MouseEvent){
			var _local2:MenuScreen = this;
			_local2.api.trackCustomMetric("ClickMute", "Screens", true);
			_local2.api.setSoundMute();
			_local2.muteButton.visible = false;
			_local2.unmuteButton.visible = true;
		}
		public function clickUnmuteButton(_arg1:MouseEvent){
			var _local2:MenuScreen = this;
			_local2.api.trackCustomMetric("ClickUnmute", "Screens", true);
			_local2.api.setSoundUnmute();
			_local2.muteButton.visible = true;
			_local2.unmuteButton.visible = false;
		}
		public function destroy(){
			var _local2:Number;
			var _local3:SmartButton;
			var _local1:MenuScreen = this;
			_local1.api.debugTrace(("Destroy Menu Screen: " + _local1.getLabel()));
			if (_local1.gameClass){
				_local1.gameClass.destroy();
				_local1.gameClass = null;
			};
			_local2 = 0;
			while (_local2 < _local1.buttonStrip.numChildren) {
				_local3 = (_local1.buttonStrip.getChildAt(_local2) as SmartButton);
				_local3.destroy();
				_local3 = null;
				_local2++;
			};
			if (_local1.largeButton){
				_local1.largeButton.destroy();
				_local1.largeButton = null;
			};
			if (_local1.topButton){
				_local1.topButton.destroy();
				_local1.topButton = null;
			};
			if (((_local1.devLogo) && (_local1.devLogo.hasEventListener(MouseEvent.CLICK)))){
				_local1.devLogo.removeEventListener(MouseEvent.CLICK, _local1.clickDevLogo);
			};
			if (((_local1.sponsorLogo) && (_local1.sponsorLogo.hasEventListener(MouseEvent.CLICK)))){
				_local1.sponsorLogo.removeEventListener(MouseEvent.CLICK, _local1.clickSponsorLogo);
			};
			if (((_local1.licenseLogo) && (_local1.licenseLogo.hasEventListener(MouseEvent.CLICK)))){
				_local1.licenseLogo.removeEventListener(MouseEvent.CLICK, _local1.clickLicenseLogo);
			};
			if (((_local1.muteButton) && (_local1.muteButton.hasEventListener(MouseEvent.CLICK)))){
				_local1.muteButton.removeEventListener(MouseEvent.CLICK, _local1.clickMuteButton);
			};
			if (((_local1.unmuteButton) && (_local1.unmuteButton.hasEventListener(MouseEvent.CLICK)))){
				_local1.unmuteButton.removeEventListener(MouseEvent.CLICK, _local1.clickUnmuteButton);
			};
			if (((_local1.getThisGameButton) && (_local1.getThisGameButton.hasEventListener(MouseEvent.CLICK)))){
				_local1.getThisGameButton.removeEventListener(MouseEvent.CLICK, _local1.clickGetThisGame);
			};
			_local1.api.container.removeChild(_local1.clip);
		}
		public function getLabel():String{
			var _local1:MenuScreen = this;
			return (_local1.data.label);
		}
		public function disableButtons(){
			var _local3:SmartButton;
			var _local1:MenuScreen = this;
			if (_local1.largeButton){
				_local1.largeButton.disable();
			};
			if (_local1.topButton){
				_local1.topButton.disable();
			};
			var _local2:* = 0;
			while (_local2 < _local1.buttonStrip.numChildren) {
				_local3 = (_local1.buttonStrip.getChildAt(_local2) as SmartButton);
				_local3.disable();
				_local2++;
			};
		}
		public function enableButtons(){
			var _local3:SmartButton;
			var _local1:MenuScreen = this;
			if (_local1.largeButton){
				_local1.largeButton.enable();
			};
			if (_local1.topButton){
				_local1.topButton.enable();
			};
			var _local2:* = 0;
			while (_local2 < _local1.buttonStrip.numChildren) {
				_local3 = (_local1.buttonStrip.getChildAt(_local2) as SmartButton);
				_local3.enable();
				_local2++;
			};
		}
		public function setTitle(_arg1:String){
			var _local2:MenuScreen = this;
			_local2.titleField.text = _arg1;
			_local2.titleField.height = (_local2.titleField.textHeight + 4);
		}
		private function getTextFormat():TextFormat{
			var _local1:MenuScreen = this;
			var _local2:TextFormat = new TextFormat();
			_local2.font = FliplineAPI.BUTTON_FONT_FAMILY;
			_local2.color = 0xAEAEAE;
			_local2.size = 30;
			_local2.align = TextFormatAlign.CENTER;
			_local2.kerning = true;
			_local2.letterSpacing = -0.5;
			return (_local2);
		}
		private function getCopyrightTextFormat():TextFormat{
			var _local1:MenuScreen = this;
			var _local2:TextFormat = new TextFormat();
			_local2.font = FliplineAPI.COPYRIGHT_FONT_FAMILY;
			_local2.color = FliplineAPI.COPYRIGHT_FONT_COLOR;
			_local2.size = FliplineAPI.COPYRIGHT_FONT_SIZE;
			_local2.bold = FliplineAPI.COPYRIGHT_FONT_BOLD;
			_local2.align = TextFormatAlign.CENTER;
			_local2.kerning = true;
			_local2.letterSpacing = 0;
			return (_local2);
		}

	}
}//package flipline.api.assets 

****************

//Scoreboard (flipline.api.assets.Scoreboard)
package flipline.api.assets {
	import flash.display.*;
	import flash.events.*;
	import flipline.api.*;
	import Playtomic.*;
	import flash.text.*;
	import flipline.api.utils.*;

	public class Scoreboard {

		private var api:FliplineAPI;
		private var clip:MovieClip;
		private var largeScoreboardY:Number;// = 47
		private var smallScoreboardY:Number;// = 75
		private var scoresPerPage:Number;// = 10
		private var submittingScore:Boolean;// = false
		private var showPlace:Boolean;// = false
		private var requireName:Boolean;// = true
		private var playerScore:Number;// = 0
		private var playerName:String;// = "Anonymous"
		private var playerCustomData:Object;// = null
		private var scoreboardClassName:String;// = "flipline_highscoresMC"
		private var enterNameButton:SmartButton;
		private var closeCallback:Function;
		private var scoreTableName:String;
		private var todayScores:Array;
		private var weeklyScores:Array;
		private var monthlyScores:Array;
		private var alltimeScores:Array;
		private var todayTotal:Number;
		private var weeklyTotal:Number;
		private var monthlyTotal:Number;
		private var alltimeTotal:Number;
		private var todayPage:Number;// = 1
		private var weeklyPage:Number;// = 1
		private var monthlyPage:Number;// = 1
		private var alltimePage:Number;// = 1
		public var askingWhichMode:String;// = "today"
		public var viewingMode:String;// = "today"

		public function Scoreboard(_arg1:FliplineAPI, _arg2:String, _arg3:Function=null, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:Boolean=false, _arg7:String="Anonymous", _arg8:Number=0, _arg9:Object=null){
			var api = _arg1;
			var scoreTableName = _arg2;
			var closeCallback = _arg3;
			var submitScore = _arg4;
			var requireName = _arg5;
			var showPlace = _arg6;
			var playerName = _arg7;
			var playerScore = _arg8;
			var playerCustomData = _arg9;
			super();
			var ob:Scoreboard = this;
			ob.api = api;
			ob.scoreTableName = scoreTableName;
			ob.submittingScore = submitScore;
			ob.requireName = requireName;
			ob.showPlace = showPlace;
			ob.playerName = playerName;
			ob.playerScore = playerScore;
			ob.playerCustomData = playerCustomData;
			if (closeCallback == null){
				ob.closeCallback = function (){
				};
			} else {
				ob.closeCallback = closeCallback;
			};
			ob.setupScoreboard();
		}
		private function setupScoreboard(){
			var _local1:Scoreboard = this;
			_local1.clip = _local1.api.util.getNewMovieClip(_local1.scoreboardClassName);
			_local1.clip.x = ((_local1.api.gameWidth - _local1.clip.width) / 2);
			if (_local1.showPlace){
				_local1.clip.y = _local1.largeScoreboardY;
			} else {
				_local1.clip.y = _local1.smallScoreboardY;
			};
			_local1.clip.close_btn.addEventListener(MouseEvent.CLICK, _local1.closeScoreboard);
			var _local2:TextFormat = new TextFormat();
			_local2.font = "Arial";
			_local2.size = 24;
			_local2.bold = true;
			_local2.align = TextFormatAlign.CENTER;
			_local1.clip.entername.input_txt.setStyle("textFormat", _local2);
			_local1.clip.entername.input_txt.maxChars = 16;
			_local1.clip.entername.input_txt.restrict = "0-9A-Za-z '\\-";
			_local1.enterNameButton = new SmartButton(null, "SUBMIT SCORE", "small", "button", "clickNameOK", null, false, false, false, null, false, 180);
			_local1.enterNameButton.x = 57;
			_local1.enterNameButton.y = 46;
			_local1.clip.entername.addChild(_local1.enterNameButton);
			_local1.enterNameButton.addEventListener("clickNameOK", _local1.clickEnterNameOK);
			_local1.clip.entername.input_txt.text = _local1.playerName;
			_local1.clip.content.today_btn.addEventListener(MouseEvent.CLICK, _local1.clickMode);
			_local1.clip.content.weekly_btn.addEventListener(MouseEvent.CLICK, _local1.clickMode);
			_local1.clip.content.monthly_btn.addEventListener(MouseEvent.CLICK, _local1.clickMode);
			_local1.clip.content.alltime_btn.addEventListener(MouseEvent.CLICK, _local1.clickMode);
			_local1.clip.content.today_btn.addEventListener(MouseEvent.ROLL_OVER, _local1.rolloverMode);
			_local1.clip.content.weekly_btn.addEventListener(MouseEvent.ROLL_OVER, _local1.rolloverMode);
			_local1.clip.content.monthly_btn.addEventListener(MouseEvent.ROLL_OVER, _local1.rolloverMode);
			_local1.clip.content.alltime_btn.addEventListener(MouseEvent.ROLL_OVER, _local1.rolloverMode);
			_local1.clip.content.today_btn.addEventListener(MouseEvent.ROLL_OUT, _local1.rolloutMode);
			_local1.clip.content.weekly_btn.addEventListener(MouseEvent.ROLL_OUT, _local1.rolloutMode);
			_local1.clip.content.monthly_btn.addEventListener(MouseEvent.ROLL_OUT, _local1.rolloutMode);
			_local1.clip.content.alltime_btn.addEventListener(MouseEvent.ROLL_OUT, _local1.rolloutMode);
			_local1.clip.content.today_btn.buttonMode = true;
			_local1.clip.content.weekly_btn.buttonMode = true;
			_local1.clip.content.monthly_btn.buttonMode = true;
			_local1.clip.content.alltime_btn.buttonMode = true;
			_local1.clip.content.today_btn.useHandCursor = true;
			_local1.clip.content.weekly_btn.useHandCursor = true;
			_local1.clip.content.monthly_btn.useHandCursor = true;
			_local1.clip.content.alltime_btn.useHandCursor = true;
			_local1.clip.content.today_btn.mouseChildren = false;
			_local1.clip.content.weekly_btn.mouseChildren = false;
			_local1.clip.content.monthly_btn.mouseChildren = false;
			_local1.clip.content.alltime_btn.mouseChildren = false;
			_local1.clip.content.next_btn.visible = false;
			_local1.clip.content.prev_btn.visible = false;
			_local1.api.container.addChild(_local1.clip);
			if (_local1.showPlace){
				_local1.clip.bg.gotoAndStop("large");
			} else {
				_local1.clip.bg.gotoAndStop("small");
			};
			if (((_local1.submittingScore) && (_local1.requireName))){
				_local1.showEnterName();
			} else {
				if (((_local1.submittingScore) && (!(_local1.requireName)))){
					_local1.submitScore();
				} else {
					if (!_local1.submittingScore){
						_local1.loadScores();
					};
				};
			};
		}
		public function clickEnterNameOK(_arg1:Event=null){
			var _local2:Scoreboard = this;
			_local2.playerName = _local2.clip.entername.input_txt.text;
			_local2.submitScore();
		}
		private function showMessage(_arg1:String, _arg2:Boolean=false){
			var _local3:Scoreboard = this;
			if (_local3.clip){
				_local3.clip.content.visible = false;
				_local3.clip.entername.visible = false;
				_local3.clip.message.visible = true;
				_local3.clip.message.message_txt.text = String(_arg1);
				_local3.clip.message.spinner.visible = _arg2;
			};
		}
		private function showEnterName(){
			var _local1:Scoreboard = this;
			_local1.clip.content.visible = false;
			_local1.clip.message.visible = false;
			_local1.clip.entername.visible = true;
			_local1.clip.entername.input_txt.text = _local1.playerName;
			_local1.clip.entername.input_txt.setFocus();
		}
		private function submitScore(){
			var _local1:Scoreboard = this;
			var _local2:PlayerScore = new PlayerScore();
			_local2.Name = _local1.playerName;
			_local2.Points = _local1.playerScore;
			if (_local1.playerCustomData != null){
				_local2.CustomData = _local1.playerCustomData;
			};
			if (_local1.api.usePlaytomic){
				Leaderboards.Save(_local2, _local1.scoreTableName, _local1.scoreSubmitCallback);
				_local1.showMessage("Submitting Score...", true);
			} else {
				_local1.showMessage("Sorry, Leaderboards are not available for this game.");
			};
		}
		public function loadScores(){
			var _local1:Scoreboard = this;
			if (_local1.api.usePlaytomic){
				Leaderboards.List(_local1.scoreTableName, _local1.loadScoresCallback, {mode:_local1.askingWhichMode, perpage:_local1.scoresPerPage});
				_local1.showMessage("Getting High Scores...", true);
			} else {
				_local1.showMessage("Sorry, Leaderboards are not available for this game.");
			};
		}
		public function showScores(_arg1:String="today"){
			var _local5:MovieClip;
			var _local2:Scoreboard = this;
			_local2.viewingMode = _arg1;
			_local2.clip.content.today_btn.tab.alpha = 0;
			_local2.clip.content.weekly_btn.tab.alpha = 0;
			_local2.clip.content.monthly_btn.tab.alpha = 0;
			_local2.clip.content.alltime_btn.tab.alpha = 0;
			_local2.clip.content[(_local2.viewingMode + "_btn")].tab.alpha = 1;
			_local2.clip.message.visible = false;
			_local2.clip.entername.visible = false;
			_local2.clip.content.visible = true;
			var _local3:Array = _local2[(_local2.viewingMode + "Scores")];
			var _local4:* = 0;
			while (_local4 < _local2.scoresPerPage) {
				_local5 = _local2.clip.content[("panel" + _local4)];
				if (_local3.length > _local4){
					_local5.visible = true;
					_local5.place_txt.htmlText = (("<B>" + (_local4 + 1)) + ".</B>");
					_local5.name_txt.htmlText = (("<B>" + PlayerScore(_local3[_local4]).Name) + "</B>");
					_local5.score_txt.htmlText = (("<B>" + StringUtility.addCommasToNumber(PlayerScore(_local3[_local4]).Points)) + "</B>");
				} else {
					_local5.visible = false;
				};
				_local4++;
			};
			if (_local2.showPlace){
				_local2.clip.content.yourscore.visible = true;
				_local2.clip.content.yourscore.panel.place_txt.htmlText = "";
				_local2.clip.content.yourscore.panel.name_txt.htmlText = (("<B>" + _local2.playerName) + "</B>");
				_local2.clip.content.yourscore.panel.score_txt.htmlText = (("<B>" + StringUtility.addCommasToNumber(_local2.playerScore)) + "</B>");
			} else {
				_local2.clip.content.yourscore.visible = false;
			};
		}
		public function clickMode(_arg1:MouseEvent){
			var _local2:Scoreboard = this;
			var _local3:String = _arg1.currentTarget.name.split("_")[0];
			if (_local3 != _local2.viewingMode){
				_local2.showScores(_local3);
			};
		}
		public function rolloverMode(_arg1:MouseEvent){
			var _local2:Scoreboard = this;
			var _local3:String = _arg1.currentTarget.name.split("_")[0];
			if (_local3 != _local2.viewingMode){
				_local2.clip.content[(_local3 + "_btn")].tab.alpha = 0.4;
			};
		}
		public function rolloutMode(_arg1:MouseEvent){
			var _local2:Scoreboard = this;
			var _local3:String = _arg1.currentTarget.name.split("_")[0];
			if (_local3 != _local2.viewingMode){
				_local2.clip.content[(_local3 + "_btn")].tab.alpha = 0;
			};
		}
		public function closeScoreboard(_arg1:Event=null){
			var _local2:Scoreboard = this;
			_local2.api.removeScoreboard();
		}
		public function destroy(){
			var ob:Scoreboard = this;
			ob.clip.close_btn.removeEventListener(MouseEvent.CLICK, ob.closeScoreboard);
			ob.clip.content.today_btn.removeEventListener(MouseEvent.CLICK, ob.clickMode);
			ob.clip.content.weekly_btn.removeEventListener(MouseEvent.CLICK, ob.clickMode);
			ob.clip.content.monthly_btn.removeEventListener(MouseEvent.CLICK, ob.clickMode);
			ob.clip.content.alltime_btn.removeEventListener(MouseEvent.CLICK, ob.clickMode);
			ob.clip.content.today_btn.removeEventListener(MouseEvent.ROLL_OVER, ob.rolloverMode);
			ob.clip.content.weekly_btn.removeEventListener(MouseEvent.ROLL_OVER, ob.rolloverMode);
			ob.clip.content.monthly_btn.removeEventListener(MouseEvent.ROLL_OVER, ob.rolloverMode);
			ob.clip.content.alltime_btn.removeEventListener(MouseEvent.ROLL_OVER, ob.rolloverMode);
			ob.clip.content.today_btn.removeEventListener(MouseEvent.ROLL_OUT, ob.rolloutMode);
			ob.clip.content.weekly_btn.removeEventListener(MouseEvent.ROLL_OUT, ob.rolloutMode);
			ob.clip.content.monthly_btn.removeEventListener(MouseEvent.ROLL_OUT, ob.rolloutMode);
			ob.clip.content.alltime_btn.removeEventListener(MouseEvent.ROLL_OUT, ob.rolloutMode);
			if (ob.enterNameButton){
				ob.enterNameButton.removeEventListener("clickNameOK", ob.clickEnterNameOK);
				ob.clip.entername.removeChild(ob.enterNameButton);
				ob.enterNameButton.destroy();
				ob.enterNameButton = null;
			};
			if (ob.api.container.contains(ob.clip)){
				ob.api.container.removeChild(ob.clip);
			};
			ob.clip = null;
			try {
				if (ob.closeCallback != null){
					ob.closeCallback();
				};
			} catch(err) {
			};
		}
		public function scoreSubmitCallback(_arg1:PlayerScore, _arg2:Object):void{
			var _local3:Scoreboard = this;
			if (_arg2.Success){
				_local3.loadScores();
			} else {
				_local3.showMessage("There was an error submitting your score.");
			};
		}
		public function loadScoresCallback(_arg1:Array, _arg2:int, _arg3:Object):void{
			var _local4:Scoreboard = this;
			if (_local4.askingWhichMode == "today"){
				_local4.todayScores = _arg1.concat();
				_local4.todayTotal = _arg2;
				_local4.askingWhichMode = "last7days";
				_local4.loadScores();
			} else {
				if (_local4.askingWhichMode == "last7days"){
					_local4.weeklyScores = _arg1.concat();
					_local4.weeklyTotal = _arg2;
					_local4.askingWhichMode = "last30days";
					_local4.loadScores();
				} else {
					if (_local4.askingWhichMode == "last30days"){
						_local4.monthlyScores = _arg1.concat();
						_local4.monthlyTotal = _arg2;
						_local4.askingWhichMode = "alltime";
						_local4.loadScores();
					} else {
						if (_local4.askingWhichMode == "alltime"){
							_local4.alltimeScores = _arg1.concat();
							_local4.alltimeTotal = _arg2;
							_local4.showScores();
						};
					};
				};
			};
		}
		public function newestScoresCallback(_arg1:Array, _arg2:int, _arg3:Object):void{
			var _local4:Scoreboard = this;
		}

	}
}//package flipline.api.assets 

****************

//SmartButton (flipline.api.assets.SmartButton)
package flipline.api.assets {
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.filters.*;
	import flipline.api.*;
	import Playtomic.*;
	import flipline.api.data.*;
	import flash.text.*;
	import flash.net.*;
	import flash.utils.*;
	import flipline.api.events.*;

	public class SmartButton extends MovieClip {

		private var label:String;
		private var size:String;
		private var type:String;
		private var linkURL:String;// = null
		private var customClickHandler;
		private var disabledAtStart:Boolean;// = false
		private var isRed:Boolean;// = false
		private var isRaised:Boolean;// = false
		private var isTopButton:Boolean;// = false
		private var fixedWidth:Number;// = 0
		private var eventLabel:String;
		private var usePlaytomic:Boolean;// = false
		private var smallSkinWidths:Number;// = 16
		private var largeSkinWidths:Number;// = 23
		private var textPaddingTopSmall:Number;// = 3
		private var textPaddingTopLarge:Number;// = 3
		private var insidePaddingX:Number;// = 7
		private var skinParts_mc:MovieClip;
		private var overlayParts_mc:MovieClip;
		private var labelField:TextField;
		private var isEnabled:Boolean;// = true

		private static var smallSkins:Array = ["api_smallbutton_left", "api_smallbutton_middle", "api_smallbutton_right"];
		private static var largeSkins:Array = ["api_largebutton_left", "api_largebutton_middle", "api_largebutton_right"];
		private static var redSkins:Array = ["api_redbutton_left", "api_redbutton_middle", "api_redbutton_right"];
		private static var smallOverlaySkins:Array = ["api_smallbutton_left_overlay", "api_smallbutton_middle_overlay", "api_smallbutton_right_overlay"];
		private static var largeOverlaySkins:Array = ["api_largebutton_left_overlay", "api_largebutton_middle_overlay", "api_largebutton_right_overlay"];
		private static var redOverlaySkins:Array = ["api_smallbutton_left_overlay", "api_smallbutton_middle_overlay", "api_smallbutton_right_overlay"];

		public function SmartButton(_arg1:MenuButtonData=null, _arg2:String=null, _arg3:String=null, _arg4:String="button", _arg5:String=null, _arg6:String=null, _arg7:Boolean=false, _arg8:Boolean=false, _arg9:Boolean=false, _arg10=null, _arg11:Boolean=false, _arg12:Number=0){
			var _local13:SmartButton = this;
			if (_arg1 != null){
				_local13.label = _arg1.label;
				_local13.size = _arg1.size;
				_local13.type = _arg1.clickType;
				_local13.eventLabel = _arg1.eventLabel;
				_local13.linkURL = _arg1.linkURL;
				_local13.isRed = _arg1.isRed;
				_local13.isRaised = _arg1.isRaised;
				_local13.isTopButton = _arg1.isTopButton;
				_local13.customClickHandler = _arg1.customClickHandler;
				_local13.disabledAtStart = _arg1.disabledAtStart;
				_local13.isEnabled = !(_local13.disabledAtStart);
				_local13.usePlaytomic = _arg1.usePlaytomic;
			} else {
				_local13.label = _arg2;
				_local13.size = _arg3;
				_local13.type = _arg4;
				_local13.eventLabel = _arg5;
				_local13.linkURL = _arg6;
				_local13.isRed = _arg7;
				_local13.isRaised = _arg8;
				_local13.isTopButton = _arg9;
				_local13.customClickHandler = _arg10;
				_local13.disabledAtStart = _arg11;
				_local13.isEnabled = !(_arg11);
				_local13.fixedWidth = _arg12;
			};
			_local13.setupButton();
		}
		private function setupButton(){
			var _local2:Number;
			var _local5:Class;
			var _local6:Class;
			var _local7:Class;
			var _local8:MovieClip;
			var _local9:MovieClip;
			var _local10:MovieClip;
			var _local11:Class;
			var _local12:Class;
			var _local13:Class;
			var _local14:MovieClip;
			var _local15:MovieClip;
			var _local16:MovieClip;
			var _local1:SmartButton = this;
			_local1.buttonMode = true;
			_local1.useHandCursor = true;
			_local1.mouseEnabled = true;
			_local1.mouseChildren = false;
			_local1.tabEnabled = false;
			_local1.addEventListener(MouseEvent.CLICK, _local1.onClickButton);
			_local1.addEventListener(MouseEvent.ROLL_OVER, _local1.onRollOverButton);
			_local1.addEventListener(MouseEvent.ROLL_OUT, _local1.onRollOutButton);
			_local1.labelField = new TextField();
			_local1.labelField.embedFonts = true;
			_local1.labelField.antiAliasType = AntiAliasType.ADVANCED;
			_local1.labelField.gridFitType = GridFitType.SUBPIXEL;
			_local1.labelField.wordWrap = false;
			_local1.labelField.multiline = false;
			_local1.labelField.text = _local1.label;
			_local1.labelField.setTextFormat(_local1.getTextFormat(_local1.disabledAtStart));
			_local1.labelField.height = (_local1.labelField.textHeight + 4);
			_local1.setFilters(_local1.disabledAtStart);
			var _local3:Number = ((_local1.labelField.textWidth + 4) + (_local1.insidePaddingX * 2));
			if (_local1.fixedWidth > 0){
				_local3 = _local1.fixedWidth;
			};
			if (_local1.size == "small"){
				_local1.labelField.width = (Math.ceil((_local3 / _local1.smallSkinWidths)) * _local1.smallSkinWidths);
				_local1.labelField.x = 0;
				_local1.labelField.y = _local1.textPaddingTopSmall;
			} else {
				if (_local1.size == "large"){
					_local1.labelField.width = (Math.ceil((_local3 / _local1.largeSkinWidths)) * _local1.largeSkinWidths);
					_local1.labelField.x = 0;
					_local1.labelField.y = _local1.textPaddingTopLarge;
				};
			};
			_local1.skinParts_mc = new MovieClip();
			_local1.overlayParts_mc = new MovieClip();
			_local1.overlayParts_mc.blendMode = "overlay";
			_local1.overlayParts_mc.alpha = 0.5;
			_local1.overlayParts_mc.visible = false;
			_local1.addChild(_local1.skinParts_mc);
			_local1.addChild(_local1.labelField);
			_local1.addChild(_local1.overlayParts_mc);
			var _local4:Number = 1;
			if (_local1.isRed){
				_local4 = (Math.ceil((_local1.labelField.width / smallSkinWidths)) - 2);
				_local5 = (getDefinitionByName(SmartButton.redSkins[0]) as Class);
				_local8 = new (_local5);
				_local11 = (getDefinitionByName(SmartButton.smallOverlaySkins[0]) as Class);
				_local14 = new (_local11);
				_local1.skinParts_mc.addChild(_local8);
				_local1.overlayParts_mc.addChild(_local14);
				if (_local1.disabledAtStart){
					_local8.gotoAndStop("disabled");
				} else {
					_local8.gotoAndStop("up");
				};
				_local6 = (getDefinitionByName(SmartButton.redSkins[1]) as Class);
				_local13 = (getDefinitionByName(SmartButton.smallOverlaySkins[1]) as Class);
				_local15 = new (_local13);
				_local15.x = _local1.smallSkinWidths;
				_local15.width = (_local1.smallSkinWidths * _local4);
				_local1.overlayParts_mc.addChild(_local15);
				_local2 = 0;
				while (_local2 < _local4) {
					_local9 = new (_local6);
					_local9.x = (_local1.smallSkinWidths + (_local2 * _local1.smallSkinWidths));
					_local1.skinParts_mc.addChild(_local9);
					if (_local1.disabledAtStart){
						_local9.gotoAndStop("disabled");
					} else {
						_local9.gotoAndStop("up");
					};
					_local2++;
				};
				_local7 = (getDefinitionByName(SmartButton.redSkins[2]) as Class);
				_local10 = new (_local7);
				_local12 = (getDefinitionByName(SmartButton.smallOverlaySkins[2]) as Class);
				_local16 = new (_local12);
				_local10.x = (_local1.smallSkinWidths * (_local4 + 1));
				_local16.x = _local10.x;
				_local1.skinParts_mc.addChild(_local10);
				_local1.overlayParts_mc.addChild(_local16);
				if (_local1.disabledAtStart){
					_local10.gotoAndStop("disabled");
				} else {
					_local10.gotoAndStop("up");
				};
			} else {
				if (_local1.size == "small"){
					_local4 = (Math.ceil((_local1.labelField.width / smallSkinWidths)) - 2);
					_local5 = (getDefinitionByName(SmartButton.smallSkins[0]) as Class);
					_local8 = new (_local5);
					_local11 = (getDefinitionByName(SmartButton.smallOverlaySkins[0]) as Class);
					_local14 = new (_local11);
					_local1.skinParts_mc.addChild(_local8);
					_local1.overlayParts_mc.addChild(_local14);
					if (_local1.disabledAtStart){
						_local8.gotoAndStop("disabled");
					} else {
						_local8.gotoAndStop("up");
					};
					_local6 = (getDefinitionByName(SmartButton.smallSkins[1]) as Class);
					_local13 = (getDefinitionByName(SmartButton.smallOverlaySkins[1]) as Class);
					_local15 = new (_local13);
					_local15.x = _local1.smallSkinWidths;
					_local15.width = (_local1.smallSkinWidths * _local4);
					_local1.overlayParts_mc.addChild(_local15);
					_local2 = 0;
					while (_local2 < _local4) {
						_local9 = new (_local6);
						_local9.x = (_local1.smallSkinWidths + (_local2 * _local1.smallSkinWidths));
						_local1.skinParts_mc.addChild(_local9);
						if (_local1.disabledAtStart){
							_local9.gotoAndStop("disabled");
						} else {
							_local9.gotoAndStop("up");
						};
						_local2++;
					};
					_local7 = (getDefinitionByName(SmartButton.smallSkins[2]) as Class);
					_local10 = new (_local7);
					_local12 = (getDefinitionByName(SmartButton.smallOverlaySkins[2]) as Class);
					_local16 = new (_local12);
					_local10.x = (_local1.smallSkinWidths * (_local4 + 1));
					_local16.x = _local10.x;
					_local1.skinParts_mc.addChild(_local10);
					_local1.overlayParts_mc.addChild(_local16);
					if (_local1.disabledAtStart){
						_local10.gotoAndStop("disabled");
					} else {
						_local10.gotoAndStop("up");
					};
				} else {
					if (_local1.size == "large"){
						_local4 = (Math.ceil((_local1.labelField.width / largeSkinWidths)) - 2);
						_local5 = (getDefinitionByName(SmartButton.largeSkins[0]) as Class);
						_local8 = new (_local5);
						_local11 = (getDefinitionByName(SmartButton.largeOverlaySkins[0]) as Class);
						_local14 = new (_local11);
						_local1.skinParts_mc.addChild(_local8);
						_local1.overlayParts_mc.addChild(_local14);
						if (_local1.disabledAtStart){
							_local8.gotoAndStop("disabled");
						} else {
							_local8.gotoAndStop("up");
						};
						_local6 = (getDefinitionByName(SmartButton.largeSkins[1]) as Class);
						_local13 = (getDefinitionByName(SmartButton.largeOverlaySkins[1]) as Class);
						_local15 = new (_local13);
						_local15.x = _local1.largeSkinWidths;
						_local15.width = (_local1.largeSkinWidths * _local4);
						_local1.overlayParts_mc.addChild(_local15);
						_local2 = 0;
						while (_local2 < _local4) {
							_local9 = new (_local6);
							_local9.x = (_local1.largeSkinWidths + (_local2 * _local1.largeSkinWidths));
							_local1.skinParts_mc.addChild(_local9);
							if (_local1.disabledAtStart){
								_local9.gotoAndStop("disabled");
							} else {
								_local9.gotoAndStop("up");
							};
							_local2++;
						};
						_local7 = (getDefinitionByName(SmartButton.largeSkins[2]) as Class);
						_local10 = new (_local7);
						_local12 = (getDefinitionByName(SmartButton.largeOverlaySkins[2]) as Class);
						_local16 = new (_local12);
						_local10.x = (_local1.largeSkinWidths * (_local4 + 1));
						_local16.x = _local10.x;
						_local1.skinParts_mc.addChild(_local10);
						_local1.overlayParts_mc.addChild(_local16);
						if (_local1.disabledAtStart){
							_local10.gotoAndStop("disabled");
						} else {
							_local10.gotoAndStop("up");
						};
					};
				};
			};
		}
		private function setFilters(_arg1:Boolean=false){
			var _local3:GlowFilter;
			var _local2:SmartButton = this;
			if (_arg1){
				_local2.labelField.filters = [];
			} else {
				_local3 = new GlowFilter(16774818, 1, 2, 2, 0xFF);
				if (_local2.isRed){
					_local3.color = 15258579;
				};
				_local2.labelField.filters = [_local3];
			};
		}
		private function getTextFormat(_arg1:Boolean=false):TextFormat{
			var _local2:SmartButton = this;
			var _local3:TextFormat = new TextFormat();
			_local3.font = FliplineAPI.BUTTON_FONT_FAMILY;
			if (_arg1){
				_local3.color = FliplineAPI.BUTTON_FONT_DISABLED_COLOR;
			} else {
				if (_local2.isRed){
					_local3.color = FliplineAPI.RED_BUTTON_FONT_COLOR;
				} else {
					_local3.color = FliplineAPI.BUTTON_FONT_COLOR;
				};
			};
			if (_local2.size == "large"){
				_local3.size = FliplineAPI.LARGE_BUTTON_FONT_SIZE;
			} else {
				_local3.size = FliplineAPI.SMALL_BUTTON_FONT_SIZE;
			};
			_local3.bold = FliplineAPI.BUTTON_TEXT_BOLD;
			_local3.align = TextFormatAlign.CENTER;
			_local3.kerning = true;
			_local3.letterSpacing = -0.5;
			return (_local3);
		}
		public function destroy(){
			var _local1:SmartButton = this;
			if (((_local1.parent) && (_local1.parent.contains(_local1)))){
				_local1.parent.removeChild(_local1);
			};
			_local1.removeChild(_local1.skinParts_mc);
			_local1.removeChild(_local1.overlayParts_mc);
			_local1.removeChild(_local1.labelField);
			_local1.skinParts_mc = null;
			_local1.overlayParts_mc = null;
			_local1.removeEventListener(MouseEvent.ROLL_OVER, _local1.onRollOverButton);
			_local1.removeEventListener(MouseEvent.ROLL_OUT, _local1.onRollOutButton);
			_local1.removeEventListener(MouseEvent.CLICK, _local1.onClickButton);
		}
		private function onClickButton(_arg1:MouseEvent){
			var _local2:SmartButton = this;
			if (_local2.isEnabled){
				if (_local2.type == "link"){
					if (_local2.usePlaytomic){
						Link.Open(_local2.linkURL, _local2.label, "LinkButtons");
					} else {
						navigateToURL(new URLRequest(_local2.linkURL), "_blank");
					};
				} else {
					if (_local2.type == "button"){
						dispatchEvent(new MenuButtonEvent(_local2.eventLabel, true));
					} else {
						if (_local2.type == "custom"){
						};
					};
				};
			};
		}
		private function onRollOverButton(_arg1:MouseEvent){
			var _local2:SmartButton = this;
			if (_local2.isEnabled){
				_local2.overlayParts_mc.visible = true;
			};
		}
		private function onRollOutButton(_arg1:MouseEvent){
			var _local2:SmartButton = this;
			if (_local2.isEnabled){
				_local2.overlayParts_mc.visible = false;
			};
		}
		public function enable(){
			var _local1:SmartButton = this;
			_local1.isEnabled = true;
			_local1.labelField.setTextFormat(_local1.getTextFormat());
			_local1.setFilters();
			var _local2:* = 0;
			while (_local2 < _local1.skinParts_mc.numChildren) {
				MovieClip(_local1.skinParts_mc.getChildAt(_local2)).gotoAndStop("up");
				_local2++;
			};
		}
		public function disable(){
			var _local1:SmartButton = this;
			_local1.isEnabled = false;
			_local1.overlayParts_mc.visible = false;
			_local1.labelField.setTextFormat(_local1.getTextFormat(true));
			_local1.setFilters(true);
			var _local2:* = 0;
			while (_local2 < _local1.skinParts_mc.numChildren) {
				MovieClip(_local1.skinParts_mc.getChildAt(_local2)).gotoAndStop("disabled");
				_local2++;
			};
		}

	}
}//package flipline.api.assets 

****************

//MenuButtonData (flipline.api.data.MenuButtonData)
package flipline.api.data {

	public class MenuButtonData {

		public var label:String;
		public var size:String;
		public var isRed:Boolean;
		public var isRaised:Boolean;
		public var clickType:String;
		public var eventLabel:String;
		public var linkURL:String;
		public var customClickHandler;
		public var disabledAtStart:Boolean;
		public var isTopButton:Boolean;
		public var usePlaytomic:Boolean;

		public function MenuButtonData(_arg1:String, _arg2:String, _arg3:Boolean, _arg4:Boolean, _arg5:String, _arg6:String, _arg7:String, _arg8, _arg9:Boolean, _arg10:Boolean, _arg11:Boolean){
			this.label = _arg1;
			this.size = _arg2;
			this.isRed = _arg3;
			this.isRaised = _arg4;
			this.clickType = _arg5;
			this.eventLabel = _arg6;
			this.linkURL = _arg7;
			this.customClickHandler = _arg8;
			this.disabledAtStart = _arg9;
			this.isTopButton = _arg10;
			this.usePlaytomic = _arg11;
		}
	}
}//package flipline.api.data 

****************

//MenuScreenData (flipline.api.data.MenuScreenData)
package flipline.api.data {
	import flipline.api.*;

	public class MenuScreenData {

		private var api:FliplineAPI;
		public var label:String;
		public var gameClass:String;
		public var showTitle:Boolean;
		public var titleLabel:String;
		public var showMute:Boolean;
		public var mutePosition:String;
		public var showFliplineLogo:Boolean;// = false
		public var fliplineLogoSize:String;// = "small"
		public var fliplineLogoPosition:String;// = ""
		public var fliplineLogoURL:String;// = ""
		public var showDevTag:Boolean;// = false
		public var showSponsorLogo:Boolean;// = false
		public var sponsorLogoSize:String;// = "small"
		public var sponsorLogoPosition:String;// = ""
		public var sponsorLogoURL:String;// = ""
		public var showSponsorTag:Boolean;// = false
		public var showLicenseLogo:Boolean;// = false
		public var licenseLogoSize:String;// = "small"
		public var licenseLogoPosition:String;// = ""
		public var licenseLogoURL:String;// = ""
		public var showGetThisGame:Boolean;// = false
		public var getThisGameURL:String;// = ""
		public var showCopyrightMessage:Boolean;// = false
		public var copyrightText:String;// = ""
		public var isSplash:Boolean;// = false
		public var menuButtons:Array;

		public function MenuScreenData(_arg1:FliplineAPI, _arg2:String, _arg3:String, _arg4:Boolean=false, _arg5:String="", _arg6:Boolean=true, _arg7:String="top left", _arg8:Boolean=false){
			menuButtons = [];
			super();
			this.api = _arg1;
			this.label = _arg2;
			this.gameClass = _arg3;
			this.showTitle = _arg4;
			this.titleLabel = _arg5;
			this.showMute = _arg6;
			this.mutePosition = _arg7;
			this.isSplash = _arg8;
		}
		public function setupFliplineLogo(_arg1:Boolean=true, _arg2:String="bottom left", _arg3:String="http://www.flipline.com", _arg4:Boolean=false, _arg5:String="small"){
			this.showFliplineLogo = _arg1;
			this.fliplineLogoPosition = _arg2;
			this.fliplineLogoURL = _arg3;
			this.fliplineLogoSize = _arg5;
			this.showDevTag = _arg4;
		}
		public function setupSponsorLogo(_arg1:Boolean, _arg2:String, _arg3:String, _arg4:Boolean, _arg5:String){
			this.showSponsorLogo = _arg1;
			this.sponsorLogoPosition = _arg2;
			this.sponsorLogoURL = _arg3;
			this.showSponsorTag = _arg4;
			this.sponsorLogoSize = _arg5;
		}
		public function setupLicenseLogo(_arg1:Boolean, _arg2:String, _arg3:String, _arg4:String){
			this.showLicenseLogo = _arg1;
			this.licenseLogoPosition = _arg2;
			this.licenseLogoURL = _arg3;
			this.licenseLogoSize = _arg4;
		}
		public function setupGetThisGame(_arg1:Boolean, _arg2:String){
			this.showGetThisGame = _arg1;
			this.getThisGameURL = _arg2;
		}
		public function setupCopyrightMessage(_arg1:Boolean, _arg2:String){
			this.showCopyrightMessage = _arg1;
			this.copyrightText = _arg2;
		}
		public function setupButton(_arg1:String, _arg2:String, _arg3:Boolean, _arg4:Boolean, _arg5:String, _arg6:String, _arg7:String, _arg8, _arg9:Boolean, _arg10:Boolean){
			var _local11:MenuButtonData = new MenuButtonData(_arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8, _arg9, _arg10, this.api.usePlaytomic);
			this.menuButtons.push(_local11);
		}
		public function setupLargeButton(_arg1:String, _arg2:String, _arg3:Boolean=false, _arg4:Boolean=false){
			var _local5:MenuButtonData = new MenuButtonData(_arg1, "large", false, _arg3, "button", _arg2, "", null, _arg4, false, this.api.usePlaytomic);
			this.menuButtons.push(_local5);
		}
		public function setupTopButton(_arg1:String, _arg2:String, _arg3:Boolean=false){
			var _local4:MenuButtonData = new MenuButtonData(_arg1, "small", _arg3, false, "button", _arg2, "", null, false, true, this.api.usePlaytomic);
			this.menuButtons.push(_local4);
		}
		public function setupNormalButton(_arg1:String, _arg2:String, _arg3:Boolean=false){
			var _local4:MenuButtonData = new MenuButtonData(_arg1, "small", false, false, "button", _arg2, "", null, _arg3, false, this.api.usePlaytomic);
			this.menuButtons.push(_local4);
		}
		public function setupLinkButton(_arg1:String, _arg2:String, _arg3:Boolean=false){
			var _local4:MenuButtonData = new MenuButtonData(_arg1, "small", false, false, "link", "", _arg2, null, _arg3, false, this.api.usePlaytomic);
			this.menuButtons.push(_local4);
		}
		public function setupCustomButton(_arg1:String, _arg2, _arg3:Boolean=false){
			var _local4:MenuButtonData = new MenuButtonData(_arg1, "small", false, false, "custom", "", "", _arg2, _arg3, false, this.api.usePlaytomic);
			this.menuButtons.push(_local4);
		}

	}
}//package flipline.api.data 

****************

//MenuButtonEvent (flipline.api.events.MenuButtonEvent)
package flipline.api.events {
	import flash.events.*;

	public class MenuButtonEvent extends Event {

		public function MenuButtonEvent(_arg1:String, _arg2:Boolean=false, _arg3:Boolean=false){
			super(_arg1, _arg2, _arg3);
		}
		override public function clone():Event{
			return (new MenuButtonEvent(type, bubbles, cancelable));
		}
		override public function toString():String{
			return (formatToString("MenuButtonEvent", "type", "bubbles", "cancelable", "eventPhase"));
		}

	}
}//package flipline.api.events 

****************

//APIUtility (flipline.api.utils.APIUtility)
package flipline.api.utils {
	import flash.display.*;
	import flash.utils.*;

	public class APIUtility {

		public function getNewMovieClip(_arg1:String):MovieClip{
			var _local2:Class = (getDefinitionByName(_arg1) as Class);
			var _local3:MovieClip = (new (_local2) as MovieClip);
			_local3.tabEnabled = false;
			return (_local3);
		}
		public function getNewSimpleButton(_arg1:String):SimpleButton{
			var _local2:Class = (getDefinitionByName(_arg1) as Class);
			var _local3:SimpleButton = (new (_local2) as SimpleButton);
			_local3.tabEnabled = false;
			return (_local3);
		}
		public function getClassInstance(_arg1:String, _arg2, _arg3, _arg4:Object=null){
			var _local5:Class = (getDefinitionByName(_arg1) as Class);
			var _local6:* = new _local5(_arg2, _arg3, _arg4);
			return (_local6);
		}

	}
}//package flipline.api.utils 

****************

//ArrayUtility (flipline.api.utils.ArrayUtility)
package flipline.api.utils {

	public class ArrayUtility {

		public static function copyMultiArray(_arg1:Array):Array{
			var _local3:*;
			var _local2:Array = [];
			if (_arg1 != null){
				_local3 = 0;
				while (_local3 < _arg1.length) {
					if ((_arg1[_local3] is Array)){
						_local2[_local3] = ArrayUtility.copyMultiArray(_arg1[_local3]);
					} else {
						_local2[_local3] = _arg1[_local3];
					};
					_local3++;
				};
			};
			return (_local2);
		}

	}
}//package flipline.api.utils 

****************

//StringUtility (flipline.api.utils.StringUtility)
package flipline.api.utils {

	public class StringUtility {

		public static function addCommasToNumber(_arg1:Number):String{
			var _local5:Number;
			var _local2:String = String(_arg1);
			var _local3 = "";
			var _local4:* = (_local2.length - 1);
			while (_local4 >= 0) {
				_local5 = ((_local2.length - 1) - _local4);
				if (((((((_local5 % 3) == 0)) && ((_local5 > 0)))) && (!((_local2.charAt(_local4) == "-"))))){
					_local3 = ("," + _local3);
				};
				_local3 = (_local2.charAt(_local4) + _local3);
				_local4--;
			};
			return (_local3);
		}
		public static function convertFramesToTimecode(_arg1:Number, _arg2:Boolean=true, _arg3:Boolean=false):String{
			var _local4:Number = _arg1;
			var _local5 = "";
			var _local6:Number = 0;
			if (_arg3){
				_local6 = Math.floor((((_arg1 / 30) / 60) / 60));
				_local4 = (_local4 - (((_local6 * 30) * 60) * 60));
			};
			var _local7:Number = Math.floor(((_local4 / 30) / 60));
			_local4 = (_local4 - ((_local7 * 30) * 60));
			var _local8:Number = Math.floor((_local4 / 30));
			_local4 = (_local4 - (_local8 * 30));
			var _local9:Number = Math.round(((_local4 / 30) * 100));
			if (_arg3){
				if (_local6 < 10){
					_local5 = (_local5 + "0");
				};
				_local5 = (_local5 + (String(_local6) + ":"));
			};
			if (_local7 < 10){
				_local5 = (_local5 + "0");
			};
			_local5 = (_local5 + (String(_local7) + ":"));
			if (_local8 < 10){
				_local5 = (_local5 + "0");
			};
			_local5 = (_local5 + String(_local8));
			if (_arg2){
				_local5 = (_local5 + ":");
				if (_local9 < 10){
					_local5 = (_local5 + "0");
				};
				_local5 = (_local5 + String(_local9));
			};
			return (_local5);
		}

	}
}//package flipline.api.utils 

****************

//FliplineAPI (flipline.api.FliplineAPI)
package flipline.api {
	import flash.display.*;
	import flash.events.*;
	import Playtomic.*;
	import flipline.api.data.*;
	import flash.net.*;
	import flipline.api.assets.*;
	import flipline.api.utils.*;

	public class FliplineAPI extends EventDispatcher {

		public var gameRoot;
		public var container:DisplayObjectContainer;
		public var util:APIUtility;
		public var gameWidth:Number;// = 1
		public var gameHeight:Number;// = 1
		public var screenDataFiles:Array;
		public var screenSet:Array;
		public var isMuted:Boolean;// = false
		private var scoreboard:Scoreboard;
		private var allowedSites:Array;
		private var blockAdsOnSites:Array;
		private var unlockBonusOnSites:Array;
		private var sponsorSite:Array;
		private var licenseSite:Array;
		private var fliplineSites:Array;
		private var licenseSandboxes:Array;
		private var sponsorSandboxes:Array;
		private var devSandboxes:Array;
		public var usePlaytomic:Boolean;// = false
		public var playtomic_SWFID:Number;// = -1
		public var playtomic_GUID:String;// = ""

		public static const BUTTON_FONT_FAMILY:String = "Arial Black";
		public static const BUTTON_FONT_COLOR:uint = 7224074;
		public static const BUTTON_FONT_DISABLED_COLOR:uint = 0x333333;
		public static const RED_BUTTON_FONT_COLOR:uint = 9904417;
		public static const SMALL_BUTTON_FONT_SIZE:Number = 12;
		public static const LARGE_BUTTON_FONT_SIZE:Number = 24;
		public static const BUTTON_TEXT_BOLD:Boolean = false;
		public static const COPYRIGHT_FONT_FAMILY:String = "Arial";
		public static const COPYRIGHT_FONT_COLOR:uint = 11513774;
		public static const COPYRIGHT_FONT_SIZE:Number = 10;
		public static const COPYRIGHT_FONT_BOLD:Boolean = false;

		public function FliplineAPI(_arg1, _arg2:DisplayObjectContainer, _arg3:Number, _arg4:Number){
			screenDataFiles = [];
			screenSet = [];
			allowedSites = [];
			blockAdsOnSites = [];
			unlockBonusOnSites = [];
			sponsorSite = [];
			licenseSite = [];
			fliplineSites = [];
			licenseSandboxes = ["file:///L|/Games/License%20Sandbox/", "file:///L:/Games/License Sandbox/", "file:///D|/License%20Sandbox/", "file:///D:/License Sandbox/", "file:///J|/License%20Sandbox/", "file:///J:/License Sandbox/"];
			sponsorSandboxes = ["file:///L|/Games/Sponsor%20Sandbox/", "file:///L:/Games/Sponsor Sandbox/", "file:///D|/Sponsor%20Sandbox/", "file:///D:/Sponsor Sandbox/", "file:///J|/Sponsor%20Sandbox/", "file:///J:/Sponsor Sandbox/"];
			devSandboxes = [];
			super();
			this.gameRoot = _arg1;
			this.container = _arg2;
			this.gameWidth = _arg3;
			this.gameHeight = _arg4;
			this.initAPI();
		}
		public function initAPI(){
			var _local1:FliplineAPI = this;
			this.util = new APIUtility();
			debugTrace("API Initialized");
		}
		public function initMuteListeners(_arg1){
			var _local2:FliplineAPI = this;
			_arg1.addEventListener("soundIsMuted", _local2.getSoundIsMuted);
			_arg1.addEventListener("soundIsNotMuted", _local2.getSoundIsNotMuted);
		}
		public function initPlaytomic(_arg1:Number, _arg2:String){
			var _local3:FliplineAPI = this;
			_local3.usePlaytomic = true;
			_local3.playtomic_SWFID = _arg1;
			_local3.playtomic_GUID = _arg2;
			Log.View(_arg1, _arg2, _local3.getMainLoaderInfo().loaderURL);
		}
		public function trackLevelMetric(_arg1:String, _arg2:Number, _arg3:String="counter", _arg4:Number=-1){
			var _local5:FliplineAPI = this;
			if (_local5.usePlaytomic){
				if (_arg3 == "counter"){
					Log.LevelCounterMetric(_arg1, _arg2);
				} else {
					if (_arg3 == "average"){
						Log.LevelAverageMetric(_arg1, _arg2, _arg4);
					} else {
						if (_arg3 == "ranged"){
							Log.LevelRangedMetric(_arg1, _arg2, _arg4);
						};
					};
				};
			};
		}
		public function trackCustomMetric(_arg1:String, _arg2:String=null, _arg3:Boolean=false){
			var _local4:FliplineAPI = this;
			if (_local4.usePlaytomic){
				Log.CustomMetric(_arg1, _arg2, _arg3);
			};
		}
		public function trackStartPlay(){
			var _local1:FliplineAPI = this;
			if (_local1.usePlaytomic){
				Log.Play();
			};
		}
		public function trackingForceSend(){
			var _local1:FliplineAPI = this;
			if (_local1.usePlaytomic){
				Log.ForceSend();
			};
		}
		public function goToLink(_arg1:String, _arg2:String, _arg3:String="Links"){
			var _local4:FliplineAPI = this;
			if (_local4.usePlaytomic){
				Link.Open(_arg1, _arg2, _arg3);
			} else {
				navigateToURL(new URLRequest(_arg1), "_blank");
			};
		}
		public function defineScreen(_arg1:String, _arg2:String, _arg3:Boolean=false, _arg4:String="", _arg5:Boolean=true, _arg6:String="top right", _arg7:Boolean=false):MenuScreenData{
			var _local8:FliplineAPI = this;
			var _local9:MenuScreenData = new MenuScreenData(_local8, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7);
			_local8.screenDataFiles.push(_local9);
			return (_local9);
		}
		public function showScreen(_arg1:String, _arg2:Object=null){
			var _local5:MenuScreenData;
			var _local3:FliplineAPI = this;
			var _local4:Boolean;
			if (_local3.screenDataFiles.length > 0){
				_local5 = _local3.getScreenData(_arg1);
				if (_local5 != null){
					_local3.createScreen(_local5, _arg2);
				} else {
					debugTrace((("Could not find a Menu Screen for " + _arg1) + "."));
				};
			} else {
				debugTrace("No Menu Screens are set up!");
			};
		}
		public function createScreen(_arg1:MenuScreenData, _arg2:Object){
			var _local3:FliplineAPI = this;
			var _local4:MenuScreen = new MenuScreen(_local3, _arg1, _arg2);
			_local3.screenSet.push(_local4);
		}
		public function getScreenData(_arg1:String):MenuScreenData{
			var _local4:*;
			var _local5:MenuScreenData;
			var _local2:FliplineAPI = this;
			var _local3:MenuScreenData;
			if (_local2.screenDataFiles.length > 0){
				_local4 = 0;
				while (_local4 < _local2.screenDataFiles.length) {
					_local5 = _local2.screenDataFiles[_local4];
					if (_local5.label == _arg1){
						_local3 = _local5;
						break;
					};
					_local4++;
				};
			};
			return (_local3);
		}
		public function removeScreen(_arg1:String=null, _arg2:MenuScreenData=null, _arg3:MenuScreen=null){
			var _local5:Number;
			var _local4:FliplineAPI = this;
			var _local6:Number = -1;
			var _local7:MenuScreen;
			if (_arg1 != null){
				_local5 = 0;
				while (_local5 < _local4.screenSet.length) {
					if (_local4.screenSet[_local5].getLabel() == _arg1){
						_local7 = _local4.screenSet[_local5];
						_local6 = _local5;
						break;
					};
					_local5++;
				};
			} else {
				if (_arg2 != null){
					_local5 = 0;
					while (_local5 < _local4.screenSet.length) {
						if (_local4.screenSet[_local5].getLabel() == _arg2.label){
							_local7 = _local4.screenSet[_local5];
							_local6 = _local5;
							break;
						};
						_local5++;
					};
				} else {
					if (_arg3 != null){
						_local5 = 0;
						while (_local5 < _local4.screenSet.length) {
							if (_local4.screenSet[_local5].getLabel() == _arg3.getLabel()){
								_local7 = _local4.screenSet[_local5];
								_local6 = _local5;
								break;
							};
							_local5++;
						};
					};
				};
			};
			if (_local7){
				_local7.destroy();
				_local7 = null;
			};
			_local4.screenSet.splice(_local6, 1);
		}
		public function hasScreen(_arg1:String):Boolean{
			var _local4:*;
			var _local2:FliplineAPI = this;
			var _local3:Boolean;
			if (_local2.screenSet.length > 0){
				_local4 = 0;
				while (_local4 < _local2.screenSet.length) {
					if (_local2.screenSet[_local4].getLabel() == _arg1){
						_local3 = true;
						break;
					};
					_local4++;
				};
			};
			return (_local3);
		}
		public function disableButtons(_arg1:String="all"){
			var _local3:*;
			var _local2:FliplineAPI = this;
			if (_local2.screenSet.length > 0){
				_local3 = 0;
				while (_local3 < _local2.screenSet.length) {
					if ((((_local2.screenSet[_local3].getLabel() == _arg1)) || ((_arg1 == "all")))){
						_local2.screenSet[_local3].disableButtons();
						if (_arg1 != "all"){
							break;
						};
					};
					_local3++;
				};
			};
		}
		public function enableButtons(_arg1:String="all"){
			var _local3:*;
			var _local2:FliplineAPI = this;
			if (_local2.screenSet.length > 0){
				_local3 = 0;
				while (_local3 < _local2.screenSet.length) {
					if ((((_local2.screenSet[_local3].getLabel() == _arg1)) || ((_arg1 == "all")))){
						_local2.screenSet[_local3].enableButtons();
						if (_arg1 != "all"){
							break;
						};
					};
					_local3++;
				};
			};
		}
		public function setScreenTitle(_arg1:String, _arg2:String="all"){
			var _local4:*;
			var _local3:FliplineAPI = this;
			if (_local3.screenSet.length > 0){
				_local4 = 0;
				while (_local4 < _local3.screenSet.length) {
					if ((((_local3.screenSet[_local4].getLabel() == _arg2)) || ((_arg2 == "all")))){
						_local3.screenSet[_local4].setTitle(_arg1);
						if (_arg2 != "all"){
							break;
						};
					};
					_local4++;
				};
			};
		}
		public function transitionScreenOut(_arg1:String="all"){
			var _local3:*;
			var _local2:FliplineAPI = this;
			if (_local2.screenSet.length > 0){
				_local3 = 0;
				while (_local3 < _local2.screenSet.length) {
					if ((((_local2.screenSet[_local3].getLabel() == _arg1)) || ((_arg1 == "all")))){
						_local2.screenSet[_local3].startTransitionOut();
						if (_arg1 != "all"){
							break;
						};
					};
					_local3++;
				};
			};
		}
		public function debugTrace(_arg1:String){
			var _local2:FliplineAPI = this;
		}
		public function getSoundIsMuted(_arg1:Event){
			var _local2:FliplineAPI = this;
			_local2.isMuted = true;
		}
		public function getSoundIsNotMuted(_arg1:Event){
			var _local2:FliplineAPI = this;
			_local2.isMuted = false;
		}
		public function setSoundMute(){
			var _local1:FliplineAPI = this;
			dispatchEvent(new Event("muteSound", true));
			_local1.isMuted = true;
		}
		public function setSoundUnmute(){
			var _local1:FliplineAPI = this;
			dispatchEvent(new Event("unmuteSound", true));
			_local1.isMuted = false;
		}
		private function getMainLoaderInfo():LoaderInfo{
			var _local1:LoaderInfo = this.container.root.loaderInfo;
			if (_local1.loader != null){
				_local1 = _local1.loader.loaderInfo;
			};
			return (_local1);
		}
		public function initSiteLocking(_arg1:Array, _arg2:Array, _arg3:Array, _arg4:Array, _arg5:Array, _arg6:Array, _arg7:Array){
			var _local8:FliplineAPI = this;
			_local8.allowedSites = _arg1;
			_local8.blockAdsOnSites = _arg2;
			_local8.unlockBonusOnSites = _arg3;
			_local8.sponsorSite = _arg4;
			_local8.licenseSite = _arg5;
			_local8.devSandboxes = _arg6;
			_local8.fliplineSites = _arg7;
		}
		public function isAllowedDomain():Boolean{
			var _local3:Number;
			var _local5:String;
			var _local6:String;
			var _local7:int;
			var _local1:FliplineAPI = this;
			var _local2:Boolean;
			var _local4:* = 0;
			while (_local4 < _local1.allowedSites.length) {
				_local5 = _local1.allowedSites[_local4];
				_local6 = _local1.getMainLoaderInfo().url.split("/")[2];
				_local7 = _local6.indexOf(_local5);
				if (((((!((_local7 == -1))) && ((_local7 == (_local6.length - _local5.length))))) && ((((_local7 == 0)) || ((_local6.charAt((_local7 - 1)) == ".")))))){
					_local2 = true;
					break;
				} else {
					if ((((_local6 == "")) && (((((_local1.inDevSandbox()) || (_local1.inLicenseSandbox()))) || (_local1.inSponsorSandbox()))))){
						_local2 = true;
						break;
					};
				};
				_local4++;
			};
			_local2 = true;
			return (_local2);
		}
		private function inDevSandbox():Boolean{
			var _local1:FliplineAPI = this;
			var _local2:String = _local1.getMainLoaderInfo().url;
			var _local3:Boolean;
			var _local4:* = 0;
			while (_local4 < _local1.devSandboxes.length) {
				if (_local2.indexOf(_local1.devSandboxes[_local4]) == 0){
					_local3 = true;
					break;
				};
				_local4++;
			};
			return (_local3);
		}
		private function inLicenseSandbox():Boolean{
			var _local1:FliplineAPI = this;
			var _local2:String = _local1.getMainLoaderInfo().url;
			var _local3:Boolean;
			var _local4:* = 0;
			while (_local4 < _local1.licenseSandboxes.length) {
				if (_local2.indexOf(_local1.licenseSandboxes[_local4]) == 0){
					_local3 = true;
					break;
				};
				_local4++;
			};
			return (_local3);
		}
		private function inSponsorSandbox():Boolean{
			var _local1:FliplineAPI = this;
			var _local2:String = _local1.getMainLoaderInfo().url;
			var _local3:Boolean;
			var _local4:* = 0;
			while (_local4 < _local1.sponsorSandboxes.length) {
				if (_local2.indexOf(_local1.sponsorSandboxes[_local4]) == 0){
					_local3 = true;
					break;
				};
				_local4++;
			};
			return (_local3);
		}
		public function domainBlocksAds():Boolean{
			var _local4:String;
			var _local5:String;
			var _local6:int;
			var _local1:FliplineAPI = this;
			var _local2:Boolean;
			var _local3:* = 0;
			while (_local3 < _local1.blockAdsOnSites.length) {
				_local4 = _local1.blockAdsOnSites[_local3];
				_local5 = _local1.getMainLoaderInfo().url.split("/")[2];
				_local6 = _local5.indexOf(_local4);
				if (((((!((_local6 == -1))) && ((_local6 == (_local5.length - _local4.length))))) && ((((_local6 == 0)) || ((_local5.charAt((_local6 - 1)) == ".")))))){
					_local2 = true;
					break;
				} else {
					if ((((_local5 == "")) && (((((_local1.inDevSandbox()) || (_local1.inLicenseSandbox()))) || (_local1.inSponsorSandbox()))))){
						_local2 = true;
						break;
					};
				};
				_local3++;
			};
			_local2 = true;
			return (_local2);
		}
		public function domainUnlocksBonus():Boolean{
			var _local4:String;
			var _local5:String;
			var _local6:int;
			var _local1:FliplineAPI = this;
			var _local2:Boolean;
			var _local3:* = 0;
			while (_local3 < _local1.unlockBonusOnSites.length) {
				_local4 = _local1.unlockBonusOnSites[_local3];
				_local5 = _local1.getMainLoaderInfo().url.split("/")[2];
				_local6 = _local5.indexOf(_local4);
				if (((((!((_local6 == -1))) && ((_local6 == (_local5.length - _local4.length))))) && ((((_local6 == 0)) || ((_local5.charAt((_local6 - 1)) == ".")))))){
					_local2 = true;
					break;
				};
				_local3++;
			};
			return (_local2);
		}
		public function onSponsorSite():Boolean{
			var _local4:String;
			var _local5:String;
			var _local6:int;
			var _local1:FliplineAPI = this;
			var _local2:Boolean;
			var _local3:* = 0;
			while (_local3 < _local1.sponsorSite.length) {
				_local4 = _local1.sponsorSite[_local3];
				_local5 = _local1.getMainLoaderInfo().url.split("/")[2];
				_local6 = _local5.indexOf(_local4);
				if (((((!((_local6 == -1))) && ((_local6 == (_local5.length - _local4.length))))) && ((((_local6 == 0)) || ((_local5.charAt((_local6 - 1)) == ".")))))){
					_local2 = true;
					break;
				} else {
					if ((((_local5 == "")) && (((_local1.inDevSandbox()) || (_local1.inSponsorSandbox()))))){
						_local2 = true;
						break;
					};
				};
				_local3++;
			};
			return (_local2);
		}
		public function onLicenseSite():Boolean{
			var _local4:String;
			var _local5:String;
			var _local6:int;
			var _local1:FliplineAPI = this;
			var _local2:Boolean;
			var _local3:* = 0;
			while (_local3 < _local1.licenseSite.length) {
				_local4 = _local1.licenseSite[_local3];
				_local5 = _local1.getMainLoaderInfo().url.split("/")[2];
				_local6 = _local5.indexOf(_local4);
				if (((((!((_local6 == -1))) && ((_local6 == (_local5.length - _local4.length))))) && ((((_local6 == 0)) || ((_local5.charAt((_local6 - 1)) == ".")))))){
					_local2 = true;
					break;
				} else {
					if ((((_local5 == "")) && (_local1.inLicenseSandbox()))){
						_local2 = true;
						break;
					};
				};
				_local3++;
			};
			return (_local2);
		}
		public function onFliplineSite():Boolean{
			var _local4:String;
			var _local5:String;
			var _local6:int;
			var _local1:FliplineAPI = this;
			var _local2:Boolean;
			var _local3:* = 0;
			while (_local3 < _local1.fliplineSites.length) {
				_local4 = _local1.fliplineSites[_local3];
				_local5 = _local1.getMainLoaderInfo().url.split("/")[2];
				_local6 = _local5.indexOf(_local4);
				if (((((!((_local6 == -1))) && ((_local6 == (_local5.length - _local4.length))))) && ((((_local6 == 0)) || ((_local5.charAt((_local6 - 1)) == ".")))))){
					_local2 = true;
					break;
				};
				_local3++;
			};
			return (_local2);
		}
		public function showScoreboard(_arg1:String, _arg2:Function, _arg3:Boolean=false, _arg4:Boolean=false, _arg5:Boolean=false, _arg6:String="Anonymous", _arg7:Number=0, _arg8:Object=null){
			var _local9:FliplineAPI = this;
			if (_local9.scoreboard){
				_local9.removeScoreboard();
				if (_arg3){
					_local9.scoreboard = new Scoreboard(_local9, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
				};
			} else {
				_local9.scoreboard = new Scoreboard(_local9, _arg1, _arg2, _arg3, _arg4, _arg5, _arg6, _arg7, _arg8);
			};
		}
		public function removeScoreboard(){
			var _local1:FliplineAPI = this;
			if (_local1.scoreboard){
				_local1.scoreboard.destroy();
				_local1.scoreboard = null;
			};
		}

	}
}//package flipline.api 

****************

//wav (flipline_sound.wav)
package flipline_sound {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package flipline_sound 

****************

//wav (gameintro.wav)
package gameintro {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package gameintro 

****************

//wav (getcoin.wav)
package getcoin {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package getcoin 

****************

//wav (grabweapon.wav)
package grabweapon {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package grabweapon 

****************

//wav (hit_crate_1.wav)
package hit_crate_1 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package hit_crate_1 

****************

//wav (hit_crate_2.wav)
package hit_crate_2 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package hit_crate_2 

****************

//wav (impact_1.wav)
package impact_1 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package impact_1 

****************

//wav (impact_2.wav)
package impact_2 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package impact_2 

****************

//wav (impact_3.wav)
package impact_3 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package impact_3 

****************

//MochiAd (mochi.as3.MochiAd)
package mochi.as3 {
	import flash.display.*;
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;
	import flash.system.*;

	public class MochiAd {

		public static function getVersion():String{
			return (MochiServices.getVersion());
		}
		public static function doOnEnterFrame(_arg1:MovieClip):void{
			var mc = _arg1;
			var f:Function = function (_arg1:Object):void{
				if (((("onEnterFrame" in mc)) && (mc.onEnterFrame))){
					mc.onEnterFrame();
				} else {
					_arg1.target.removeEventListener(_arg1.type, arguments.callee);
				};
			};
			mc.addEventListener(Event.ENTER_FRAME, f);
		}
		public static function createEmptyMovieClip(_arg1:Object, _arg2:String, _arg3:Number):MovieClip{
			var _local4:MovieClip = new MovieClip();
			if (((false) && (_arg3))){
				_arg1.addChildAt(_local4, _arg3);
			} else {
				_arg1.addChild(_local4);
			};
			_arg1[_arg2] = _local4;
			_local4["_name"] = _arg2;
			return (_local4);
		}
		public static function showPreGameAd(_arg1:Object):void{
			var clip:Object;
			var mc:MovieClip;
			var chk:MovieClip;
			var complete:Boolean;
			var unloaded:Boolean;
			var sendHostProgress:Boolean;
			var fn:Function;
			var r:MovieClip;
			var options = _arg1;
			var DEFAULTS:Object = {ad_timeout:3000, fadeout_time:250, regpt:"o", method:"showPreloaderAd", color:0xFF8A00, background:16777161, outline:13994812, no_progress_bar:false, ad_started:function ():void{
				if ((this.clip is MovieClip)){
					this.clip.stop();
				} else {
					throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip.  If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
				};
			}, ad_finished:function ():void{
				if ((this.clip is MovieClip)){
					this.clip.play();
				} else {
					throw (new Error("MochiAd.showPreGameAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip.  If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
				};
			}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
			}, ad_failed:function ():void{
			}, ad_skipped:function ():void{
			}, ad_progress:function (_arg1:Number):void{
			}, progress_override:function (_arg1:Object):Number{
				return (NaN);
			}, bar_offset:0};
			options = MochiAd._parseOptions(options, DEFAULTS);
			if ("c862232051e0a94e1c3609b3916ddb17".substr(0) == "dfeada81ac97cde83665f81c12da7def"){
				options.ad_started();
				fn = function ():void{
					options.ad_finished();
				};
				setTimeout(fn, 100);
				return;
			};
			clip = options.clip;
			var ad_msec:Number = 11000;
			var ad_timeout:Number = options.ad_timeout;
			if (options.skip){
				ad_timeout = 0;
			};
			delete options.ad_timeout;
			var fadeout_time:Number = options.fadeout_time;
			delete options.fadeout_time;
			if (!MochiAd.load(options)){
				options.ad_failed();
				options.ad_finished();
				return;
			};
			options.ad_started();
			mc = clip._mochiad;
			mc["onUnload"] = function ():void{
				MochiAd._cleanup(mc);
				var fn:Function = function ():void{
					options.ad_finished();
				};
				setTimeout(fn, 100);
			};
			var wh:Array = MochiAd._getRes(options, clip);
			var w:Number = wh[0];
			var h:Number = wh[1];
			mc.x = (w * 0.5);
			mc.y = (h * 0.5);
			chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
			chk.x = (w * -0.5);
			chk.y = (h * -0.5);
			var bar:MovieClip = createEmptyMovieClip(chk, "_mochiad_bar", 4);
			if (options.no_progress_bar){
				bar.visible = false;
				delete options.no_progress_bar;
			} else {
				bar.x = (10 + options.bar_offset);
				bar.y = (h - 20);
			};
			var bar_w:Number = ((w - bar.x) - 10);
			var bar_color:Number = options.color;
			delete options.color;
			var bar_background:Number = options.background;
			delete options.background;
			var bar_outline:Number = options.outline;
			delete options.outline;
			var backing_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 1);
			var backing:Object = backing_mc.graphics;
			backing.beginFill(bar_background);
			backing.moveTo(0, 0);
			backing.lineTo(bar_w, 0);
			backing.lineTo(bar_w, 10);
			backing.lineTo(0, 10);
			backing.lineTo(0, 0);
			backing.endFill();
			var inside_mc:MovieClip = createEmptyMovieClip(bar, "_inside", 2);
			var inside:Object = inside_mc.graphics;
			inside.beginFill(bar_color);
			inside.moveTo(0, 0);
			inside.lineTo(bar_w, 0);
			inside.lineTo(bar_w, 10);
			inside.lineTo(0, 10);
			inside.lineTo(0, 0);
			inside.endFill();
			inside_mc.scaleX = 0;
			var outline_mc:MovieClip = createEmptyMovieClip(bar, "_outline", 3);
			var outline:Object = outline_mc.graphics;
			outline.lineStyle(0, bar_outline, 100);
			outline.moveTo(0, 0);
			outline.lineTo(bar_w, 0);
			outline.lineTo(bar_w, 10);
			outline.lineTo(0, 10);
			outline.lineTo(0, 0);
			chk.ad_msec = ad_msec;
			chk.ad_timeout = ad_timeout;
			chk.started = getTimer();
			chk.showing = false;
			chk.last_pcnt = 0;
			chk.fadeout_time = fadeout_time;
			chk.fadeFunction = function ():void{
				var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
				if (_local1 > 0){
					this.parent.alpha = (_local1 * 0.01);
				} else {
					MochiAd.unload(clip);
					delete this["onEnterFrame"];
				};
			};
			complete = false;
			unloaded = false;
			var progress:Number = Math.min(1, options.progress_override(clip));
			var f:Function = function (_arg1:Event):void{
				_arg1.target.removeEventListener(_arg1.type, arguments.callee);
				complete = true;
				if (unloaded){
					MochiAd.unload(clip);
				};
			};
			if (!isNaN(progress)){
				complete = (progress == 1);
			} else {
				if (clip.loaderInfo.bytesLoaded == clip.loaderInfo.bytesTotal){
					complete = true;
				} else {
					if ((clip.root is MovieClip)){
						r = (clip.root as MovieClip);
						if (r.framesLoaded >= r.totalFrames){
							complete = true;
						} else {
							clip.loaderInfo.addEventListener(Event.COMPLETE, f);
						};
					} else {
						clip.loaderInfo.addEventListener(Event.COMPLETE, f);
					};
				};
			};
			mc.unloadAd = function ():void{
				unloaded = true;
				if (complete){
					MochiAd.unload(clip);
				};
			};
			mc.adLoaded = options.ad_loaded;
			mc.adSkipped = options.ad_skipped;
			mc.adjustProgress = function (_arg1:Number):void{
				var _local2:Object = mc._mochiad_wait;
				_local2.server_control = true;
				_local2.showing = true;
				_local2.started = getTimer();
				_local2.ad_msec = _arg1;
			};
			mc.rpc = function (_arg1:Number, _arg2:Object):void{
				MochiAd.rpc(clip, _arg1, _arg2);
			};
			mc.rpcTestFn = function (_arg1:String):Object{
				return (_arg1);
			};
			sendHostProgress = false;
			mc.sendHostLoadProgress = function (_arg1:String):void{
				sendHostProgress = true;
			};
			chk["onEnterFrame"] = function ():void{
				var _local12:Number;
				if (((!(this.parent)) || (!(this.parent.parent)))){
					delete this["onEnterFrame"];
					return;
				};
				var _local1:Object = this.parent.parent.root;
				var _local2:Object = this.parent._mochiad_ctr;
				var _local3:Number = (getTimer() - this.started);
				var _local4:Boolean;
				var _local5:Number = _local1.loaderInfo.bytesTotal;
				var _local6:Number = _local1.loaderInfo.bytesLoaded;
				var _local7:Number = Math.min(1, options.progress_override(_local1));
				if (_local7 == 1){
					complete = true;
				};
				if (complete){
					_local6 = Math.max(1, _local6);
					_local5 = _local6;
				};
				var _local8:Number = ((100 * _local6) / _local5);
				if (!isNaN(_local7)){
					_local8 = (100 * _local7);
				};
				var _local9:Number = ((100 * _local3) / chk.ad_msec);
				var _local10:Object = this._mochiad_bar._inside;
				var _local11:Number = Math.min(100, Math.min(((_local8) || (0)), _local9));
				_local11 = Math.max(this.last_pcnt, _local11);
				this.last_pcnt = _local11;
				_local10.scaleX = (_local11 * 0.01);
				options.ad_progress(_local11);
				if (sendHostProgress){
					clip._mochiad.lc.send(clip._mochiad._containerLCName, "notify", {id:"hostLoadPcnt", pcnt:_local8});
					if (_local8 >= 100){
						sendHostProgress = false;
					};
				};
				if (!chk.showing){
					_local12 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
					if (_local12 > 0){
						chk.showing = true;
						chk.started = getTimer();
						MochiAd.adShowing(clip);
					} else {
						if ((((_local3 > chk.ad_timeout)) && ((_local8 == 100)))){
							options.ad_failed();
							_local4 = true;
						};
					};
				};
				if (_local3 > chk.ad_msec){
					_local4 = true;
				};
				if (((complete) && (_local4))){
					if (unloaded){
						MochiAd.unload(_local1);
					} else {
						if (this.server_control){
							delete this.onEnterFrame;
						} else {
							this.fadeout_start = getTimer();
							this.onEnterFrame = chk.fadeFunction;
						};
					};
				};
			};
			doOnEnterFrame(chk);
		}
		public static function showClickAwayAd(_arg1:Object):void{
			var clip:Object;
			var mc:MovieClip;
			var chk:MovieClip;
			var options = _arg1;
			var DEFAULTS:Object = {ad_timeout:2000, regpt:"o", method:"showClickAwayAd", res:"300x250", no_bg:true, ad_started:function ():void{
			}, ad_finished:function ():void{
			}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
			}, ad_failed:function ():void{
			}, ad_skipped:function ():void{
			}};
			options = MochiAd._parseOptions(options, DEFAULTS);
			clip = options.clip;
			var ad_timeout:Number = options.ad_timeout;
			delete options.ad_timeout;
			if (!MochiAd.load(options)){
				options.ad_failed();
				options.ad_finished();
				return;
			};
			options.ad_started();
			mc = clip._mochiad;
			mc["onUnload"] = function ():void{
				MochiAd._cleanup(mc);
				options.ad_finished();
			};
			var wh:Array = MochiAd._getRes(options, clip);
			var w:Number = wh[0];
			var h:Number = wh[1];
			mc.x = (w * 0.5);
			mc.y = (h * 0.5);
			chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
			chk.ad_timeout = ad_timeout;
			chk.started = getTimer();
			chk.showing = false;
			mc.unloadAd = function ():void{
				MochiAd.unload(clip);
			};
			mc.adLoaded = options.ad_loaded;
			mc.adSkipped = options.ad_skipped;
			mc.rpc = function (_arg1:Number, _arg2:Object):void{
				MochiAd.rpc(clip, _arg1, _arg2);
			};
			chk["onEnterFrame"] = function ():void{
				var _local4:Number;
				if (!this.parent){
					delete this.onEnterFrame;
					return;
				};
				var _local1:Object = this.parent._mochiad_ctr;
				var _local2:Number = (getTimer() - this.started);
				var _local3:Boolean;
				if (!chk.showing){
					_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
					if (_local4 > 0){
						chk.showing = true;
						_local3 = true;
						chk.started = getTimer();
					} else {
						if (_local2 > chk.ad_timeout){
							options.ad_failed();
							_local3 = true;
						};
					};
				};
				if (this.root == null){
					_local3 = true;
				};
				if (_local3){
					delete this.onEnterFrame;
				};
			};
			doOnEnterFrame(chk);
		}
		public static function showInterLevelAd(_arg1:Object):void{
			var clip:Object;
			var mc:MovieClip;
			var chk:MovieClip;
			var options = _arg1;
			var DEFAULTS:Object = {ad_timeout:2000, fadeout_time:250, regpt:"o", method:"showTimedAd", ad_started:function ():void{
				if ((this.clip is MovieClip)){
					this.clip.stop();
				} else {
					throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip.  If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
				};
			}, ad_finished:function ():void{
				if ((this.clip is MovieClip)){
					this.clip.play();
				} else {
					throw (new Error("MochiAd.showInterLevelAd requires a clip that is a MovieClip or is an instance of a class that extends MovieClip.  If your clip is a Sprite, then you must provide custom ad_started and ad_finished handlers."));
				};
			}, ad_loaded:function (_arg1:Number, _arg2:Number):void{
			}, ad_failed:function ():void{
			}, ad_skipped:function ():void{
			}};
			options = MochiAd._parseOptions(options, DEFAULTS);
			clip = options.clip;
			var ad_msec:Number = 11000;
			var ad_timeout:Number = options.ad_timeout;
			delete options.ad_timeout;
			var fadeout_time:Number = options.fadeout_time;
			delete options.fadeout_time;
			if (!MochiAd.load(options)){
				options.ad_failed();
				options.ad_finished();
				return;
			};
			options.ad_started();
			mc = clip._mochiad;
			mc["onUnload"] = function ():void{
				MochiAd._cleanup(mc);
				options.ad_finished();
			};
			var wh:Array = MochiAd._getRes(options, clip);
			var w:Number = wh[0];
			var h:Number = wh[1];
			mc.x = (w * 0.5);
			mc.y = (h * 0.5);
			chk = createEmptyMovieClip(mc, "_mochiad_wait", 3);
			chk.ad_msec = ad_msec;
			chk.ad_timeout = ad_timeout;
			chk.started = getTimer();
			chk.showing = false;
			chk.fadeout_time = fadeout_time;
			chk.fadeFunction = function ():void{
				if (!this.parent){
					delete this.onEnterFrame;
					delete this.fadeFunction;
					return;
				};
				var _local1:Number = (100 * (1 - ((getTimer() - this.fadeout_start) / this.fadeout_time)));
				if (_local1 > 0){
					this.parent.alpha = (_local1 * 0.01);
				} else {
					MochiAd.unload(clip);
					delete this["onEnterFrame"];
				};
			};
			mc.unloadAd = function ():void{
				MochiAd.unload(clip);
			};
			mc.adLoaded = options.ad_loaded;
			mc.adSkipped = options.ad_skipped;
			mc.adjustProgress = function (_arg1:Number):void{
				var _local2:Object = mc._mochiad_wait;
				_local2.server_control = true;
				_local2.showing = true;
				_local2.started = getTimer();
				_local2.ad_msec = (_arg1 - 250);
			};
			mc.rpc = function (_arg1:Number, _arg2:Object):void{
				MochiAd.rpc(clip, _arg1, _arg2);
			};
			chk["onEnterFrame"] = function ():void{
				var _local4:Number;
				if (!this.parent){
					delete this.onEnterFrame;
					delete this.fadeFunction;
					return;
				};
				var _local1:Object = this.parent._mochiad_ctr;
				var _local2:Number = (getTimer() - this.started);
				var _local3:Boolean;
				if (!chk.showing){
					_local4 = this.parent._mochiad_ctr.contentLoaderInfo.bytesTotal;
					if (_local4 > 0){
						chk.showing = true;
						chk.started = getTimer();
						MochiAd.adShowing(clip);
					} else {
						if (_local2 > chk.ad_timeout){
							options.ad_failed();
							_local3 = true;
						};
					};
				};
				if (_local2 > chk.ad_msec){
					_local3 = true;
				};
				if (_local3){
					if (this.server_control){
						delete this.onEnterFrame;
					} else {
						this.fadeout_start = getTimer();
						this.onEnterFrame = this.fadeFunction;
					};
				};
			};
			doOnEnterFrame(chk);
		}
		public static function showPreloaderAd(_arg1:Object):void{
			MochiAd.showPreGameAd(_arg1);
		}
		public static function showTimedAd(_arg1:Object):void{
			MochiAd.showInterLevelAd(_arg1);
		}
		public static function _allowDomains(_arg1:String):String{
			var _local2:String = _arg1.split("/")[2].split(":")[0];
			if (Security.sandboxType == "application"){
				return (_local2);
			};
			Security.allowDomain("*");
			Security.allowDomain(_local2);
			Security.allowInsecureDomain("*");
			Security.allowInsecureDomain(_local2);
			return (_local2);
		}
		public static function load(_arg1:Object):MovieClip{
			var clip:Object;
			var mc:MovieClip;
			var k:String;
			var server:String;
			var hostname:String;
			var lc:LocalConnection;
			var name:String;
			var loader:Loader;
			var g:Function;
			var req:URLRequest;
			var v:Object;
			var options = _arg1;
			var DEFAULTS:Object = {server:"http://x.mochiads.com/srv/1/", method:"load", depth:10333, id:"_UNKNOWN_"};
			options = MochiAd._parseOptions(options, DEFAULTS);
			options.swfv = 9;
			options.mav = MochiAd.getVersion();
			clip = options.clip;
			if (!(clip is DisplayObject)){
				return (null);
			};
			if (MovieClip(clip).stage == null){
				return (null);
			};
			if (!MochiAd._isNetworkAvailable()){
				return (null);
			};
			try {
				if (clip._mochiad_loaded){
					return (null);
				};
			} catch(e:Error) {
				throw (new Error("MochiAd requires a clip that is an instance of a dynamic class.  If your class extends Sprite or MovieClip, you must make it dynamic."));
			};
			var depth:Number = options.depth;
			delete options.depth;
			mc = createEmptyMovieClip(clip, "_mochiad", depth);
			var wh:Array = MochiAd._getRes(options, clip);
			options.res = ((wh[0] + "x") + wh[1]);
			options.server = (options.server + options.id);
			delete options.id;
			clip._mochiad_loaded = true;
			if (clip.loaderInfo.loaderURL.indexOf("http") == 0){
				options.as3_swf = clip.loaderInfo.loaderURL;
				//unresolved jump
			};
			var lv:URLVariables = new URLVariables();
			for (k in options) {
				v = options[k];
				if (!(v is Function)){
					lv[k] = v;
				};
			};
			server = lv.server;
			delete lv.server;
			hostname = _allowDomains(server);
			lc = new LocalConnection();
			lc.client = mc;
			name = ["", Math.floor(new Date().getTime()), Math.floor((Math.random() * 999999))].join("_");
			lc.allowDomain("*", "localhost");
			lc.allowInsecureDomain("*", "localhost");
			lc.connect(name);
			mc.lc = lc;
			mc.lcName = name;
			lv.lc = name;
			lv.st = getTimer();
			mc.regContLC = function (_arg1:String):void{
				mc._containerLCName = _arg1;
			};
			loader = new Loader();
			g = function (_arg1:Object):void{
				_arg1.target.removeEventListener(_arg1.type, arguments.callee);
				MochiAd.unload(clip);
			};
			loader.contentLoaderInfo.addEventListener(Event.UNLOAD, g);
			req = new URLRequest(((server + ".swf?cacheBust=") + new Date().getTime()));
			req.contentType = "application/x-www-form-urlencoded";
			req.method = URLRequestMethod.POST;
			req.data = lv;
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, function (_arg1:IOErrorEvent):void{
			});
			if (!options.skip){
				loader.load(req);
			};
			mc.addChild(loader);
			mc._mochiad_ctr = loader;
			return (mc);
		}
		public static function unload(_arg1:Object):Boolean{
			if (((_arg1.clip) && (_arg1.clip._mochiad))){
				_arg1 = _arg1.clip;
			};
			if (_arg1.origFrameRate != undefined){
				_arg1.stage.frameRate = _arg1.origFrameRate;
			};
			if (!_arg1._mochiad){
				return (false);
			};
			if (_arg1._mochiad._containerLCName != undefined){
				_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "notify", {id:"unload"});
			};
			if (_arg1._mochiad.onUnload){
				_arg1._mochiad.onUnload();
			};
			delete _arg1._mochiad_loaded;
			delete _arg1._mochiad;
			return (true);
		}
		public static function _cleanup(_arg1:Object):void{
			var k:String;
			var lc:LocalConnection;
			var f:Function;
			var mc = _arg1;
			if (("lc" in mc)){
				lc = mc.lc;
				f = function ():void{
					try {
						lc.client = null;
						lc.close();
					} catch(e:Error) {
					};
				};
				setTimeout(f, 0);
			};
			var idx:Number = DisplayObjectContainer(mc).numChildren;
			while (idx > 0) {
				idx = (idx - 1);
				DisplayObjectContainer(mc).removeChildAt(idx);
			};
			for (k in mc) {
				delete mc[k];
			};
		}
		public static function _isNetworkAvailable():Boolean{
			return (!((Security.sandboxType == "localWithFile")));
		}
		public static function _getRes(_arg1:Object, _arg2:Object):Array{
			var _local6:Array;
			var _local3:Object = _arg2.getBounds(_arg2.root);
			var _local4:Number = 0;
			var _local5:Number = 0;
			if (typeof(_arg1.res) != "undefined"){
				_local6 = _arg1.res.split("x");
				_local4 = parseFloat(_local6[0]);
				_local5 = parseFloat(_local6[1]);
			} else {
				_local4 = (_local3.xMax - _local3.xMin);
				_local5 = (_local3.yMax - _local3.yMin);
			};
			if ((((_local4 == 0)) || ((_local5 == 0)))){
				_local4 = _arg2.stage.stageWidth;
				_local5 = _arg2.stage.stageHeight;
			};
			return ([_local4, _local5]);
		}
		public static function _parseOptions(_arg1:Object, _arg2:Object):Object{
			var _local4:String;
			var _local5:Array;
			var _local6:Number;
			var _local7:Array;
			var _local3:Object = {};
			for (_local4 in _arg2) {
				_local3[_local4] = _arg2[_local4];
			};
			if (_arg1){
				for (_local4 in _arg1) {
					_local3[_local4] = _arg1[_local4];
				};
			};
			if (_local3.clip == undefined){
				throw (new Error("MochiAd is missing the 'clip' parameter.  This should be a MovieClip, Sprite or an instance of a class that extends MovieClip or Sprite."));
			};
			_arg1 = _local3.clip.loaderInfo.parameters.mochiad_options;
			if (_arg1){
				_local5 = _arg1.split("&");
				_local6 = 0;
				while (_local6 < _local5.length) {
					_local7 = _local5[_local6].split("=");
					_local3[unescape(_local7[0])] = unescape(_local7[1]);
					_local6++;
				};
			};
			if (_local3.id == "test"){
			};
			return (_local3);
		}
		public static function rpc(_arg1:Object, _arg2:Number, _arg3:Object):void{
			var _local4:Object;
			var _local5:Object;
			switch (_arg3.id){
				case "setValue":
					MochiAd.setValue(_arg1, _arg3.objectName, _arg3.value);
					break;
				case "getValue":
					_local4 = MochiAd.getValue(_arg1, _arg3.objectName);
					_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local4);
					break;
				case "runMethod":
					_local5 = MochiAd.runMethod(_arg1, _arg3.method, _arg3.args);
					_arg1._mochiad.lc.send(_arg1._mochiad._containerLCName, "rpcResult", _arg2, _local5);
					break;
			};
		}
		public static function setValue(_arg1:Object, _arg2:String, _arg3:Object):void{
			var _local4:Array = _arg2.split(".");
			var _local5:Number = 0;
			while (_local5 < (_local4.length - 1)) {
				if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
					return;
				};
				_arg1 = _arg1[_local4[_local5]];
				_local5++;
			};
			_arg1[_local4[_local5]] = _arg3;
		}
		public static function getValue(_arg1:Object, _arg2:String):Object{
			var _local3:Array = _arg2.split(".");
			var _local4:Number = 0;
			while (_local4 < (_local3.length - 1)) {
				if ((((_arg1[_local3[_local4]] == undefined)) || ((_arg1[_local3[_local4]] == null)))){
					return (undefined);
				};
				_arg1 = _arg1[_local3[_local4]];
				_local4++;
			};
			return (_arg1[_local3[_local4]]);
		}
		public static function runMethod(_arg1:Object, _arg2:String, _arg3:Array):Object{
			var _local4:Array = _arg2.split(".");
			var _local5:Number = 0;
			while (_local5 < (_local4.length - 1)) {
				if ((((_arg1[_local4[_local5]] == undefined)) || ((_arg1[_local4[_local5]] == null)))){
					return (undefined);
				};
				_arg1 = _arg1[_local4[_local5]];
				_local5++;
			};
			if (typeof(_arg1[_local4[_local5]]) == "function"){
				return (_arg1[_local4[_local5]].apply(_arg1, _arg3));
			};
			return (undefined);
		}
		public static function adShowing(_arg1:Object):void{
			_arg1.origFrameRate = _arg1.stage.frameRate;
			_arg1.stage.frameRate = 30;
		}

	}
}//package mochi.as3 

****************

//MochiCoins (mochi.as3.MochiCoins)
package mochi.as3 {

	public class MochiCoins {

		public static const STORE_SHOW:String = "StoreShow";
		public static const STORE_HIDE:String = "StoreHide";
		public static const ITEM_OWNED:String = "ItemOwned";
		public static const ITEM_NEW:String = "ItemNew";
		public static const STORE_ITEMS:String = "StoreItems";
		public static const ERROR:String = "Error";
		public static const IO_ERROR:String = "IOError";
		public static const NO_USER:String = "NoUser";

		public static var _inventory:MochiInventory;

		public static function get inventory():MochiInventory{
			return (_inventory);
		}
		public static function getVersion():String{
			return (MochiServices.getVersion());
		}
		public static function showStore(_arg1:Object=null):void{
			MochiServices.bringToTop();
			MochiServices.send("coins_showStore", {options:_arg1}, null, null);
		}
		public static function showItem(_arg1:Object=null):void{
			if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
				return;
			};
			MochiServices.bringToTop();
			MochiServices.send("coins_showItem", {options:_arg1}, null, null);
		}
		public static function showVideo(_arg1:Object=null):void{
			if (((!(_arg1)) || (!((typeof(_arg1.item) == "string"))))){
				return;
			};
			MochiServices.bringToTop();
			MochiServices.send("coins_showVideo", {options:_arg1}, null, null);
		}
		public static function getStoreItems():void{
			MochiServices.send("coins_getStoreItems");
		}
		public static function addEventListener(_arg1:String, _arg2:Function):void{
			MochiSocial.addEventListener(_arg1, _arg2);
		}
		public static function triggerEvent(_arg1:String, _arg2:Object):void{
			MochiSocial.triggerEvent(_arg1, _arg2);
		}
		public static function removeEventListener(_arg1:String, _arg2:Function):void{
			MochiSocial.removeEventListener(_arg1, _arg2);
		}

		MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
			_inventory = new MochiInventory();
		});
		MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
			_inventory = null;
		});
	}
}//package mochi.as3 

****************

//MochiDigits (mochi.as3.MochiDigits)
package mochi.as3 {

	public final class MochiDigits {

		private var Fragment:Number;
		private var Sibling:MochiDigits;
		private var Encoder:Number;

		public function MochiDigits(_arg1:Number=0, _arg2:uint=0):void{
			Encoder = 0;
			setValue(_arg1, _arg2);
		}
		public function get value():Number{
			return (Number(this.toString()));
		}
		public function set value(_arg1:Number):void{
			setValue(_arg1);
		}
		public function addValue(_arg1:Number):void{
			value = (value + _arg1);
		}
		public function setValue(_arg1:Number=0, _arg2:uint=0):void{
			var _local3:String = _arg1.toString();
			var _temp1 = _arg2;
			_arg2 = (_arg2 + 1);
			Fragment = (_local3.charCodeAt(_temp1) ^ Encoder);
			if (_arg2 < _local3.length){
				Sibling = new MochiDigits(_arg1, _arg2);
			} else {
				Sibling = null;
			};
			reencode();
		}
		public function reencode():void{
			var _local1:uint = int((2147483647 * Math.random()));
			Fragment = (Fragment ^ (_local1 ^ Encoder));
			Encoder = _local1;
		}
		public function toString():String{
			var _local1:String = String.fromCharCode((Fragment ^ Encoder));
			if (Sibling != null){
				_local1 = (_local1 + Sibling.toString());
			};
			return (_local1);
		}

	}
}//package mochi.as3 

****************

//MochiEventDispatcher (mochi.as3.MochiEventDispatcher)
package mochi.as3 {

	public class MochiEventDispatcher {

		private var eventTable:Object;

		public function MochiEventDispatcher():void{
			eventTable = {};
		}
		public function addEventListener(_arg1:String, _arg2:Function):void{
			removeEventListener(_arg1, _arg2);
			eventTable[_arg1].push(_arg2);
		}
		public function removeEventListener(_arg1:String, _arg2:Function):void{
			var _local3:Object;
			if (eventTable[_arg1] == undefined){
				eventTable[_arg1] = [];
				return;
			};
			for (_local3 in eventTable[_arg1]) {
				if (eventTable[_arg1][_local3] != _arg2){
				} else {
					eventTable[_arg1].splice(Number(_local3), 1);
				};
			};
		}
		public function triggerEvent(_arg1:String, _arg2:Object):void{
			var _local3:Object;
			if (eventTable[_arg1] == undefined){
				return;
			};
			for (_local3 in eventTable[_arg1]) {
				var _local6 = eventTable[_arg1];
				_local6[_local3](_arg2);
			};
		}

	}
}//package mochi.as3 

****************

//MochiEvents (mochi.as3.MochiEvents)
package mochi.as3 {
	import flash.display.*;

	public class MochiEvents {

		public static const ACHIEVEMENT_RECEIVED:String = "AchievementReceived";
		public static const ALIGN_TOP_LEFT:String = "ALIGN_TL";
		public static const ALIGN_TOP:String = "ALIGN_T";
		public static const ALIGN_TOP_RIGHT:String = "ALIGN_TR";
		public static const ALIGN_LEFT:String = "ALIGN_L";
		public static const ALIGN_CENTER:String = "ALIGN_C";
		public static const ALIGN_RIGHT:String = "ALIGN_R";
		public static const ALIGN_BOTTOM_LEFT:String = "ALIGN_BL";
		public static const ALIGN_BOTTOM:String = "ALIGN_B";
		public static const ALIGN_BOTTOM_RIGHT:String = "ALIGN_BR";
		public static const FORMAT_SHORT:String = "ShortForm";
		public static const FORMAT_LONG:String = "LongForm";

		private static var gameStart:Number;
		private static var levelStart:Number;
		private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();

		public static function getVersion():String{
			return (MochiServices.getVersion());
		}
		public static function startSession(_arg1:String):void{
			MochiServices.send("events_beginSession", {achievementID:_arg1}, null, null);
		}
		public static function setNotifications(_arg1:MovieClip, _arg2:Object):void{
			var _local4:Object;
			var _local3:Object = {};
			for (_local4 in _arg2) {
				_local3[_local4] = _arg2[_local4];
			};
			_local3.clip = _arg1;
			MochiServices.send("events_setNotifications", _local3, null, null);
		}
		public static function addEventListener(_arg1:String, _arg2:Function):void{
			_dispatcher.addEventListener(_arg1, _arg2);
		}
		public static function triggerEvent(_arg1:String, _arg2:Object):void{
			_dispatcher.triggerEvent(_arg1, _arg2);
		}
		public static function removeEventListener(_arg1:String, _arg2:Function):void{
			_dispatcher.removeEventListener(_arg1, _arg2);
		}
		public static function startPlay(_arg1:String="gameplay"):void{
			MochiServices.send("events_setRoundID", {tag:String(_arg1)}, null, null);
		}
		public static function endPlay():void{
			MochiServices.send("events_clearRoundID", null, null, null);
		}
		public static function trackEvent(_arg1:String, _arg2=null):void{
			MochiServices.send("events_trackEvent", {tag:_arg1, value:_arg2}, null, null);
		}

	}
}//package mochi.as3 

****************

//MochiInventory (mochi.as3.MochiInventory)
package mochi.as3 {
	import flash.events.*;
	import flash.utils.*;

	public dynamic class MochiInventory extends Proxy {

		private var _timer:Timer;
		private var _consumableProperties:Object;
		private var _syncPending:Boolean;
		private var _outstandingID:Number;
		private var _syncID:Number;
		private var _names:Array;
		private var _storeSync:Object;

		private static const CONSUMER_KEY:String = "MochiConsumables";
		private static const KEY_SALT:String = " syncMaint";
		public static const READY:String = "InvReady";
		public static const WRITTEN:String = "InvWritten";
		public static const ERROR:String = "Error";
		public static const IO_ERROR:String = "IoError";
		public static const VALUE_ERROR:String = "InvValueError";
		public static const NOT_READY:String = "InvNotReady";

		private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();

		public function MochiInventory():void{
			MochiCoins.addEventListener(MochiCoins.ITEM_OWNED, itemOwned);
			MochiCoins.addEventListener(MochiCoins.ITEM_NEW, newItems);
			MochiSocial.addEventListener(MochiSocial.LOGGED_IN, loggedIn);
			MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, loggedOut);
			_storeSync = new Object();
			_syncPending = false;
			_outstandingID = 0;
			_syncID = 0;
			_timer = new Timer(1000);
			_timer.addEventListener(TimerEvent.TIMER, sync);
			_timer.start();
			if (MochiSocial.loggedIn){
				loggedIn();
			} else {
				loggedOut();
			};
		}
		public function release():void{
			MochiCoins.removeEventListener(MochiCoins.ITEM_NEW, newItems);
			MochiSocial.removeEventListener(MochiSocial.LOGGED_IN, loggedIn);
			MochiSocial.removeEventListener(MochiSocial.LOGGED_OUT, loggedOut);
		}
		private function loggedOut(_arg1:Object=null):void{
			_consumableProperties = null;
		}
		private function loggedIn(_arg1:Object=null):void{
			MochiUserData.get(CONSUMER_KEY, getConsumableBag);
		}
		private function newItems(_arg1:Object):void{
			if (!this[(_arg1.id + KEY_SALT)]){
				this[(_arg1.id + KEY_SALT)] = 0;
			};
			if (!this[_arg1.id]){
				this[_arg1.id] = 0;
			};
			this[(_arg1.id + KEY_SALT)] = (this[(_arg1.id + KEY_SALT)] + _arg1.count);
			this[_arg1.id] = (this[_arg1.id] + _arg1.count);
			if (_arg1.privateProperties.consumable){
				if (!this[_arg1.privateProperties.tag]){
					this[_arg1.privateProperties.tag] = 0;
				};
				this[_arg1.privateProperties.tag] = (this[_arg1.privateProperties.tag] + (_arg1.privateProperties.inc * _arg1.count));
			};
		}
		private function itemOwned(_arg1:Object):void{
			_storeSync[_arg1.id] = {properties:_arg1.properties, count:_arg1.count};
		}
		private function getConsumableBag(_arg1:MochiUserData):void{
			var _local2:String;
			var _local3:Number;
			if (_arg1.error){
				triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
				return;
			};
			_consumableProperties = {};
			_names = new Array();
			if (_arg1.data){
				for (_local2 in _arg1.data) {
					_names.push(_local2);
					_consumableProperties[_local2] = new MochiDigits(_arg1.data[_local2]);
				};
			};
			for (_local2 in _storeSync) {
				_local3 = _storeSync[_local2].count;
				if (_consumableProperties[(_local2 + KEY_SALT)]){
					_local3 = (_local3 - _consumableProperties[_local2]);
				};
				if (_local3 == 0){
				} else {
					newItems({id:_local2, count:_local3, properties:_storeSync[_local2].properties});
				};
			};
			triggerEvent(READY, {});
		}
		private function putConsumableBag(_arg1:MochiUserData):void{
			_syncPending = false;
			if (_arg1.error){
				triggerEvent(ERROR, {type:IO_ERROR, error:_arg1.error});
				_outstandingID = -1;
			};
			triggerEvent(WRITTEN, {});
		}
		private function sync(_arg1:Event=null):void{
			var _local3:String;
			if (((_syncPending) || ((_syncID == _outstandingID)))){
				return;
			};
			_outstandingID = _syncID;
			var _local2:Object = {};
			for (_local3 in _consumableProperties) {
				_local2[_local3] = MochiDigits(_consumableProperties[_local3]).value;
			};
			MochiUserData.put(CONSUMER_KEY, _local2, putConsumableBag);
			_syncPending = true;
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
			if (_consumableProperties == null){
				triggerEvent(ERROR, {type:NOT_READY});
				return (-1);
			};
			if (_consumableProperties[_arg1]){
				return (MochiDigits(_consumableProperties[_arg1]).value);
			};
			return (undefined);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function deleteProperty(_arg1):Boolean{
			if (!_consumableProperties[_arg1]){
				return (false);
			};
			_names.splice(_names.indexOf(_arg1), 1);
			delete _consumableProperties[_arg1];
			return (true);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function hasProperty(_arg1):Boolean{
			if (_consumableProperties == null){
				triggerEvent(ERROR, {type:NOT_READY});
				return (false);
			};
			if (_consumableProperties[_arg1] == undefined){
				return (false);
			};
			return (true);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
			var _local3:MochiDigits;
			if (_consumableProperties == null){
				triggerEvent(ERROR, {type:NOT_READY});
				return;
			};
			if (!(_arg2 is Number)){
				triggerEvent(ERROR, {type:VALUE_ERROR, error:"Invalid type", arg:_arg2});
				return;
			};
			if (_consumableProperties[_arg1]){
				_local3 = MochiDigits(_consumableProperties[_arg1]);
				if (_local3.value == _arg2){
					return;
				};
				_local3.value = _arg2;
			} else {
				_names.push(_arg1);
				_consumableProperties[_arg1] = new MochiDigits(_arg2);
			};
			_syncID++;
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextNameIndex(_arg1:int):int{
			return (((_arg1)>=_names.length) ? 0 : (_arg1 + 1));
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function nextName(_arg1:int):String{
			return (_names[(_arg1 - 1)]);
		}

		public static function addEventListener(_arg1:String, _arg2:Function):void{
			_dispatcher.addEventListener(_arg1, _arg2);
		}
		public static function triggerEvent(_arg1:String, _arg2:Object):void{
			_dispatcher.triggerEvent(_arg1, _arg2);
		}
		public static function removeEventListener(_arg1:String, _arg2:Function):void{
			_dispatcher.removeEventListener(_arg1, _arg2);
		}

	}
}//package mochi.as3 

****************

//MochiServices (mochi.as3.MochiServices)
package mochi.as3 {
	import flash.display.*;
	import flash.events.*;
	import flash.geom.*;
	import flash.net.*;
	import flash.utils.*;
	import flash.system.*;

	public class MochiServices {

		private static var _id:String;
		private static var _container:Object;
		private static var _clip:MovieClip;
		private static var _loader:Loader;
		private static var _timer:Timer;
		private static var _preserved:Object;
		private static var _servURL:String = "http://www.mochiads.com/static/lib/services/";
		private static var _services:String = "services.swf";
		private static var _mochiLC:String = "MochiLC.swf";
		private static var _swfVersion:String;
		private static var _listenChannelName:String = "__ms_";
		private static var _sendChannel:LocalConnection;
		private static var _sendChannelName:String;
		private static var _connecting:Boolean = false;
		private static var _connected:Boolean = false;
		public static var netup:Boolean = true;
		public static var netupAttempted:Boolean = false;
		public static var onError:Object;
		public static var widget:Boolean = false;
		public static var servicesSync:MochiSync = new MochiSync();
		private static var _mochiLocalConnection:MovieClip;
		private static var _queue:Array;
		private static var _nextCallbackID:Number;
		private static var _callbacks:Object;

		public static function get id():String{
			return (_id);
		}
		public static function get clip():Object{
			return (_container);
		}
		public static function get childClip():Object{
			return (_clip);
		}
		public static function getVersion():String{
			return ("3.8 as3");
		}
		public static function allowDomains(_arg1:String):String{
			var _local2:String;
			if (Security.sandboxType != "application"){
				Security.allowDomain("*");
				Security.allowInsecureDomain("*");
			};
			if (_arg1.indexOf("http://") != -1){
				_local2 = _arg1.split("/")[2].split(":")[0];
				if (Security.sandboxType != "application"){
					Security.allowDomain(_local2);
					Security.allowInsecureDomain(_local2);
				};
			};
			return (_local2);
		}
		public static function isNetworkAvailable():Boolean{
			return (!((Security.sandboxType == "localWithFile")));
		}
		public static function set comChannelName(_arg1:String):void{
			if (_arg1 != null){
				if (_arg1.length > 3){
					_sendChannelName = (_arg1 + "_fromgame");
					initComChannels();
				};
			};
		}
		public static function get connected():Boolean{
			return (_connected);
		}
		public static function warnID(_arg1:String, _arg2:Boolean):void{
			_arg1 = _arg1.toLowerCase();
			if (_arg1.length != 16){
				return;
			};
			if (_arg1 == "1e113c7239048b3f"){
				if (_arg2){
					//unresolved jump
				};
				return;
			} else {
				if (_arg1 == "84993a1de4031cd8"){
					if (_arg2){
						//unresolved jump
					};
					return;
				};
			};
			var _local3:Number = 0;
			while (_local3 < _arg1.length) {
				switch (_arg1.charAt(_local3)){
					case "0":
					case "1":
					case "2":
					case "3":
					case "4":
					case "5":
					case "6":
					case "7":
					case "8":
					case "9":
					case "a":
					case "b":
					case "c":
					case "d":
					case "e":
					case "f":
						break;
					default:
						return;
				};
				_local3++;
			};
		}
		public static function connect(_arg1:String, _arg2:Object, _arg3:Object=null):void{
			var id = _arg1;
			var clip = _arg2;
			var onError = _arg3;
			warnID(id, false);
			if ((clip is DisplayObject)){
				if (clip.stage == null){
				};
				if (((!(_connected)) && ((_clip == null)))){
					_connecting = true;
					init(id, clip);
				};
				//unresolved jump
			};
			if (onError != null){
				MochiServices.onError = onError;
			} else {
				if (MochiServices.onError == null){
					MochiServices.onError = function (_arg1:String):void{
					};
				};
			};
		}
		public static function disconnect():void{
			if (((_connected) || (_connecting))){
				if (_clip != null){
					if (_clip.parent != null){
						if ((_clip.parent is Sprite)){
							Sprite(_clip.parent).removeChild(_clip);
							_clip = null;
						};
					};
				};
				_connecting = (_connected = false);
				flush(true);
				try {
					_mochiLocalConnection.close();
				} catch(error:Error) {
				};
			};
			if (_timer != null){
				try {
					_timer.stop();
				} catch(error:Error) {
				};
			};
		}
		public static function stayOnTop():void{
			_container.addEventListener(Event.ENTER_FRAME, MochiServices.bringToTop, false, 0, true);
			if (_clip != null){
				_clip.visible = true;
			};
		}
		public static function doClose():void{
			_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
		}
		public static function bringToTop(_arg1:Event=null):void{
			var e = _arg1;
			if (((!((MochiServices.clip == null))) && (!((MochiServices.childClip == null))))){
				try {
					if (MochiServices.clip.numChildren > 1){
						MochiServices.clip.setChildIndex(MochiServices.childClip, (MochiServices.clip.numChildren - 1));
					};
				} catch(errorObject:Error) {
					_container.removeEventListener(Event.ENTER_FRAME, MochiServices.bringToTop);
				};
			};
		}
		private static function init(_arg1:String, _arg2:Object):void{
			_id = _arg1;
			if (_arg2 != null){
				_container = _arg2;
				loadCommunicator(_arg1, _container);
			};
		}
		public static function setContainer(_arg1:Object=null, _arg2:Boolean=true):void{
			if (_clip.parent){
				_clip.parent.removeChild(_clip);
			};
			if (_arg1 != null){
				if ((_arg1 is DisplayObjectContainer)){
					_container = _arg1;
				};
			};
			if (_arg2){
				if ((_container is DisplayObjectContainer)){
					DisplayObjectContainer(_container).addChild(_clip);
				};
			};
		}
		private static function loadCommunicator(_arg1:String, _arg2:Object):MovieClip{
			if (_clip != null){
				return (_clip);
			};
			if (!MochiServices.isNetworkAvailable()){
				return (null);
			};
			if (urlOptions(_arg2).servURL){
				_servURL = urlOptions(_arg2).servURL;
			};
			var _local3:String = (_servURL + _services);
			if (urlOptions(_arg2).servicesURL){
				_local3 = urlOptions(_arg2).servicesURL;
			};
			_listenChannelName = (_listenChannelName + ((Math.floor(new Date().time) + "_") + Math.floor((Math.random() * 99999))));
			MochiServices.allowDomains(_local3);
			_clip = new MovieClip();
			loadLCBridge(_clip);
			_loader = new Loader();
			_loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
			var _local4:URLRequest = new URLRequest(_local3);
			var _local5:URLVariables = new URLVariables();
			_local5.listenLC = _listenChannelName;
			_local5.mochiad_options = _arg2.loaderInfo.parameters.mochiad_options;
			_local5.api_version = getVersion();
			if (widget){
				_local5.widget = true;
			};
			_local4.data = _local5;
			_loader.load(_local4);
			_clip.addChild(_loader);
			_sendChannel = new LocalConnection();
			_queue = [];
			_nextCallbackID = 0;
			_callbacks = {};
			_timer = new Timer(10000, 1);
			_timer.addEventListener(TimerEvent.TIMER, connectWait);
			_timer.start();
			return (_clip);
		}
		private static function loadLCBridge(_arg1:Object):void{
			var loader:Loader;
			var clip = _arg1;
			loader = new Loader();
			var mochiLCURL:String = (_servURL + _mochiLC);
			var req:URLRequest = new URLRequest(mochiLCURL);
			var complete:Function = function (_arg1:Object):void{
				_mochiLocalConnection = MovieClip(loader.content);
				listen();
			};
			loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
			loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, loadError);
			loader.load(req);
			clip.addChild(loader);
		}
		private static function loadError(_arg1:Object):void{
			_clip._mochiad_ctr_failed = true;
			MochiServices.disconnect();
			MochiServices.onError("IOError");
		}
		public static function connectWait(_arg1:TimerEvent):void{
			if (!_connected){
				_clip._mochiad_ctr_failed = true;
				MochiServices.disconnect();
				MochiServices.onError("IOError");
			};
		}
		private static function listen():void{
			_mochiLocalConnection.connect(_listenChannelName);
			_clip.handshake = function (_arg1:Object):void{
				MochiServices.comChannelName = _arg1.newChannel;
			};
		}
		private static function initComChannels():void{
			if (!_connected){
				_connecting = false;
				_connected = true;
				_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"handshakeDone"});
				_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:"registerGame", preserved:_preserved, id:_id, version:getVersion(), parentURL:_container.loaderInfo.loaderURL});
				_clip.onReceive = onReceive;
				_clip.onEvent = onEvent;
				_clip.onError = function ():void{
					MochiServices.onError("IOError");
				};
				while (_queue.length > 0) {
					_mochiLocalConnection.send(_sendChannelName, "onReceive", _queue.shift());
				};
			};
		}
		private static function onReceive(_arg1:Object):void{
			var pkg = _arg1;
			var cb:String = pkg.callbackID;
			var cblst:Object = _callbacks[cb];
			if (!cblst){
				return;
			};
			var method:* = cblst.callbackMethod;
			var methodName = "";
			var obj:Object = cblst.callbackObject;
			if (((obj) && ((typeof(method) == "string")))){
				methodName = method;
				if (obj[method] != null){
					method = obj[method];
					//unresolved jump
				};
			};
			if (method != undefined){
				try {
					method.apply(obj, pkg.args);
				} catch(error:Error) {
				};
			} else {
				if (obj != null){
					try {
						obj(pkg.args);
					} catch(error:Error) {
					};
				};
			};
			delete _callbacks[cb];
		}
		private static function onEvent(_arg1:Object):void{
			var _local2:String = _arg1.target;
			var _local3:String = _arg1.event;
			switch (_local2){
				case "events":
					MochiEvents.triggerEvent(_arg1.event, _arg1.args);
					break;
				case "coins":
					MochiCoins.triggerEvent(_arg1.event, _arg1.args);
					break;
				case "sync":
					servicesSync.triggerEvent(_arg1.event, _arg1.args);
					break;
			};
		}
		public static function updateCopy(_arg1:Object):void{
			MochiServices.send("coins_updateCopy", _arg1, null, null);
		}
		private static function flush(_arg1:Boolean):void{
			var _local2:Object;
			var _local3:Object;
			if (((_clip) && (_queue))){
				while (_queue.length > 0) {
					_local2 = _queue.shift();
					_local3 = null;
					if (_local2 != null){
						if (_local2.callbackID != null){
							_local3 = _callbacks[_local2.callbackID];
						};
						delete _callbacks[_local2.callbackID];
						if (((_arg1) && (!((_local3 == null))))){
							handleError(_local2.args, _local3.callbackObject, _local3.callbackMethod);
						};
					};
				};
			};
		}
		private static function handleError(_arg1:Object, _arg2:Object, _arg3:Object):void{
			var args = _arg1;
			var callbackObject = _arg2;
			var callbackMethod = _arg3;
			if (args != null){
				if (args.onError != null){
					args.onError.apply(null, ["NotConnected"]);
				};
				if (((!((args.options == null))) && (!((args.options.onError == null))))){
					args.options.onError.apply(null, ["NotConnected"]);
				};
			};
			if (callbackMethod != null){
				args = {};
				args.error = true;
				args.errorCode = "NotConnected";
				if (((!((callbackObject == null))) && ((callbackMethod is String)))){
					try {
						var _local5 = callbackObject;
						_local5[callbackMethod](args);
					} catch(error:Error) {
					};
				} else {
					if (callbackMethod != null){
						try {
							callbackMethod.apply(args);
						} catch(error:Error) {
						};
					};
				};
			};
		}
		public static function send(_arg1:String, _arg2:Object=null, _arg3:Object=null, _arg4:Object=null):void{
			if (_connected){
				_mochiLocalConnection.send(_sendChannelName, "onReceive", {methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
			} else {
				if ((((_clip == null)) || (!(_connecting)))){
					handleError(_arg2, _arg3, _arg4);
					flush(true);
					return;
				};
				_queue.push({methodName:_arg1, args:_arg2, callbackID:_nextCallbackID});
			};
			if (_clip != null){
				if (_callbacks != null){
					_callbacks[_nextCallbackID] = {callbackObject:_arg3, callbackMethod:_arg4};
					_nextCallbackID++;
				};
			};
		}
		private static function urlOptions(_arg1:Object):Object{
			var _local3:String;
			var _local4:Array;
			var _local5:Number;
			var _local6:Array;
			var _local2:Object = {};
			if (_arg1.stage){
				_local3 = _arg1.stage.loaderInfo.parameters.mochiad_options;
			} else {
				_local3 = _arg1.loaderInfo.parameters.mochiad_options;
			};
			if (_local3){
				_local4 = _local3.split("&");
				_local5 = 0;
				while (_local5 < _local4.length) {
					_local6 = _local4[_local5].split("=");
					_local2[unescape(_local6[0])] = unescape(_local6[1]);
					_local5++;
				};
			};
			return (_local2);
		}
		public static function addLinkEvent(_arg1:String, _arg2:String, _arg3:DisplayObjectContainer, _arg4:Function=null):void{
			var avm1Click:DisplayObject;
			var x:String;
			var req:URLRequest;
			var loader:Loader;
			var setURL:Function;
			var err:Function;
			var complete:Function;
			var url = _arg1;
			var burl = _arg2;
			var btn = _arg3;
			var onClick = _arg4;
			var vars:Object = new Object();
			vars["mav"] = getVersion();
			vars["swfv"] = "9";
			vars["swfurl"] = btn.loaderInfo.loaderURL;
			vars["fv"] = Capabilities.version;
			vars["os"] = Capabilities.os;
			vars["lang"] = Capabilities.language;
			vars["scres"] = ((Capabilities.screenResolutionX + "x") + Capabilities.screenResolutionY);
			var s = "?";
			var i:Number = 0;
			for (x in vars) {
				if (i != 0){
					s = (s + "&");
				};
				i = (i + 1);
				s = (((s + x) + "=") + escape(vars[x]));
			};
			req = new URLRequest("http://x.mochiads.com/linkping.swf");
			loader = new Loader();
			setURL = function (_arg1:String):void{
				if (avm1Click){
					btn.removeChild(avm1Click);
				};
				avm1Click = clickMovie(_arg1, onClick);
				var _local2:Rectangle = btn.getBounds(btn);
				btn.addChild(avm1Click);
				avm1Click.x = _local2.x;
				avm1Click.y = _local2.y;
				avm1Click.scaleX = (0.01 * _local2.width);
				avm1Click.scaleY = (0.01 * _local2.height);
			};
			err = function (_arg1:Object):void{
				netup = false;
				_arg1.target.removeEventListener(_arg1.type, arguments.callee);
				setURL(burl);
			};
			complete = function (_arg1:Object):void{
				_arg1.target.removeEventListener(_arg1.type, arguments.callee);
			};
			if (netup){
				setURL((url + s));
			} else {
				setURL(burl);
			};
			if (!((netupAttempted) || (_connected))){
				netupAttempted = true;
				loader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR, err);
				loader.contentLoaderInfo.addEventListener(Event.COMPLETE, complete);
				loader.load(req);
			};
		}
		private static function clickMovie(_arg1:String, _arg2:Function):MovieClip{
			var _local4:int;
			var _local14:Loader;
			var _local3:Array = [150, 21, 0, 7, 1, 0, 0, 0, 0, 98, 116, 110, 0, 7, 2, 0, 0, 0, 0, 116, 104, 105, 115, 0, 28, 150, 22, 0, 0, 99, 114, 101, 97, 116, 101, 69, 109, 112, 116, 121, 77, 111, 118, 105, 101, 67, 108, 105, 112, 0, 82, 135, 1, 0, 0, 23, 150, 13, 0, 4, 0, 0, 111, 110, 82, 101, 108, 101, 97, 115, 101, 0, 142, 8, 0, 0, 0, 0, 2, 42, 0, 114, 0, 150, 17, 0, 0, 32, 0, 7, 1, 0, 0, 0, 8, 0, 0, 115, 112, 108, 105, 116, 0, 82, 135, 1, 0, 1, 23, 150, 7, 0, 4, 1, 7, 0, 0, 0, 0, 78, 150, 8, 0, 0, 95, 98, 108, 97, 110, 107, 0, 154, 1, 0, 0, 150, 7, 0, 0, 99, 108, 105, 99, 107, 0, 150, 7, 0, 4, 1, 7, 1, 0, 0, 0, 78, 150, 27, 0, 7, 2, 0, 0, 0, 7, 0, 0, 0, 0, 0, 76, 111, 99, 97, 108, 67, 111, 110, 110, 101, 99, 116, 105, 111, 110, 0, 64, 150, 6, 0, 0, 115, 101, 110, 100, 0, 82, 79, 150, 15, 0, 4, 0, 0, 95, 97, 108, 112, 104, 97, 0, 7, 0, 0, 0, 0, 79, 150, 23, 0, 7, 0xFF, 0, 0xFF, 0, 7, 1, 0, 0, 0, 4, 0, 0, 98, 101, 103, 105, 110, 70, 105, 108, 108, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 109, 111, 118, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 100, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 100, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 25, 0, 7, 0, 0, 0, 0, 7, 0, 0, 0, 0, 7, 2, 0, 0, 0, 4, 0, 0, 108, 105, 110, 101, 84, 111, 0, 82, 23, 150, 16, 0, 7, 0, 0, 0, 0, 4, 0, 0, 101, 110, 100, 70, 105, 108, 108, 0, 82, 23];
			var _local5:Array = [104, 0, 31, 64, 0, 7, 208, 0, 0, 12, 1, 0, 67, 2, 0xFF, 0xFF, 0xFF, 63, 3];
			var _local6:Array = [0, 64, 0, 0, 0];
			var _local7:MovieClip = new MovieClip();
			var _local8:LocalConnection = new LocalConnection();
			var _local9:String = ((("_click_" + Math.floor((Math.random() * 999999))) + "_") + Math.floor(new Date().time));
			_local8 = new LocalConnection();
			_local7.lc = _local8;
			_local7.click = _arg2;
			_local8.client = _local7;
			_local8.connect(_local9);
			var _local10:ByteArray = new ByteArray();
			var _local11:ByteArray = new ByteArray();
			_local11.endian = Endian.LITTLE_ENDIAN;
			_local11.writeShort(1);
			_local11.writeUTFBytes(((_arg1 + " ") + _local9));
			_local11.writeByte(0);
			var _local12:uint = ((_local3.length + _local11.length) + 4);
			var _local13:uint = (_local12 + 35);
			_local10.endian = Endian.LITTLE_ENDIAN;
			_local10.writeUTFBytes("FWS");
			_local10.writeByte(8);
			_local10.writeUnsignedInt(_local13);
			for each (_local4 in _local5) {
				_local10.writeByte(_local4);
			};
			_local10.writeUnsignedInt(_local12);
			_local10.writeByte(136);
			_local10.writeShort(_local11.length);
			_local10.writeBytes(_local11);
			for each (_local4 in _local3) {
				_local10.writeByte(_local4);
			};
			for each (_local4 in _local6) {
				_local10.writeByte(_local4);
			};
			_local14 = new Loader();
			_local14.loadBytes(_local10);
			_local7.addChild(_local14);
			return (_local7);
		}

	}
}//package mochi.as3 

****************

//MochiSocial (mochi.as3.MochiSocial)
package mochi.as3 {

	public class MochiSocial {

		public static const LOGGED_IN:String = "LoggedIn";
		public static const LOGGED_OUT:String = "LoggedOut";
		public static const LOGIN_SHOW:String = "LoginShow";
		public static const LOGIN_HIDE:String = "LoginHide";
		public static const LOGIN_SHOWN:String = "LoginShown";
		public static const PROFILE_SHOW:String = "ProfileShow";
		public static const PROFILE_HIDE:String = "ProfileHide";
		public static const PROPERTIES_SAVED:String = "PropertySaved";
		public static const WIDGET_LOADED:String = "WidgetLoaded";
		public static const USER_INFO:String = "UserInfo";
		public static const ERROR:String = "Error";
		public static const IO_ERROR:String = "IOError";
		public static const NO_USER:String = "NoUser";
		public static const PROPERTIES_SIZE:String = "PropertiesSize";

		private static var _dispatcher:MochiEventDispatcher = new MochiEventDispatcher();
		public static var _user_info:Object = null;

		public static function getVersion():String{
			return (MochiServices.getVersion());
		}
		public static function getAPIURL():String{
			if (!_user_info){
				return (null);
			};
			return (_user_info.api_url);
		}
		public static function getAPIToken():String{
			if (!_user_info){
				return (null);
			};
			return (_user_info.api_token);
		}
		public static function showLoginWidget(_arg1:Object=null):void{
			MochiServices.setContainer();
			MochiServices.bringToTop();
			MochiServices.send("coins_showLoginWidget", {options:_arg1});
		}
		public static function hideLoginWidget():void{
			MochiServices.send("coins_hideLoginWidget");
		}
		public static function requestLogin():void{
			MochiServices.send("coins_requestLogin");
		}
		public static function getUserInfo():void{
			MochiServices.send("coins_getUserInfo");
		}
		public static function saveUserProperties(_arg1:Object):void{
			MochiServices.send("coins_saveUserProperties", _arg1);
		}
		public static function addEventListener(_arg1:String, _arg2:Function):void{
			_dispatcher.addEventListener(_arg1, _arg2);
		}
		public static function get loggedIn():Boolean{
			return (!((_user_info == null)));
		}
		public static function triggerEvent(_arg1:String, _arg2:Object):void{
			_dispatcher.triggerEvent(_arg1, _arg2);
		}
		public static function removeEventListener(_arg1:String, _arg2:Function):void{
			_dispatcher.removeEventListener(_arg1, _arg2);
		}

		MochiSocial.addEventListener(MochiSocial.LOGGED_IN, function (_arg1:Object):void{
			_user_info = _arg1;
		});
		MochiSocial.addEventListener(MochiSocial.LOGGED_OUT, function (_arg1:Object):void{
			_user_info = null;
		});
	}
}//package mochi.as3 

****************

//MochiSync (mochi.as3.MochiSync)
package mochi.as3 {
	import flash.utils.*;

	public dynamic class MochiSync extends Proxy {

		private var _syncContainer:Object;

		public static var SYNC_REQUEST:String = "SyncRequest";
		public static var SYNC_PROPERTY:String = "UpdateProperty";

		public function MochiSync():void{
			_syncContainer = {};
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function getProperty(_arg1){
			return (_syncContainer[_arg1]);
		}
		override "http://www.adobe.com/2006/actionscript/flash/proxy"?? function setProperty(_arg1, _arg2):void{
			if (_syncContainer[_arg1] == _arg2){
				return;
			};
			var _local3:String = _arg1.toString();
			_syncContainer[_local3] = _arg2;
			MochiServices.send("sync_propUpdate", {name:_local3, value:_arg2});
		}
		public function triggerEvent(_arg1:String, _arg2:Object):void{
			switch (_arg1){
				case SYNC_REQUEST:
					MochiServices.send("sync_syncronize", _syncContainer);
					break;
				case SYNC_PROPERTY:
					_syncContainer[_arg2.name] = _arg2.value;
					break;
			};
		}

	}
}//package mochi.as3 

****************

//MochiUserData (mochi.as3.MochiUserData)
package mochi.as3 {
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;

	public class MochiUserData extends EventDispatcher {

		public var _loader:URLLoader;
		public var key:String;// = null
		public var data;// = null
		public var error:Event;// = null
		public var operation:String;// = null
		public var callback:Function;// = null

		public function MochiUserData(_arg1:String="", _arg2:Function=null){
			this.key = _arg1;
			this.callback = _arg2;
		}
		public function serialize(_arg1):ByteArray{
			var _local2:ByteArray = new ByteArray();
			_local2.objectEncoding = ObjectEncoding.AMF3;
			_local2.writeObject(_arg1);
			_local2.compress();
			return (_local2);
		}
		public function deserialize(_arg1:ByteArray){
			_arg1.objectEncoding = ObjectEncoding.AMF3;
			_arg1.uncompress();
			return (_arg1.readObject());
		}
		public function request(_arg1:String, _arg2:ByteArray):void{
			var _operation = _arg1;
			var _data = _arg2;
			operation = _operation;
			var api_url:String = MochiSocial.getAPIURL();
			var api_token:String = MochiSocial.getAPIToken();
			if ((((api_url == null)) || ((api_token == null)))){
				errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, "not logged in"));
				return;
			};
			_loader = new URLLoader();
			var args:URLVariables = new URLVariables();
			args.op = _operation;
			args.key = key;
			var req:URLRequest = new URLRequest((((MochiSocial.getAPIURL() + "/") + "MochiUserData?") + args.toString()));
			req.method = URLRequestMethod.POST;
			req.contentType = "application/x-mochi-userdata";
			req.requestHeaders = [new URLRequestHeader("x-mochi-services-version", MochiServices.getVersion()), new URLRequestHeader("x-mochi-api-token", api_token)];
			req.data = _data;
			_loader.dataFormat = URLLoaderDataFormat.BINARY;
			_loader.addEventListener(Event.COMPLETE, completeHandler);
			_loader.addEventListener(IOErrorEvent.IO_ERROR, errorHandler);
			_loader.addEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
			try {
				_loader.load(req);
			} catch(e:SecurityError) {
				errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + e.toString())));
			};
		}
		public function completeHandler(_arg1:Event):void{
			var event = _arg1;
			try {
				if (_loader.data.length){
					data = deserialize(_loader.data);
				} else {
					data = null;
				};
			} catch(e:Error) {
				errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("deserialize error: " + e.toString())));
				return;
			};
			if (callback != null){
				performCallback();
			} else {
				dispatchEvent(event);
			};
			close();
		}
		public function errorHandler(_arg1:IOErrorEvent):void{
			data = null;
			error = _arg1;
			if (callback != null){
				performCallback();
			} else {
				dispatchEvent(_arg1);
			};
			close();
		}
		public function securityErrorHandler(_arg1:SecurityErrorEvent):void{
			errorHandler(new IOErrorEvent(IOErrorEvent.IO_ERROR, false, false, ("security error: " + _arg1.toString())));
		}
		public function performCallback():void{
			try {
				callback(this);
			} catch(e:Error) {
			};
		}
		public function close():void{
			if (_loader){
				_loader.removeEventListener(Event.COMPLETE, completeHandler);
				_loader.removeEventListener(IOErrorEvent.IO_ERROR, errorHandler);
				_loader.removeEventListener(SecurityErrorEvent.SECURITY_ERROR, securityErrorHandler);
				_loader.close();
				_loader = null;
			};
			error = null;
			callback = null;
		}
		public function getEvent():void{
			request("get", serialize(null));
		}
		public function putEvent(_arg1):void{
			request("put", serialize(_arg1));
		}
		override public function toString():String{
			return ((((((((("[MochiUserData operation=" + operation) + " key=\"") + key) + "\" data=") + data) + " error=\"") + error) + "\"]"));
		}

		public static function get(_arg1:String, _arg2:Function):void{
			var _local3:MochiUserData = new MochiUserData(_arg1, _arg2);
			_local3.getEvent();
		}
		public static function put(_arg1:String, _arg2, _arg3:Function):void{
			var _local4:MochiUserData = new MochiUserData(_arg1, _arg3);
			_local4.putEvent(_arg2);
		}

	}
}//package mochi.as3 

****************

//wav (openchest.wav)
package openchest {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package openchest 

****************

//wav (otherscreens.wav)
package otherscreens {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package otherscreens 

****************

//wav (papow.wav)
package papow {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package papow 

****************

//Encode (Playtomic.Encode)
package Playtomic {
	import flash.display.*;
	import flash.utils.*;

	public class Encode {

		private static const BASE64_CHARS:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";

		private static var crcTable:Array;
		private static var crcTableComputed:Boolean = false;
		private static var hex_chr:String = "0123456789abcdef";

		public static function Base64(_arg1:ByteArray):String{
			var _local3:Array;
			var _local5:uint;
			var _local6:uint;
			var _local7:uint;
			var _local2 = "";
			var _local4:Array = new Array(4);
			_arg1.position = 0;
			while (_arg1.bytesAvailable > 0) {
				_local3 = new Array();
				_local5 = 0;
				while ((((_local5 < 3)) && ((_arg1.bytesAvailable > 0)))) {
					_local3[_local5] = _arg1.readUnsignedByte();
					_local5++;
				};
				_local4[0] = ((_local3[0] & 252) >> 2);
				_local4[1] = (((_local3[0] & 3) << 4) | (_local3[1] >> 4));
				_local4[2] = (((_local3[1] & 15) << 2) | (_local3[2] >> 6));
				_local4[3] = (_local3[2] & 63);
				_local6 = _local3.length;
				while (_local6 < 3) {
					_local4[(_local6 + 1)] = 64;
					_local6++;
				};
				_local7 = 0;
				while (_local7 < _local4.length) {
					_local2 = (_local2 + BASE64_CHARS.charAt(_local4[_local7]));
					_local7++;
				};
			};
			return (_local2);
		}
		public static function PNG(_arg1:BitmapData):ByteArray{
			var _local5:uint;
			var _local6:int;
			var _local2:ByteArray = new ByteArray();
			_local2.writeUnsignedInt(2303741511);
			_local2.writeUnsignedInt(218765834);
			var _local3:ByteArray = new ByteArray();
			_local3.writeInt(_arg1.width);
			_local3.writeInt(_arg1.height);
			_local3.writeUnsignedInt(134610944);
			_local3.writeByte(0);
			writeChunk(_local2, 1229472850, _local3);
			var _local4:ByteArray = new ByteArray();
			var _local7:int;
			while (_local7 < _arg1.height) {
				_local4.writeByte(0);
				if (!_arg1.transparent){
					_local6 = 0;
					while (_local6 < _arg1.width) {
						_local5 = _arg1.getPixel(_local6, _local7);
						_local4.writeUnsignedInt(uint((((_local5 & 0xFFFFFF) << 8) | 0xFF)));
						_local6++;
					};
				} else {
					_local6 = 0;
					while (_local6 < _arg1.width) {
						_local5 = _arg1.getPixel32(_local6, _local7);
						_local4.writeUnsignedInt(uint((((_local5 & 0xFFFFFF) << 8) | (_local5 >>> 24))));
						_local6++;
					};
				};
				_local7++;
			};
			_local4.compress();
			writeChunk(_local2, 1229209940, _local4);
			writeChunk(_local2, 1229278788, null);
			return (_local2);
		}
		private static function writeChunk(_arg1:ByteArray, _arg2:uint, _arg3:ByteArray):void{
			var _local8:uint;
			var _local9:uint;
			var _local10:uint;
			if (!crcTableComputed){
				crcTableComputed = true;
				crcTable = [];
				_local9 = 0;
				while (_local9 < 0x0100) {
					_local8 = _local9;
					_local10 = 0;
					while (_local10 < 8) {
						if ((_local8 & 1)){
							_local8 = uint((uint(3988292384) ^ uint((_local8 >>> 1))));
						} else {
							_local8 = uint((_local8 >>> 1));
						};
						_local10++;
					};
					crcTable[_local9] = _local8;
					_local9++;
				};
			};
			var _local4:uint;
			if (_arg3 != null){
				_local4 = _arg3.length;
			};
			_arg1.writeUnsignedInt(_local4);
			var _local5:uint = _arg1.position;
			_arg1.writeUnsignedInt(_arg2);
			if (_arg3 != null){
				_arg1.writeBytes(_arg3);
			};
			var _local6:uint = _arg1.position;
			_arg1.position = _local5;
			_local8 = 4294967295;
			var _local7:int;
			while (_local7 < (_local6 - _local5)) {
				_local8 = uint((crcTable[((_local8 ^ _arg1.readUnsignedByte()) & uint(0xFF))] ^ uint((_local8 >>> 8))));
				_local7++;
			};
			_local8 = uint((_local8 ^ uint(4294967295)));
			_arg1.position = _local6;
			_arg1.writeUnsignedInt(_local8);
		}
		private static function bitOR(_arg1:Number, _arg2:Number):Number{
			var _local3:Number = ((_arg1 & 1) | (_arg2 & 1));
			var _local4:Number = ((_arg1 >>> 1) | (_arg2 >>> 1));
			return (((_local4 << 1) | _local3));
		}
		private static function bitXOR(_arg1:Number, _arg2:Number):Number{
			var _local3:Number = ((_arg1 & 1) ^ (_arg2 & 1));
			var _local4:Number = ((_arg1 >>> 1) ^ (_arg2 >>> 1));
			return (((_local4 << 1) | _local3));
		}
		private static function bitAND(_arg1:Number, _arg2:Number):Number{
			var _local3:Number = ((_arg1 & 1) & (_arg2 & 1));
			var _local4:Number = ((_arg1 >>> 1) & (_arg2 >>> 1));
			return (((_local4 << 1) | _local3));
		}
		private static function addme(_arg1:Number, _arg2:Number):Number{
			var _local3:Number = ((_arg1 & 0xFFFF) + (_arg2 & 0xFFFF));
			var _local4:Number = (((_arg1 >> 16) + (_arg2 >> 16)) + (_local3 >> 16));
			return (((_local4 << 16) | (_local3 & 0xFFFF)));
		}
		private static function rhex(_arg1:Number):String{
			var _local3:int;
			var _local2 = "";
			_local3 = 0;
			while (_local3 <= 3) {
				_local2 = (_local2 + (hex_chr.charAt(((_arg1 >> ((_local3 * 8) + 4)) & 15)) + hex_chr.charAt(((_arg1 >> (_local3 * 8)) & 15))));
				_local3++;
			};
			return (_local2);
		}
		private static function str2blks_MD5(_arg1:String):Array{
			var _local4:int;
			var _local2:Number = (((_arg1.length + 8) >> 6) + 1);
			var _local3:Array = new Array((_local2 * 16));
			_local4 = 0;
			while (_local4 < (_local2 * 16)) {
				_local3[_local4] = 0;
				_local4++;
			};
			_local4 = 0;
			while (_local4 < _arg1.length) {
				_local3[(_local4 >> 2)] = (_local3[(_local4 >> 2)] | (_arg1.charCodeAt(_local4) << ((((_arg1.length * 8) + _local4) % 4) * 8)));
				_local4++;
			};
			_local3[(_local4 >> 2)] = (_local3[(_local4 >> 2)] | (128 << ((((_arg1.length * 8) + _local4) % 4) * 8)));
			var _local5:int = (_arg1.length * 8);
			_local3[((_local2 * 16) - 2)] = (_local5 & 0xFF);
			_local3[((_local2 * 16) - 2)] = (_local3[((_local2 * 16) - 2)] | (((_local5 >>> 8) & 0xFF) << 8));
			_local3[((_local2 * 16) - 2)] = (_local3[((_local2 * 16) - 2)] | (((_local5 >>> 16) & 0xFF) << 16));
			_local3[((_local2 * 16) - 2)] = (_local3[((_local2 * 16) - 2)] | (((_local5 >>> 24) & 0xFF) << 24));
			return (_local3);
		}
		private static function rol(_arg1:Number, _arg2:Number):Number{
			return (((_arg1 << _arg2) | (_arg1 >>> (32 - _arg2))));
		}
		private static function cmn(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number):Number{
			return (addme(rol(addme(addme(_arg2, _arg1), addme(_arg4, _arg6)), _arg5), _arg3));
		}
		private static function ff(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
			return (cmn(bitOR(bitAND(_arg2, _arg3), bitAND(~(_arg2), _arg4)), _arg1, _arg2, _arg5, _arg6, _arg7));
		}
		private static function gg(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
			return (cmn(bitOR(bitAND(_arg2, _arg4), bitAND(_arg3, ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
		}
		private static function hh(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
			return (cmn(bitXOR(bitXOR(_arg2, _arg3), _arg4), _arg1, _arg2, _arg5, _arg6, _arg7));
		}
		private static function ii(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number, _arg5:Number, _arg6:Number, _arg7:Number):Number{
			return (cmn(bitXOR(_arg3, bitOR(_arg2, ~(_arg4))), _arg1, _arg2, _arg5, _arg6, _arg7));
		}
		public static function MD5(_arg1:String):String{
			var _local7:int;
			var _local8:Number;
			var _local9:Number;
			var _local10:Number;
			var _local11:Number;
			var _local2:Array = str2blks_MD5(_arg1);
			var _local3:Number = 1732584193;
			var _local4:Number = -271733879;
			var _local5:Number = -1732584194;
			var _local6:Number = 271733878;
			_local7 = 0;
			while (_local7 < _local2.length) {
				_local8 = _local3;
				_local9 = _local4;
				_local10 = _local5;
				_local11 = _local6;
				_local3 = ff(_local3, _local4, _local5, _local6, _local2[(_local7 + 0)], 7, -680876936);
				_local6 = ff(_local6, _local3, _local4, _local5, _local2[(_local7 + 1)], 12, -389564586);
				_local5 = ff(_local5, _local6, _local3, _local4, _local2[(_local7 + 2)], 17, 606105819);
				_local4 = ff(_local4, _local5, _local6, _local3, _local2[(_local7 + 3)], 22, -1044525330);
				_local3 = ff(_local3, _local4, _local5, _local6, _local2[(_local7 + 4)], 7, -176418897);
				_local6 = ff(_local6, _local3, _local4, _local5, _local2[(_local7 + 5)], 12, 1200080426);
				_local5 = ff(_local5, _local6, _local3, _local4, _local2[(_local7 + 6)], 17, -1473231341);
				_local4 = ff(_local4, _local5, _local6, _local3, _local2[(_local7 + 7)], 22, -45705983);
				_local3 = ff(_local3, _local4, _local5, _local6, _local2[(_local7 + 8)], 7, 1770035416);
				_local6 = ff(_local6, _local3, _local4, _local5, _local2[(_local7 + 9)], 12, -1958414417);
				_local5 = ff(_local5, _local6, _local3, _local4, _local2[(_local7 + 10)], 17, -42063);
				_local4 = ff(_local4, _local5, _local6, _local3, _local2[(_local7 + 11)], 22, -1990404162);
				_local3 = ff(_local3, _local4, _local5, _local6, _local2[(_local7 + 12)], 7, 1804603682);
				_local6 = ff(_local6, _local3, _local4, _local5, _local2[(_local7 + 13)], 12, -40341101);
				_local5 = ff(_local5, _local6, _local3, _local4, _local2[(_local7 + 14)], 17, -1502002290);
				_local4 = ff(_local4, _local5, _local6, _local3, _local2[(_local7 + 15)], 22, 1236535329);
				_local3 = gg(_local3, _local4, _local5, _local6, _local2[(_local7 + 1)], 5, -165796510);
				_local6 = gg(_local6, _local3, _local4, _local5, _local2[(_local7 + 6)], 9, -1069501632);
				_local5 = gg(_local5, _local6, _local3, _local4, _local2[(_local7 + 11)], 14, 643717713);
				_local4 = gg(_local4, _local5, _local6, _local3, _local2[(_local7 + 0)], 20, -373897302);
				_local3 = gg(_local3, _local4, _local5, _local6, _local2[(_local7 + 5)], 5, -701558691);
				_local6 = gg(_local6, _local3, _local4, _local5, _local2[(_local7 + 10)], 9, 38016083);
				_local5 = gg(_local5, _local6, _local3, _local4, _local2[(_local7 + 15)], 14, -660478335);
				_local4 = gg(_local4, _local5, _local6, _local3, _local2[(_local7 + 4)], 20, -405537848);
				_local3 = gg(_local3, _local4, _local5, _local6, _local2[(_local7 + 9)], 5, 568446438);
				_local6 = gg(_local6, _local3, _local4, _local5, _local2[(_local7 + 14)], 9, -1019803690);
				_local5 = gg(_local5, _local6, _local3, _local4, _local2[(_local7 + 3)], 14, -187363961);
				_local4 = gg(_local4, _local5, _local6, _local3, _local2[(_local7 + 8)], 20, 1163531501);
				_local3 = gg(_local3, _local4, _local5, _local6, _local2[(_local7 + 13)], 5, -1444681467);
				_local6 = gg(_local6, _local3, _local4, _local5, _local2[(_local7 + 2)], 9, -51403784);
				_local5 = gg(_local5, _local6, _local3, _local4, _local2[(_local7 + 7)], 14, 1735328473);
				_local4 = gg(_local4, _local5, _local6, _local3, _local2[(_local7 + 12)], 20, -1926607734);
				_local3 = hh(_local3, _local4, _local5, _local6, _local2[(_local7 + 5)], 4, -378558);
				_local6 = hh(_local6, _local3, _local4, _local5, _local2[(_local7 + 8)], 11, -2022574463);
				_local5 = hh(_local5, _local6, _local3, _local4, _local2[(_local7 + 11)], 16, 1839030562);
				_local4 = hh(_local4, _local5, _local6, _local3, _local2[(_local7 + 14)], 23, -35309556);
				_local3 = hh(_local3, _local4, _local5, _local6, _local2[(_local7 + 1)], 4, -1530992060);
				_local6 = hh(_local6, _local3, _local4, _local5, _local2[(_local7 + 4)], 11, 1272893353);
				_local5 = hh(_local5, _local6, _local3, _local4, _local2[(_local7 + 7)], 16, -155497632);
				_local4 = hh(_local4, _local5, _local6, _local3, _local2[(_local7 + 10)], 23, -1094730640);
				_local3 = hh(_local3, _local4, _local5, _local6, _local2[(_local7 + 13)], 4, 681279174);
				_local6 = hh(_local6, _local3, _local4, _local5, _local2[(_local7 + 0)], 11, -358537222);
				_local5 = hh(_local5, _local6, _local3, _local4, _local2[(_local7 + 3)], 16, -722521979);
				_local4 = hh(_local4, _local5, _local6, _local3, _local2[(_local7 + 6)], 23, 76029189);
				_local3 = hh(_local3, _local4, _local5, _local6, _local2[(_local7 + 9)], 4, -640364487);
				_local6 = hh(_local6, _local3, _local4, _local5, _local2[(_local7 + 12)], 11, -421815835);
				_local5 = hh(_local5, _local6, _local3, _local4, _local2[(_local7 + 15)], 16, 530742520);
				_local4 = hh(_local4, _local5, _local6, _local3, _local2[(_local7 + 2)], 23, -995338651);
				_local3 = ii(_local3, _local4, _local5, _local6, _local2[(_local7 + 0)], 6, -198630844);
				_local6 = ii(_local6, _local3, _local4, _local5, _local2[(_local7 + 7)], 10, 1126891415);
				_local5 = ii(_local5, _local6, _local3, _local4, _local2[(_local7 + 14)], 15, -1416354905);
				_local4 = ii(_local4, _local5, _local6, _local3, _local2[(_local7 + 5)], 21, -57434055);
				_local3 = ii(_local3, _local4, _local5, _local6, _local2[(_local7 + 12)], 6, 1700485571);
				_local6 = ii(_local6, _local3, _local4, _local5, _local2[(_local7 + 3)], 10, -1894986606);
				_local5 = ii(_local5, _local6, _local3, _local4, _local2[(_local7 + 10)], 15, -1051523);
				_local4 = ii(_local4, _local5, _local6, _local3, _local2[(_local7 + 1)], 21, -2054922799);
				_local3 = ii(_local3, _local4, _local5, _local6, _local2[(_local7 + 8)], 6, 1873313359);
				_local6 = ii(_local6, _local3, _local4, _local5, _local2[(_local7 + 15)], 10, -30611744);
				_local5 = ii(_local5, _local6, _local3, _local4, _local2[(_local7 + 6)], 15, -1560198380);
				_local4 = ii(_local4, _local5, _local6, _local3, _local2[(_local7 + 13)], 21, 1309151649);
				_local3 = ii(_local3, _local4, _local5, _local6, _local2[(_local7 + 4)], 6, -145523070);
				_local6 = ii(_local6, _local3, _local4, _local5, _local2[(_local7 + 11)], 10, -1120210379);
				_local5 = ii(_local5, _local6, _local3, _local4, _local2[(_local7 + 2)], 15, 718787259);
				_local4 = ii(_local4, _local5, _local6, _local3, _local2[(_local7 + 9)], 21, -343485551);
				_local3 = addme(_local3, _local8);
				_local4 = addme(_local4, _local9);
				_local5 = addme(_local5, _local10);
				_local6 = addme(_local6, _local11);
				_local7 = (_local7 + 16);
			};
			return ((((rhex(_local3) + rhex(_local4)) + rhex(_local5)) + rhex(_local6)));
		}

	}
}//package Playtomic 

****************

//Leaderboards (Playtomic.Leaderboards)
package Playtomic {
	import flash.events.*;
	import flash.net.*;

	public class Leaderboards {

		public static function List(_arg1:String, _arg2:Function, _arg3:Object=null):void{
			var sendaction:URLLoader;
			var handled:Boolean;
			var bridge:Function;
			var key:String;
			var table = _arg1;
			var callback = _arg2;
			var options = _arg3;
			if (options == null){
				options = new Object();
			};
			var global:Boolean = (options.hasOwnProperty("global")) ? options["global"] : true;
			var highest:Boolean = (options.hasOwnProperty("highest")) ? options["highest"] : true;
			var mode:String = (options.hasOwnProperty("mode")) ? options["mode"] : "alltime";
			var customfilters:Object = (options.hasOwnProperty("customfilters")) ? options["customfilters"] : {};
			var page:int = (options.hasOwnProperty("page")) ? options["page"] : 1;
			var perpage:int = (options.hasOwnProperty("perpage")) ? options["perpage"] : 20;
			sendaction = new URLLoader();
			handled = false;
			if (callback != null){
				bridge = function ():void{
					if ((((callback == null)) || (handled))){
						return;
					};
					handled = true;
					ProcessScores(sendaction, callback);
				};
				sendaction.addEventListener(Event.COMPLETE, bridge);
			};
			var fail:Function = function ():void{
				if ((((callback == null)) || (handled))){
					return;
				};
				handled = true;
				callback([], 0, {Success:false, ErrorCode:1});
			};
			var httpstatusignore:Function = function ():void{
			};
			var postdata:URLVariables = new URLVariables();
			var numcustomfilters:int;
			if (customfilters != null){
				for (key in customfilters) {
					postdata[("ckey" + numcustomfilters)] = key;
					postdata[("cdata" + numcustomfilters)] = escape(customfilters[key]);
					numcustomfilters = (numcustomfilters + 1);
				};
			};
			var request:URLRequest = new URLRequest(((((((((((((((((((("http://g" + Log.GUID) + ".api.playtomic.com/leaderboards/list.aspx?swfid=") + Log.SWFID) + "&table=") + table) + "&mode=") + mode) + "&filters=") + numcustomfilters) + "&url=") + (((global) || ((Log.SourceUrl == null)))) ? "global" : Log.SourceUrl) + "&highest=") + (highest) ? "y" : "n") + "&page=") + page) + "&perpage=") + perpage) + "&") + Math.random()));
			request.data = postdata;
			request.method = URLRequestMethod.POST;
			sendaction.addEventListener(IOErrorEvent.IO_ERROR, fail, false, 0, true);
			sendaction.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpstatusignore, false, 0, true);
			sendaction.addEventListener(SecurityErrorEvent.SECURITY_ERROR, fail, false, 0, true);
			sendaction.load(request);
		}
		public static function ListFB(_arg1:String, _arg2:Function, _arg3:Object=null):void{
			var sendaction:URLLoader;
			var handled:Boolean;
			var bridge:Function;
			var key:String;
			var table = _arg1;
			var callback = _arg2;
			var options = _arg3;
			if (options == null){
				options = new Object();
			};
			var global:Boolean = (options.hasOwnProperty("global")) ? options["global"] : true;
			var highest:Boolean = (options.hasOwnProperty("highest")) ? options["highest"] : true;
			var friendslist:Array = (options.hasOwnProperty("friendslist")) ? options["friendslist"] : new Array();
			var mode:String = (options.hasOwnProperty("mode")) ? options["mode"] : "alltime";
			var customfilters:Object = (options.hasOwnProperty("customfilters")) ? options["customfilters"] : {};
			var page:int = (options.hasOwnProperty("page")) ? options["page"] : 1;
			var perpage:int = (options.hasOwnProperty("perpage")) ? options["perpage"] : 20;
			sendaction = new URLLoader();
			handled = false;
			if (callback != null){
				bridge = function ():void{
					if ((((callback == null)) || (handled))){
						return;
					};
					handled = true;
					ProcessScores(sendaction, callback);
				};
				sendaction.addEventListener(Event.COMPLETE, bridge);
			};
			var fail:Function = function ():void{
				if ((((callback == null)) || (handled))){
					return;
				};
				handled = true;
				callback([], 0, {Success:false, ErrorCode:1});
			};
			var httpstatusignore:Function = function ():void{
			};
			var postdata:URLVariables = new URLVariables();
			postdata["friendslist"] = friendslist.join(",");
			var numcustomfilters:int;
			if (customfilters != null){
				for (key in customfilters) {
					postdata[("ckey" + numcustomfilters)] = key;
					postdata[("cdata" + numcustomfilters)] = escape(customfilters[key]);
					numcustomfilters = (numcustomfilters + 1);
				};
			};
			var request:URLRequest = new URLRequest(((((((((((((((((((("http://g" + Log.GUID) + ".api.playtomic.com/leaderboards/listfb.aspx?swfid=") + Log.SWFID) + "&table=") + table) + "&mode=") + mode) + "&filters=") + numcustomfilters) + "&url=") + (((global) || ((Log.SourceUrl == null)))) ? "global" : Log.SourceUrl) + "&highest=") + (highest) ? "y" : "n") + "&page=") + page) + "&perpage=") + perpage) + "&") + Math.random()));
			request.data = postdata;
			request.method = URLRequestMethod.POST;
			sendaction.addEventListener(IOErrorEvent.IO_ERROR, fail, false, 0, true);
			sendaction.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpstatusignore, false, 0, true);
			sendaction.addEventListener(SecurityErrorEvent.SECURITY_ERROR, fail, false, 0, true);
			sendaction.load(request);
		}
		public static function Save(_arg1:PlayerScore, _arg2:String, _arg3:Function=null, _arg4:Object=null):void{
			var sendaction:URLLoader;
			var handled:Boolean;
			var bridge:Function;
			var key:String;
			var score = _arg1;
			var table = _arg2;
			var callback = _arg3;
			var options = _arg4;
			if (options == null){
				options = new Object();
			};
			var facebook:Boolean = (options.hasOwnProperty("facebook")) ? options["facebook"] : false;
			var allowduplicates:Boolean = (options.hasOwnProperty("allowduplicates")) ? options["allowduplicates"] : false;
			var highest:Boolean = (options.hasOwnProperty("highest")) ? options["highest"] : true;
			sendaction = new URLLoader();
			handled = false;
			if (callback != null){
				bridge = function ():void{
					if ((((callback == null)) || (handled))){
						return;
					};
					handled = true;
					var _local1:XML = XML(sendaction["data"]);
					var _local2:int = parseInt(_local1["status"]);
					if (_local2 == 1){
						score.SDate = new Date();
						score.RDate = "Just now";
					};
					callback(score, {Success:(_local2 == 1), ErrorCode:parseInt(_local1["errorcode"])});
				};
				sendaction.addEventListener(Event.COMPLETE, bridge);
			};
			var fail:Function = function ():void{
				if ((((callback == null)) || (handled))){
					return;
				};
				handled = true;
				callback(score, {Success:false, ErrorCode:1});
			};
			var httpstatusignore:Function = function ():void{
			};
			var s:String = score.Points.toString();
			if (s.indexOf(".") > -1){
				s = s.substring(0, s.indexOf("."));
			};
			var postdata:URLVariables = new URLVariables();
			postdata["table"] = escape(table);
			postdata["highest"] = highest;
			postdata["name"] = escape(score.Name);
			postdata["points"] = s;
			postdata["allowduplicates"] = (allowduplicates) ? "y" : "n";
			postdata["auth"] = Encode.MD5((Log.SourceUrl + s));
			postdata["fb"] = (facebook) ? "y" : "n";
			postdata["fbuserid"] = score.FBUserId;
			var customfields:int;
			if (score.CustomData != null){
				for (key in score.CustomData) {
					postdata[("ckey" + customfields)] = key;
					postdata[("cdata" + customfields)] = escape(score.CustomData[key]);
					customfields = (customfields + 1);
				};
			};
			postdata["customfields"] = customfields;
			var request:URLRequest = new URLRequest(((((((("http://g" + Log.GUID) + ".api.playtomic.com/leaderboards/save.aspx?swfid=") + Log.SWFID) + "&url=") + Log.SourceUrl) + "&r=") + Math.random()));
			request.data = postdata;
			request.method = URLRequestMethod.POST;
			sendaction.addEventListener(IOErrorEvent.IO_ERROR, fail, false, 0, true);
			sendaction.addEventListener(HTTPStatusEvent.HTTP_STATUS, httpstatusignore, false, 0, true);
			sendaction.addEventListener(SecurityErrorEvent.SECURITY_ERROR, fail, false, 0, true);
			sendaction.load(request);
		}
		private static function ProcessScores(_arg1:URLLoader, _arg2:Function):void{
			var _local8:XMLList;
			var _local9:String;
			var _local10:int;
			var _local11:int;
			var _local12:int;
			var _local13:XML;
			var _local14:PlayerScore;
			var _local15:XMLList;
			var _local16:XML;
			var _local3:XML = XML(_arg1["data"]);
			var _local4:int = parseInt(_local3["status"]);
			var _local5:int = parseInt(_local3["errorcode"]);
			var _local6:int = parseInt(_local3["numscores"]);
			var _local7:Array = new Array();
			if (_local4 == 1){
				_local8 = _local3["score"];
				for each (_local13 in _local8) {
					_local9 = _local13["sdate"];
					_local10 = int(_local9.substring((_local9.lastIndexOf("/") + 1)));
					_local11 = int(_local9.substring(0, _local9.indexOf("/")));
					_local12 = int(_local9.substring((_local9.indexOf("/") + 1)).substring(0, 2));
					_local14 = new PlayerScore();
					_local14.SDate = new Date(_local10, (_local11 - 1), _local12);
					_local14.RDate = _local13["rdate"];
					_local14.Name = _local13["name"];
					_local14.Points = _local13["points"];
					_local14.Website = _local13["website"];
					if (_local13["custom"]){
						_local15 = _local13["custom"];
						for each (_local16 in _local15.children()) {
							_local14.CustomData[_local16.name()] = _local16.text();
						};
					};
					_local7.push(_local14);
				};
			};
			_arg2(_local7, _local6, {Success:(_local4 == 1), ErrorCode:_local5});
		}

	}
}//package Playtomic 

****************

//Link (Playtomic.Link)
package Playtomic {
	import flash.net.*;

	public final class Link {

		private static var Clicks:Array = new Array();

		public static function Open(_arg1:String, _arg2:String, _arg3:String):Boolean{
			var result:Boolean;
			var url = _arg1;
			var name = _arg2;
			var group = _arg3;
			var unique:int;
			var bunique:int;
			var total:int;
			var btotal:int;
			var fail:int;
			var bfail:int;
			var key:String = ((url + ".") + name);
			var baseurl:String = url;
			baseurl = baseurl.replace("http://", "");
			if (baseurl.indexOf("/") > -1){
				baseurl = baseurl.substring(0, baseurl.indexOf("/"));
			};
			if (baseurl.indexOf("?") > -1){
				baseurl = baseurl.substring(0, baseurl.indexOf("?"));
			};
			baseurl = (("http://" + baseurl) + "/");
			var baseurlname:String = baseurl;
			if (baseurlname.indexOf("//") > -1){
				baseurlname = baseurlname.substring((baseurlname.indexOf("//") + 2));
			};
			baseurlname = baseurlname.replace("www.", "");
			if (baseurlname.indexOf("/") > -1){
				baseurlname = baseurlname.substring(0, baseurlname.indexOf("/"));
			};
			try {
				navigateToURL(new URLRequest(url));
				if (Clicks.indexOf(key) > -1){
					total = 1;
				} else {
					total = 1;
					unique = 1;
					Clicks.push(key);
				};
				if (Clicks.indexOf(baseurlname) > -1){
					btotal = 1;
				} else {
					btotal = 1;
					bunique = 1;
					Clicks.push(baseurlname);
				};
				result = true;
			} catch(err) {
				fail = 1;
				bfail = 1;
				result = false;
			};
			Log.Link(baseurl, baseurlname.toLowerCase(), "DomainTotals", bunique, btotal, bfail);
			Log.Link(url, name, group, unique, total, fail);
			Log.ForceSend();
			return (result);
		}

	}
}//package Playtomic 

****************

//Log (Playtomic.Log)
package Playtomic {
	import flash.events.*;
	import flash.net.*;
	import flash.utils.*;
	import flash.system.*;
	import flash.external.*;

	public final class Log {

		private static const PingF:Timer = new Timer(60000);
		private static const PingR:Timer = new Timer(30000);

		public static var Enabled:Boolean = false;
		public static var Queue:Boolean = true;
		public static var SWFID:int = 0;
		public static var GUID:String = "";
		public static var SourceUrl:String;
		public static var BaseUrl:String;
		public static var Cookie:SharedObject;
		public static var Request:LogRequest;
		private static var FirstPing:Boolean = true;
		private static var Pings:int = 0;
		private static var Plays:int = 0;
		private static var HighestGoal:int = 0;
		private static var Frozen:Boolean = false;
		private static var FrozenQueue:Array = new Array();
		private static var Customs:Array = new Array();
		private static var LevelCounters:Array = new Array();
		private static var LevelAverages:Array = new Array();
		private static var LevelRangeds:Array = new Array();

		public static function View(_arg1:int=0, _arg2:String="", _arg3:String=""):void{
			if (SWFID > 0){
				return;
			};
			SWFID = _arg1;
			GUID = _arg2;
			Enabled = true;
			if ((((SWFID == 0)) || ((GUID == "")))){
				Enabled = false;
				return;
			};
			if (((((!((_arg3.indexOf("http://") == 0))) && (!((Security.sandboxType == "localWithNetwork"))))) && (!((Security.sandboxType == "localTrusted"))))){
				Enabled = false;
				return;
			};
			SourceUrl = GetUrl(_arg3);
			if ((((((SourceUrl == null)) || ((SourceUrl == "")))) || ((SourceUrl.indexOf("https://") == 0)))){
				Enabled = false;
				return;
			};
			Security.allowDomain((("http://g" + Log.GUID) + ".api.playtomic.com/"));
			Security.allowInsecureDomain((("http://g" + Log.GUID) + ".api.playtomic.com/"));
			Security.loadPolicyFile((("http://g" + Log.GUID) + ".api.playtomic.com/crossdomain.xml"));
			Request = LogRequest.Create();
			Cookie = SharedObject.getLocal("playtomic");
			var _local4:int = GetCookie("views");
			_local4++;
			SaveCookie("views", _local4);
			Send(("v/" + _local4), true);
			PingF.addEventListener(TimerEvent.TIMER, PingServer);
			PingF.start();
		}
		public static function Play():void{
			if (!Enabled){
				return;
			};
			LevelCounters = new Array();
			LevelAverages = new Array();
			LevelRangeds = new Array();
			Plays++;
			Send(("p/" + Plays));
		}
		private static function PingServer(... _args):void{
			if (!Enabled){
				return;
			};
			Pings++;
			Send(((("t/" + (FirstPing) ? "y" : "n") + "/") + Pings), true);
			if (FirstPing){
				PingF.stop();
				PingR.addEventListener(TimerEvent.TIMER, PingServer);
				PingR.start();
				FirstPing = false;
			};
		}
		public static function CustomMetric(_arg1:String, _arg2:String=null, _arg3:Boolean=false):void{
			if (!Enabled){
				return;
			};
			if (_arg2 == null){
				_arg2 = "";
			};
			if (_arg3){
				if (Customs.indexOf(_arg1) > -1){
					return;
				};
				Customs.push(_arg1);
			};
			Send(((("c/" + Clean(_arg1)) + "/") + Clean(_arg2)));
		}
		public static function LevelCounterMetric(_arg1:String, _arg2, _arg3:Boolean=false):void{
			if (!Enabled){
				return;
			};
			if (_arg3){
				if (LevelCounters.indexOf(_arg1) > -1){
					return;
				};
				LevelCounters.push(_arg1);
			};
			Send(((("lc/" + Clean(_arg1)) + "/") + Clean(_arg2)));
		}
		public static function LevelRangedMetric(_arg1:String, _arg2, _arg3:int, _arg4:Boolean=false):void{
			if (!Enabled){
				return;
			};
			if (_arg4){
				if (LevelRangeds.indexOf(_arg1) > -1){
					return;
				};
				LevelRangeds.push(_arg1);
			};
			Send(((((("lr/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3));
		}
		public static function LevelAverageMetric(_arg1:String, _arg2, _arg3:int, _arg4:Boolean=false):void{
			if (!Enabled){
				return;
			};
			if (_arg4){
				if (LevelAverages.indexOf(_arg1) > -1){
					return;
				};
				LevelAverages.push(_arg1);
			};
			Send(((((("la/" + Clean(_arg1)) + "/") + Clean(_arg2)) + "/") + _arg3));
		}
		public static function Link(_arg1:String, _arg2:String, _arg3:String, _arg4:int, _arg5:int, _arg6:int):void{
			if (!Enabled){
				return;
			};
			Send(((((((((((("l/" + Clean(_arg2)) + "/") + Clean(_arg3)) + "/") + Clean(_arg1)) + "/") + _arg4) + "/") + _arg5) + "/") + _arg6));
		}
		public static function Freeze():void{
			Frozen = true;
		}
		public static function UnFreeze():void{
			Frozen = false;
			Request.MassQueue(FrozenQueue);
		}
		public static function ForceSend():void{
			if (!Enabled){
				return;
			};
			Request.Send();
			Request = LogRequest.Create();
			if (FrozenQueue.length > 0){
				Request.MassQueue(FrozenQueue);
			};
		}
		private static function Send(_arg1:String, _arg2:Boolean=false):void{
			if (Frozen){
				FrozenQueue.push(_arg1);
				return;
			};
			Request.Queue(_arg1);
			if (((((Request.Ready) || (_arg2))) || (!(Queue)))){
				Request.Send();
				Request = LogRequest.Create();
			};
		}
		private static function Clean(_arg1:String):String{
			while (_arg1.indexOf("/") > -1) {
				_arg1 = _arg1.replace("/", "\\");
			};
			while (_arg1.indexOf("~") > -1) {
				_arg1 = _arg1.replace("~", "-");
			};
			return (escape(_arg1));
		}
		private static function GetCookie(_arg1:String):int{
			if (Cookie.data[_arg1] == undefined){
				return (0);
			};
			return (int(Cookie.data[_arg1]));
		}
		private static function SaveCookie(_arg1:String, _arg2:int):void{
			var _local3:SharedObject = SharedObject.getLocal("swfstats");
			_local3.data[_arg1] = _arg2.toString();
			_local3.flush();
		}
		private static function GetUrl(_arg1:String):String{
			var url:String;
			var defaulturl = _arg1;
			if (ExternalInterface.available){
				try {
					url = String(ExternalInterface.call("window.location.href.toString"));
				} catch(s:Error) {
					url = defaulturl;
				};
			} else {
				if ((((defaulturl.indexOf("http://") == 0)) || ((defaulturl.indexOf("https://") == 0)))){
					url = defaulturl;
				};
			};
			if ((((((url == null)) || ((url == "")))) || ((url == "null")))){
				if ((((Security.sandboxType == "localWithNetwork")) || ((Security.sandboxType == "localTrusted")))){
					url = "http://local-testing/";
				} else {
					url = null;
				};
			};
			return (escape(url));
		}

	}
}//package Playtomic 

****************

//LogRequest (Playtomic.LogRequest)
package Playtomic {
	import flash.events.*;
	import flash.net.*;

	public final class LogRequest {

		private var Sender:URLLoader;
		private var Target:URLRequest;
		private var Data:String;// = ""
		private var BaseUrl:String;
		public var Ready:Boolean;// = false

		private static var Failed:int = 0;
		private static var Pool:Array = new Array();

		public function LogRequest(){
			this.Sender = new URLLoader();
			this.Sender.addEventListener(Event.COMPLETE, this.Dispose, false, 0, true);
			this.Sender.addEventListener(IOErrorEvent.IO_ERROR, this.IOErrorHandler, false, 0, true);
			this.Sender.addEventListener(HTTPStatusEvent.HTTP_STATUS, this.StatusChange, false, 0, true);
			this.Sender.addEventListener(SecurityErrorEvent.SECURITY_ERROR, this.SecurityErrorHandler, false, 0, true);
			this.Target = new URLRequest();
			this.BaseUrl = ((("http://g" + Log.GUID) + ".api.playtomic.com/tracker/q.aspx?swfid=") + Log.SWFID);
		}
		public function MassQueue(_arg1:Array):void{
			var _local3:LogRequest;
			if (Failed > 3){
				return;
			};
			var _local2:int = (_arg1.length - 1);
			while (_local2 > -1) {
				this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1[_local2]));
				_arg1.splice(_local2, 1);
				if (this.Data.length > 300){
					_local3 = Create();
					_local3.MassQueue(_arg1);
					this.Ready = true;
					this.Send();
					return;
				};
				_local2--;
			};
			Log.Request = this;
		}
		public function Queue(_arg1:String):void{
			if (Failed > 3){
				return;
			};
			this.Data = (this.Data + (((this.Data == "")) ? "" : "~" + _arg1));
			if (this.Data.length > 300){
				this.Ready = true;
			};
		}
		public function Send():void{
			this.Target.url = (((((((this.BaseUrl + "&q=") + this.Data) + "&url=") + Log.SourceUrl) + "&") + Math.random()) + "z");
			this.Sender.load(this.Target);
		}
		public function Dispose(_arg1:Event=null):void{
			Pool.push(this);
		}
		private function IOErrorHandler(_arg1:IOErrorEvent):void{
			Failed++;
		}
		private function SecurityErrorHandler(_arg1:SecurityErrorEvent):void{
		}
		private function StatusChange(_arg1:HTTPStatusEvent):void{
		}

		public static function Create():LogRequest{
			var _local1:LogRequest = ((Pool.length > 0)) ? (Pool.pop() as LogRequest) : new (LogRequest);
			_local1.Data = "";
			_local1.Ready = false;
			return (_local1);
		}

	}
}//package Playtomic 

****************

//PlayerScore (Playtomic.PlayerScore)
package Playtomic {

	public final class PlayerScore {

		public var Name:String;
		public var FBUserId:String;
		public var Points:Number;
		public var Website:String;
		public var SDate:Date;
		public var RDate:String;
		public var CustomData:Object;

		public function PlayerScore(){
			CustomData = {};
			super();
		}
	}
}//package Playtomic 

****************

//wav (rumblewhistle.wav)
package rumblewhistle {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package rumblewhistle 

****************

//wav (shoot_bazooka.wav)
package shoot_bazooka {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_bazooka 

****************

//wav (shoot_crossbow.wav)
package shoot_crossbow {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_crossbow 

****************

//wav (shoot_flamethrower.wav)
package shoot_flamethrower {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_flamethrower 

****************

//wav (shoot_machinegun.wav)
package shoot_machinegun {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_machinegun 

****************

//wav (shoot_pistol.wav)
package shoot_pistol {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_pistol 

****************

//wav (shoot_rifle.wav)
package shoot_rifle {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_rifle 

****************

//wav (shoot_romancandle.wav)
package shoot_romancandle {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_romancandle 

****************

//wav (shoot_squirtgun.wav)
package shoot_squirtgun {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package shoot_squirtgun 

****************

//wav (startlevel.wav)
package startlevel {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package startlevel 

****************

//wav (train_tracks.wav)
package train_tracks {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package train_tracks 

****************

//wav (watersplash.wav)
package watersplash {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package watersplash 

****************

//wav (whoosh1.wav)
package whoosh1 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package whoosh1 

****************

//wav (whoosh2.wav)
package whoosh2 {
	import flash.media.*;

	public dynamic class wav extends Sound {

	}
}//package whoosh2 

****************

//AlternateTrack (AlternateTrack)
package {
	import flash.media.*;

	public dynamic class AlternateTrack extends Sound {

	}
}//package 

****************

//api_getthisgame_button (api_getthisgame_button)
package {
	import flash.display.*;

	public dynamic class api_getthisgame_button extends MovieClip {

	}
}//package 

****************

//api_largebutton_left (api_largebutton_left)
package {
	import flash.display.*;

	public dynamic class api_largebutton_left extends MovieClip {

	}
}//package 

****************

//api_largebutton_left_overlay (api_largebutton_left_overlay)
package {
	import flash.display.*;

	public dynamic class api_largebutton_left_overlay extends MovieClip {

	}
}//package 

****************

//api_largebutton_middle (api_largebutton_middle)
package {
	import flash.display.*;

	public dynamic class api_largebutton_middle extends MovieClip {

	}
}//package 

****************

//api_largebutton_middle_overlay (api_largebutton_middle_overlay)
package {
	import flash.display.*;

	public dynamic class api_largebutton_middle_overlay extends MovieClip {

	}
}//package 

****************

//api_largebutton_right (api_largebutton_right)
package {
	import flash.display.*;

	public dynamic class api_largebutton_right extends MovieClip {

	}
}//package 

****************

//api_largebutton_right_overlay (api_largebutton_right_overlay)
package {
	import flash.display.*;

	public dynamic class api_largebutton_right_overlay extends MovieClip {

	}
}//package 

****************

//api_menu_bottom_panel (api_menu_bottom_panel)
package {
	import flash.display.*;

	public dynamic class api_menu_bottom_panel extends MovieClip {

	}
}//package 

****************

//api_menu_top_panel (api_menu_top_panel)
package {
	import flash.display.*;

	public dynamic class api_menu_top_panel extends MovieClip {

	}
}//package 

****************

//api_mute_btn (api_mute_btn)
package {
	import flash.display.*;

	public dynamic class api_mute_btn extends SimpleButton {

	}
}//package 

****************

//api_redbutton_left (api_redbutton_left)
package {
	import flash.display.*;

	public dynamic class api_redbutton_left extends MovieClip {

	}
}//package 

****************

//api_redbutton_middle (api_redbutton_middle)
package {
	import flash.display.*;

	public dynamic class api_redbutton_middle extends MovieClip {

	}
}//package 

****************

//api_redbutton_right (api_redbutton_right)
package {
	import flash.display.*;

	public dynamic class api_redbutton_right extends MovieClip {

	}
}//package 

****************

//api_smallbutton_left (api_smallbutton_left)
package {
	import flash.display.*;

	public dynamic class api_smallbutton_left extends MovieClip {

	}
}//package 

****************

//api_smallbutton_left_overlay (api_smallbutton_left_overlay)
package {
	import flash.display.*;

	public dynamic class api_smallbutton_left_overlay extends MovieClip {

	}
}//package 

****************

//api_smallbutton_middle (api_smallbutton_middle)
package {
	import flash.display.*;

	public dynamic class api_smallbutton_middle extends MovieClip {

	}
}//package 

****************

//api_smallbutton_middle_overlay (api_smallbutton_middle_overlay)
package {
	import flash.display.*;

	public dynamic class api_smallbutton_middle_overlay extends MovieClip {

	}
}//package 

****************

//api_smallbutton_right (api_smallbutton_right)
package {
	import flash.display.*;

	public dynamic class api_smallbutton_right extends MovieClip {

	}
}//package 

****************

//api_smallbutton_right_overlay (api_smallbutton_right_overlay)
package {
	import flash.display.*;

	public dynamic class api_smallbutton_right_overlay extends MovieClip {

	}
}//package 

****************

//api_unmute_btn (api_unmute_btn)
package {
	import flash.display.*;

	public dynamic class api_unmute_btn extends SimpleButton {

	}
}//package 

****************

//ArialBlack (ArialBlack)
package {
	import flash.text.*;

	public dynamic class ArialBlack extends Font {

	}
}//package 

****************

//axe_drop (axe_drop)
package {
	import flash.display.*;

	public dynamic class axe_drop extends BitmapData {

		public function axe_drop(_arg1:int=52, _arg2:int=26){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//badge_drop (badge_drop)
package {
	import flash.display.*;

	public dynamic class badge_drop extends BitmapData {

		public function badge_drop(_arg1:int=21, _arg2:int=16){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//banjo_drop (banjo_drop)
package {
	import flash.display.*;

	public dynamic class banjo_drop extends BitmapData {

		public function banjo_drop(_arg1:int=61, _arg2:int=26){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//barbedwire_drop (barbedwire_drop)
package {
	import flash.display.*;

	public dynamic class barbedwire_drop extends BitmapData {

		public function barbedwire_drop(_arg1:int=30, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//barrel_chunk_sheet (barrel_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class barrel_chunk_sheet extends BitmapData {

		public function barrel_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//barrel_object_sheet (barrel_object_sheet)
package {
	import flash.display.*;

	public dynamic class barrel_object_sheet extends BitmapData {

		public function barrel_object_sheet(_arg1:int=114, _arg2:int=57){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bat_drop (bat_drop)
package {
	import flash.display.*;

	public dynamic class bat_drop extends BitmapData {

		public function bat_drop(_arg1:int=52, _arg2:int=10){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bazooka_drop (bazooka_drop)
package {
	import flash.display.*;

	public dynamic class bazooka_drop extends BitmapData {

		public function bazooka_drop(_arg1:int=84, _arg2:int=23){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bazooka_rocket_sheet (bazooka_rocket_sheet)
package {
	import flash.display.*;

	public dynamic class bazooka_rocket_sheet extends BitmapData {

		public function bazooka_rocket_sheet(_arg1:int=464, _arg2:int=58){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bigimpact_effect_sheet (bigimpact_effect_sheet)
package {
	import flash.display.*;

	public dynamic class bigimpact_effect_sheet extends BitmapData {

		public function bigimpact_effect_sheet(_arg1:int=300, _arg2:int=150){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//blanksprite_sheet (blanksprite_sheet)
package {
	import flash.display.*;

	public dynamic class blanksprite_sheet extends BitmapData {

		public function blanksprite_sheet(_arg1:int=1, _arg2:int=1){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//blunderbuss_drop (blunderbuss_drop)
package {
	import flash.display.*;

	public dynamic class blunderbuss_drop extends BitmapData {

		public function blunderbuss_drop(_arg1:int=58, _arg2:int=22){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//blunderbuss_shot_sheet (blunderbuss_shot_sheet)
package {
	import flash.display.*;

	public dynamic class blunderbuss_shot_sheet extends BitmapData {

		public function blunderbuss_shot_sheet(_arg1:int=8, _arg2:int=8){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//blurry_cactus_sheet (blurry_cactus_sheet)
package {
	import flash.display.*;

	public dynamic class blurry_cactus_sheet extends BitmapData {

		public function blurry_cactus_sheet(_arg1:int=69, _arg2:int=170){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bone_drop (bone_drop)
package {
	import flash.display.*;

	public dynamic class bone_drop extends BitmapData {

		public function bone_drop(_arg1:int=54, _arg2:int=19){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//border_overlay (border_overlay)
package {
	import flash.display.*;

	public dynamic class border_overlay extends MovieClip {

	}
}//package 

****************

//boss_bubble_effect (boss_bubble_effect)
package {
	import flash.display.*;

	public dynamic class boss_bubble_effect extends BitmapData {

		public function boss_bubble_effect(_arg1:int=248, _arg2:int=187){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//boss_sheet (boss_sheet)
package {
	import flash.display.*;

	public dynamic class boss_sheet extends BitmapData {

		public function boss_sheet(_arg1:int=2460, _arg2:int=2072){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bossdoor_object_sheet (bossdoor_object_sheet)
package {
	import flash.display.*;

	public dynamic class bossdoor_object_sheet extends BitmapData {

		public function bossdoor_object_sheet(_arg1:int=169, _arg2:int=128){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//boulder_chunk_sheet (boulder_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class boulder_chunk_sheet extends BitmapData {

		public function boulder_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//boulder_object_sheet (boulder_object_sheet)
package {
	import flash.display.*;

	public dynamic class boulder_object_sheet extends BitmapData {

		public function boulder_object_sheet(_arg1:int=180, _arg2:int=60){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//boxinggloves_drop (boxinggloves_drop)
package {
	import flash.display.*;

	public dynamic class boxinggloves_drop extends BitmapData {

		public function boxinggloves_drop(_arg1:int=33, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bramble_chunk_sheet (bramble_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class bramble_chunk_sheet extends BitmapData {

		public function bramble_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bramble_object_sheet (bramble_object_sheet)
package {
	import flash.display.*;

	public dynamic class bramble_object_sheet extends BitmapData {

		public function bramble_object_sheet(_arg1:int=59, _arg2:int=57){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//brassknuckles_drop (brassknuckles_drop)
package {
	import flash.display.*;

	public dynamic class brassknuckles_drop extends BitmapData {

		public function brassknuckles_drop(_arg1:int=28, _arg2:int=16){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_badge_sheet (bullet_badge_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_badge_sheet extends BitmapData {

		public function bullet_badge_sheet(_arg1:int=48, _arg2:int=16){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_cherrybomb_sheet (bullet_cherrybomb_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_cherrybomb_sheet extends BitmapData {

		public function bullet_cherrybomb_sheet(_arg1:int=96, _arg2:int=48){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_dagger_sheet (bullet_dagger_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_dagger_sheet extends BitmapData {

		public function bullet_dagger_sheet(_arg1:int=272, _arg2:int=34){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_dart_sheet (bullet_dart_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_dart_sheet extends BitmapData {

		public function bullet_dart_sheet(_arg1:int=384, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_flamethrower_sheet (bullet_flamethrower_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_flamethrower_sheet extends BitmapData {

		public function bullet_flamethrower_sheet(_arg1:int=1040, _arg2:int=52){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_grenade_sheet (bullet_grenade_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_grenade_sheet extends BitmapData {

		public function bullet_grenade_sheet(_arg1:int=240, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_lantern_sheet (bullet_lantern_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_lantern_sheet extends BitmapData {

		public function bullet_lantern_sheet(_arg1:int=720, _arg2:int=36){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_playingcard_sheet (bullet_playingcard_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_playingcard_sheet extends BitmapData {

		public function bullet_playingcard_sheet(_arg1:int=576, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_scorpion_sheet (bullet_scorpion_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_scorpion_sheet extends BitmapData {

		public function bullet_scorpion_sheet(_arg1:int=384, _arg2:int=48){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_squirtgun_sheet (bullet_squirtgun_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_squirtgun_sheet extends BitmapData {

		public function bullet_squirtgun_sheet(_arg1:int=336, _arg2:int=210){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_teargas_sheet (bullet_teargas_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_teargas_sheet extends BitmapData {

		public function bullet_teargas_sheet(_arg1:int=240, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_tnt_sheet (bullet_tnt_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_tnt_sheet extends BitmapData {

		public function bullet_tnt_sheet(_arg1:int=380, _arg2:int=76){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullet_tomahawk_sheet (bullet_tomahawk_sheet)
package {
	import flash.display.*;

	public dynamic class bullet_tomahawk_sheet extends BitmapData {

		public function bullet_tomahawk_sheet(_arg1:int=380, _arg2:int=76){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//bullwhip_drop (bullwhip_drop)
package {
	import flash.display.*;

	public dynamic class bullwhip_drop extends BitmapData {

		public function bullwhip_drop(_arg1:int=35, _arg2:int=22){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//cactus_cape_sheet (cactus_cape_sheet)
package {
	import flash.display.*;

	public dynamic class cactus_cape_sheet extends BitmapData {

		public function cactus_cape_sheet(_arg1:int=2088, _arg2:int=144){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//cactus_drop (cactus_drop)
package {
	import flash.display.*;

	public dynamic class cactus_drop extends BitmapData {

		public function cactus_drop(_arg1:int=24, _arg2:int=55){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//cactus_legs_sheet (cactus_legs_sheet)
package {
	import flash.display.*;

	public dynamic class cactus_legs_sheet extends BitmapData {

		public function cactus_legs_sheet(_arg1:int=1258, _arg2:int=600){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//cactus_torso_sheet (cactus_torso_sheet)
package {
	import flash.display.*;

	public dynamic class cactus_torso_sheet extends BitmapData {

		public function cactus_torso_sheet(_arg1:int=2880, _arg2:int=0x0600){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//canyon_bg (canyon_bg)
package {
	import flash.display.*;

	public dynamic class canyon_bg extends BitmapData {

		public function canyon_bg(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//canyon_mg (canyon_mg)
package {
	import flash.display.*;

	public dynamic class canyon_mg extends BitmapData {

		public function canyon_mg(_arg1:int=608, _arg2:int=608){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//canyon_tiles (canyon_tiles)
package {
	import flash.display.*;

	public dynamic class canyon_tiles extends BitmapData {

		public function canyon_tiles(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//catofninetails_drop (catofninetails_drop)
package {
	import flash.display.*;

	public dynamic class catofninetails_drop extends BitmapData {

		public function catofninetails_drop(_arg1:int=37, _arg2:int=23){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//chainwhip_drop (chainwhip_drop)
package {
	import flash.display.*;

	public dynamic class chainwhip_drop extends BitmapData {

		public function chainwhip_drop(_arg1:int=25, _arg2:int=17){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//cherrybomb_drop (cherrybomb_drop)
package {
	import flash.display.*;

	public dynamic class cherrybomb_drop extends BitmapData {

		public function cherrybomb_drop(_arg1:int=16, _arg2:int=17){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//chicken_object_sheet (chicken_object_sheet)
package {
	import flash.display.*;

	public dynamic class chicken_object_sheet extends BitmapData {

		public function chicken_object_sheet(_arg1:int=1764, _arg2:int=288){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//chickencoop_back_sheet (chickencoop_back_sheet)
package {
	import flash.display.*;

	public dynamic class chickencoop_back_sheet extends BitmapData {

		public function chickencoop_back_sheet(_arg1:int=128, _arg2:int=66){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//chickencoop_front_sheet (chickencoop_front_sheet)
package {
	import flash.display.*;

	public dynamic class chickencoop_front_sheet extends BitmapData {

		public function chickencoop_front_sheet(_arg1:int=128, _arg2:int=66){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//club_drop (club_drop)
package {
	import flash.display.*;

	public dynamic class club_drop extends BitmapData {

		public function club_drop(_arg1:int=51, _arg2:int=18){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//CopyrightFont (CopyrightFont)
package {
	import flash.text.*;

	public dynamic class CopyrightFont extends Font {

	}
}//package 

****************

//crate_chunk_sheet (crate_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class crate_chunk_sheet extends BitmapData {

		public function crate_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//crate_object_sheet (crate_object_sheet)
package {
	import flash.display.*;

	public dynamic class crate_object_sheet extends BitmapData {

		public function crate_object_sheet(_arg1:int=53, _arg2:int=54){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//crossbow_arrow_sheet (crossbow_arrow_sheet)
package {
	import flash.display.*;

	public dynamic class crossbow_arrow_sheet extends BitmapData {

		public function crossbow_arrow_sheet(_arg1:int=336, _arg2:int=42){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//crossbow_drop (crossbow_drop)
package {
	import flash.display.*;

	public dynamic class crossbow_drop extends BitmapData {

		public function crossbow_drop(_arg1:int=62, _arg2:int=21){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//crowbar_drop (crowbar_drop)
package {
	import flash.display.*;

	public dynamic class crowbar_drop extends BitmapData {

		public function crowbar_drop(_arg1:int=37, _arg2:int=12){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//crusher_object_sheet (crusher_object_sheet)
package {
	import flash.display.*;

	public dynamic class crusher_object_sheet extends BitmapData {

		public function crusher_object_sheet(_arg1:int=960, _arg2:int=192){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//cutlass_drop (cutlass_drop)
package {
	import flash.display.*;

	public dynamic class cutlass_drop extends BitmapData {

		public function cutlass_drop(_arg1:int=51, _arg2:int=11){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//dagger_drop (dagger_drop)
package {
	import flash.display.*;

	public dynamic class dagger_drop extends BitmapData {

		public function dagger_drop(_arg1:int=32, _arg2:int=13){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//dart_drop (dart_drop)
package {
	import flash.display.*;

	public dynamic class dart_drop extends BitmapData {

		public function dart_drop(_arg1:int=23, _arg2:int=13){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//deadIrisOut (deadIrisOut)
package {
	import flash.display.*;

	public dynamic class deadIrisOut extends MovieClip {

		public function deadIrisOut(){
			addFrameScript(29, frame30);
		}
		function frame30(){
			stop();
		}

	}
}//package 

****************

//derringer_drop (derringer_drop)
package {
	import flash.display.*;

	public dynamic class derringer_drop extends BitmapData {

		public function derringer_drop(_arg1:int=19, _arg2:int=14){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//derringertarget_break_sheet (derringertarget_break_sheet)
package {
	import flash.display.*;

	public dynamic class derringertarget_break_sheet extends BitmapData {

		public function derringertarget_break_sheet(_arg1:int=60, _arg2:int=15){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//derringertarget_object_sheet (derringertarget_object_sheet)
package {
	import flash.display.*;

	public dynamic class derringertarget_object_sheet extends BitmapData {

		public function derringertarget_object_sheet(_arg1:int=32, _arg2:int=32){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//developedby_tag (developedby_tag)
package {
	import flash.display.*;

	public dynamic class developedby_tag extends MovieClip {

	}
}//package 

****************

//dust_effect_sheet (dust_effect_sheet)
package {
	import flash.display.*;

	public dynamic class dust_effect_sheet extends BitmapData {

		public function dust_effect_sheet(_arg1:int=140, _arg2:int=40){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_01_sheet (enemigo_01_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_01_sheet extends BitmapData {

		public function enemigo_01_sheet(_arg1:int=2576, _arg2:int=368){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_02_sheet (enemigo_02_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_02_sheet extends BitmapData {

		public function enemigo_02_sheet(_arg1:int=2576, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_03_sheet (enemigo_03_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_03_sheet extends BitmapData {

		public function enemigo_03_sheet(_arg1:int=2576, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_04_sheet (enemigo_04_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_04_sheet extends BitmapData {

		public function enemigo_04_sheet(_arg1:int=2774, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_05_sheet (enemigo_05_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_05_sheet extends BitmapData {

		public function enemigo_05_sheet(_arg1:int=2576, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_06_sheet (enemigo_06_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_06_sheet extends BitmapData {

		public function enemigo_06_sheet(_arg1:int=2576, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_07_sheet (enemigo_07_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_07_sheet extends BitmapData {

		public function enemigo_07_sheet(_arg1:int=990, _arg2:int=148){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_08_sheet (enemigo_08_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_08_sheet extends BitmapData {

		public function enemigo_08_sheet(_arg1:int=2576, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_09_sheet (enemigo_09_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_09_sheet extends BitmapData {

		public function enemigo_09_sheet(_arg1:int=2576, _arg2:int=392){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_10_sheet (enemigo_10_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_10_sheet extends BitmapData {

		public function enemigo_10_sheet(_arg1:int=1089, _arg2:int=308){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//enemigo_11_sheet (enemigo_11_sheet)
package {
	import flash.display.*;

	public dynamic class enemigo_11_sheet extends BitmapData {

		public function enemigo_11_sheet(_arg1:int=1288, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//explosion_sheet (explosion_sheet)
package {
	import flash.display.*;

	public dynamic class explosion_sheet extends BitmapData {

		public function explosion_sheet(_arg1:int=1672, _arg2:int=88){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//feather_effect_sheet (feather_effect_sheet)
package {
	import flash.display.*;

	public dynamic class feather_effect_sheet extends BitmapData {

		public function feather_effect_sheet(_arg1:int=108, _arg2:int=12){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//flamethrower_drop (flamethrower_drop)
package {
	import flash.display.*;

	public dynamic class flamethrower_drop extends BitmapData {

		public function flamethrower_drop(_arg1:int=52, _arg2:int=35){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//flip_logo_extralarge (flip_logo_extralarge)
package {
	import flash.display.*;

	public dynamic class flip_logo_extralarge extends MovieClip {

	}
}//package 

****************

//flip_logo_large (flip_logo_large)
package {
	import flash.display.*;

	public dynamic class flip_logo_large extends MovieClip {

	}
}//package 

****************

//flip_logo_small (flip_logo_small)
package {
	import flash.display.*;

	public dynamic class flip_logo_small extends MovieClip {

	}
}//package 

****************

//flipline_highscoresMC (flipline_highscoresMC)
package {
	import flash.display.*;

	public dynamic class flipline_highscoresMC extends MovieClip {

		public var entername:MovieClip;
		public var bg:MovieClip;
		public var content:MovieClip;
		public var close_btn:SimpleButton;
		public var message:MovieClip;

	}
}//package 

****************

//fliplineLogoMC (fliplineLogoMC)
package {
	import flash.display.*;

	public dynamic class fliplineLogoMC extends MovieClip {

		public var btn:SimpleButton;

		public function fliplineLogoMC(){
			addFrameScript(117, frame118);
		}
		function frame118(){
			stop();
		}

	}
}//package 

****************

//floatingbomb_object_sheet (floatingbomb_object_sheet)
package {
	import flash.display.*;

	public dynamic class floatingbomb_object_sheet extends BitmapData {

		public function floatingbomb_object_sheet(_arg1:int=540, _arg2:int=83){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//focusRectSkin (focusRectSkin)
package {
	import flash.display.*;

	public dynamic class focusRectSkin extends MovieClip {

	}
}//package 

****************

//gameIntroMC (gameIntroMC)
package {
	import flash.display.*;

	public dynamic class gameIntroMC extends MovieClip {

		public var skip_btn:SimpleButton;
		public var page1:MovieClip;
		public var page2:MovieClip;
		public var page3:MovieClip;
		public var page4:MovieClip;
		public var page5:MovieClip;
		public var page6:MovieClip;
		public var page7:MovieClip;
		public var next_btn:SimpleButton;

		public function gameIntroMC(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package 

****************

//gameOutroMC (gameOutroMC)
package {
	import flash.display.*;

	public dynamic class gameOutroMC extends MovieClip {

		public var skip_btn:SimpleButton;
		public var page1:MovieClip;
		public var page2:MovieClip;
		public var page3:MovieClip;
		public var page4:MovieClip;
		public var next_btn:SimpleButton;

		public function gameOutroMC(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package 

****************

//gatling_drop (gatling_drop)
package {
	import flash.display.*;

	public dynamic class gatling_drop extends BitmapData {

		public function gatling_drop(_arg1:int=51, _arg2:int=26){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//generic_bullet_sheet (generic_bullet_sheet)
package {
	import flash.display.*;

	public dynamic class generic_bullet_sheet extends BitmapData {

		public function generic_bullet_sheet(_arg1:int=6, _arg2:int=6){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//ghosttown_bg (ghosttown_bg)
package {
	import flash.display.*;

	public dynamic class ghosttown_bg extends BitmapData {

		public function ghosttown_bg(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//ghosttown_mg (ghosttown_mg)
package {
	import flash.display.*;

	public dynamic class ghosttown_mg extends BitmapData {

		public function ghosttown_mg(_arg1:int=608, _arg2:int=608){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//ghosttown_tiles (ghosttown_tiles)
package {
	import flash.display.*;

	public dynamic class ghosttown_tiles extends BitmapData {

		public function ghosttown_tiles(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//ghosttown_train_sheet (ghosttown_train_sheet)
package {
	import flash.display.*;

	public dynamic class ghosttown_train_sheet extends BitmapData {

		public function ghosttown_train_sheet(_arg1:int=134, _arg2:int=120){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//ghosttown2_bg (ghosttown2_bg)
package {
	import flash.display.*;

	public dynamic class ghosttown2_bg extends BitmapData {

		public function ghosttown2_bg(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//ghosttown2_mg (ghosttown2_mg)
package {
	import flash.display.*;

	public dynamic class ghosttown2_mg extends BitmapData {

		public function ghosttown2_mg(_arg1:int=608, _arg2:int=608){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//grab_weapon_effect (grab_weapon_effect)
package {
	import flash.display.*;

	public dynamic class grab_weapon_effect extends BitmapData {

		public function grab_weapon_effect(_arg1:int=258, _arg2:int=33){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//grenade_drop (grenade_drop)
package {
	import flash.display.*;

	public dynamic class grenade_drop extends BitmapData {

		public function grenade_drop(_arg1:int=20, _arg2:int=23){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//guitar_drop (guitar_drop)
package {
	import flash.display.*;

	public dynamic class guitar_drop extends BitmapData {

		public function guitar_drop(_arg1:int=55, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//harpoongun_drop (harpoongun_drop)
package {
	import flash.display.*;

	public dynamic class harpoongun_drop extends BitmapData {

		public function harpoongun_drop(_arg1:int=69, _arg2:int=21){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//harpoongun_harpoon_sheet (harpoongun_harpoon_sheet)
package {
	import flash.display.*;

	public dynamic class harpoongun_harpoon_sheet extends BitmapData {

		public function harpoongun_harpoon_sheet(_arg1:int=464, _arg2:int=58){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//hatfieldpistol_drop (hatfieldpistol_drop)
package {
	import flash.display.*;

	public dynamic class hatfieldpistol_drop extends BitmapData {

		public function hatfieldpistol_drop(_arg1:int=33, _arg2:int=19){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//highScoreLogo (highScoreLogo)
package {
	import flash.display.*;

	public dynamic class highScoreLogo extends MovieClip {

	}
}//package 

****************

//hotfoot_object_sheet (hotfoot_object_sheet)
package {
	import flash.display.*;

	public dynamic class hotfoot_object_sheet extends BitmapData {

		public function hotfoot_object_sheet(_arg1:int=0x0100, _arg2:int=128){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//hudMC (hudMC)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class hudMC extends MovieClip {

		public var star1:MovieClip;
		public var bossclip:MovieClip;
		public var star2:MovieClip;
		public var weapontitle_txt:TextField;
		public var menu_btn:SimpleButton;
		public var gamegenie:MovieClip;
		public var star3:MovieClip;
		public var star4:MovieClip;
		public var weaponbar:MovieClip;
		public var star5:MovieClip;
		public var money_txt:TextField;
		public var combometer:MovieClip;
		public var sponsorlogo:MovieClip;
		public var lives_txt:TextField;
		public var refresh_btn:SimpleButton;
		public var pause_btn:SimpleButton;
		public var mute_btn:SimpleButton;
		public var unmute_btn:SimpleButton;
		public var timer_txt:TextField;
		public var chest1:MovieClip;
		public var dropdown:MovieClip;
		public var licenselogo:MovieClip;
		public var chest2:MovieClip;
		public var weapon_icon:MovieClip;
		public var weaponbar_mask:MovieClip;
		public var healthbar:MovieClip;
		public var fps_txt:TextField;
		public var pausedMC:MovieClip;
		public var tally:MovieClip;
		public var chest3:MovieClip;
		public var healthbar_mask:MovieClip;
		public var chest4:MovieClip;
		public var points_txt:TextField;
		public var chest5:MovieClip;
		public var memory_txt:TextField;

	}
}//package 

****************

//impact_effect_sheet (impact_effect_sheet)
package {
	import flash.display.*;

	public dynamic class impact_effect_sheet extends BitmapData {

		public function impact_effect_sheet(_arg1:int=160, _arg2:int=80){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//irisTransitionMC (irisTransitionMC)
package {
	import flash.display.*;

	public dynamic class irisTransitionMC extends MovieClip {

		public function irisTransitionMC(){
			addFrameScript(0, frame1, 19, frame20, 39, frame40);
		}
		function frame1(){
			stop();
		}
		function frame20(){
			stop();
		}
		function frame40(){
			stop();
		}

	}
}//package 

****************

//iron_drop (iron_drop)
package {
	import flash.display.*;

	public dynamic class iron_drop extends BitmapData {

		public function iron_drop(_arg1:int=17, _arg2:int=23){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//item_glow_effect (item_glow_effect)
package {
	import flash.display.*;

	public dynamic class item_glow_effect extends BitmapData {

		public function item_glow_effect(_arg1:int=1500, _arg2:int=150){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//katana_drop (katana_drop)
package {
	import flash.display.*;

	public dynamic class katana_drop extends BitmapData {

		public function katana_drop(_arg1:int=67, _arg2:int=14){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//lantern_drop (lantern_drop)
package {
	import flash.display.*;

	public dynamic class lantern_drop extends BitmapData {

		public function lantern_drop(_arg1:int=25, _arg2:int=34){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//levelMasterBitmap (levelMasterBitmap)
package {
	import flash.display.*;

	public dynamic class levelMasterBitmap extends BitmapData {

		public function levelMasterBitmap(_arg1:int=2880, _arg2:int=432){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//license_logo_large (license_logo_large)
package {
	import flash.display.*;

	public dynamic class license_logo_large extends MovieClip {

		public function license_logo_large(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package 

****************

//license_logo_small (license_logo_small)
package {
	import flash.display.*;

	public dynamic class license_logo_small extends MovieClip {

		public function license_logo_small(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package 

****************

//licenseLogoMC (licenseLogoMC)
package {
	import flash.display.*;

	public dynamic class licenseLogoMC extends MovieClip {

		public var logo:MovieClip;
		public var btn:SimpleButton;

		public function licenseLogoMC(){
			addFrameScript(217, frame218);
		}
		function frame218(){
			stop();
		}

	}
}//package 

****************

//loadingLevelsMC (loadingLevelsMC)
package {
	import flash.display.*;

	public dynamic class loadingLevelsMC extends MovieClip {

		public var sponsorlogo:sponsor_logo_large;
		public var bar:MovieClip;
		public var licenselogo:license_logo_large;
		public var loading_label:MovieClip;

	}
}//package 

****************

//loadingMC (loadingMC)
package {
	import flash.display.*;

	public dynamic class loadingMC extends MovieClip {

		public var sponsorlogo:sponsor_logo_large;
		public var bar:MovieClip;
		public var licenselogo:license_logo_large;
		public var loader_bar:MovieClip;

		public function loadingMC(){
			addFrameScript(27, frame28, 64, frame65);
		}
		function frame28(){
			stop();
		}
		function frame65(){
			stop();
		}

	}
}//package 

****************

//lockScreenMC (lockScreenMC)
package {
	import flash.display.*;

	public dynamic class lockScreenMC extends MovieClip {

		public var btn:SimpleButton;

	}
}//package 

****************

//longsword_drop (longsword_drop)
package {
	import flash.display.*;

	public dynamic class longsword_drop extends BitmapData {

		public function longsword_drop(_arg1:int=65, _arg2:int=20){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//luggage_trunk_sheet (luggage_trunk_sheet)
package {
	import flash.display.*;

	public dynamic class luggage_trunk_sheet extends BitmapData {

		public function luggage_trunk_sheet(_arg1:int=84, _arg2:int=54){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//machete_drop (machete_drop)
package {
	import flash.display.*;

	public dynamic class machete_drop extends BitmapData {

		public function machete_drop(_arg1:int=45, _arg2:int=11){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//MainBoldFont (MainBoldFont)
package {
	import flash.text.*;

	public dynamic class MainBoldFont extends Font {

	}
}//package 

****************

//mainMenuMC (mainMenuMC)
package {
	import flash.display.*;

	public dynamic class mainMenuMC extends MovieClip {

		public var help:MovieClip;
		public var area:MovieClip;
		public var confirmquit:MovieClip;
		public var upgrades:MovieClip;
		public var credits:MovieClip;
		public var medals:MovieClip;
		public var controls:MovieClip;
		public var map:MovieClip;

	}
}//package 

****************

//mallet_drop (mallet_drop)
package {
	import flash.display.*;

	public dynamic class mallet_drop extends BitmapData {

		public function mallet_drop(_arg1:int=59, _arg2:int=32){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//map_piece_sheet (map_piece_sheet)
package {
	import flash.display.*;

	public dynamic class map_piece_sheet extends BitmapData {

		public function map_piece_sheet(_arg1:int=46, _arg2:int=27){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mapchest_object_sheet (mapchest_object_sheet)
package {
	import flash.display.*;

	public dynamic class mapchest_object_sheet extends BitmapData {

		public function mapchest_object_sheet(_arg1:int=392, _arg2:int=65){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mccoy_hit_needle_sheet (mccoy_hit_needle_sheet)
package {
	import flash.display.*;

	public dynamic class mccoy_hit_needle_sheet extends BitmapData {

		public function mccoy_hit_needle_sheet(_arg1:int=15, _arg2:int=5){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mccoy_hit_symbol_sheet (mccoy_hit_symbol_sheet)
package {
	import flash.display.*;

	public dynamic class mccoy_hit_symbol_sheet extends BitmapData {

		public function mccoy_hit_symbol_sheet(_arg1:int=60, _arg2:int=60){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//metalcrate_chunk_sheet (metalcrate_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class metalcrate_chunk_sheet extends BitmapData {

		public function metalcrate_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//metalcrate_object_sheet (metalcrate_object_sheet)
package {
	import flash.display.*;

	public dynamic class metalcrate_object_sheet extends BitmapData {

		public function metalcrate_object_sheet(_arg1:int=159, _arg2:int=54){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//meteor_drop (meteor_drop)
package {
	import flash.display.*;

	public dynamic class meteor_drop extends BitmapData {

		public function meteor_drop(_arg1:int=36, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//minecart_chunk_sheet (minecart_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class minecart_chunk_sheet extends BitmapData {

		public function minecart_chunk_sheet(_arg1:int=96, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//minecart_object_sheet (minecart_object_sheet)
package {
	import flash.display.*;

	public dynamic class minecart_object_sheet extends BitmapData {

		public function minecart_object_sheet(_arg1:int=216, _arg2:int=57){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mines_bg (mines_bg)
package {
	import flash.display.*;

	public dynamic class mines_bg extends BitmapData {

		public function mines_bg(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mines_mg (mines_mg)
package {
	import flash.display.*;

	public dynamic class mines_mg extends BitmapData {

		public function mines_mg(_arg1:int=608, _arg2:int=608){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mines_tiles (mines_tiles)
package {
	import flash.display.*;

	public dynamic class mines_tiles extends BitmapData {

		public function mines_tiles(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//MinesTrack (MinesTrack)
package {
	import flash.media.*;

	public dynamic class MinesTrack extends Sound {

	}
}//package 

****************

//money_copper_sheet (money_copper_sheet)
package {
	import flash.display.*;

	public dynamic class money_copper_sheet extends BitmapData {

		public function money_copper_sheet(_arg1:int=63, _arg2:int=8){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//money_diamond_sheet (money_diamond_sheet)
package {
	import flash.display.*;

	public dynamic class money_diamond_sheet extends BitmapData {

		public function money_diamond_sheet(_arg1:int=60, _arg2:int=19){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//money_emerald_sheet (money_emerald_sheet)
package {
	import flash.display.*;

	public dynamic class money_emerald_sheet extends BitmapData {

		public function money_emerald_sheet(_arg1:int=44, _arg2:int=15){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//money_gold_sheet (money_gold_sheet)
package {
	import flash.display.*;

	public dynamic class money_gold_sheet extends BitmapData {

		public function money_gold_sheet(_arg1:int=110, _arg2:int=11){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//money_ruby_sheet (money_ruby_sheet)
package {
	import flash.display.*;

	public dynamic class money_ruby_sheet extends BitmapData {

		public function money_ruby_sheet(_arg1:int=44, _arg2:int=13){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//money_silver_sheet (money_silver_sheet)
package {
	import flash.display.*;

	public dynamic class money_silver_sheet extends BitmapData {

		public function money_silver_sheet(_arg1:int=99, _arg2:int=10){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//morningstar_drop (morningstar_drop)
package {
	import flash.display.*;

	public dynamic class morningstar_drop extends BitmapData {

		public function morningstar_drop(_arg1:int=56, _arg2:int=27){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mountain_bg (mountain_bg)
package {
	import flash.display.*;

	public dynamic class mountain_bg extends BitmapData {

		public function mountain_bg(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mountain_mg (mountain_mg)
package {
	import flash.display.*;

	public dynamic class mountain_mg extends BitmapData {

		public function mountain_mg(_arg1:int=608, _arg2:int=608){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mountain_tiles (mountain_tiles)
package {
	import flash.display.*;

	public dynamic class mountain_tiles extends BitmapData {

		public function mountain_tiles(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//mountain_train_sheet (mountain_train_sheet)
package {
	import flash.display.*;

	public dynamic class mountain_train_sheet extends BitmapData {

		public function mountain_train_sheet(_arg1:int=253, _arg2:int=92){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//nightstick_drop (nightstick_drop)
package {
	import flash.display.*;

	public dynamic class nightstick_drop extends BitmapData {

		public function nightstick_drop(_arg1:int=42, _arg2:int=14){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//oreboulder_chunk_sheet (oreboulder_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class oreboulder_chunk_sheet extends BitmapData {

		public function oreboulder_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//oreboulder_object_sheet (oreboulder_object_sheet)
package {
	import flash.display.*;

	public dynamic class oreboulder_object_sheet extends BitmapData {

		public function oreboulder_object_sheet(_arg1:int=64, _arg2:int=64){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//pickaxe_drop (pickaxe_drop)
package {
	import flash.display.*;

	public dynamic class pickaxe_drop extends BitmapData {

		public function pickaxe_drop(_arg1:int=54, _arg2:int=40){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//pipe_drop (pipe_drop)
package {
	import flash.display.*;

	public dynamic class pipe_drop extends BitmapData {

		public function pipe_drop(_arg1:int=37, _arg2:int=12){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//playingcard_drop (playingcard_drop)
package {
	import flash.display.*;

	public dynamic class playingcard_drop extends BitmapData {

		public function playingcard_drop(_arg1:int=14, _arg2:int=10){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//poolcue_drop (poolcue_drop)
package {
	import flash.display.*;

	public dynamic class poolcue_drop extends BitmapData {

		public function poolcue_drop(_arg1:int=93, _arg2:int=5){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//railroad_sign_sheet (railroad_sign_sheet)
package {
	import flash.display.*;

	public dynamic class railroad_sign_sheet extends BitmapData {

		public function railroad_sign_sheet(_arg1:int=148, _arg2:int=160){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//rattlesnake_drop (rattlesnake_drop)
package {
	import flash.display.*;

	public dynamic class rattlesnake_drop extends BitmapData {

		public function rattlesnake_drop(_arg1:int=288, _arg2:int=64){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//revolver_drop (revolver_drop)
package {
	import flash.display.*;

	public dynamic class revolver_drop extends BitmapData {

		public function revolver_drop(_arg1:int=33, _arg2:int=20){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//romancandle_bullet_sheet (romancandle_bullet_sheet)
package {
	import flash.display.*;

	public dynamic class romancandle_bullet_sheet extends BitmapData {

		public function romancandle_bullet_sheet(_arg1:int=450, _arg2:int=135){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//romancandle_drop (romancandle_drop)
package {
	import flash.display.*;

	public dynamic class romancandle_drop extends BitmapData {

		public function romancandle_drop(_arg1:int=31, _arg2:int=9){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//romancandle_spark_sheet (romancandle_spark_sheet)
package {
	import flash.display.*;

	public dynamic class romancandle_spark_sheet extends BitmapData {

		public function romancandle_spark_sheet(_arg1:int=180, _arg2:int=54){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//rope_drop (rope_drop)
package {
	import flash.display.*;

	public dynamic class rope_drop extends BitmapData {

		public function rope_drop(_arg1:int=28, _arg2:int=21){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//scoreTallyMC (scoreTallyMC)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class scoreTallyMC extends MovieClip {

		public var star1:MovieClip;
		public var star2:MovieClip;
		public var time_txt:TextField;
		public var star3:MovieClip;
		public var star4:MovieClip;
		public var treasure_txt:TextField;
		public var tallyclip:MovieClip;
		public var challenge4_txt:TextField;
		public var star5:MovieClip;
		public var title_txt:TextField;
		public var challenge5_txt:TextField;
		public var challenges_txt:TextField;
		public var challenge1_txt:TextField;
		public var challenge2_txt:TextField;
		public var chest1:MovieClip;
		public var challenge3_txt:TextField;
		public var chest2:MovieClip;
		public var totalmoney_txt:TextField;
		public var chest3:MovieClip;
		public var chest4:MovieClip;
		public var leaderboard_cover:MovieClip;
		public var chest5:MovieClip;
		public var area_txt:TextField;

	}
}//package 

****************

//scorpion_drop (scorpion_drop)
package {
	import flash.display.*;

	public dynamic class scorpion_drop extends BitmapData {

		public function scorpion_drop(_arg1:int=220, _arg2:int=32){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//scorpiontarget_break_sheet (scorpiontarget_break_sheet)
package {
	import flash.display.*;

	public dynamic class scorpiontarget_break_sheet extends BitmapData {

		public function scorpiontarget_break_sheet(_arg1:int=60, _arg2:int=15){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//scorpiontarget_object_sheet (scorpiontarget_object_sheet)
package {
	import flash.display.*;

	public dynamic class scorpiontarget_object_sheet extends BitmapData {

		public function scorpiontarget_object_sheet(_arg1:int=32, _arg2:int=32){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//scythe_drop (scythe_drop)
package {
	import flash.display.*;

	public dynamic class scythe_drop extends BitmapData {

		public function scythe_drop(_arg1:int=91, _arg2:int=42){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//shimmer_effect_sheet (shimmer_effect_sheet)
package {
	import flash.display.*;

	public dynamic class shimmer_effect_sheet extends BitmapData {

		public function shimmer_effect_sheet(_arg1:int=35, _arg2:int=7){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//shotgun_drop (shotgun_drop)
package {
	import flash.display.*;

	public dynamic class shotgun_drop extends BitmapData {

		public function shotgun_drop(_arg1:int=63, _arg2:int=19){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//shovel_drop (shovel_drop)
package {
	import flash.display.*;

	public dynamic class shovel_drop extends BitmapData {

		public function shovel_drop(_arg1:int=61, _arg2:int=18){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sickle_drop (sickle_drop)
package {
	import flash.display.*;

	public dynamic class sickle_drop extends BitmapData {

		public function sickle_drop(_arg1:int=43, _arg2:int=23){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow1_sheet (sign_arrow1_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow1_sheet extends BitmapData {

		public function sign_arrow1_sheet(_arg1:int=53, _arg2:int=73){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow2_sheet (sign_arrow2_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow2_sheet extends BitmapData {

		public function sign_arrow2_sheet(_arg1:int=61, _arg2:int=60){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow3_sheet (sign_arrow3_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow3_sheet extends BitmapData {

		public function sign_arrow3_sheet(_arg1:int=73, _arg2:int=53){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow4_sheet (sign_arrow4_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow4_sheet extends BitmapData {

		public function sign_arrow4_sheet(_arg1:int=61, _arg2:int=60){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow5_sheet (sign_arrow5_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow5_sheet extends BitmapData {

		public function sign_arrow5_sheet(_arg1:int=53, _arg2:int=73){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow6_sheet (sign_arrow6_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow6_sheet extends BitmapData {

		public function sign_arrow6_sheet(_arg1:int=61, _arg2:int=60){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow7_sheet (sign_arrow7_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow7_sheet extends BitmapData {

		public function sign_arrow7_sheet(_arg1:int=73, _arg2:int=53){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_arrow8_sheet (sign_arrow8_sheet)
package {
	import flash.display.*;

	public dynamic class sign_arrow8_sheet extends BitmapData {

		public function sign_arrow8_sheet(_arg1:int=60, _arg2:int=60){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//sign_bottomlesspit_sheet (sign_bottomlesspit_sheet)
package {
	import flash.display.*;

	public dynamic class sign_bottomlesspit_sheet extends BitmapData {

		public function sign_bottomlesspit_sheet(_arg1:int=52, _arg2:int=62){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//slotSelectMC (slotSelectMC)
package {
	import flash.display.*;

	public dynamic class slotSelectMC extends MovieClip {

		public var entername:MovieClip;
		public var slots:MovieClip;

	}
}//package 

****************

//smallchest_object_sheet (smallchest_object_sheet)
package {
	import flash.display.*;

	public dynamic class smallchest_object_sheet extends BitmapData {

		public function smallchest_object_sheet(_arg1:int=264, _arg2:int=61){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//smoke_effect_sheet (smoke_effect_sheet)
package {
	import flash.display.*;

	public dynamic class smoke_effect_sheet extends BitmapData {

		public function smoke_effect_sheet(_arg1:int=360, _arg2:int=80){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//splashScreenMC (splashScreenMC)
package {
	import flash.display.*;

	public dynamic class splashScreenMC extends MovieClip {

		public var iris:MovieClip;
		public var logo:MovieClip;
		public var mg:MovieClip;
		public var fader:MovieClip;
		public var mccoy:MovieClip;
		public var credits:MovieClip;
		public var bg:MovieClip;

	}
}//package 

****************

//sponsor_logo_large (sponsor_logo_large)
package {
	import flash.display.*;

	public dynamic class sponsor_logo_large extends MovieClip {

		public function sponsor_logo_large(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package 

****************

//sponsor_logo_small (sponsor_logo_small)
package {
	import flash.display.*;

	public dynamic class sponsor_logo_small extends MovieClip {

		public function sponsor_logo_small(){
			addFrameScript(0, frame1);
		}
		function frame1(){
			stop();
		}

	}
}//package 

****************

//sponsoredby_tag (sponsoredby_tag)
package {
	import flash.display.*;

	public dynamic class sponsoredby_tag extends MovieClip {

	}
}//package 

****************

//sponsorLogoMC (sponsorLogoMC)
package {
	import flash.display.*;

	public dynamic class sponsorLogoMC extends MovieClip {

		public var btn:SimpleButton;
		public var inside:MovieClip;

		public function sponsorLogoMC(){
			addFrameScript(4, frame5);
		}
		function frame5(){
			stop();
		}

	}
}//package 

****************

//squirtgun_drop (squirtgun_drop)
package {
	import flash.display.*;

	public dynamic class squirtgun_drop extends BitmapData {

		public function squirtgun_drop(_arg1:int=34, _arg2:int=23){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//stageIntroMC (stageIntroMC)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class stageIntroMC extends MovieClip {

		public var areaMC:MovieClip;
		public var title_txt:TextField;
		public var number_txt:TextField;

		public function stageIntroMC(){
			addFrameScript(89, frame90);
		}
		function frame90(){
			stop();
		}

	}
}//package 

****************

//startgame_bg (startgame_bg)
package {
	import flash.display.*;

	public dynamic class startgame_bg extends MovieClip {

	}
}//package 

****************

//statue_object_sheet (statue_object_sheet)
package {
	import flash.display.*;

	public dynamic class statue_object_sheet extends BitmapData {

		public function statue_object_sheet(_arg1:int=210, _arg2:int=138){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//statuebase_object_sheet (statuebase_object_sheet)
package {
	import flash.display.*;

	public dynamic class statuebase_object_sheet extends BitmapData {

		public function statuebase_object_sheet(_arg1:int=40, _arg2:int=16){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//stick_drop (stick_drop)
package {
	import flash.display.*;

	public dynamic class stick_drop extends BitmapData {

		public function stick_drop(_arg1:int=47, _arg2:int=27){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//submachinegun_drop (submachinegun_drop)
package {
	import flash.display.*;

	public dynamic class submachinegun_drop extends BitmapData {

		public function submachinegun_drop(_arg1:int=56, _arg2:int=20){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//suitcase_object_sheet (suitcase_object_sheet)
package {
	import flash.display.*;

	public dynamic class suitcase_object_sheet extends BitmapData {

		public function suitcase_object_sheet(_arg1:int=275, _arg2:int=53){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//tallgrass_chunk_sheet (tallgrass_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class tallgrass_chunk_sheet extends BitmapData {

		public function tallgrass_chunk_sheet(_arg1:int=21, _arg2:int=20){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//tallgrass_object_sheet (tallgrass_object_sheet)
package {
	import flash.display.*;

	public dynamic class tallgrass_object_sheet extends BitmapData {

		public function tallgrass_object_sheet(_arg1:int=51, _arg2:int=130){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//teargas_drop (teargas_drop)
package {
	import flash.display.*;

	public dynamic class teargas_drop extends BitmapData {

		public function teargas_drop(_arg1:int=22, _arg2:int=24){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//teargas_smoke_sheet (teargas_smoke_sheet)
package {
	import flash.display.*;

	public dynamic class teargas_smoke_sheet extends BitmapData {

		public function teargas_smoke_sheet(_arg1:int=1672, _arg2:int=88){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//temple_bg (temple_bg)
package {
	import flash.display.*;

	public dynamic class temple_bg extends BitmapData {

		public function temple_bg(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//temple_mg (temple_mg)
package {
	import flash.display.*;

	public dynamic class temple_mg extends BitmapData {

		public function temple_mg(_arg1:int=608, _arg2:int=608){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//temple_tiles (temple_tiles)
package {
	import flash.display.*;

	public dynamic class temple_tiles extends BitmapData {

		public function temple_tiles(_arg1:int=608, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//templeblock_chunk_sheet (templeblock_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class templeblock_chunk_sheet extends BitmapData {

		public function templeblock_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//templeblock_object_sheet (templeblock_object_sheet)
package {
	import flash.display.*;

	public dynamic class templeblock_object_sheet extends BitmapData {

		public function templeblock_object_sheet(_arg1:int=159, _arg2:int=54){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//templevase_chunk_sheet (templevase_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class templevase_chunk_sheet extends BitmapData {

		public function templevase_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//templevase_object_sheet (templevase_object_sheet)
package {
	import flash.display.*;

	public dynamic class templevase_object_sheet extends BitmapData {

		public function templevase_object_sheet(_arg1:int=138, _arg2:int=84){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//TextInput_disabledSkin (TextInput_disabledSkin)
package {
	import flash.display.*;

	public dynamic class TextInput_disabledSkin extends MovieClip {

	}
}//package 

****************

//TextInput_upSkin (TextInput_upSkin)
package {
	import flash.display.*;

	public dynamic class TextInput_upSkin extends MovieClip {

	}
}//package 

****************

//thorned_emerald_effect (thorned_emerald_effect)
package {
	import flash.display.*;

	public dynamic class thorned_emerald_effect extends BitmapData {

		public function thorned_emerald_effect(_arg1:int=20, _arg2:int=20){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//thornwhip_drop (thornwhip_drop)
package {
	import flash.display.*;

	public dynamic class thornwhip_drop extends BitmapData {

		public function thornwhip_drop(_arg1:int=43, _arg2:int=28){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//TitleFont (TitleFont)
package {
	import flash.text.*;

	public dynamic class TitleFont extends Font {

	}
}//package 

****************

//tnt_drop (tnt_drop)
package {
	import flash.display.*;

	public dynamic class tnt_drop extends BitmapData {

		public function tnt_drop(_arg1:int=29, _arg2:int=22){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//tntbarrel_chunk_sheet (tntbarrel_chunk_sheet)
package {
	import flash.display.*;

	public dynamic class tntbarrel_chunk_sheet extends BitmapData {

		public function tntbarrel_chunk_sheet(_arg1:int=24, _arg2:int=25){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//tntbarrel_object_sheet (tntbarrel_object_sheet)
package {
	import flash.display.*;

	public dynamic class tntbarrel_object_sheet extends BitmapData {

		public function tntbarrel_object_sheet(_arg1:int=38, _arg2:int=57){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//tomahawk_drop (tomahawk_drop)
package {
	import flash.display.*;

	public dynamic class tomahawk_drop extends BitmapData {

		public function tomahawk_drop(_arg1:int=42, _arg2:int=28){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//torch_object_sheet (torch_object_sheet)
package {
	import flash.display.*;

	public dynamic class torch_object_sheet extends BitmapData {

		public function torch_object_sheet(_arg1:int=352, _arg2:int=64){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//towchain_drop (towchain_drop)
package {
	import flash.display.*;

	public dynamic class towchain_drop extends BitmapData {

		public function towchain_drop(_arg1:int=25, _arg2:int=17){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//train_smoke_sheet (train_smoke_sheet)
package {
	import flash.display.*;

	public dynamic class train_smoke_sheet extends BitmapData {

		public function train_smoke_sheet(_arg1:int=600, _arg2:int=169){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//train_tiles (train_tiles)
package {
	import flash.display.*;

	public dynamic class train_tiles extends BitmapData {

		public function train_tiles(_arg1:int=608, _arg2:int=576){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//training_attack_sheet (training_attack_sheet)
package {
	import flash.display.*;

	public dynamic class training_attack_sheet extends BitmapData {

		public function training_attack_sheet(_arg1:int=64, _arg2:int=26){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//trainingsign_aim (trainingsign_aim)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_aim extends MovieClip {

		public var key_up:TextField;
		public var arrow2:MovieClip;
		public var key_attack:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_attack (trainingsign_attack)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_attack extends MovieClip {

		public var key_attack:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_chest (trainingsign_chest)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_chest extends MovieClip {

		public var arrow:MovieClip;
		public var key_down:TextField;

	}
}//package 

****************

//trainingsign_crate (trainingsign_crate)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_crate extends MovieClip {

		public var arrow:MovieClip;
		public var key_down:TextField;

	}
}//package 

****************

//trainingsign_diagonal (trainingsign_diagonal)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_diagonal extends MovieClip {

		public var key_up:TextField;
		public var arrow2:MovieClip;
		public var key_right:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_dropdown (trainingsign_dropdown)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_dropdown extends MovieClip {

		public var key_jump:TextField;
		public var arrow2:MovieClip;
		public var arrow:MovieClip;
		public var key_down:TextField;

	}
}//package 

****************

//trainingsign_dropobject (trainingsign_dropobject)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_dropobject extends MovieClip {

		public var key_drop:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_droprope (trainingsign_droprope)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_droprope extends MovieClip {

		public var key_drop:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_dropweapon (trainingsign_dropweapon)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_dropweapon extends MovieClip {

		public var key_drop:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_jump (trainingsign_jump)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_jump extends MovieClip {

		public var key_jump:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_jumpladder (trainingsign_jumpladder)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_jumpladder extends MovieClip {

		public var key_jump:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_move (trainingsign_move)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_move extends MovieClip {

		public var arrow2:MovieClip;
		public var key_right:TextField;
		public var key_left:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_moveropes (trainingsign_moveropes)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_moveropes extends MovieClip {

		public var arrow2:MovieClip;
		public var key_right:TextField;
		public var key_left:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainingsign_pickup (trainingsign_pickup)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_pickup extends MovieClip {

		public var arrow:MovieClip;
		public var key_down:TextField;

	}
}//package 

****************

//trainingsign_throw (trainingsign_throw)
package {
	import flash.display.*;
	import flash.text.*;

	public dynamic class trainingsign_throw extends MovieClip {

		public var key_attack:TextField;
		public var arrow:MovieClip;

	}
}//package 

****************

//trainseat_object_sheet (trainseat_object_sheet)
package {
	import flash.display.*;

	public dynamic class trainseat_object_sheet extends BitmapData {

		public function trainseat_object_sheet(_arg1:int=52, _arg2:int=136){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//transition_in_effect (transition_in_effect)
package {
	import flash.display.*;

	public dynamic class transition_in_effect extends BitmapData {

		public function transition_in_effect(_arg1:int=31, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//transition_out_effect (transition_out_effect)
package {
	import flash.display.*;

	public dynamic class transition_out_effect extends BitmapData {

		public function transition_out_effect(_arg1:int=31, _arg2:int=480){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//treasure_diamond_sheet (treasure_diamond_sheet)
package {
	import flash.display.*;

	public dynamic class treasure_diamond_sheet extends BitmapData {

		public function treasure_diamond_sheet(_arg1:int=31, _arg2:int=37){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//treasure_emerald_sheet (treasure_emerald_sheet)
package {
	import flash.display.*;

	public dynamic class treasure_emerald_sheet extends BitmapData {

		public function treasure_emerald_sheet(_arg1:int=25, _arg2:int=31){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//treasure_gold_sheet (treasure_gold_sheet)
package {
	import flash.display.*;

	public dynamic class treasure_gold_sheet extends BitmapData {

		public function treasure_gold_sheet(_arg1:int=44, _arg2:int=21){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//treasure_ruby_sheet (treasure_ruby_sheet)
package {
	import flash.display.*;

	public dynamic class treasure_ruby_sheet extends BitmapData {

		public function treasure_ruby_sheet(_arg1:int=25, _arg2:int=32){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//treasure_silver_sheet (treasure_silver_sheet)
package {
	import flash.display.*;

	public dynamic class treasure_silver_sheet extends BitmapData {

		public function treasure_silver_sheet(_arg1:int=44, _arg2:int=21){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//twobyfour_drop (twobyfour_drop)
package {
	import flash.display.*;

	public dynamic class twobyfour_drop extends BitmapData {

		public function twobyfour_drop(_arg1:int=56, _arg2:int=14){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//wantedposter_object_sheet (wantedposter_object_sheet)
package {
	import flash.display.*;

	public dynamic class wantedposter_object_sheet extends BitmapData {

		public function wantedposter_object_sheet(_arg1:int=450, _arg2:int=58){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//water_droplet_sheet (water_droplet_sheet)
package {
	import flash.display.*;

	public dynamic class water_droplet_sheet extends BitmapData {

		public function water_droplet_sheet(_arg1:int=16, _arg2:int=4){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_2x4_sheet (weapon_2x4_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_2x4_sheet extends BitmapData {

		public function weapon_2x4_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_axe_sheet (weapon_axe_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_axe_sheet extends BitmapData {

		public function weapon_axe_sheet(_arg1:int=1885, _arg2:int=420){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_banjo_sheet (weapon_banjo_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_banjo_sheet extends BitmapData {

		public function weapon_banjo_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_barbedwire_sheet (weapon_barbedwire_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_barbedwire_sheet extends BitmapData {

		public function weapon_barbedwire_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_bat_sheet (weapon_bat_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_bat_sheet extends BitmapData {

		public function weapon_bat_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_bazooka_sheet (weapon_bazooka_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_bazooka_sheet extends BitmapData {

		public function weapon_bazooka_sheet(_arg1:int=1456, _arg2:int=856){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_blunderbuss_sheet (weapon_blunderbuss_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_blunderbuss_sheet extends BitmapData {

		public function weapon_blunderbuss_sheet(_arg1:int=1092, _arg2:int=222){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_bone_sheet (weapon_bone_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_bone_sheet extends BitmapData {

		public function weapon_bone_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_boxinggloves_sheet (weapon_boxinggloves_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_boxinggloves_sheet extends BitmapData {

		public function weapon_boxinggloves_sheet(_arg1:int=1100, _arg2:int=348){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_brassknuckles_sheet (weapon_brassknuckles_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_brassknuckles_sheet extends BitmapData {

		public function weapon_brassknuckles_sheet(_arg1:int=1100, _arg2:int=348){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_bullwhip_sheet (weapon_bullwhip_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_bullwhip_sheet extends BitmapData {

		public function weapon_bullwhip_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_cactus_sheet (weapon_cactus_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_cactus_sheet extends BitmapData {

		public function weapon_cactus_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_catofninetails_sheet (weapon_catofninetails_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_catofninetails_sheet extends BitmapData {

		public function weapon_catofninetails_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_chainwhip_sheet (weapon_chainwhip_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_chainwhip_sheet extends BitmapData {

		public function weapon_chainwhip_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_club_sheet (weapon_club_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_club_sheet extends BitmapData {

		public function weapon_club_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_crossbow_sheet (weapon_crossbow_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_crossbow_sheet extends BitmapData {

		public function weapon_crossbow_sheet(_arg1:int=1092, _arg2:int=222){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_crowbar_sheet (weapon_crowbar_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_crowbar_sheet extends BitmapData {

		public function weapon_crowbar_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_cutlass_sheet (weapon_cutlass_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_cutlass_sheet extends BitmapData {

		public function weapon_cutlass_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_derringer_sheet (weapon_derringer_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_derringer_sheet extends BitmapData {

		public function weapon_derringer_sheet(_arg1:int=648, _arg2:int=144){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_flamethrower_sheet (weapon_flamethrower_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_flamethrower_sheet extends BitmapData {

		public function weapon_flamethrower_sheet(_arg1:int=1092, _arg2:int=222){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_gatling_sheet (weapon_gatling_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_gatling_sheet extends BitmapData {

		public function weapon_gatling_sheet(_arg1:int=960, _arg2:int=130){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_guitar_sheet (weapon_guitar_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_guitar_sheet extends BitmapData {

		public function weapon_guitar_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_harpoongun_sheet (weapon_harpoongun_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_harpoongun_sheet extends BitmapData {

		public function weapon_harpoongun_sheet(_arg1:int=1092, _arg2:int=222){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_hatfieldpistol_sheet (weapon_hatfieldpistol_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_hatfieldpistol_sheet extends BitmapData {

		public function weapon_hatfieldpistol_sheet(_arg1:int=648, _arg2:int=144){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_iron_sheet (weapon_iron_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_iron_sheet extends BitmapData {

		public function weapon_iron_sheet(_arg1:int=1100, _arg2:int=348){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_katana_sheet (weapon_katana_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_katana_sheet extends BitmapData {

		public function weapon_katana_sheet(_arg1:int=1336, _arg2:int=0x0300){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_longsword_sheet (weapon_longsword_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_longsword_sheet extends BitmapData {

		public function weapon_longsword_sheet(_arg1:int=1336, _arg2:int=0x0300){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_machete_sheet (weapon_machete_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_machete_sheet extends BitmapData {

		public function weapon_machete_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_mallet_sheet (weapon_mallet_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_mallet_sheet extends BitmapData {

		public function weapon_mallet_sheet(_arg1:int=1885, _arg2:int=420){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_meteor_sheet (weapon_meteor_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_meteor_sheet extends BitmapData {

		public function weapon_meteor_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_morningstar_sheet (weapon_morningstar_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_morningstar_sheet extends BitmapData {

		public function weapon_morningstar_sheet(_arg1:int=1885, _arg2:int=420){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_nightstick_sheet (weapon_nightstick_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_nightstick_sheet extends BitmapData {

		public function weapon_nightstick_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_pickaxe_sheet (weapon_pickaxe_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_pickaxe_sheet extends BitmapData {

		public function weapon_pickaxe_sheet(_arg1:int=1885, _arg2:int=420){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_pipe_sheet (weapon_pipe_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_pipe_sheet extends BitmapData {

		public function weapon_pipe_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_poolcue_sheet (weapon_poolcue_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_poolcue_sheet extends BitmapData {

		public function weapon_poolcue_sheet(_arg1:int=2639, _arg2:int=688){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_rattlesnake_sheet (weapon_rattlesnake_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_rattlesnake_sheet extends BitmapData {

		public function weapon_rattlesnake_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_revolver_sheet (weapon_revolver_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_revolver_sheet extends BitmapData {

		public function weapon_revolver_sheet(_arg1:int=648, _arg2:int=144){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_romancandle_sheet (weapon_romancandle_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_romancandle_sheet extends BitmapData {

		public function weapon_romancandle_sheet(_arg1:int=648, _arg2:int=144){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_rope_sheet (weapon_rope_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_rope_sheet extends BitmapData {

		public function weapon_rope_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_scythe_sheet (weapon_scythe_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_scythe_sheet extends BitmapData {

		public function weapon_scythe_sheet(_arg1:int=2639, _arg2:int=688){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_shotgun_sheet (weapon_shotgun_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_shotgun_sheet extends BitmapData {

		public function weapon_shotgun_sheet(_arg1:int=1092, _arg2:int=222){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_shovel_sheet (weapon_shovel_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_shovel_sheet extends BitmapData {

		public function weapon_shovel_sheet(_arg1:int=1160, _arg2:int=636){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_sickle_sheet (weapon_sickle_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_sickle_sheet extends BitmapData {

		public function weapon_sickle_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_squirtgun_sheet (weapon_squirtgun_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_squirtgun_sheet extends BitmapData {

		public function weapon_squirtgun_sheet(_arg1:int=648, _arg2:int=144){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_stick_sheet (weapon_stick_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_stick_sheet extends BitmapData {

		public function weapon_stick_sheet(_arg1:int=1350, _arg2:int=384){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_submachinegun_sheet (weapon_submachinegun_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_submachinegun_sheet extends BitmapData {

		public function weapon_submachinegun_sheet(_arg1:int=1092, _arg2:int=222){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_thornwhip_sheet (weapon_thornwhip_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_thornwhip_sheet extends BitmapData {

		public function weapon_thornwhip_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package 

****************

//weapon_towchain_sheet (weapon_towchain_sheet)
package {
	import flash.display.*;

	public dynamic class weapon_towchain_sheet extends BitmapData {

		public function weapon_towchain_sheet(_arg1:int=1701, _arg2:int=184){
			super(_arg1, _arg2);
		}
	}
}//package
