Section 1
//AnyKey (AnyKey)
package {
import flash.display.*;
public dynamic class AnyKey extends MovieClip {
}
}//package
Section 2
//Arrow (Arrow)
package {
import flash.display.*;
public dynamic class Arrow extends MovieClip {
}
}//package
Section 3
//AutoSlowMotionButton (AutoSlowMotionButton)
package {
import flash.display.*;
public dynamic class AutoSlowMotionButton extends MovieClip {
public function AutoSlowMotionButton(){
addFrameScript(0, frame1, 5, frame6);
}
function frame6(){
stop();
}
function frame1(){
stop();
}
}
}//package
Section 4
//AutoSlowMotionControl (AutoSlowMotionControl)
package {
import flash.display.*;
public dynamic class AutoSlowMotionControl extends MovieClip {
public var _autoSlowMotionButton:AutoSlowMotionButton;
}
}//package
Section 5
//Backdrop (Backdrop)
package {
import flash.display.*;
public dynamic class Backdrop extends MovieClip {
}
}//package
Section 6
//BeatingHeart (BeatingHeart)
package {
import flash.display.*;
public dynamic class BeatingHeart extends MovieClip {
}
}//package
Section 7
//BluntSound (BluntSound)
package {
import flash.media.*;
public dynamic class BluntSound extends Sound {
}
}//package
Section 8
//Boundaries (Boundaries)
package {
import flash.display.*;
public class Boundaries extends MovieClip {
public var _startAnchor:StartAnchor;
}
}//package
Section 9
//Boundaries0 (Boundaries0)
package {
public dynamic class Boundaries0 extends Boundaries {
}
}//package
Section 10
//Boundaries1 (Boundaries1)
package {
public dynamic class Boundaries1 extends Boundaries {
}
}//package
Section 11
//Boundaries2 (Boundaries2)
package {
public dynamic class Boundaries2 extends Boundaries {
}
}//package
Section 12
//Boundaries3 (Boundaries3)
package {
public dynamic class Boundaries3 extends Boundaries {
}
}//package
Section 13
//Bubble (Bubble)
package {
import flash.display.*;
public dynamic class Bubble extends MovieClip {
}
}//package
Section 14
//Clock (Clock)
package {
import flash.events.*;
import flash.display.*;
import flash.geom.*;
public class Clock extends MovieClip {
private var _toggleSettingsMenuCallback:Function;
private var _player:Player;
public var _clockHand2:ClockHand;
public var _clockHand1:ClockHand;
public function Clock(_arg1:Player, _arg2:Function):void{
_player = _arg1;
_toggleSettingsMenuCallback = _arg2;
_clockHand1.transform.colorTransform = new ColorTransform(0, 0, 0, 1, 0xFF, 0, 0, 0);
this.buttonMode = true;
}
public function mouseDownHandler(_arg1:MouseEvent):void{
if ((((_arg1.target == this)) || ((_arg1.target.parent == this)))){
_toggleSettingsMenuCallback();
};
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
}
public function mouseUpHandler(_arg1:MouseEvent):void{
}
public function update():void{
_clockHand1.rotation = (_clockHand1.rotation + (0.5 * _player.adrenalineFactor));
_clockHand2.rotation = (_clockHand2.rotation + (6 * _player.adrenalineFactor));
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
}
}
}//package
Section 15
//ClockHand (ClockHand)
package {
import flash.display.*;
public dynamic class ClockHand extends MovieClip {
}
}//package
Section 16
//DimScreen (DimScreen)
package {
import flash.display.*;
public dynamic class DimScreen extends MovieClip {
}
}//package
Section 17
//DocumentMain (DocumentMain)
package {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.utils.*;
import flash.geom.*;
import flash.filters.*;
public class DocumentMain extends MovieClip {
private var _player:Player;
private var _mountains:Mountains;
private var _dyingSequence:Boolean;
private var _settingsWindow:SettingsWindow;
private var _clock:Clock;
private var _debugMode:Boolean;
private var _pauseFocus:Array;
private var _fps:FPS;
private var _enemySpawnDelayCtr:Number;
private var _timeMeter:TimeMeter;
private var _fullSound:MonsterMeterFull;
private var _timer:Timer;
private var _gameState:String;
private var _stageData:Array;
private var _fogScreen:FogScreen;
private var _nextStage:Number;
private var _activeStartAnchor:StartAnchor;
private var _dimScreenOn:Boolean;
private var _debugLayer:MovieClip;
private var _keyListeningAssets:Array;
private var _gamePaused:Boolean;
private var _originalVolume:Number;
private var _dunes:Dunes;
private var _wavesSurvived:Number;
private var _speechCtr:Number;
private var _enemyHitAssets:Array;
private var _point:Point;
private var _stageLayer;
private var _dimScreen:DimScreen;
private var _trees:Trees;
private var _mouseListeningAssets:Array;
private var _stats:Object;
private var _speechChance:Number;
private var _monsterMeter:MonsterMeter;
private var _statsWindow:StatsWindow;
private var _scrollingAssets:Array;
private var _playerBubble:Bubble;
private var _backdrop:Backdrop;
private var _maxEnemies:Number;
private var _keyStates:Object;
private var _speechPool:Array;
private var _interfaceLayer:MovieClip;
private var _toMenuScreenCallback:Function;
private var _unitsLayer:MovieClip;
private var _healthMeter:HealthMeter;
private var _playerHitAssets:Array;
private var _redMeter:RedMeter;
public var kongregate;
private var _messageWindow:MessageWindow;
private var _allDynamicAssets:Array;
private var _currentStage:Number;
private var _boundaries:MovieClip;
private var _volumeControl:VolumeControl;
private var _bgProps:Array;
private var _allEnemies:Array;
private var _delayCtr:Number;
private var _stage:Stage;
public function DocumentMain(_arg1:Stage):void{
var _local2:Number;
var _local5:Leaf;
super();
_stage = _arg1;
_stage.stageFocusRect = false;
MusicManager.setCurrent(MusicManager.COLD_FUNK);
MusicManager.playCurrent();
_timer = new Timer(1000);
_timer.addEventListener(TimerEvent.TIMER, timerEventHandler);
_timer.start();
_speechChance = 0.05;
_originalVolume = -1;
_fullSound = new MonsterMeterFull();
_enemySpawnDelayCtr = 0;
_point = new Point(0, 0);
_stats = {wavesSurvived:0, secondsElapsed:0, totalKnockouts:0, shurikensThrown:0, shurikensHit:0, perfectAccuracyWaves:0, perfectDodgeWaves:0, beenHit:false};
_dyingSequence = false;
_dimScreenOn = false;
_keyStates = {up:false, down:false, right:false, left:false, shift:false, space:false};
_gamePaused = false;
_pauseFocus = new Array();
_bgProps = new Array();
_allEnemies = new Array();
_delayCtr = 0;
_gameState = "transitioning stages";
_debugMode = false;
_enemyHitAssets = new Array();
_playerHitAssets = new Array();
_allDynamicAssets = new Array();
_keyListeningAssets = new Array();
_mouseListeningAssets = new Array();
_scrollingAssets = new Array();
_currentStage = 0;
_nextStage = 1;
_wavesSurvived = 0;
_speechPool = ["why so serious?", "\nbrother?", "\narms?", "gum is yummy", "\nmeow", "i'm his cousin", "\nmeh", "\nargh.", "\ndude", "hohoho", "\ntwins?", "\nfarted", "we're cats", "am i a tooth?", "i like spearmint", "\n5 stars?", "\ne=mc2", "he's smart", "\ni'm smart", "happy face", "stop cheating", "still here?", "rest a bit"];
_speechCtr = Math.floor((Math.random() * _speechPool.length));
_stageData = [{leftBound:-500, rightBound:1500, bgProps:[{instance:null, type:SignPost, x:-125.4, y:230, frameLabel:"how to move"}, {instance:null, type:SignPost, x:470, y:230, frameLabel:"how to throw"}, {instance:null, type:SignPost, x:940, y:268, frameLabel:"how to slow"}, {instance:null, type:SignPost, x:1370, y:240, frameLabel:"how to levitate"}, {instance:null, type:SignPost, x:2550, y:82, frameLabel:"survive"}], boss:{instantiated:true, instance:null}, transition:[{instantiated:false, instance:null, type:Enemy, x:4070, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:4620, behaviorType:2, bossMode:true}, {instantiated:false, instance:null, type:Enemy, x:4720, behaviorType:2}]}, {leftBound:200, rightBound:1600, initialMaxEnemies:2, additionalMaxEnemies:3, bgProps:[], enemies:[{instantiated:false, instance:null, type:Enemy, x:-145}, {instantiated:false, instance:null, type:Enemy, x:1900}, {instantiated:false, instance:null, type:Enemy, x:1020}, {instantiated:false, instance:null, type:Enemy, x:1245}, {instantiated:false, instance:null, type:Enemy, x:250}, {instantiated:false, instance:null, type:Enemy, x:600}, {instantiated:false, instance:null, type:Enemy, x:1500}], boss:{instantiated:false, instance:null, type:Enemy2, x:1190, bossMode:true}, transition:[{instantiated:false, instance:null, type:Enemy, x:3450, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:2765, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:4650, behaviorType:2}], monsterMeterCapacity:50}, {leftBound:600, rightBound:2500, initialMaxEnemies:3, additionalMaxEnemies:2, bgProps:[], enemies:[{instantiated:false, instance:null, type:Enemy2, x:-370}, {instantiated:false, instance:null, type:Enemy, x:2830}, {instantiated:false, instance:null, type:Enemy, x:400}, {instantiated:false, instance:null, type:Enemy, x:2100}, {instantiated:false, instance:null, type:Enemy, x:1250}, {instantiated:false, instance:null, type:Enemy, x:700}, {instantiated:false, instance:null, type:Enemy2, x:1750}], boss:{instantiated:false, instance:null, type:Enemy4, x:1200, behaviorType:2, bossMode:true}, transition:[{instantiated:false, instance:null, type:Enemy, x:3550, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:4080, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:4560, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:5780, behaviorType:2}], monsterMeterCapacity:50}, {leftBound:0, rightBound:1000, initialMaxEnemies:2, additionalMaxEnemies:1, bgProps:[], enemies:[{instantiated:false, instance:null, type:Enemy, x:0}, {instantiated:false, instance:null, type:Enemy4, x:600}, {instantiated:false, instance:null, type:Enemy, x:1200}], boss:{instantiated:false, instance:null, type:Enemy4, x:900, behaviorType:2, bossMode:true}, transition:[{instantiated:false, instance:null, type:Enemy, x:2290, behaviorType:2}, {instantiated:false, instance:null, type:Enemy, x:3000, behaviorType:2}], monsterMeterCapacity:50}];
_player = new Player();
_stageLayer = new MovieClip();
this.addChild(_stageLayer);
_backdrop = new Backdrop();
_backdrop.transform.colorTransform = new ColorTransform(0.5, 0.5, 0.5, 1, 100, 100, 100, 0);
_backdrop.filters = [new BlurFilter(5, 5, BitmapFilterQuality.HIGH)];
_backdrop.cacheAsBitmap = true;
_stageLayer.addChild(_backdrop);
_mountains = new Mountains();
_mountains.transform.colorTransform = new ColorTransform(0.5, 0.5, 0.5, 1, 70, 70, 70, 0);
_mountains.filters = [new BlurFilter(3, 3, BitmapFilterQuality.HIGH)];
_mountains.cacheAsBitmap = true;
_mountains.scrollMultiplier = 0.33;
_mountains.x = 1178;
_stageLayer.addChild(_mountains);
_scrollingAssets.push(_mountains);
_dunes = new Dunes();
_dunes.transform.colorTransform = new ColorTransform(0.5, 0.5, 0.5, 1, 70, 70, 70, 0);
_dunes.filters = [new BlurFilter(3, 3, BitmapFilterQuality.HIGH)];
_dunes.cacheAsBitmap = true;
_dunes.scrollMultiplier = 0.33;
_dunes.x = 3828;
_stageLayer.addChild(_dunes);
_scrollingAssets.push(_dunes);
_trees = new Trees();
_trees.x = 3570;
_stageLayer.addChild(_trees);
_scrollingAssets.push(_trees);
_boundaries = new MovieClip();
_stageLayer.addChild(_boundaries);
_scrollingAssets.push(_boundaries);
var _local3:* = new Boundaries0();
_local3._startAnchor.y = (_local3._startAnchor.y + (_stage.stageHeight + 100));
_boundaries.addChild(_local3);
_activeStartAnchor = _local3._startAnchor;
_local3.cacheAsBitmap = true;
var _local4:* = new Boundaries1();
_local4.x = (_local3.width + 200);
_local4._startAnchor.y = (_local4._startAnchor.y + (_stage.stageHeight + 100));
_boundaries.addChild(_local4);
_local4.cacheAsBitmap = true;
_unitsLayer = new MovieClip();
this.addChild(_unitsLayer);
_playerBubble = new Bubble();
_interfaceLayer = new MovieClip();
this.addChild(_interfaceLayer);
_fogScreen = new FogScreen();
_fogScreen.alpha = 0;
_interfaceLayer.addChild(_fogScreen);
_redMeter = new RedMeter();
_redMeter.gotoAndStop(100);
_redMeter.x = 8;
_redMeter.y = 333.6;
_interfaceLayer.addChild(_redMeter);
_monsterMeter = new MonsterMeter();
_monsterMeter.x = 20;
_monsterMeter.y = 100;
_monsterMeter._monsterMeterFace.gotoAndStop("sleeping");
_interfaceLayer.addChild(_monsterMeter);
_healthMeter = new HealthMeter(_player);
_healthMeter.x = 700;
_healthMeter.y = 490;
_interfaceLayer.addChild(_healthMeter);
_volumeControl = new VolumeControl();
_volumeControl.activate();
_volumeControl.x = 550;
_volumeControl.y = 15;
_interfaceLayer.addChild(_volumeControl);
_timeMeter = new TimeMeter(_player);
_timeMeter.x = 80;
_timeMeter.y = 1;
_interfaceLayer.addChild(_timeMeter);
_allDynamicAssets.push(_timeMeter);
_mouseListeningAssets.push(_timeMeter);
_keyListeningAssets.push(_timeMeter);
_dimScreen = new DimScreen();
_dimScreen.alpha = 0;
_interfaceLayer.addChild(_dimScreen);
_clock = new Clock(_player, toggleSettingsMenu);
_clock.x = 20;
_clock.y = 10;
_interfaceLayer.addChild(_clock);
_allDynamicAssets.push(_clock);
_keyListeningAssets.push(_clock);
_mouseListeningAssets.push(_clock);
_fps = new FPS(_stage);
_fps.x = 10;
_fps.y = 70;
_interfaceLayer.addChild(_fps);
_messageWindow = new MessageWindow(removeMessageWindow, toggleSettingsMenu);
_messageWindow.x = 125;
_messageWindow.y = 115;
_messageWindow.filters = [new DropShadowFilter(10, 45, 0, 1, 10, 10, 1, 1, false, false, false)];
_mouseListeningAssets.push(_messageWindow);
_keyListeningAssets.push(_messageWindow);
_interfaceLayer.addChild(_messageWindow);
_settingsWindow = new SettingsWindow(_mouseListeningAssets, _keyListeningAssets, _stage, unpauseGame, this, _stats, _toMenuScreenCallback);
_settingsWindow.x = 75;
_settingsWindow.y = 75;
_settingsWindow.filters = [new DropShadowFilter(10, 45, 0, 1, 10, 10, 1, 1, false, false, false)];
_player.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, bubble:_playerBubble, redMeter:_redMeter, healthMeter:_healthMeter, timeMeter:_timeMeter, volumeControl:_volumeControl, allDynamicAssets:_allDynamicAssets, scrollingAssets:_scrollingAssets, clock:_clock, player:_player, dyingSequenceCallback:dyingSequence, stats:_stats});
_player.gotoAndStop("falling");
_unitsLayer.addChild(_player);
_allDynamicAssets.push(_player);
_keyListeningAssets.push(_player);
_mouseListeningAssets.push(_player);
this.instantiateStageData();
_local2 = 0;
while (_local2 < 7) {
_local5 = new Leaf(_stage, _player);
_stageLayer.addChild(_local5);
_allDynamicAssets.push(_local5);
_pauseFocus.push(_local5);
_local2++;
};
_pauseFocus.push(_messageWindow);
_pauseFocus.push(_clock);
this.pauseGame();
_debugLayer = new MovieClip();
this.addChild(_debugLayer);
this.scrollStage(1);
_stage.focus = _stage;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
_stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
_stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
}
private function instantiateStageData(){
var _local1:MovieClip;
var _local2:Number;
var _local3:Array;
var _local4:Object;
var _local5:Number;
var _local6:Notification;
var _local7:*;
var _local8:*;
if (_gameState == "initializing stage"){
if (_delayCtr == 0){
_local6 = new Notification(_stage, String((_wavesSurvived + 1)), _allDynamicAssets);
_allDynamicAssets.push(_local6);
_interfaceLayer.addChild(_local6);
_delayCtr++;
} else {
if (_delayCtr > 60){
_gameState = "running stage";
if (_wavesSurvived >= 3){
_local1 = new Enemy5();
_local1.scaleX = 1.5;
_local1.scaleY = 1.5;
_local1.x = (Math.random() * 700);
_local1.y = -(_local1.height);
_local1.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, scrollingAssets:_scrollingAssets, allDynamicAssets:_allDynamicAssets, player:_player, stage:_stage, monsterMeter:_monsterMeter, healthMeter:_healthMeter, allEnemies:_allEnemies, stats:_stats});
_unitsLayer.addChild(_local1);
_allDynamicAssets.push(_local1);
_scrollingAssets.push(_local1);
_allEnemies.push(_local1);
};
} else {
_delayCtr++;
};
};
} else {
if (_gameState == "running stage"){
if (_enemySpawnDelayCtr >= 15){
_enemySpawnDelayCtr = 0;
_local3 = _stageData[_currentStage].enemies;
_maxEnemies = (_stageData[_currentStage].initialMaxEnemies + _wavesSurvived);
_maxEnemies = (_maxEnemies + Math.round(((_stageData[_currentStage].additionalMaxEnemies + _wavesSurvived) * (_monsterMeter.fillCtr / _monsterMeter.capacity))));
_local2 = 0;
if (_allEnemies.length < _maxEnemies){
_local5 = Math.floor((Math.random() * _local3.length));
_local4 = _local3[_local5];
if ((((_local4.type == Enemy2)) && (!(_local4.bossMode)))){
_local7 = 0;
_local8 = 0;
while (_local7 < _allEnemies.length) {
if ((_allEnemies[_local7] is Enemy2)){
_local8++;
};
if (_local8 >= 6){
break;
};
_local7++;
};
if (_local8 >= 6){
_local1 = new Enemy(_local4.bossMode);
} else {
_local1 = new _local4.type(_local4.bossMode);
};
} else {
_local1 = new _local4.type(_local4.bossMode);
if ((((_local4.type == Enemy)) && ((Math.random() < _speechChance)))){
_local1._speechBubble._textField.text = _speechPool[(_speechCtr % _speechPool.length)];
_speechCtr++;
_local1._speechBubble.visible = true;
_local1._speechBubblePointer.visible = true;
};
};
_local4.instance = _local1;
if (_local4.behaviorType != null){
_local1.behaviorType = _local4.behaviorType;
};
_local4.instantiated = true;
_local1.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, scrollingAssets:_scrollingAssets, allDynamicAssets:_allDynamicAssets, player:_player, currentStageData:_local3, stage:_stage, monsterMeter:_monsterMeter, healthMeter:_healthMeter, allEnemies:_allEnemies, stats:_stats});
_local1.x = (_activeStartAnchor.localToGlobal(_point).x + _local4.x);
_local1.x = (_local1.x + ((Math.random() * 300) - 150));
_local1.y = -10;
_unitsLayer.addChild(_local1);
_allDynamicAssets.push(_local1);
_scrollingAssets.push(_local1);
_allEnemies.push(_local1);
if ((((_wavesSurvived >= 3)) && ((_local1 is Enemy)))){
_local1.skeletonize((_wavesSurvived - 2));
};
_local2++;
};
} else {
_enemySpawnDelayCtr++;
};
if (_monsterMeter.bossMode){
while (_allEnemies.length > 0) {
_allEnemies.pop().die();
};
_gameState = "fighting boss";
_monsterMeter.deactivateStageMode();
_delayCtr = 0;
};
} else {
if (_gameState == "fighting boss"){
if (!_stageData[_currentStage].boss.instantiated){
if (_delayCtr < 30){
_delayCtr++;
} else {
_local1 = new _stageData[_currentStage].boss.type(_stageData[_currentStage].boss.bossMode);
_stageData[_currentStage].boss.instance = _local1;
if (_stageData[_currentStage].boss.behaviorType != null){
_local1.behaviorType = _stageData[_currentStage].boss.behaviorType;
};
_stageData[_currentStage].boss.instantiated = true;
_local1.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, scrollingAssets:_scrollingAssets, allDynamicAssets:_allDynamicAssets, player:_player, currentStageData:null, healthMeter:_healthMeter, stage:_stage, monsterMeter:_monsterMeter, stats:_stats, allEnemies:_allEnemies});
_local1.x = (_activeStartAnchor.localToGlobal(_point).x + _stageData[_currentStage].boss.x);
_local1.y = -100;
_unitsLayer.addChild(_local1);
_allDynamicAssets.push(_local1);
_scrollingAssets.push(_local1);
if (_wavesSurvived == 0){
_local1._weakSpotArrow.visible = true;
_local1._weakSpotMessage.visible = true;
};
};
} else {
if ((((_stageData[_currentStage].boss.instance == null)) || (!(this.contains(_stageData[_currentStage].boss.instance))))){
_stageData[_currentStage].boss.instantiated = false;
_stageData[_currentStage].boss.instance = null;
_monsterMeter.setMeter(0);
_monsterMeter.deactivateBossMode();
_monsterMeter._monsterMeterFace.gotoAndStop("sleeping");
_gameState = "transitioning stages";
_wavesSurvived++;
if (_stats.shurikensHit >= _stats.shurikensThrown){
_stats.perfectAccuracyWaves = _wavesSurvived;
};
if (!_stats.beenHit){
_stats.perfectDodgeWaves = _wavesSurvived;
};
_local6 = new Notification(_stage, "go", _allDynamicAssets);
_allDynamicAssets.push(_local6);
_interfaceLayer.addChild(_local6);
} else {
_monsterMeter.setMeter((_stageData[_currentStage].boss.instance.health / _stageData[_currentStage].boss.instance.maxHealth));
if (_allEnemies.length < (Math.floor((_wavesSurvived / 3)) * 2)){
if (_enemySpawnDelayCtr >= 15){
_enemySpawnDelayCtr = 0;
_local3 = _stageData[_currentStage].enemies;
_local5 = Math.floor((Math.random() * _local3.length));
_local4 = _local3[_local5];
_local1 = new _local3[_local5].type(_local4.bossMode);
if ((((_local4.type == Enemy)) && ((Math.random() < _speechChance)))){
_local1._speechBubble._textField.text = _speechPool[(_speechCtr % _speechPool.length)];
_speechCtr++;
_local1._speechBubble.visible = true;
_local1._speechBubblePointer.visible = true;
};
_local4.instance = _local1;
if (_local4.behaviorType != null){
_local1.behaviorType = _local4.behaviorType;
};
_local4.instantiated = true;
_local1.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, scrollingAssets:_scrollingAssets, allDynamicAssets:_allDynamicAssets, player:_player, currentStageData:_local3, stage:_stage, monsterMeter:_monsterMeter, healthMeter:_healthMeter, allEnemies:_allEnemies, stats:_stats});
_local1.x = (_activeStartAnchor.localToGlobal(_point).x + _local4.x);
_local1.x = (_local1.x + ((Math.random() * 300) - 150));
_local1.y = -10;
_unitsLayer.addChild(_local1);
_allDynamicAssets.push(_local1);
_scrollingAssets.push(_local1);
_allEnemies.push(_local1);
} else {
_enemySpawnDelayCtr++;
};
};
};
};
} else {
if (_gameState == "transitioning stages"){
if (_player.x >= (Boundaries(_boundaries.getChildAt(1))._startAnchor.localToGlobal(_point).x + _stageData[_nextStage].leftBound)){
_local2 = 0;
while (_local2 < _allEnemies.length) {
if (_allEnemies[_local2].x < ((_allEnemies[_local2].scaleX * _allEnemies[_local2].width) / 2)){
_allEnemies[_local2].remove();
_allEnemies.splice(_local2, 1);
} else {
_local2++;
};
};
_local3 = _stageData[_currentStage].transition;
_local2 = 0;
while (_local2 < _local3.length) {
_local3[_local2].instantiated = false;
_local2++;
};
_delayCtr = 0;
_gameState = "initializing stage";
_boundaries.removeChildAt(0);
_currentStage = _nextStage;
_activeStartAnchor = Boundaries(_boundaries.getChildAt(0))._startAnchor;
_monsterMeter._monsterMeterFace.gotoAndStop("normal");
_monsterMeter.capacity = (_stageData[_currentStage].monsterMeterCapacity + (_wavesSurvived * 2));
_monsterMeter.activateStageMode();
this.appendNextStage();
} else {
_local3 = _stageData[_currentStage].transition;
_local2 = 0;
while (_local2 < _local3.length) {
if (((((!(_local3[_local2].instantiated)) && (((_activeStartAnchor.localToGlobal(_point).x + _local3[_local2].x) < (_player.x + _stage.stageWidth))))) && (((_activeStartAnchor.localToGlobal(_point).x + _local3[_local2].x) > (_player.x - _stage.stageWidth))))){
_local1 = new _local3[_local2].type(_local3[_local2].bossMode);
if ((((_local3[_local2].type == Enemy)) && ((Math.random() < _speechChance)))){
_local1._speechBubble._textField.text = _speechPool[(_speechCtr % _speechPool.length)];
_speechCtr++;
_local1._speechBubble.visible = true;
_local1._speechBubblePointer.visible = true;
};
_local3[_local2].instance = _local1;
if (_local3[_local2].behaviorType != null){
_local1.behaviorType = _local3[_local2].behaviorType;
};
_local3[_local2].instantiated = true;
_local1.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, scrollingAssets:_scrollingAssets, allDynamicAssets:_allDynamicAssets, player:_player, currentStageData:_local3, stage:_stage, monsterMeter:_monsterMeter, healthMeter:_healthMeter, allEnemies:_allEnemies, stats:_stats});
_local1.x = (_activeStartAnchor.localToGlobal(_point).x + _local3[_local2].x);
_local1.y = -100;
_unitsLayer.addChild(_local1);
_allDynamicAssets.push(_local1);
_scrollingAssets.push(_local1);
_allEnemies.push(_local1);
};
_local2++;
};
};
};
};
};
};
_local3 = _stageData[_currentStage].bgProps;
_local2 = 0;
while (_local2 < _local3.length) {
_local4 = _local3[_local2];
if (_local4.instance == null){
if (((((_player.virtualX + _stage.stageWidth) > _local4.x)) && (((_player.virtualX - _stage.stageWidth) < _local4.x)))){
_local1 = new _local4.type();
_local4.instance = _local1;
_local1.x = (_activeStartAnchor.localToGlobal(new Point(0, 0)).x + _local4.x);
_local1.y = _local4.y;
_local1.transform.colorTransform = new ColorTransform(0.9, 0.9, 0.9, 1, 20, 20, 20, 0);
if (_local4.frameLabel != null){
_local1.gotoAndStop(_local4.frameLabel);
};
_local1.cacheAsBitmap = true;
_stageLayer.addChildAt(_local1, _stageLayer.getChildIndex(_boundaries));
_scrollingAssets.push(_local1);
};
} else {
if (((((_player.virtualX + _stage.stageWidth) < _local4.x)) || (((_player.virtualX - _stage.stageWidth) > _local4.x)))){
_stageLayer.removeChild(_local4.instance);
_scrollingAssets.splice(_scrollingAssets.indexOf(_local4.instance), 1);
_local4.instance = null;
};
};
_local2++;
};
}
private function pauseGame():void{
_timer.stop();
_dimScreenOn = true;
_dimScreen.alpha = 1;
_gamePaused = true;
_allDynamicAssets.splice(_allDynamicAssets.indexOf(_clock), 1);
this.reorderDimLayer();
}
private function mouseUpHandler(_arg1:MouseEvent):void{
var _local3:Number;
if (_gamePaused){
_local3 = 0;
while (_local3 < _pauseFocus.length) {
if (_mouseListeningAssets.indexOf(_pauseFocus[_local3]) != -1){
_pauseFocus[_local3].mouseUpHandler(_arg1);
};
_local3++;
};
return;
};
var _local2:Number = 0;
while (_local2 < _mouseListeningAssets.length) {
_mouseListeningAssets[_local2].mouseUpHandler(_arg1);
_local2++;
};
}
private function enterFrameHandler(_arg1:Event):void{
var sc:SoundChannel;
var pauseFocusCtr:Number;
var respawnOffset1:Number;
var respawnOffset2:Number;
var e = _arg1;
try {
SpeedMonitor.endTimer("frame total");
} catch(Error) {
};
SpeedMonitor.startTimer("frame total");
if (_dyingSequence){
if (((!((_originalVolume == -1))) && ((MusicManager.getVolume() > 0)))){
if (MusicManager.getVolume() < 0.03){
MusicManager.setVolume(0);
} else {
MusicManager.setVolume((MusicManager.getVolume() - 0.03));
};
};
if (_dimScreen.alpha < 1){
_dimScreen.alpha = (_dimScreen.alpha + 0.03);
if (_dimScreen.alpha >= 1){
_dimScreen.alpha = 1;
MusicManager.stopCurrent();
MusicManager.setVolume(_originalVolume);
_originalVolume = -1;
sc = _fullSound.play();
sc.soundTransform = new SoundTransform((MusicManager.getVolume() * 2), 0);
_interfaceLayer.addChild(_statsWindow);
};
};
return;
};
if ((((_dimScreen.alpha > 0)) && (!(_dimScreenOn)))){
_dimScreen.alpha = (_dimScreen.alpha - 0.2);
if (_dimScreen.alpha < 0){
_dimScreen.alpha = 0;
if (_interfaceLayer.contains(_dimScreen)){
_interfaceLayer.removeChild(_dimScreen);
};
};
};
if (_gamePaused){
pauseFocusCtr = 0;
while (pauseFocusCtr < _pauseFocus.length) {
if (_allDynamicAssets.indexOf(_pauseFocus[pauseFocusCtr]) != -1){
_pauseFocus[pauseFocusCtr].update();
};
pauseFocusCtr = (pauseFocusCtr + 1);
};
return;
};
var ctr:Number = 0;
if (_fogScreen.alpha < (1 - _player.adrenalineFactor)){
_fogScreen.alpha = (_fogScreen.alpha + 0.1);
} else {
if ((_fogScreen.alpha - 0.1) > (1 - _player.adrenalineFactor)){
_fogScreen.alpha = (_fogScreen.alpha - 0.1);
};
};
this.instantiateStageData();
while (ctr < _allDynamicAssets.length) {
SpeedMonitor.startTimer(String(ctr));
_allDynamicAssets[ctr].update();
SpeedMonitor.endTimer(String(ctr));
ctr = (ctr + 1);
};
scrollStage();
if (_player.y > (_stage.stageHeight + 650)){
respawnOffset1 = (_activeStartAnchor.localToGlobal(_point).x - _player.x);
respawnOffset2 = (_activeStartAnchor.localToGlobal(_point).x + _stageData[_currentStage].leftBound);
if (Math.abs(respawnOffset1) > Math.abs(respawnOffset2)){
_player.warpToVirtualCoordinates((_player.virtualX + respawnOffset2), 0);
} else {
_player.warpToVirtualCoordinates((_player.virtualX + respawnOffset1), 0);
};
_player.beginBlinking();
} else {
if (_player.y < -500){
_player.y = -500;
};
};
if (_debugMode){
this.showHitBounds();
};
if (!_healthMeter.blinking){
if (_player.y > (_stage.stageHeight * 0.8)){
if (_healthMeter.alpha > 0.5){
_healthMeter.alpha = (_healthMeter.alpha - 0.1);
};
} else {
if (_healthMeter.alpha < 1){
_healthMeter.alpha = (_healthMeter.alpha + 0.1);
};
if (_healthMeter.alpha > 1){
_healthMeter.alpha = 1;
};
};
};
}
private function dyingSequence():void{
this.sendKongStats();
_originalVolume = MusicManager.getVolume();
_dyingSequence = true;
_unitsLayer.removeChild(_player);
_interfaceLayer.addChild(_player);
_pauseFocus.push(_player);
_stats.wavesSurvived = _wavesSurvived;
_statsWindow = new StatsWindow(_stage, _stats, _toMenuScreenCallback);
_statsWindow.x = 92;
_statsWindow.y = 40;
_keyListeningAssets.push(_statsWindow);
_mouseListeningAssets.push(_statsWindow);
_pauseFocus.push(_statsWindow);
pauseGame();
_dimScreen.alpha = 0;
}
private function timerEventHandler(_arg1:TimerEvent):void{
_stats.secondsElapsed++;
}
private function scrollStage(_arg1:Number=0.5):void{
var ctr:Number;
var scrollFactorIsDefined:Boolean;
var panDelayFactor = _arg1;
if ((((_player.x >= (Boundaries(_boundaries.getChildAt(0))._startAnchor.localToGlobal(_point).x + _stageData[_currentStage].leftBound))) && ((((_gameState == "transitioning stages")) || ((_player.x <= (Boundaries(_boundaries.getChildAt(0))._startAnchor.localToGlobal(_point).x + _stageData[_currentStage].rightBound))))))){
ctr = 0;
if (Math.abs(((_stage.stageWidth * 0.5) - _player.x)) > 1){
while (ctr < _scrollingAssets.length) {
try {
if (String(_scrollingAssets[ctr].scrollMultiplier) == "undefined"){
_scrollingAssets[ctr].scrollMultiplier = 1;
};
scrollFactorIsDefined = true;
} catch(e:Error) {
scrollFactorIsDefined = false;
};
if (scrollFactorIsDefined){
_scrollingAssets[ctr].x = (_scrollingAssets[ctr].x + ((((_stage.stageWidth * 0.5) - _player.x) * _scrollingAssets[ctr].scrollMultiplier) * panDelayFactor));
} else {
_scrollingAssets[ctr].x = (_scrollingAssets[ctr].x + (((_stage.stageWidth * 0.5) - _player.x) * panDelayFactor));
};
ctr = (ctr + 1);
};
_player.x = (_player.x + (((_stage.stageWidth * 0.5) - _player.x) * panDelayFactor));
};
} else {
if (_player.x < 20){
_player.virtualX = (_player.virtualX + (20 - _player.x));
_player.x = 20;
} else {
if (_player.x > (_stage.stageWidth - 20)){
_player.virtualX = (_player.virtualX + ((_stage.stageWidth - 20) - _player.x));
_player.x = (_stage.stageWidth - 20);
};
};
};
}
private function mouseDownHandler(_arg1:MouseEvent):void{
var _local3:Number;
if (_gamePaused){
_local3 = 0;
while (_local3 < _pauseFocus.length) {
if (_mouseListeningAssets.indexOf(_pauseFocus[_local3]) != -1){
_pauseFocus[_local3].mouseDownHandler(_arg1);
};
_local3++;
};
return;
};
var _local2:Number = 0;
while (_local2 < _mouseListeningAssets.length) {
_mouseListeningAssets[_local2].mouseDownHandler(_arg1);
_local2++;
};
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
var _local3:Number;
switch (_arg1.keyCode){
case 65:
_keyStates.left = true;
break;
case 87:
_keyStates.up = true;
break;
case 68:
_keyStates.right = true;
break;
case 83:
_keyStates.down = true;
break;
case 16:
_keyStates.shift = true;
break;
case 32:
_keyStates.space = true;
break;
};
if (_gamePaused){
_local3 = 0;
while (_local3 < _pauseFocus.length) {
if (_keyListeningAssets.indexOf(_pauseFocus[_local3]) != -1){
_pauseFocus[_local3].keyDownHandler(_arg1);
};
_local3++;
};
return;
};
var _local2:Number = 0;
while (_local2 < _keyListeningAssets.length) {
_keyListeningAssets[_local2].keyDownHandler(_arg1);
_local2++;
};
switch (_arg1.keyCode){
case 81:
this.toggleSettingsMenu();
break;
case 32:
break;
case 66:
trace(("num enemy hit assets: " + _enemyHitAssets.length));
_debugMode = !(_debugMode);
this.showHitBounds();
break;
case 67:
break;
};
}
private function unpauseGame():void{
_timer.start();
if (_allDynamicAssets.indexOf(_clock) == -1){
_allDynamicAssets.push(_clock);
};
_dimScreenOn = false;
_gamePaused = false;
_pauseFocus = new Array();
_player.updateInput(_keyStates);
_stage.focus = _stage;
}
private function keyUpHandler(_arg1:KeyboardEvent):void{
var _local3:Number;
switch (_arg1.keyCode){
case 37:
case 65:
_keyStates.left = false;
break;
case 38:
case 87:
_keyStates.up = false;
break;
case 39:
case 68:
_keyStates.right = false;
break;
case 40:
case 83:
_keyStates.down = false;
break;
case 16:
_keyStates.shift = false;
break;
case 32:
_keyStates.space = false;
break;
};
if (_gamePaused){
_local3 = 0;
while (_local3 < _pauseFocus.length) {
if (_keyListeningAssets.indexOf(_pauseFocus[_local3]) != -1){
_pauseFocus[_local3].keyUpHandler(_arg1);
};
_local3++;
};
return;
};
var _local2:Number = 0;
while (_local2 < _keyListeningAssets.length) {
_keyListeningAssets[_local2].keyUpHandler(_arg1);
_local2++;
};
}
public function setCallbacks(_arg1:Function){
_toMenuScreenCallback = _arg1;
_settingsWindow.updateMenuScreenCallback(_arg1);
}
private function toggleSettingsMenu():void{
if (_interfaceLayer.contains(_messageWindow)){
this.removeMessageWindow();
};
if (!_gamePaused){
_interfaceLayer.addChild(_settingsWindow);
_stats.wavesSurvived = _wavesSurvived;
_settingsWindow.update();
_keyListeningAssets.push(_settingsWindow);
_mouseListeningAssets.push(_settingsWindow);
_pauseFocus.push(_settingsWindow);
_pauseFocus.push(_clock);
_pauseFocus.push(_timeMeter);
_pauseFocus.push(_volumeControl);
this.pauseGame();
} else {
if (_pauseFocus.indexOf(_settingsWindow) != -1){
_mouseListeningAssets.splice(_mouseListeningAssets.indexOf(_settingsWindow), 1);
_keyListeningAssets.splice(_keyListeningAssets.indexOf(_settingsWindow), 1);
_interfaceLayer.removeChild(_settingsWindow);
_allDynamicAssets.push(_clock);
_stage.focus = _stage;
this.unpauseGame();
};
};
}
private function showHitBounds():void{
var _local1:Number;
var _local2:HitBound;
_local1 = 0;
while (_local1 < _debugLayer.numChildren) {
if ((_debugLayer.getChildAt(_local1) is HitBound)){
_debugLayer.removeChildAt(_local1);
} else {
_local1++;
};
};
if (!_debugMode){
return;
};
_local1 = 0;
while (_local1 < _enemyHitAssets.length) {
_local2 = new HitBound();
_local2.x = _enemyHitAssets[_local1].getBounds(_debugLayer).x;
_local2.y = _enemyHitAssets[_local1].getBounds(_debugLayer).y;
_local2.width = _enemyHitAssets[_local1].getBounds(_debugLayer).width;
_local2.height = _enemyHitAssets[_local1].getBounds(_debugLayer).height;
_debugLayer.addChild(_local2);
_local1++;
};
_local1 = 0;
while (_local1 < _playerHitAssets.length) {
_local2 = new HitBound();
_local2.transform.colorTransform = new ColorTransform(0, 0, 0, 1, 0, 0xFF, 0, 0);
_local2.x = _playerHitAssets[_local1].getBounds(_debugLayer).x;
_local2.y = _playerHitAssets[_local1].getBounds(_debugLayer).y;
_local2.width = _playerHitAssets[_local1].getBounds(_debugLayer).width;
_local2.height = _playerHitAssets[_local1].getBounds(_debugLayer).height;
_debugLayer.addChild(_local2);
_local1++;
};
_local1 = 0;
while (_local1 < _player.hitBounds.length) {
_local2 = new HitBound();
_local2.transform.colorTransform = new ColorTransform(0, 0, 0, 1, 0, 0, 0xFF, 0);
_local2.x = _player.hitBounds[_local1].getBounds(_debugLayer).x;
_local2.y = _player.hitBounds[_local1].getBounds(_debugLayer).y;
_local2.width = _player.hitBounds[_local1].getBounds(_debugLayer).width;
_local2.height = _player.hitBounds[_local1].getBounds(_debugLayer).height;
_debugLayer.addChild(_local2);
_local1++;
};
}
private function removeMessageWindow():void{
_mouseListeningAssets.splice(_mouseListeningAssets.indexOf(_messageWindow), 1);
_keyListeningAssets.splice(_keyListeningAssets.indexOf(_messageWindow), 1);
_interfaceLayer.removeChild(_messageWindow);
_stage.focus = _stage;
this.unpauseGame();
}
private function appendNextStage(){
var _local1:*;
var _local2:*;
var _local3:*;
if ((((_currentStage == 0)) || ((_currentStage == 3)))){
_nextStage = 1;
_local1 = new Boundaries1();
_local1.x = ((_boundaries.getChildAt(0).x + _boundaries.getChildAt(0).width) + 100);
_local1._startAnchor.y = (_local1._startAnchor.y + (_stage.stageHeight + 100));
_boundaries.addChild(_local1);
_local1.cacheAsBitmap = true;
} else {
if (_currentStage == 1){
_nextStage = 2;
_local2 = new Boundaries2();
_local2.x = ((_boundaries.getChildAt(0).x + _boundaries.getChildAt(0).width) + 100);
_local2._startAnchor.y = (_local2._startAnchor.y + (_stage.stageHeight + 100));
_boundaries.addChild(_local2);
_local2.cacheAsBitmap = true;
} else {
if (_currentStage == 2){
_nextStage = 3;
_local3 = new Boundaries3();
_local3.x = ((_boundaries.getChildAt(0).x + _boundaries.getChildAt(0).width) + 100);
_local3._startAnchor.y = (_local3._startAnchor.y + (_stage.stageHeight + 100));
_boundaries.addChild(_local3);
_local3.cacheAsBitmap = true;
};
};
};
if (_wavesSurvived >= 2){
_boundaries.getChildAt(1).transform.colorTransform = new ColorTransform((Math.random() + 0.5), (Math.random() + 0.5), (Math.random() + 0.5), 1, 0, 0, 0, 0);
};
}
private function reorderDimLayer():void{
var _local1:Number;
var _local2:Array = new Array();
if (_interfaceLayer.contains(_dimScreen)){
_interfaceLayer.removeChild(_dimScreen);
};
_local1 = 0;
while (_local1 < _pauseFocus.length) {
if (_interfaceLayer.contains(_pauseFocus[_local1])){
_local2.push(_pauseFocus[_local1]);
_interfaceLayer.removeChild(_pauseFocus[_local1]);
};
_local1++;
};
_interfaceLayer.addChild(_dimScreen);
_local1 = 0;
while (_local1 < _local2.length) {
_interfaceLayer.addChild(_local2[_local1]);
_local1++;
};
}
public function uninitialize():void{
_timer.removeEventListener(TimerEvent.TIMER, timerEventHandler);
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
_stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
_stage.removeEventListener(KeyboardEvent.KEY_UP, keyUpHandler);
this.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
this.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
_volumeControl.deactivate();
MusicManager.stopCurrent();
_healthMeter.deactivate();
_fps.deactivate();
}
private function sendKongStats():void{
if (kongregate != null){
kongregate.stats.submit("Most Stars Thrown", _stats.shurikensThrown);
kongregate.stats.submit("Total Stars Thrown", _stats.shurikensThrown);
kongregate.stats.submit("Most Stars Hit", _stats.shurikensHit);
kongregate.stats.submit("Total Stars Hit", _stats.shurikensHit);
kongregate.stats.submit("Longest Survival Time In Seconds", _stats.secondsElapsed);
kongregate.stats.submit("Total Survival Time In Seconds", _stats.secondsElapsed);
kongregate.stats.submit("Most Waves Survived", _wavesSurvived);
kongregate.stats.submit("Total Waves Survived", _wavesSurvived);
kongregate.stats.submit("Most Knockouts", _stats.totalKnockouts);
kongregate.stats.submit("Total Knockouts", _stats.totalKnockouts);
kongregate.stats.submit("Most Waves With Perfect Accuracy", _stats.perfectAccuracyWaves);
kongregate.stats.submit("Most Waves With No Damage Taken", _stats.perfectDodgeWaves);
kongregate.stats.submit("Ricochet Master", (Math.floor(((10000 * _stats.shurikensHit) / _stats.shurikensThrown)) / 100));
} else {
trace(("Most Stars Thrown" + _stats.shurikensThrown));
trace(("Total Stars Thrown" + _stats.shurikensThrown));
trace(("Most Stars Hit" + _stats.shurikensHit));
trace(("Total Stars Hit" + _stats.shurikensHit));
trace(("Longest Survival Time In Seconds" + _stats.secondsElapsed));
trace(("Total Survival Time In Seconds" + _stats.secondsElapsed));
trace(("Most Waves Survived" + _wavesSurvived));
trace(("Total Waves Survived" + _wavesSurvived));
trace(("Most Knockouts" + _stats.totalKnockouts));
trace(("Total Knockouts" + _stats.totalKnockouts));
trace(("Most Waves With Perfect Accuracy" + _stats.perfectAccuracyWaves));
trace(("Most Waves With No Damage Taken" + _stats.perfectDodgeWaves));
trace(("Ricochet Master" + (Math.floor(((10000 * _stats.shurikensHit) / _stats.shurikensThrown)) / 100)));
};
}
}
}//package
Section 18
//DocumentMain0 (DocumentMain0)
package {
import flash.display.*;
public class DocumentMain0 extends MovieClip {
private var _isActivated:Boolean;
private var _isInitialized:Boolean;
private var _callbacks:Object;
public var _preloadScreen:PreloadScreen;
public function DocumentMain0():void{
stop();
_isInitialized = false;
_isActivated = false;
initialize();
}
private function preloadFinished():void{
gotoAndStop(3);
}
public function uninitialize():void{
if (!_isInitialized){
return;
};
_isInitialized = false;
_callbacks = null;
}
public function deactivate():void{
if (!_isActivated){
return;
};
_isActivated = false;
}
public function initialize():void{
if (_isInitialized){
uninitialize();
};
_isInitialized = true;
deactivate();
_callbacks = new Object();
_preloadScreen.initialize();
_preloadScreen.activate();
_preloadScreen.setCallbacks({preloadFinished:preloadFinished});
}
public function activate():void{
if (_isActivated){
return;
};
_isActivated = true;
}
public function setCallbacks(_arg1:Object):void{
}
}
}//package
Section 19
//Dunes (Dunes)
package {
import flash.display.*;
public dynamic class Dunes extends MovieClip {
}
}//package
Section 20
//Enemy (Enemy)
package {
import flash.geom.*;
public class Enemy extends Unit {
private const DEFAULT_HEALTH:Number = 3;
public var _body:PlayerBody;
private var _stunCtr:Number;
private var _behaviorType:Number;
private var _stunDuration:Number;
public var _speechBubblePointer:SpeechBubblePointer;
private var _outOfBounds:Boolean;
private var _frameFraction:Number;
public var _speechBubble:SpeechBubble;
private var _hatchet:Hatchet;
private var _transitionFlags:Array;
public var _head:PlayerHead;
public function Enemy(_arg1:Boolean=false):void{
addFrameScript(199, frame200, 309, frame310, 319, frame320, 631, frame632, 653, frame654, 724, frame725, 754, frame755, 774, frame775);
_speechBubble.visible = false;
_speechBubblePointer.visible = false;
_speechBubble.transform.colorTransform = new ColorTransform((1 / 0.7), (1 / 0.7), (1 / 0.7), 1, 0, 0, 0, 0);
_speechBubblePointer.transform.colorTransform = new ColorTransform((1 / 0.7), (1 / 0.7), (1 / 0.7), 1, 0, 0, 0, 0);
_behaviorType = 1;
_outOfBounds = false;
_stunDuration = 30;
_virtualX = 0;
_virtualY = 0;
_status.set(["beginFacingLeft", "facingLeft"]);
this.transform.colorTransform = new ColorTransform(0.7, 0.7, 0.7, 1, 0, 0, 0, 0);
_head._decorations.gotoAndStop("scar");
_hitBounds = getAllHitBounds(this);
_frameFraction = 0;
_health = DEFAULT_HEALTH;
_transitionFlags = ["jumping to falling", "begin levitating", "being stunned", "tipping dead", "landing dead"];
this.initializeFrameData();
}
public function die():void{
if (!_status.get(["dying"])){
_health = 0;
_status = new Status();
_status.set(["dying"]);
_status.clear(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("tipping dead");
_head.gotoAndStop("dead");
};
}
public function remove():void{
var _local1:Number;
var _local2:SpiritSphere;
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
_local1 = 0;
while (_local1 < _currentStageData.length) {
if (_currentStageData[_local1].instance == this){
_currentStageData[_local1].instance = null;
break;
};
_local1++;
};
_local1 = 0;
while (_local1 < _allEnemies.length) {
if (_allEnemies[_local1] == this){
_allEnemies.splice(_local1, 1);
break;
};
_local1++;
};
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
if (!_outOfBounds){
if (_monsterMeter._monsterMeterFace.currentLabel == "normal"){
_local1 = 0;
while (_local1 < DEFAULT_HEALTH) {
_local2 = new SpiritSphere(this.x, this.y, (_monsterMeter.x + 15), (_monsterMeter.y + 15));
_allDynamicAssets.push(_local2);
_local2.registerReferences({allDynamicAssets:_allDynamicAssets, monsterMeter:_monsterMeter, player:_player});
parent.addChild(_local2);
_local1++;
};
};
};
parent.removeChild(this);
}
public function set behaviorType(_arg1:Number):void{
_behaviorType = _arg1;
}
private function processAndUpdateState():void{
if (((!(_status.get(["grounded"]))) && ((_vy > 0)))){
_status.set(["movingDown"]);
};
if (_status.get(["movingDown", "grounded"])){
_status.clear(["movingDown"]);
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
this.gotoAndStop("running");
} else {
this.gotoAndStop("standing");
};
};
if (((((_status.get(["movingUp"])) && (!(_status.get(["beginJumping"]))))) && ((_vy > 0)))){
_status.clear(["movingUp"]);
this.gotoAndStop("jumping to falling");
_status.set(["movingDown"]);
};
if (_status.get(["beginFacingRight"])){
this.scaleX = 1;
_speechBubble.scaleX = 1;
_status.clear(["beginFacingRight"]);
};
if (_status.get(["beginFacingLeft"])){
this.scaleX = -1;
_speechBubble.scaleX = -1;
_status.clear(["beginFacingLeft"]);
};
if (_status.get(["beginMovingRight"])){
_vx = (8 + ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingRight"]);
};
if (_status.get(["beginMovingLeft"])){
_vx = (-8 - ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingLeft"]);
};
if (_status.get(["beginJumping"])){
_vy = -30;
this.gotoAndStop("jumping");
_status.clear(["beginJumping"]);
};
if (_status.get(["stopMovingRight"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingRight"]);
};
if (_status.get(["stopMovingLeft"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingLeft"]);
};
}
function frame755(){
gotoAndStop("lying dead");
}
function frame310(){
gotoAndPlay("running");
}
function frame632(){
gotoAndPlay("falling");
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
_local2 = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
public function set virtualX(_arg1:Number):void{
_virtualX = _arg1;
}
public function skeletonize(_arg1:Number):void{
var _local3:Number;
var _local4:Number;
var _local2:* = 0;
while (_local2 < _arg1) {
_local4 = Math.random();
if (_local4 < 0.33){
_body.gotoAndStop("skeleton");
} else {
if (_local4 < 0.66){
_local3 = 0;
while (_local3 < this.numChildren) {
if ((this.getChildAt(_local3) is PlayerFootSide)){
PlayerFootSide(this.getChildAt(_local3)).gotoAndStop("skeleton");
break;
};
_local3++;
};
} else {
_local3 = (this.numChildren - 1);
while (_local3 >= 0) {
if ((this.getChildAt(_local3) is PlayerFootSide)){
PlayerFootSide(this.getChildAt(_local3)).gotoAndStop("skeleton");
break;
};
_local3--;
};
};
};
_local2++;
};
}
private function runAI():void{
if (((!((_hatchet == null))) && (_hatchet.deactivated))){
_hatchet = null;
};
if (_behaviorType == 1){
if (_status.get(["grounded"])){
if ((_player.x - 80) > this.x){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
this.throwHatchet();
};
};
};
} else {
if ((_player.x + 80) < this.x){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
throwHatchet();
};
};
};
} else {
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
_status.set(["stopMovingLeft", "stopMovingRight"]);
_status.clear(["beginFacingRight", "movingRight", "beginMovingRight", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
if (Math.abs((_player.x - this.x)) <= 80){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["beginFacingLeft", "facingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["beginFacingRight", "facingRight"]);
};
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
};
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 280)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown"]);
};
};
} else {
if (_behaviorType == 2){
if (_status.get(["grounded"])){
if (((((_player.x - 80) > this.x)) && (((_player.x - 280) < this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
this.throwHatchet();
};
};
};
} else {
if (((((_player.x + 80) < this.x)) && (((_player.x + 280) > this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
throwHatchet();
};
};
};
} else {
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
_status.set(["stopMovingLeft", "stopMovingRight"]);
_status.clear(["beginFacingRight", "movingRight", "beginMovingRight", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
if (Math.abs((_player.x - this.x)) >= 280){
if (_head.currentLabel != "sad"){
throwHatchet();
};
_head.gotoAndStop("sad");
} else {
if (Math.abs((_player.x - this.x)) <= 80){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["beginFacingLeft", "facingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["beginFacingRight", "facingRight"]);
};
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
};
};
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 280)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown"]);
};
};
};
};
}
public function update():void{
var _local1:Number;
var _local2:Number;
_local2 = _player.adrenalineFactor;
_frameFraction = (_frameFraction + (5 * _local2));
if (_frameFraction >= 1){
if (_transitionFlags.indexOf(this.currentLabel) != -1){
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
} else {
if (Math.floor(_frameFraction) > _frameData[this.currentFrame]){
this.gotoAndStop((this.currentFrame + _frameData[this.currentFrame]));
} else {
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
};
};
_frameFraction = (_frameFraction - Math.floor(_frameFraction));
};
_vy = (_vy + (2 * _local2));
this.x = (this.x + (_vx * _local2));
this.y = (this.y + (_vy * _local2));
_virtualX = (_virtualX + (_vx * _local2));
_virtualY = (_virtualY + (_vy * _local2));
processBoundaryCollisions();
processUnitAndHitCollisions();
if (_status.get(["stunned"])){
if (_stunCtr >= _stunDuration){
_status.clear(["stunned"]);
this.gotoAndStop("standing");
_head.gotoAndStop("sad");
} else {
_stunCtr = (_stunCtr + _player.adrenalineFactor);
};
} else {
if (_status.get(["dying"])){
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
if ((((this.currentLabel == "falling dead")) && (_status.get(["grounded"])))){
this.gotoAndStop("landing dead");
} else {
if (this.currentLabel == "lying dead"){
this.alpha = (this.alpha - 0.05);
if (this.alpha <= 0){
this.remove();
};
};
};
} else {
processAndUpdateState();
runAI();
};
};
}
public function set virtualY(_arg1:Number):void{
_virtualY = _arg1;
}
function frame320(){
stop();
}
function frame200(){
gotoAndPlay("standing");
}
private function processUnitAndHitCollisions():void{
var _local1:HitBound;
var _local2:Number;
var _local3:Number;
var _local5:Point;
var _local6:Point;
var _local7:Number;
var _local8:Number;
var _local4:Boolean;
if (((!(_status.get(["dying"]))) && ((_health > 0)))){
_local5 = new Point(0, 0);
_local2 = 0;
while (_local2 < _playerHitAssets.length) {
_local1 = _playerHitAssets[_local2];
_local6 = _local1.localToGlobal(_local5);
if ((((((((_local6.x > (this.x - 150))) && ((_local6.x < (this.x + 150))))) && ((_local6.y > (this.y - 150))))) && ((_local6.y < (this.y + 150))))){
_local3 = 0;
while (_local3 < _hitBounds.length) {
if (_hitBounds[_local3].hitTestObject(_local1)){
_local4 = true;
Shuriken(_local1.parent).stickTo(_hitBounds[_local3].parent);
_health = (_health - Unit(_local1.parent).damage);
break;
};
_local3++;
};
if (_status.get(["grounded"])){
_local7 = Shuriken(_local1.parent).x;
if (this.x > _local7){
_local8 = ((Shuriken(_local1.parent).vy * (this.x - _local7)) / Shuriken(_local1.parent).vx);
} else {
_local8 = ((Shuriken(_local1.parent).vy * (_local7 - this.x)) / Shuriken(_local1.parent).vx);
};
if ((Shuriken(_local1.parent).y + _local8) > (this.y - this.height)){
if (this.x > (_player.x + 280)){
_status.set(["beginJumping", "movingUp", "beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["grounded", "movingDown", "facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
} else {
if (this.x < (_player.x - 280)){
_status.set(["beginJumping", "movingUp", "beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["grounded", "movingDown", "facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
};
this.throwHatchet();
};
};
};
_local2++;
};
};
if (_local4){
if (_health <= 0){
_stats.totalKnockouts++;
_speechBubble.visible = false;
_speechBubblePointer.visible = false;
_status = new Status();
_status.set(["dying"]);
_status.clear(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("tipping dead");
_head.gotoAndStop("dead");
} else {
_status = new Status();
_status.set(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("being stunned");
_head.gotoAndStop("hurt");
_stunCtr = 0;
};
};
}
private function throwHatchet():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
if (_hatchet == null){
_local2 = ((_player.x + _player._body.x) - this.x);
_local3 = ((_player.y + _player._body.y) - this.y);
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
if (Math.random() < 0.5){
_local2 = (_local2 + (_player.vx * (_local1 / Hatchet.SPEED)));
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
};
_hatchet = new Hatchet((_local2 / _local1), (_local3 / _local1));
_hatchet.registerReferences({enemyHitAssets:_enemyHitAssets, player:_player, stage:_stage, allDynamicAssets:_allDynamicAssets, scrollingAssets:_scrollingAssets});
_hatchet.x = (this.x + _body.x);
_hatchet.y = (this.y + _body.y);
parent.addChild(_hatchet);
_scrollingAssets.push(_hatchet);
_allDynamicAssets.push(_hatchet);
};
}
function frame654(){
gotoAndStop("stunned");
}
public function warpToVirtualCoordinates(_arg1:Number, _arg2:Number):void{
this.x = (this.x + (_arg1 - _virtualX));
this.y = (this.y + (_arg2 - _virtualY));
_virtualX = _arg1;
_virtualY = _arg2;
_vy = 0;
}
public function get virtualY():Number{
return (_virtualY);
}
function frame725(){
gotoAndStop("falling dead");
}
private function processBoundaryCollisions():void{
var _local1:Boolean;
if (this.y > (stage.stageHeight + 500)){
_outOfBounds = true;
this.remove();
return;
};
if ((((_vy >= 0)) && (((!(_status.get(["beginJumping"]))) || (_status.get(["stunned"])))))){
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
_status.set(["grounded"]);
} else {
if (_boundaries.hitTestPoint(this.x, (this.y + SLOPE_TOLERANCE), true)){
_local1 = false;
_status.set(["grounded"]);
} else {
_local1 = false;
_status.clear(["grounded"]);
};
};
if (_local1){
while (_local1) {
this.y = (this.y - 1);
_virtualY = (_virtualY - 1);
_local1 = false;
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
};
};
_vy = 0;
};
};
}
function frame775(){
gotoAndPlay("null space");
}
public function get virtualX():Number{
return (_virtualX);
}
}
}//package
Section 21
//Enemy2 (Enemy2)
package {
import flash.display.*;
import flash.media.*;
import flash.geom.*;
import flash.filters.*;
public class Enemy2 extends Unit {
public var _body:PlayerBody;
private var _laserDelayCtr:Number;
public var _weakSpotArrow:WeakSpotArrow;
private var _behaviorType:Number;
private var _frameFraction:Number;
private var _outOfBounds:Boolean;
private var _laserSound:LaserSound;
private var _gravityForce:Number;
private var _hatchet:Hatchet;
private var _aggrevated:Boolean;
private var _headFrameData:Array;
private var _stunCtr:Number;
private var _laserDelayDuration:Number;
private var _laser:MovieClip;
private var _stunDuration:Number;
public var _weakSpotMessage:WeakSpotMessage;
private var _isBoss:Boolean;
public var _head:PlayerHead;
private var _maxHealth:Number;
private var _transitionFlags:Array;
private var _jumpPower:Number;
public function Enemy2(_arg1:Boolean=false):void{
addFrameScript(199, frame200, 309, frame310, 319, frame320, 631, frame632, 653, frame654, 724, frame725, 754, frame755, 774, frame775);
_weakSpotMessage.visible = false;
_weakSpotArrow.visible = false;
_laserSound = new LaserSound();
_stunDuration = 30;
_aggrevated = false;
_behaviorType = 1;
_outOfBounds = false;
_isBoss = _arg1;
_virtualX = 0;
_virtualY = 0;
_status.set(["beginFacingLeft", "facingLeft"]);
this.transform.colorTransform = new ColorTransform(0.9, 0.7, 0.7, 1, 0, 0, 0, 0);
_head._decorations.gotoAndStop("scar");
_hitBounds = getAllHitBounds(this);
_frameFraction = 0;
_transitionFlags = ["jumping to falling", "begin levitating", "being stunned", "tipping dead", "landing dead"];
this.initializeFrameData();
_headFrameData = this.getFrameData(_head);
_laser = new MovieClip();
_laser.filters = [new BlurFilter(5, 5, BitmapFilterQuality.HIGH)];
this.addChild(_laser);
_laserDelayCtr = 1;
if (_isBoss){
_maxHealth = 20;
_health = _maxHealth;
this.scaleX = (this.scaleX * 3);
this.scaleY = (this.scaleY * 3);
_laserDelayDuration = 0;
_jumpPower = 28;
_gravityForce = 1.6;
} else {
_gravityForce = 2;
_jumpPower = 30;
_maxHealth = 8;
_health = _maxHealth;
this.scaleX = (this.scaleX * 1.5);
this.scaleY = (this.scaleY * 1.5);
_laserDelayDuration = 4;
};
}
public function die():void{
if (!_status.get(["dying"])){
_health = 0;
_status = new Status();
_status.set(["dying"]);
_status.clear(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("tipping dead");
_head.gotoAndStop("dead");
};
}
public function remove():void{
var _local1:Number;
var _local2:HeartItem;
var _local3:SpiritSphere;
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
if (_currentStageData != null){
_local1 = 0;
while (_local1 < _currentStageData.length) {
if (_currentStageData[_local1].instance == this){
_currentStageData[_local1].instance = null;
break;
};
_local1++;
};
};
if (_allEnemies != null){
_local1 = 0;
while (_local1 < _allEnemies.length) {
if (_allEnemies[_local1] == this){
_allEnemies.splice(_local1, 1);
break;
};
_local1++;
};
};
if (_isBoss){
_local2 = new HeartItem();
_local2.registerReferences({enemyHitAssets:_enemyHitAssets, player:_player, stage:_stage, allDynamicAssets:_allDynamicAssets, boundaries:_boundaries, scrollingAssets:_scrollingAssets, healthMeter:_healthMeter});
_local2.x = this.x;
_local2.y = (this.y - 100);
parent.addChild(_local2);
_allDynamicAssets.push(_local2);
_scrollingAssets.push(_local2);
} else {
if (((!(_outOfBounds)) && ((_monsterMeter._monsterMeterFace.currentLabel == "normal")))){
_local1 = 0;
while (_local1 < _maxHealth) {
_local3 = new SpiritSphere(this.x, this.y, (_monsterMeter.x + 15), (_monsterMeter.y + 15));
_allDynamicAssets.push(_local3);
_local3.registerReferences({allDynamicAssets:_allDynamicAssets, monsterMeter:_monsterMeter, player:_player});
parent.addChild(_local3);
_local1++;
};
};
};
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
}
function frame310(){
gotoAndPlay("running");
}
function frame632(){
gotoAndPlay("falling");
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
_local2 = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
function frame755(){
gotoAndStop("lying dead");
}
public function warpToVirtualCoordinates(_arg1:Number, _arg2:Number):void{
this.x = (this.x + (_arg1 - _virtualX));
this.y = (this.y + (_arg2 - _virtualY));
_virtualX = _arg1;
_virtualY = _arg2;
_vy = 0;
}
private function processBoundaryCollisions():void{
var _local1:Boolean;
if (this.y > (stage.stageHeight + 500)){
_outOfBounds = true;
this.remove();
return;
};
if ((((_vy >= 0)) && (!(_status.get(["beginJumping"]))))){
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
_status.set(["grounded"]);
} else {
if (_boundaries.hitTestPoint(this.x, (this.y + SLOPE_TOLERANCE), true)){
_local1 = false;
_status.set(["grounded"]);
} else {
_local1 = false;
_status.clear(["grounded"]);
};
};
if (_local1){
while (_local1) {
this.y = (this.y - 1);
_virtualY = (_virtualY - 1);
_local1 = false;
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
};
};
_vy = 0;
};
};
}
function frame320(){
stop();
}
function frame200(){
gotoAndPlay("standing");
}
private function processUnitAndHitCollisions():void{
var _local1:HitBound;
var _local2:Number;
var _local3:Number;
var _local5:Point;
var _local6:Shuriken;
var _local7:Boolean;
var _local8:Boolean;
var _local4:Boolean;
if (((!(_status.get(["dying"]))) && ((_health > 0)))){
_local2 = 0;
while (_local2 < _playerHitAssets.length) {
_local1 = _playerHitAssets[_local2];
_local5 = _local1.localToGlobal(new Point(0, 0));
if ((((((((_local5.x > (this.x - 150))) && ((_local5.x < (this.x + 150))))) && ((_local5.y > ((this.y + (_head.y * this.scaleY)) - 150))))) && ((_local5.y < (this.y + 150))))){
_local3 = 0;
while (_local3 < _hitBounds.length) {
if (_hitBounds[_local3].hitTestObject(_local1)){
_local4 = true;
Shuriken(_local1.parent).stickTo(_hitBounds[_local3].parent);
_health = (_health - Unit(_local1.parent).damage);
break;
};
_local3++;
};
if (((((((_status.get(["grounded"])) && (!(_status.get(["movingLeft"]))))) && (!(_status.get(["movingRight"]))))) && (!(Shuriken(_local1.parent).deactivated)))){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
};
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
};
_local6 = Shuriken(_local1.parent);
_local7 = (((((_local6.x < this.x)) && ((this.scaleX < 0)))) || ((((_local6.x > this.x)) && ((this.scaleX > 0)))));
_local8 = true;
if (((!(_local6.deactivated)) && (((_local7) || (!(_local8)))))){
this.fireEyeLaser(_local6);
};
};
_local2++;
};
};
if (_local4){
_aggrevated = true;
if (_status.get(["grounded"])){
if (_player.x > this.x){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
this.throwHatchet();
};
};
};
} else {
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
throwHatchet();
};
};
};
};
};
if (_health <= 0){
_stats.totalKnockouts++;
_weakSpotMessage.visible = false;
_weakSpotArrow.visible = false;
_status = new Status();
_status.set(["dying"]);
_status.clear(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("tipping dead");
_head.gotoAndStop("dead");
};
};
}
private function throwHatchet():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
if (_hatchet == null){
_local2 = ((_player.x + _player._body.x) - this.x);
_local3 = ((_player.y + _player._body.y) - this.y);
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_local2 = (_local2 + (_player.vx * (_local1 / Hatchet.SPEED)));
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_hatchet = new Hatchet((_local2 / _local1), (_local3 / _local1));
_hatchet.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 50, 0, 0, 0);
_hatchet.registerReferences({enemyHitAssets:_enemyHitAssets, player:_player, stage:_stage, allDynamicAssets:_allDynamicAssets, scrollingAssets:_scrollingAssets});
_hatchet.x = (this.x + _body.x);
_hatchet.y = (this.y + _body.y);
_hatchet.scaleX = (_hatchet.scaleX * 2);
_hatchet.scaleY = (_hatchet.scaleY * 2);
parent.addChild(_hatchet);
_scrollingAssets.push(_hatchet);
_allDynamicAssets.push(_hatchet);
};
}
public function get virtualX():Number{
return (_virtualX);
}
public function get virtualY():Number{
return (_virtualY);
}
function frame725(){
gotoAndStop("falling dead");
}
private function processAndUpdateState():void{
if (((!(_status.get(["grounded"]))) && ((_vy > 0)))){
_status.set(["movingDown"]);
};
if (_status.get(["movingDown", "grounded"])){
_status.clear(["movingDown"]);
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
this.gotoAndStop("running");
} else {
this.gotoAndStop("standing");
};
};
if (((((_status.get(["movingUp"])) && (!(_status.get(["beginJumping"]))))) && ((_vy > 0)))){
_status.clear(["movingUp"]);
this.gotoAndStop("jumping to falling");
this.throwHatchet();
_status.set(["movingDown"]);
};
if (_status.get(["beginFacingRight"])){
if (this.scaleX < 0){
this.scaleX = (this.scaleX * -1);
_weakSpotMessage.scaleX = (_weakSpotMessage.scaleX * -1);
};
_status.clear(["beginFacingRight"]);
};
if (_status.get(["beginFacingLeft"])){
if (this.scaleX > 0){
this.scaleX = (this.scaleX * -1);
_weakSpotMessage.scaleX = (_weakSpotMessage.scaleX * -1);
};
_status.clear(["beginFacingLeft"]);
};
if (_status.get(["beginMovingRight"])){
_vx = (8 + ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingRight"]);
};
if (_status.get(["beginMovingLeft"])){
_vx = (-8 - ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingLeft"]);
};
if (_status.get(["beginJumping"])){
_vy = -(_jumpPower);
this.gotoAndStop("jumping");
_status.clear(["beginJumping"]);
};
if (_status.get(["stopMovingRight"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingRight"]);
};
if (_status.get(["stopMovingLeft"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingLeft"]);
};
}
public function update():void{
var _local1:Number;
if (_laserDelayCtr < _laserDelayDuration){
_laserDelayCtr = (_laserDelayCtr + _player.adrenalineFactor);
};
_laser.graphics.clear();
var _local2:Number = _player.adrenalineFactor;
_frameFraction = (_frameFraction + (5 * _local2));
if (_frameFraction >= 1){
if (_transitionFlags.indexOf(this.currentLabel) != -1){
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
} else {
if (Math.floor(_frameFraction) > _frameData[this.currentFrame]){
this.gotoAndStop((this.currentFrame + _frameData[this.currentFrame]));
} else {
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
};
};
if (Math.floor(_frameFraction) > _headFrameData[_head.currentFrame]){
_head.gotoAndStop((_head.currentFrame + _headFrameData[_head.currentFrame]));
} else {
_head.gotoAndStop((_head.currentFrame + Math.floor(_frameFraction)));
};
_frameFraction = (_frameFraction - Math.floor(_frameFraction));
};
_vy = (_vy + (_gravityForce * _local2));
this.x = (this.x + (_vx * _local2));
this.y = (this.y + (_vy * _local2));
_virtualX = (_virtualX + (_vx * _local2));
_virtualY = (_virtualY + (_vy * _local2));
processBoundaryCollisions();
processUnitAndHitCollisions();
if (_status.get(["stunned"])){
if (_stunCtr >= _stunDuration){
_status.clear(["stunned"]);
this.gotoAndStop("standing");
_head.gotoAndStop("sad");
} else {
_stunCtr = (_stunCtr + _player.adrenalineFactor);
};
} else {
if (_status.get(["dying"])){
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
if ((((this.currentLabel == "falling dead")) && (_status.get(["grounded"])))){
this.gotoAndStop("landing dead");
} else {
if (this.currentLabel == "lying dead"){
this.alpha = (this.alpha - 0.05);
if (this.alpha <= 0){
this.remove();
};
};
};
} else {
processAndUpdateState();
runAI();
};
};
}
function frame654(){
gotoAndStop("stunned");
}
public function set behaviorType(_arg1:Number):void{
_behaviorType = _arg1;
}
public function set virtualX(_arg1:Number):void{
_virtualX = _arg1;
}
public function set virtualY(_arg1:Number):void{
_virtualY = _arg1;
}
public function get maxHealth():Number{
return (_maxHealth);
}
function frame775(){
gotoAndPlay("null space");
}
private function fireEyeLaser(_arg1:Shuriken):void{
var _local2:SoundChannel;
if (_laserDelayCtr >= _laserDelayDuration){
_local2 = _laserSound.play();
if (_isBoss){
_local2.soundTransform = new SoundTransform(MusicManager.getVolume(), 0);
} else {
_local2.soundTransform = new SoundTransform((MusicManager.getVolume() * 0.5), 0);
};
_arg1.decelerateAndFall();
_arg1.transform.colorTransform = new ColorTransform(2, 0.5, 0.5, 1, 0, 0, 0, 0);
_laser.graphics.lineStyle(1, 0xFF0000);
_laser.graphics.moveTo((_head.x + 20), (_head.y + 23));
_laser.graphics.lineTo(((_arg1.x - this.x) / this.scaleX), ((_arg1.y - this.y) / this.scaleY));
_laser.graphics.lineTo((_head.x + 29), (_head.y + 23));
_laserDelayCtr = 0;
};
}
private function runAI():void{
if (((!((_hatchet == null))) && (_hatchet.deactivated))){
_hatchet = null;
};
if (_behaviorType == 1){
if (_status.get(["grounded"])){
if ((_player.x - 80) > this.x){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
};
} else {
if ((_player.x + 80) < this.x){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
};
};
};
};
if (Math.abs((_player.x - this.x)) > 300){
if (_head.currentLabel != "sad"){
_head.gotoAndStop("sad");
this.throwHatchet();
};
} else {
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
this.throwHatchet();
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 280)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown", "grounded"]);
this.throwHatchet();
};
};
} else {
if (_behaviorType == 2){
if (_status.get(["grounded"])){
if (((((_player.x - 80) > this.x)) && (((_player.x - 280) < this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
this.throwHatchet();
};
};
};
} else {
if (((((_player.x + 80) < this.x)) && (((_player.x + 280) > this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
throwHatchet();
};
};
};
} else {
if (Math.abs((_player.x - this.x)) >= 340){
if (!_aggrevated){
if (_status.get(["movingRight"])){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "facingRight"]);
} else {
if (_status.get(["movingLeft"])){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "facingLeft"]);
};
};
};
if (((!((_head.currentLabel == "sad"))) && ((Math.abs((_player.x - this.x)) >= 540)))){
_aggrevated = false;
_head.gotoAndStop("sad");
};
} else {
if (Math.abs((_player.x - this.x)) <= 80){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["beginFacingLeft", "facingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["beginFacingRight", "facingRight"]);
};
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
_status.set(["stopMovingLeft", "stopMovingRight"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight", "facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
};
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 280)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown", "grounded"]);
};
};
};
};
}
}
}//package
Section 22
//Enemy3 (Enemy3)
package {
import flash.geom.*;
public class Enemy3 extends Unit {
public var _body:PlayerBody;
private var _hatchetIntervalCtr:Number;
private var _frameFraction:Number;
private var _hatchet:Hatchet;
public var _head:PlayerHead;
public function Enemy3(_arg1:Boolean=false):void{
addFrameScript(199, frame200, 309, frame310, 319, frame320, 631, frame632, 642, frame643);
_hatchetIntervalCtr = 0;
_virtualX = 0;
_virtualY = 0;
_status.set(["beginFacingLeft", "facingLeft"]);
this.transform.colorTransform = new ColorTransform(0.7, 0.7, 0.9, 1, 0, 0, 0, 0);
_head._decorations.gotoAndStop("scar");
_hitBounds = getAllHitBounds(this);
_frameFraction = 0;
}
private function processAndUpdateState():void{
if (((!(_status.get(["grounded"]))) && ((_vy > 0)))){
_status.set(["movingDown"]);
};
if (_status.get(["movingDown", "grounded"])){
_status.clear(["movingDown"]);
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
this.gotoAndStop("running");
} else {
this.gotoAndStop("standing");
};
};
if (((((_status.get(["movingUp"])) && (!(_status.get(["beginJumping"]))))) && ((_vy > 0)))){
_status.clear(["movingUp"]);
this.gotoAndStop("jumping to falling");
_status.set(["movingDown"]);
};
if (_status.get(["beginFacingRight"])){
this.scaleX = 1;
_status.clear(["beginFacingRight"]);
};
if (_status.get(["beginFacingLeft"])){
this.scaleX = -1;
_status.clear(["beginFacingLeft"]);
};
if (_status.get(["beginMovingRight"])){
_vx = (8 + ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingRight"]);
};
if (_status.get(["beginMovingLeft"])){
_vx = (-8 - ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingLeft"]);
};
if (_status.get(["beginJumping"])){
_vy = -30;
this.gotoAndStop("jumping");
_status.clear(["beginJumping"]);
};
if (_status.get(["stopMovingRight"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingRight"]);
};
if (_status.get(["stopMovingLeft"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingLeft"]);
};
}
function frame310(){
gotoAndPlay("running");
}
function frame632(){
gotoAndPlay("falling");
}
public function update():void{
var _local1:Number;
var _local2:String;
_local1 = _player.adrenalineFactor;
if (Math.abs((this.x - _player.x)) < 300){
_hatchetIntervalCtr = (_hatchetIntervalCtr + _local1);
};
if (_hatchetIntervalCtr > 5){
_hatchetIntervalCtr = 0;
throwHatchet();
};
_frameFraction = (_frameFraction + (5 * _local1));
if (_frameFraction >= 1){
_local2 = this.currentLabel;
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
while (this.currentLabel != _local2) {
this.gotoAndStop((this.currentFrame - 1));
};
_frameFraction = (_frameFraction - Math.floor(_frameFraction));
};
_vy = (_vy + (2 * _local1));
this.x = (this.x + (_vx * _local1));
this.y = (this.y + (_vy * _local1));
_virtualX = (_virtualX + (_vx * _local1));
_virtualY = (_virtualY + (_vy * _local1));
processBoundaryCollisions();
processAndUpdateState();
processUnitAndHitCollisions();
runAI();
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
_local2 = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
private function processUnitAndHitCollisions():void{
var _local1:HitBound;
var _local2:Number;
var _local3:Number;
var _local4:Boolean;
_local2 = 0;
while (_local2 < _playerHitAssets.length) {
_local1 = _playerHitAssets[_local2];
_local3 = 0;
while (_local3 < _hitBounds.length) {
if (_hitBounds[_local3].hitTestObject(_local1)){
_local4 = true;
Shuriken(_local1.parent).stickTo(this);
break;
};
_local3++;
};
_local2++;
};
if (_local4){
this.beginBlinking();
};
}
private function runAI():void{
if (((!((_hatchet == null))) && (_hatchet.deactivated))){
_hatchet = null;
};
if (_status.get(["grounded"])){
if (((((_player.x - 80) > this.x)) && (((_player.x - 500) < this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
};
};
} else {
if (((((_player.x + 80) < this.x)) && (((_player.x + 500) > this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
_head.gotoAndStop("sad");
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
};
};
} else {
_status.set(["stopMovingLeft", "stopMovingRight"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight", "facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (Math.abs((_player.x - this.x)) >= 500){
_head.gotoAndStop("sad");
} else {
if (Math.abs((_player.x - this.x)) <= 80){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["beginFacingLeft", "facingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["beginFacingRight", "facingRight"]);
};
if (_head.currentLabel != "smile"){
_head.gotoAndStop("smile");
};
};
};
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 500)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown"]);
};
};
}
public function set virtualX(_arg1:Number):void{
_virtualX = _arg1;
}
public function set virtualY(_arg1:Number):void{
_virtualY = _arg1;
}
private function processBoundaryCollisions():void{
var _local1:Boolean;
if ((((_vy >= 0)) && (!(_status.get(["beginJumping"]))))){
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
_status.set(["grounded"]);
} else {
if (_boundaries.hitTestPoint(this.x, (this.y + SLOPE_TOLERANCE), true)){
_local1 = false;
_status.set(["grounded"]);
} else {
_local1 = false;
_status.clear(["grounded"]);
};
};
if (_local1){
while (_local1) {
this.y = (this.y - 0.1);
_virtualY = (_virtualY - 0.1);
_local1 = false;
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
};
};
_vy = 0;
};
};
}
function frame320(){
stop();
}
function frame200(){
gotoAndPlay("standing");
}
function frame643(){
gotoAndPlay("null space");
}
private function throwHatchet():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
if ((((_hatchet == null)) || (true))){
_local2 = ((_player.x + _player._body.x) - this.x);
_local3 = ((_player.y + _player._body.y) - this.y);
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_local2 = (_local2 + (_player.vx * (_local1 / Hatchet.SPEED)));
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_hatchet = new Hatchet((_local2 / _local1), (_local3 / _local1));
_hatchet.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 50, 0);
_hatchet.registerReferences({enemyHitAssets:_enemyHitAssets, player:_player, stage:_stage, allDynamicAssets:_allDynamicAssets, scrollingAssets:_scrollingAssets});
_hatchet.x = (this.x + _body.x);
_hatchet.y = (this.y + _body.y);
parent.addChild(_hatchet);
_scrollingAssets.push(_hatchet);
_allDynamicAssets.push(_hatchet);
};
}
public function get virtualX():Number{
return (_virtualX);
}
public function get virtualY():Number{
return (_virtualY);
}
public function warpToVirtualCoordinates(_arg1:Number, _arg2:Number):void{
this.x = (this.x + (_arg1 - _virtualX));
this.y = (this.y + (_arg2 - _virtualY));
_virtualX = _arg1;
_virtualY = _arg2;
_vy = 0;
}
}
}//package
Section 23
//Enemy4 (Enemy4)
package {
import flash.media.*;
import flash.geom.*;
public class Enemy4 extends Unit {
public var _body:PlayerBody;
private var _redOffset:Number;
private var _behaviorType:Number;
private var _frameFraction:Number;
private var _outOfBounds:Boolean;
public var _rightFootSide:PlayerFootSide;
private var _originalHeadX:Number;
private var _headHitCtr:Number;
private var _hatchet:Hatchet;
private var _originalHeadY:Number;
private var _headShakeFactor:Number;
public var _rightFootFront:PlayerFootFront;
public var _head:PlayerHead;
private var _mobileHead:Enemy5;
private var _stunCtr:Number;
private var _bluntSound:BluntSound;
private var _stunDuration:Number;
private var _hatchetCtr:Number;
private var _isBoss:Boolean;
private var _maxHeadHealth:Number;
private var _maxHealth:Number;
private var _isVulnerable:Boolean;
private var _transitionFlags:Array;
public var _leftFoot:PlayerFootSide;
private var _moveSpeed:Number;
public function Enemy4(_arg1:Boolean=false):void{
addFrameScript(199, frame200, 309, frame310, 319, frame320, 631, frame632, 653, frame654, 724, frame725, 754, frame755, 774, frame775);
_bluntSound = new BluntSound();
_hatchetCtr = 16;
_originalHeadX = _head.x;
_originalHeadY = _head.y;
_headShakeFactor = 0;
_redOffset = 0;
_headHitCtr = 0;
_isVulnerable = false;
_isBoss = _arg1;
_leftFoot.gotoAndStop("skeleton");
_rightFootFront.gotoAndStop("skeleton");
_rightFootSide.gotoAndStop("skeleton");
_body.gotoAndStop("skeleton");
_head.gotoAndStop("skeleton");
_rightFootSide.visible = false;
_behaviorType = 1;
_outOfBounds = false;
_stunDuration = 30;
_virtualX = 0;
_virtualY = 0;
_status.set(["beginFacingLeft", "facingLeft"]);
this.transform.colorTransform = new ColorTransform(0.7, 0.7, 0.7, 1, 0, 0, 0, 0);
_head.removeChild(_head._decorations);
_hitBounds = getAllHitBounds(this);
_frameFraction = 0;
_transitionFlags = ["jumping to falling", "begin levitating", "being stunned", "tipping dead", "landing dead"];
this.initializeFrameData();
if (_isBoss){
_moveSpeed = 10;
this.scaleX = 2.5;
this.scaleY = 2.5;
_maxHealth = 20;
_maxHeadHealth = 20;
} else {
this.scaleX = 1.5;
this.scaleY = 1.5;
_moveSpeed = 8;
_maxHealth = 5;
_maxHeadHealth = 3;
};
_health = _maxHealth;
}
public function die():void{
if (!_status.get(["dying"])){
_health = 0;
_status = new Status();
_status.set(["dying"]);
_status.clear(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("tipping dead");
if (_mobileHead != null){
_mobileHead.die();
};
};
}
public function remove():void{
var _local1:Number;
var _local2:HeartItem;
var _local3:SpiritSphere;
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
if (_currentStageData != null){
_local1 = 0;
while (_local1 < _currentStageData.length) {
if (_currentStageData[_local1].instance == this){
_currentStageData[_local1].instance = null;
break;
};
_local1++;
};
};
if (_allEnemies != null){
_local1 = 0;
while (_local1 < _allEnemies.length) {
if (_allEnemies[_local1] == this){
_allEnemies.splice(_local1, 1);
break;
};
_local1++;
};
};
if (_isBoss){
_local2 = new HeartItem();
_local2.registerReferences({enemyHitAssets:_enemyHitAssets, player:_player, stage:_stage, allDynamicAssets:_allDynamicAssets, boundaries:_boundaries, scrollingAssets:_scrollingAssets, healthMeter:_healthMeter});
_local2.x = this.x;
_local2.y = (this.y - 100);
parent.addChild(_local2);
_allDynamicAssets.push(_local2);
_scrollingAssets.push(_local2);
} else {
if (((!(_outOfBounds)) && ((_monsterMeter._monsterMeterFace.currentLabel == "normal")))){
_local1 = 0;
while (_local1 < _maxHealth) {
_local3 = new SpiritSphere(this.x, this.y, (_monsterMeter.x + 15), (_monsterMeter.y + 15));
_allDynamicAssets.push(_local3);
_local3.registerReferences({allDynamicAssets:_allDynamicAssets, monsterMeter:_monsterMeter, player:_player});
parent.addChild(_local3);
_local1++;
};
};
};
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
if (_mobileHead != null){
_mobileHead.die();
};
}
function frame632(){
gotoAndPlay("falling");
}
function frame310(){
gotoAndPlay("running");
}
function frame755(){
gotoAndStop("lying dead");
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
_local2 = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
private function runAI():void{
if (((!((_hatchet == null))) && (_hatchet.deactivated))){
_hatchet = null;
};
if (_behaviorType == 1){
if (_status.get(["grounded"])){
if ((_player.x - 80) > this.x){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
this.throwHatchet();
};
};
};
} else {
if ((_player.x + 80) < this.x){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
throwHatchet();
};
};
};
} else {
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
_status.set(["stopMovingLeft", "stopMovingRight"]);
_status.clear(["beginFacingRight", "movingRight", "beginMovingRight", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
if (Math.abs((_player.x - this.x)) <= 80){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["beginFacingLeft", "facingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["beginFacingRight", "facingRight"]);
};
if (_head.currentLabel != "smile"){
};
};
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 280)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown"]);
};
};
} else {
if (_behaviorType == 2){
if (_status.get(["grounded"])){
if (((((_player.x - 80) > this.x)) && (((_player.x - 280) < this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x + 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x + 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight", "beginMovingRight"]);
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
if (_head.currentLabel != "smile"){
this.throwHatchet();
};
};
};
} else {
if (((((_player.x + 80) < this.x)) && (((_player.x + 280) > this.x)))){
if (((((!(_boundaries.hitTestPoint((this.x - 30), (this.y + (SLOPE_TOLERANCE * 30)), true))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.3)), true))))) && (!(_boundaries.hitTestPoint((this.x - 30), (this.y + ((SLOPE_TOLERANCE * 30) * 0.7)), true))))){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft", "beginMovingLeft"]);
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
if (_head.currentLabel != "smile"){
throwHatchet();
};
};
};
} else {
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
_status.set(["stopMovingLeft", "stopMovingRight"]);
_status.clear(["beginFacingRight", "movingRight", "beginMovingRight", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
if (Math.abs((_player.x - this.x)) >= 280){
if (_head.currentLabel != "sad"){
throwHatchet();
};
} else {
if (Math.abs((_player.x - this.x)) <= 80){
if (_player.x > this.x){
_status.set(["beginFacingRight", "facingRight"]);
_status.clear(["beginFacingLeft", "facingLeft"]);
} else {
_status.set(["beginFacingLeft", "facingLeft"]);
_status.clear(["beginFacingRight", "facingRight"]);
};
if (_head.currentLabel != "smile"){
};
};
};
};
};
if ((((_player.y < (this.y - 150))) && ((Math.abs((_player.x - this.x)) < 280)))){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded", "movingDown"]);
};
};
};
};
}
private function processUnitAndHitCollisions():void{
var _local1:HitBound;
var _local2:Number;
var _local3:Number;
var _local4:Number;
var _local6:Point;
var _local7:Point;
var _local8:SoundChannel;
var _local9:Number;
var _local10:Number;
var _local5:Boolean;
if (((!(_status.get(["dying"]))) && ((_health > 0)))){
_local6 = new Point(0, 0);
_local2 = 0;
while (_local2 < _playerHitAssets.length) {
_local1 = _playerHitAssets[_local2];
_local7 = _local1.localToGlobal(_local6);
if ((((((((_local7.x > (this.x - 150))) && ((_local7.x < (this.x + 150))))) && ((_local7.y > (this.y - 150))))) && ((_local7.y < (this.y + 150))))){
_local3 = 0;
while (_local3 < _hitBounds.length) {
if (_hitBounds[_local3].hitTestObject(_local1)){
if (_isVulnerable){
_local5 = true;
Shuriken(_local1.parent).stickTo(_hitBounds[_local3].parent);
_health = (_health - Unit(_local1.parent).damage);
} else {
if (((!((Shuriken(_local1.parent).deflectedBy == this))) && ((_hitBounds[_local3].parent is PlayerHead)))){
_headHitCtr++;
_redOffset = (0xFF * (_headHitCtr / _maxHeadHealth));
_headShakeFactor = ((5 * Math.abs(this.scaleY)) * (_headHitCtr / _maxHeadHealth));
_head.transform.colorTransform = new ColorTransform(1, 1, 1, 1, _redOffset, 0, 0, 0);
if (_headHitCtr >= _maxHeadHealth){
_local8 = _bluntSound.play();
_local8.soundTransform = new SoundTransform((MusicManager.getVolume() * 2), 0);
_headHitCtr = 0;
_local4 = 0;
while (_local4 < _hitBounds.length) {
if ((_hitBounds[_local4].parent is PlayerHead)){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local4]), 1);
_hitBounds.splice(_local4, 1);
} else {
_local4++;
};
};
_head.visible = false;
_isVulnerable = true;
_mobileHead = new Enemy5();
_mobileHead.transform.colorTransform = new ColorTransform(0.7, 0.7, 0.7, 1, 0xFF, 0, 0, 0);
_mobileHead.redOffset = _redOffset;
_mobileHead.scaleX = this.scaleX;
_mobileHead.scaleY = this.scaleY;
_mobileHead.x = this.x;
if (this.scaleX < 0){
_mobileHead.x = (_mobileHead.x - (_head.x * Math.abs(this.scaleX)));
} else {
_mobileHead.x = (_mobileHead.x + (_head.x * this.scaleX));
};
_mobileHead.y = (this.y + (_head.y * this.scaleY));
_mobileHead.registerReferences({boundaries:_boundaries, playerHitAssets:_playerHitAssets, enemyHitAssets:_enemyHitAssets, scrollingAssets:_scrollingAssets, allDynamicAssets:_allDynamicAssets, player:_player, stage:_stage, monsterMeter:_monsterMeter, healthMeter:_healthMeter, allEnemies:_allEnemies, stats:_stats});
this.parent.addChild(_mobileHead);
_allDynamicAssets.push(_mobileHead);
_scrollingAssets.push(_mobileHead);
_allEnemies.push(_mobileHead);
};
};
Shuriken(_local1.parent).deflect(this);
};
break;
};
_local3++;
};
if (_status.get(["grounded"])){
_local9 = Shuriken(_local1.parent).x;
if (this.x > _local9){
_local10 = ((Shuriken(_local1.parent).vy * (this.x - _local9)) / Shuriken(_local1.parent).vx);
} else {
_local10 = ((Shuriken(_local1.parent).vy * (_local9 - this.x)) / Shuriken(_local1.parent).vx);
};
if ((Shuriken(_local1.parent).y + _local10) > (this.y - this.height)){
if (this.x > (_player.x + 280)){
_status.set(["beginJumping", "movingUp", "beginFacingLeft", "beginMovingLeft", "facingLeft", "movingLeft"]);
_status.clear(["grounded", "movingDown", "facingRight", "beginFacingRight", "movingRight", "beginMovingRight"]);
} else {
if (this.x < (_player.x - 280)){
_status.set(["beginJumping", "movingUp", "beginFacingRight", "beginMovingRight", "facingRight", "movingRight"]);
_status.clear(["grounded", "movingDown", "facingLeft", "beginFacingLeft", "movingLeft", "beginMovingLeft"]);
};
};
this.throwHatchet();
};
};
};
_local2++;
};
};
if (_local5){
if (_health <= 0){
_stats.totalKnockouts++;
_status = new Status();
_status.set(["dying"]);
_status.clear(["stunned"]);
_vx = 0;
_vy = 0;
this.gotoAndStop("tipping dead");
if (_mobileHead != null){
_mobileHead.die();
};
};
};
}
private function processBoundaryCollisions():void{
var _local1:Boolean;
if (this.y > (stage.stageHeight + 500)){
_outOfBounds = true;
this.remove();
return;
};
if ((((_vy >= 0)) && (((!(_status.get(["beginJumping"]))) || (_status.get(["stunned"])))))){
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
_status.set(["grounded"]);
} else {
if (_boundaries.hitTestPoint(this.x, (this.y + SLOPE_TOLERANCE), true)){
_local1 = false;
_status.set(["grounded"]);
} else {
_local1 = false;
_status.clear(["grounded"]);
};
};
if (_local1){
while (_local1) {
this.y = (this.y - 1);
_virtualY = (_virtualY - 1);
_local1 = false;
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
};
};
_vy = 0;
};
};
}
function frame320(){
stop();
}
function frame200(){
gotoAndPlay("standing");
}
public function get virtualY():Number{
return (_virtualY);
}
public function get virtualX():Number{
return (_virtualX);
}
public function warpToVirtualCoordinates(_arg1:Number, _arg2:Number):void{
this.x = (this.x + (_arg1 - _virtualX));
this.y = (this.y + (_arg2 - _virtualY));
_virtualX = _arg1;
_virtualY = _arg2;
_vy = 0;
}
function frame725(){
gotoAndStop("falling dead");
}
private function processAndUpdateState():void{
if (((!(_status.get(["grounded"]))) && ((_vy > 0)))){
_status.set(["movingDown"]);
};
if (_status.get(["movingDown", "grounded"])){
_status.clear(["movingDown"]);
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
this.gotoAndStop("running");
} else {
this.gotoAndStop("standing");
};
};
if (((((_status.get(["movingUp"])) && (!(_status.get(["beginJumping"]))))) && ((_vy > 0)))){
_status.clear(["movingUp"]);
this.gotoAndStop("jumping to falling");
_status.set(["movingDown"]);
};
if (_status.get(["beginFacingRight"])){
if (this.scaleX < 0){
this.scaleX = (this.scaleX * -1);
};
_status.clear(["beginFacingRight"]);
};
if (_status.get(["beginFacingLeft"])){
if (this.scaleX > 0){
this.scaleX = (this.scaleX * -1);
};
_status.clear(["beginFacingLeft"]);
};
if (_status.get(["beginMovingRight"])){
_vx = (_moveSpeed + ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingRight"]);
};
if (_status.get(["beginMovingLeft"])){
_vx = (-(_moveSpeed) - ((Math.random() * 2) - 1));
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingLeft"]);
};
if (_status.get(["beginJumping"])){
_vy = -30;
this.gotoAndStop("jumping");
_status.clear(["beginJumping"]);
};
if (_status.get(["stopMovingRight"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingRight"]);
};
if (_status.get(["stopMovingLeft"])){
_vx = 0;
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingLeft"]);
};
}
private function throwHatchet():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
if ((((this.x < -100)) || ((this.x > 800)))){
return;
};
if ((((_hatchet == null)) || (((((_isBoss) && ((_hatchetCtr < 16)))) && (((_hatchetCtr % 2) == 0)))))){
if (_hatchetCtr >= 16){
_hatchetCtr = 0;
};
_local2 = ((_player.x + _player._body.x) - this.x);
_local3 = ((_player.y + _player._body.y) - this.y);
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_local2 = (_local2 + (_player.vx * (_local1 / Hatchet.SPEED)));
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_hatchet = new Hatchet((_local2 / _local1), (_local3 / _local1));
_hatchet.registerReferences({enemyHitAssets:_enemyHitAssets, player:_player, stage:_stage, allDynamicAssets:_allDynamicAssets, scrollingAssets:_scrollingAssets});
_hatchet.x = (this.x + _body.x);
_hatchet.y = (this.y + _body.y);
parent.addChild(_hatchet);
_scrollingAssets.push(_hatchet);
_allDynamicAssets.push(_hatchet);
if (_isBoss){
_hatchet.scaleX = (_hatchet.scaleX * 1.5);
_hatchet.scaleY = (_hatchet.scaleY * 1.5);
};
};
}
function frame654(){
gotoAndStop("stunned");
}
function frame775(){
gotoAndPlay("null space");
}
public function update():void{
var _local1:Number;
if (this.currentLabel == "standing"){
_rightFootFront.visible = true;
_rightFootSide.visible = false;
} else {
if ((((((_mobileHead == null)) && (!((_head._hb == null))))) && ((_hitBounds.indexOf(_head._hb) == -1)))){
_hitBounds.push(_head._hb);
_head._hb.visible = false;
_enemyHitAssets.push(_head._hb);
};
_rightFootFront.visible = false;
_rightFootSide.visible = true;
};
var _local2:Number = _player.adrenalineFactor;
_frameFraction = (_frameFraction + (5 * _local2));
if (_frameFraction >= 1){
if (_transitionFlags.indexOf(this.currentLabel) != -1){
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
} else {
if (Math.floor(_frameFraction) > _frameData[this.currentFrame]){
this.gotoAndStop((this.currentFrame + _frameData[this.currentFrame]));
} else {
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
};
};
_frameFraction = (_frameFraction - Math.floor(_frameFraction));
};
_vy = (_vy + (2 * _local2));
this.x = (this.x + (_vx * _local2));
this.y = (this.y + (_vy * _local2));
_virtualX = (_virtualX + (_vx * _local2));
_virtualY = (_virtualY + (_vy * _local2));
processBoundaryCollisions();
processUnitAndHitCollisions();
if (_status.get(["stunned"])){
if (_stunCtr >= _stunDuration){
_status.clear(["stunned"]);
this.gotoAndStop("standing");
} else {
_stunCtr = (_stunCtr + _player.adrenalineFactor);
};
} else {
if (_status.get(["dying"])){
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
if ((((this.currentLabel == "falling dead")) && (_status.get(["grounded"])))){
this.gotoAndStop("landing dead");
} else {
if (this.currentLabel == "lying dead"){
this.alpha = (this.alpha - 0.05);
if (this.alpha <= 0){
this.remove();
};
};
};
} else {
processAndUpdateState();
runAI();
};
};
if (_mobileHead == null){
_head.x = ((_originalHeadX + (Math.random() * _headShakeFactor)) - (_headShakeFactor / 2));
_head.y = ((_originalHeadY + (Math.random() * _headShakeFactor)) - (_headShakeFactor / 2));
};
if (((_isBoss) && ((_hatchetCtr < 16)))){
_hatchetCtr++;
if ((_hatchetCtr % 5) == 0){
this.throwHatchet();
};
};
}
public function set virtualY(_arg1:Number):void{
_virtualY = _arg1;
}
public function set behaviorType(_arg1:Number):void{
_behaviorType = _arg1;
}
public function get maxHealth():Number{
return (_maxHealth);
}
public function set virtualX(_arg1:Number):void{
_virtualX = _arg1;
}
}
}//package
Section 24
//Enemy5 (Enemy5)
package {
import flash.geom.*;
public class Enemy5 extends Unit {
private var _redOffset:Number;
private var _behaviorType:Number;
private var _isBoss:Boolean;
private var _frameFraction:Number;
private var _acceleration:Number;
private var _maxHealth:Number;
private var _headFrameData:Array;
public var _head:PlayerHead;
public function Enemy5(_arg1:Boolean=false):void{
_head.removeChild(_head._decorations);
_head.gotoAndStop("skeleton");
_behaviorType = 1;
_isBoss = _arg1;
_status.set(["beginFacingLeft", "facingLeft"]);
_hitBounds = getAllHitBounds(this);
_frameFraction = 0;
this.initializeFrameData();
_headFrameData = this.getFrameData(_head);
if (_isBoss){
_acceleration = 5;
_maxHealth = 20;
_health = _maxHealth;
this.scaleX = (this.scaleX * 3);
this.scaleY = (this.scaleY * 3);
} else {
_acceleration = 0.5;
_maxHealth = 8;
_health = _maxHealth;
this.scaleX = (this.scaleX * 1.5);
this.scaleY = (this.scaleY * 1.5);
};
}
private function processAndUpdateState():void{
}
public function remove():void{
var _local1:Number;
var _local2:SpiritSphere;
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
if (_currentStageData != null){
_local1 = 0;
while (_local1 < _currentStageData.length) {
if (_currentStageData[_local1].instance == this){
_currentStageData[_local1].instance = null;
break;
};
_local1++;
};
};
if (_allEnemies != null){
_local1 = 0;
while (_local1 < _allEnemies.length) {
if (_allEnemies[_local1] == this){
_allEnemies.splice(_local1, 1);
break;
};
_local1++;
};
} else {
if (_monsterMeter._monsterMeterFace.currentLabel == "normal"){
_local1 = 0;
while (_local1 < _maxHealth) {
_local2 = new SpiritSphere(this.x, this.y, (_monsterMeter.x + 15), (_monsterMeter.y + 15));
_allDynamicAssets.push(_local2);
_local2.registerReferences({allDynamicAssets:_allDynamicAssets, monsterMeter:_monsterMeter, player:_player});
parent.addChild(_local2);
_local1++;
};
};
};
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
}
public function die():void{
var _local1:Number;
if (!_status.get(["dying"])){
_health = 0;
_status = new Status();
_status.set(["dying"]);
_local1 = 0;
while (_local1 < _hitBounds.length) {
if (_enemyHitAssets.indexOf(_hitBounds[_local1]) != -1){
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
};
}
public function set redOffset(_arg1:Number):void{
_redOffset = _arg1;
}
public function update():void{
var _local1:Number;
var _local2:Number = _player.adrenalineFactor;
_frameFraction = (_frameFraction + (5 * _local2));
if (_frameFraction >= 1){
if (Math.floor(_frameFraction) > _frameData[this.currentFrame]){
this.gotoAndStop((this.currentFrame + _frameData[this.currentFrame]));
} else {
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
};
if (Math.floor(_frameFraction) > _headFrameData[_head.currentFrame]){
_head.gotoAndStop((_head.currentFrame + _headFrameData[_head.currentFrame]));
} else {
_head.gotoAndStop((_head.currentFrame + Math.floor(_frameFraction)));
};
_frameFraction = (_frameFraction - Math.floor(_frameFraction));
};
var _local3:Number = ((_player.x + _player._body.x) - this.x);
var _local4:Number = ((_player.y + _player._body.y) - (this.y + (this.height / 2)));
if (_local3 < 0){
if (_vx > 0){
_vx = (_vx * 0.95);
};
_vx = (_vx - (_acceleration * _local2));
} else {
if (_local3 > 0){
if (_vx < 0){
_vx = (_vx * 0.95);
};
_vx = (_vx + (_acceleration * _local2));
};
};
if (_local4 < 0){
if (_vy > 0){
_vy = (_vy * 0.95);
};
_vy = (_vy - (_acceleration * _local2));
} else {
if (_local4 > 0){
if (_vy < 0){
_vy = (_vy * 0.95);
};
_vy = (_vy + (_acceleration * _local2));
};
};
this.x = (this.x + (_vx * _local2));
this.y = (this.y + (_vy * _local2));
if ((((_vx < 1)) && ((this.scaleX > 0)))){
this.scaleX = (this.scaleX * -1);
this.x = (this.x + this.width);
} else {
if ((((_vx > 1)) && ((this.scaleX < 0)))){
this.scaleX = (this.scaleX * -1);
this.x = (this.x - this.width);
};
};
if (_redOffset > 0){
_redOffset = (_redOffset - 3);
if (_redOffset < 0){
_redOffset = 0;
};
if ((_redOffset % 5) == 0){
this.transform.colorTransform = new ColorTransform(0.7, 0.7, 0.7, 1, _redOffset, 0, 0, 0);
};
};
if (_status.get(["dying"])){
this.alpha = (this.alpha - 0.05);
if (this.alpha <= 0){
this.remove();
};
return;
};
processBoundaryCollisions();
processUnitAndHitCollisions();
processAndUpdateState();
runAI();
}
private function processUnitAndHitCollisions():void{
var _local1:HitBound;
var _local2:Number;
var _local3:Number;
var _local5:Point;
var _local4:Boolean;
if (((!(_status.get(["dying"]))) && ((_health > 0)))){
_local2 = 0;
while (_local2 < _playerHitAssets.length) {
_local1 = _playerHitAssets[_local2];
_local5 = _local1.localToGlobal(new Point(0, 0));
if ((((((((_local5.x > (this.x - 150))) && ((_local5.x < (this.x + 150))))) && ((_local5.y > ((this.y + (_head.y * this.scaleY)) - 150))))) && ((_local5.y < (this.y + 150))))){
_local3 = 0;
while (_local3 < _hitBounds.length) {
if (_hitBounds[_local3].hitTestObject(_local1)){
Shuriken(_local1.parent).deflect(this);
break;
};
_local3++;
};
};
_local2++;
};
};
}
override public function registerReferences(_arg1:Object):void{
var _local3:HitBound;
super.registerReferences(_arg1);
var _local2:Number = 0;
_local2 = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
if (_head._hb == null){
_local3 = new HitBound();
_local3.x = 19.9;
_local3.y = 29;
_local3.width = 12.6;
_local3.height = 11.1;
_local3.visible = false;
_head.addChild(_local3);
_hitBounds.push(_local3);
_enemyHitAssets.push(_local3);
};
}
public function set behaviorType(_arg1:Number):void{
_behaviorType = _arg1;
}
private function processBoundaryCollisions():void{
}
public function get maxHealth():Number{
return (_maxHealth);
}
private function runAI():void{
}
}
}//package
Section 25
//Explanation (Explanation)
package {
import flash.display.*;
public dynamic class Explanation extends MovieClip {
}
}//package
Section 26
//FogScreen (FogScreen)
package {
import flash.display.*;
public dynamic class FogScreen extends MovieClip {
}
}//package
Section 27
//FPS (FPS)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
import flash.utils.*;
public class FPS extends TextField {
private var _stageFPS:int;// = -1
private var _tf:TextFormat;
private var _s:Stage;
private var _t:Timer;
private var _fps:uint;// = 0
public function FPS(_arg1:Stage){
_tf = new TextFormat();
super();
_s = _arg1;
_t = new Timer(1000);
_tf.font = "Verdana";
_tf.size = 9;
this.autoSize = TextFieldAutoSize.LEFT;
this.defaultTextFormat = _tf;
this.text = "Initializing FPS...";
_t.addEventListener(TimerEvent.TIMER, timerEventHandler);
if ((_arg1 is Stage)){
_arg1.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
_stageFPS = _arg1.frameRate;
} else {
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
};
_t.start();
}
private function enterFrameHandler(_arg1:Event):void{
_fps++;
}
public function deactivate():void{
_t.removeEventListener(TimerEvent.TIMER, timerEventHandler);
if ((_s is Stage)){
_s.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
_stageFPS = _s.frameRate;
} else {
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler, false, 0, true);
};
}
private function timerEventHandler(_arg1:TimerEvent):void{
this.text = ("FPS: " + _fps);
if (_stageFPS != -1){
this.text = (this.text + (" / " + _stageFPS));
};
_fps = 0;
}
}
}//package
Section 28
//GameMain (GameMain)
package {
import flash.events.*;
import flash.display.*;
import flash.net.*;
import flash.system.*;
public class GameMain extends MovieClip {
private var _currentScreen:MovieClip;
private var _isActivated:Boolean;
private var _menuScreen:MenuScreen;
private var _isInitialized:Boolean;
private var _callbacks:Object;
private var _logoScreen:LogoScreen;
private var _ctr:Number;
private var _originalVolume:Number;
private var _playGameScreen:DocumentMain;
public var kongregate;
public function GameMain():void{
stop();
_isInitialized = false;
_isActivated = false;
initKong();
initialize();
}
private function resumeToPlayGameScreen():void{
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
_currentScreen.uninitialize();
removeChild(_currentScreen);
_playGameScreen = new DocumentMain(stage);
_playGameScreen.kongregate = this.kongregate;
_playGameScreen.setCallbacks(toMenuScreen);
addChild(_playGameScreen);
_currentScreen = _playGameScreen;
stage.focus = stage;
}
private function toMenuScreen():void{
_currentScreen.uninitialize();
removeChild(_currentScreen);
_menuScreen.initialize();
_menuScreen.setCallbacks({toPlayGameScreen:toPlayGameScreen});
_menuScreen.activate();
_menuScreen.alpha = 1;
addChild(_menuScreen);
_currentScreen = _menuScreen;
stage.focus = stage;
}
public function setCallbacks(_arg1:Object):void{
}
private function enterFrameHandler(_arg1:Event):void{
if (_ctr < 15){
_ctr++;
_currentScreen.alpha = ((14 - _ctr) / 15);
MusicManager.setVolume(((_originalVolume * (14 - _ctr)) / 15));
} else {
MusicManager.setVolume(_originalVolume);
MusicManager.stopCurrent();
this.resumeToPlayGameScreen();
_ctr = 0;
};
}
public function initialize():void{
if (_isInitialized){
uninitialize();
};
_isInitialized = true;
MusicManager.setVolume(0.33);
_ctr = 0;
_callbacks = new Object();
_logoScreen = new LogoScreen();
_logoScreen.initialize();
_logoScreen.setCallbacks({logoScreenDone:logoScreenDone});
_logoScreen.activate();
addChild(_logoScreen);
_currentScreen = _logoScreen;
_menuScreen = new MenuScreen(stage);
_menuScreen.initialize();
_menuScreen.setCallbacks({toPlayGameScreen:toPlayGameScreen});
}
private function logoScreenDone():void{
_logoScreen.uninitialize();
_logoScreen.deactivate();
removeChild(_logoScreen);
_menuScreen.activate();
addChild(_menuScreen);
_currentScreen = _menuScreen;
stage.focus = stage;
}
public function initKong():void{
var _local1:Object = LoaderInfo(root.loaderInfo).parameters;
var _local2:String = ((_local1.kongregate_api_path) || ("http://www.kongregate.com/flash/API_AS3_Local.swf"));
Security.allowDomain(_local2);
var _local3:URLRequest = new URLRequest(_local2);
var _local4:Loader = new Loader();
_local4.contentLoaderInfo.addEventListener(Event.COMPLETE, loadComplete);
_local4.load(_local3);
this.addChild(_local4);
}
public function uninitialize():void{
if (!_isInitialized){
return;
};
_isInitialized = false;
deactivate();
_callbacks = null;
_currentScreen = null;
_logoScreen.uninitialize();
_logoScreen = null;
_menuScreen.uninitialize();
_menuScreen = null;
}
private function toPlayGameScreen():void{
_originalVolume = MusicManager.getVolume();
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
public function activate():void{
if (_isActivated){
return;
};
_isActivated = true;
}
public function deactivate():void{
if (!_isActivated){
return;
};
_isActivated = false;
}
private function loadComplete(_arg1:Event):void{
kongregate = _arg1.target.content;
kongregate.services.connect();
}
}
}//package
Section 29
//Hand (Hand)
package {
import flash.display.*;
public dynamic class Hand extends MovieClip {
public function Hand(){
addFrameScript(0, frame1, 26, frame27, 32, frame33);
}
function frame27(){
Player(parent).status.clear(["attacking1"]);
Player(parent).status.set(["stopAttacking1"]);
stop();
}
function frame1(){
stop();
}
function frame33(){
Player(parent).status.clear(["throwingShuriken"]);
Player(parent).status.set(["stopThrowingShuriken"]);
stop();
}
}
}//package
Section 30
//Hatchet (Hatchet)
package {
import flash.display.*;
import flash.media.*;
public class Hatchet extends Unit {
private var _seekTarget:MovieClip;
private var _swingSound:SwingSound;
private var _deactivated:Boolean;
private var _vr:Number;
public static const ROTATION_SPEED:Number = 25;
public static const SPEED:Number = 20;
public function Hatchet(_arg1:Number, _arg2:Number):void{
_swingSound = new SwingSound();
var _local3:SoundChannel = _swingSound.play();
_local3.soundTransform = new SoundTransform(MusicManager.getVolume(), 0);
_vx = (((_arg1 * SPEED) + (Math.random() * 4)) - 2);
_vy = (((_arg2 * SPEED) + (Math.random() * 4)) - 2);
_deactivated = false;
if (_vx > 0){
_vr = ((ROTATION_SPEED + (Math.random() * 6)) - 3);
} else {
_vr = -(((ROTATION_SPEED + (Math.random() * 6)) - 3));
this.scaleX = -1;
};
_hitBounds = this.getAllHitBounds(this);
}
public function update():void{
var _local1:Number;
var _local2:Boolean;
this.x = (this.x + (_vx * _player.adrenalineFactor));
this.y = (this.y + (_vy * _player.adrenalineFactor));
this.rotation = (this.rotation + (_vr * _player.adrenalineFactor));
if ((((((((this.x < -200)) || ((this.x > (stage.stageWidth + 200))))) || ((this.y < -600)))) || ((this.y > (stage.stageHeight + 700))))){
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_local1 = 0;
while (_local1 < _hitBounds.length) {
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
_local1++;
};
_deactivated = true;
};
if (_seekTarget != null){
_local2 = true;
if (this.x < ((_seekTarget.parent.x + _seekTarget.x) - 15)){
_vx = (_vx + 1);
_local2 = false;
} else {
if (this.x > ((_seekTarget.parent.x + _seekTarget.x) + 15)){
_vx = (_vx - 1);
_local2 = false;
};
};
if (this.y < ((_seekTarget.parent.y + _seekTarget.y) - 15)){
_vy = (_vy + 1);
_local2 = false;
} else {
if (this.y > ((_seekTarget.parent.y + _seekTarget.y) + 15)){
_vy = (_vy - 1);
_local2 = false;
};
};
if (_local2){
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
_local1 = 0;
while (_local1 < _hitBounds.length) {
_enemyHitAssets.splice(_enemyHitAssets.indexOf(_hitBounds[_local1]), 1);
_local1++;
};
_deactivated = true;
};
};
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
public function set seekTarget(_arg1:MovieClip):void{
_seekTarget = _arg1;
}
public function get deactivated():Boolean{
return (_deactivated);
}
}
}//package
Section 31
//HealthMeter (HealthMeter)
package {
import flash.events.*;
import flash.display.*;
public class HealthMeter extends MovieClip {
private var _player:Player;
private var _blinkCtr:Number;
private var _blinking:Boolean;
private var _allHearts:Array;
private var _numHearts:Number;
private var _health:Number;
public function HealthMeter(_arg1:Player):void{
_player = _arg1;
_allHearts = new Array();
_numHearts = 7;
_health = 7;
this.createHearts();
}
private function blink(_arg1:Event):void{
if (_blinkCtr < 15){
if ((_blinkCtr % 3) == 0){
if (this.alpha > 0.2){
this.alpha = 0.2;
} else {
this.alpha = 0.9;
};
};
_blinkCtr++;
} else {
_blinking = false;
this.alpha = 1;
this.removeEventListener(Event.ENTER_FRAME, blink);
};
}
public function get blinking():Boolean{
return (_blinking);
}
private function createHearts():void{
var _local2:Heart;
var _local1:Number = 0;
while (_local1 < _numHearts) {
_local2 = new Heart();
_local2.scaleX = 0.5;
_local2.scaleY = 0.5;
_local2.x = (-(_local2.width) - ((_local2.width + 2) * _local1));
_local2.y = 0;
this.addChild(_local2);
_allHearts.unshift(_local2);
_local1++;
};
}
public function adjustHealth(_arg1:Number):void{
var _local2:Number = 0;
_health = (_health + _arg1);
if (_health < 0){
_health = 0;
} else {
if (_health > _numHearts){
_health = _numHearts;
};
};
while (_local2 < _numHearts) {
if (_health > (_local2 + 1)){
_allHearts[_local2]._heartMask.scaleX = 1;
} else {
_allHearts[_local2]._heartMask.scaleX = (_health - _local2);
};
_local2++;
};
if (_arg1 < 0){
this.beginBlinking();
};
}
public function deactivate():void{
if (_blinking){
this.removeEventListener(Event.ENTER_FRAME, blink);
};
}
public function get health():Number{
return (_health);
}
private function beginBlinking():void{
_blinking = true;
_blinkCtr = 0;
this.addEventListener(Event.ENTER_FRAME, blink);
}
}
}//package
Section 32
//Heart (Heart)
package {
import flash.display.*;
public dynamic class Heart extends MovieClip {
public var _heartMask:HeartMask;
}
}//package
Section 33
//HeartImage (HeartImage)
package {
import flash.display.*;
public dynamic class HeartImage extends MovieClip {
}
}//package
Section 34
//HeartItem (HeartItem)
package {
import flash.media.*;
public class HeartItem extends Unit {
private var _tvOn:TVOn;
private var _ctr:Number;
private var _removeCtr:Number;
public function HeartItem(){
_tvOn = new TVOn();
_ctr = 0;
_removeCtr = 0;
this.scaleX = 0.3;
this.scaleY = 0.3;
}
public function update():void{
var _local1:SoundChannel;
if (!_boundaries.hitTestPoint(this.x, this.y, true)){
if (this.y < (stage.stageHeight + 500)){
this.x = (this.x + ((3 * Math.cos(((_ctr * Math.PI) / 15))) * _player.adrenalineFactor));
this.y = (this.y + _player.adrenalineFactor);
} else {
this.remove();
};
_ctr = (_ctr + (0.5 * _player.adrenalineFactor));
} else {
if (_removeCtr > 150){
this.remove();
} else {
if (_removeCtr > 90){
this.visible = !(this.visible);
};
_removeCtr = (_removeCtr + _player.adrenalineFactor);
};
};
if (_player.hitTestPoint(this.x, this.y, true)){
_local1 = _tvOn.play();
_local1.soundTransform = new SoundTransform((MusicManager.getVolume() * 2), 0);
_healthMeter.adjustHealth(1);
this.remove();
};
}
private function remove():void{
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
}
}
}//package
Section 35
//HeartMask (HeartMask)
package {
import flash.display.*;
public dynamic class HeartMask extends MovieClip {
}
}//package
Section 36
//HitBound (HitBound)
package {
import flash.display.*;
public dynamic class HitBound extends MovieClip {
}
}//package
Section 37
//LargeCheckBox (LargeCheckBox)
package {
import flash.display.*;
public dynamic class LargeCheckBox extends MovieClip {
public var _largeCheckBoxImage:LargeCheckBoxImage;
}
}//package
Section 38
//LargeCheckBoxImage (LargeCheckBoxImage)
package {
import flash.display.*;
public dynamic class LargeCheckBoxImage extends MovieClip {
public function LargeCheckBoxImage(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 39
//LaserSound (LaserSound)
package {
import flash.media.*;
public dynamic class LaserSound extends Sound {
}
}//package
Section 40
//Leaf (Leaf)
package {
import flash.events.*;
import flash.display.*;
import flash.filters.*;
public class Leaf extends MovieClip {
private var _player;
private var _vx;
private var _vy;
private var _vr;
private var _stage;
public function Leaf(_arg1:Stage, _arg2:Player):void{
_stage = _arg1;
_player = _arg2;
this.alpha = 0.5;
this.filters = [new BlurFilter(3, 3, BitmapFilterQuality.HIGH)];
if (Math.random() < 0.33){
this.y = (_stage.stageHeight - (Math.random() * 50));
} else {
this.y = (Math.random() * 100);
};
this.x = (Math.random() * _stage.stageWidth);
this.initialize();
this.cacheAsBitmap = true;
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
}
private function initialize():void{
this.scaleX = (0.25 + (Math.random() * 0.5));
this.scaleY = (0.25 + (Math.random() * 0.5));
_vr = ((Math.random() * 20) - 10);
_vy = (-1 + (Math.random() * 2));
_vx = (-10 - ((Math.random() * 90) * ((this.scaleX + this.scaleY) / 2)));
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function update():void{
this.x = (this.x + (_vx * _player.adrenalineFactor));
this.y = (this.y + (_vy * _player.adrenalineFactor));
this.rotation = (this.rotation + (_vr * _player.adrenalineFactor));
if (this.x < -200){
if (Math.random() < 0.33){
this.y = (_stage.stageHeight - (Math.random() * 50));
} else {
this.y = (Math.random() * 100);
};
this.x = (_stage.stageWidth + 200);
this.initialize();
};
}
}
}//package
Section 41
//LogoScreen (LogoScreen)
package {
import flash.events.*;
import flash.display.*;
import flash.media.*;
public class LogoScreen extends MovieClip {
private var _isActivated:Boolean;
private var _isInitialized:Boolean;
private var _callbacks:Object;
public var _skipButton:SkipButton;
public function LogoScreen():void{
addFrameScript(1, frame2, 168, frame169, 186, frame187);
_skipButton.buttonMode = true;
_isInitialized = false;
_isActivated = false;
}
private function mouseDownHandler(_arg1:MouseEvent):void{
if ((((_arg1.target == _skipButton)) || ((_arg1.target.parent == _skipButton)))){
if (this.currentFrame < 165){
this.gotoAndPlay(165);
};
};
}
function frame2(){
transitionInSound();
}
function frame169(){
transitionOutSound();
}
public function uninitialize():void{
if (!_isInitialized){
return;
};
_isInitialized = false;
deactivate();
_callbacks = null;
}
function frame187(){
stop();
_callbacks.logoScreenDone();
}
public function setCallbacks(_arg1:Object):void{
if (_arg1.logoScreenDone != null){
_callbacks.logoScreenDone = _arg1.logoScreenDone;
};
}
public function deactivate():void{
if (!_isActivated){
return;
};
_isActivated = false;
this.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
private function transitionInSound():void{
var _local1:TVOn = new TVOn();
var _local2:SoundChannel = _local1.play();
_local2.soundTransform = new SoundTransform(0.22, 0);
}
public function initialize():void{
if (_isInitialized){
uninitialize();
};
_isInitialized = true;
_callbacks = new Object();
}
public function activate():void{
if (_isActivated){
return;
};
_isActivated = true;
this.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
private function transitionOutSound():void{
var _local1:TVOff = new TVOff();
var _local2:SoundChannel = _local1.play();
_local2.soundTransform = new SoundTransform(0.22, 0);
}
}
}//package
Section 42
//MenuBG (MenuBG)
package {
import flash.display.*;
public dynamic class MenuBG extends MovieClip {
}
}//package
Section 43
//MenuScreen (MenuScreen)
package {
import flash.events.*;
import flash.display.*;
public class MenuScreen extends MovieClip {
public var _menuBG:MenuBG;
private var _isActivated:Boolean;
private var _originalVolume:Number;
private var _isInitialized:Boolean;
private var _callbacks:Object;
public var _muteButton:MuteButton;
public var _anyKey:AnyKey;
private var _stage:Stage;
public function MenuScreen(_arg1:Stage):void{
_muteButton.buttonMode = true;
_anyKey.buttonMode = true;
_stage = _arg1;
_isInitialized = false;
_isActivated = false;
}
public function uninitialize():void{
if (!_isInitialized){
return;
};
_isInitialized = false;
deactivate();
_callbacks = null;
}
public function deactivate():void{
if (!_isActivated){
return;
};
_isActivated = false;
_stage.removeEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
_stage.removeEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
public function setCallbacks(_arg1:Object):void{
if (_arg1.toPlayGameScreen != null){
_callbacks.toPlayGameScreen = _arg1.toPlayGameScreen;
};
}
public function initialize():void{
if (_isInitialized){
uninitialize();
};
_isInitialized = true;
_callbacks = new Object();
_originalVolume = -1;
}
private function keyDownHandler(_arg1:KeyboardEvent):void{
_callbacks.toPlayGameScreen();
}
public function activate():void{
if (_isActivated){
return;
};
_isActivated = true;
MusicManager.setCurrent(MusicManager.ROCKET);
MusicManager.playCurrent();
if (MusicManager.getVolume() > 0){
_muteButton.gotoAndStop("on");
} else {
_muteButton.gotoAndStop("off");
};
_stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);
_stage.addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler);
}
private function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.target == _anyKey){
_callbacks.toPlayGameScreen();
} else {
if (_arg1.target == _muteButton){
if (_muteButton.currentLabel == "on"){
_originalVolume = MusicManager.getVolume();
MusicManager.setVolume(0);
_muteButton.gotoAndStop("off");
} else {
if (_originalVolume != -1){
MusicManager.setVolume(_originalVolume);
} else {
MusicManager.setVolume(0.33);
};
_originalVolume = -1;
_muteButton.gotoAndStop("on");
};
};
};
}
}
}//package
Section 44
//MessageWindow (MessageWindow)
package {
import flash.events.*;
import flash.display.*;
public class MessageWindow extends MovieClip {
private var _removeMessageWindowCallback:Function;
private var _toggleSettingsMenuCallback:Function;
public function MessageWindow(_arg1:Function, _arg2:Function):void{
_removeMessageWindowCallback = _arg1;
_toggleSettingsMenuCallback = _arg2;
this.buttonMode = true;
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == 81){
_toggleSettingsMenuCallback();
} else {
if (_arg1.keyCode == 13){
_removeMessageWindowCallback();
};
};
}
public function mouseUpHandler(_arg1:MouseEvent):void{
}
public function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.target == this){
_removeMessageWindowCallback();
};
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
}
}
}//package
Section 45
//MeterPointer (MeterPointer)
package {
import flash.display.*;
public dynamic class MeterPointer extends MovieClip {
}
}//package
Section 46
//MonsterMeter (MonsterMeter)
package {
import flash.display.*;
import flash.media.*;
import flash.geom.*;
public class MonsterMeter extends MovieClip {
private var _fullSound:MonsterMeterFull;
public var _monsterMeterFiller:MonsterMeterFiller;
private var _stageMode:Boolean;
public var _monsterMeterFillerMask:MonsterMeterFillerMask;
private var _bossMode:Boolean;
private var _capacity:Number;
private var _fillCtr:Number;
public var _monsterMeterFace:MonsterMeterFace;
public function MonsterMeter(){
_stageMode = false;
_fullSound = new MonsterMeterFull();
_bossMode = false;
_monsterMeterFillerMask.scaleY = 0;
_fillCtr = 0;
_capacity = 100;
}
public function activateBossMode():void{
_bossMode = true;
_monsterMeterFace.gotoAndPlay("boss");
_monsterMeterFiller.transform.colorTransform = new ColorTransform(2, 0.5, 0.5, 1, 0, 0, 0, 0);
var _local1:SoundChannel = _fullSound.play();
_local1.soundTransform = new SoundTransform((MusicManager.getVolume() * 4), 0);
}
public function setMeter(_arg1:Number):void{
_monsterMeterFillerMask.scaleY = _arg1;
}
public function deactivateBossMode():void{
_bossMode = false;
_monsterMeterFace.gotoAndStop("normal");
_monsterMeterFiller.transform.colorTransform = new ColorTransform(1, 1, 1, 1, 0, 0, 0, 0);
_fillCtr = 0;
}
public function activateStageMode():void{
_fillCtr = 0;
_stageMode = true;
}
public function adjustMeter(_arg1:Number):void{
if (_bossMode){
} else {
if (_stageMode){
_fillCtr = (_fillCtr + _arg1);
if (_fillCtr < 0){
_fillCtr = 0;
} else {
if (_fillCtr > _capacity){
_fillCtr = _capacity;
};
};
_monsterMeterFillerMask.scaleY = (_fillCtr / _capacity);
if ((((_fillCtr == _capacity)) && (!(_bossMode)))){
this.activateBossMode();
};
};
};
}
public function get fillCtr():Number{
return (_fillCtr);
}
public function deactivateStageMode():void{
_stageMode = false;
}
public function get bossMode():Boolean{
return (_bossMode);
}
public function set capacity(_arg1:Number):void{
_capacity = _arg1;
}
public function get capacity():Number{
return (_capacity);
}
}
}//package
Section 47
//MonsterMeterEyes (MonsterMeterEyes)
package {
import flash.display.*;
public dynamic class MonsterMeterEyes extends MovieClip {
}
}//package
Section 48
//MonsterMeterFace (MonsterMeterFace)
package {
import flash.display.*;
public dynamic class MonsterMeterFace extends MovieClip {
public function MonsterMeterFace(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 51, frame52);
}
function frame52(){
gotoAndPlay("boss continued");
}
function frame1(){
stop();
}
function frame2(){
stop();
}
function frame3(){
gotoAndPlay("boss");
}
}
}//package
Section 49
//MonsterMeterFiller (MonsterMeterFiller)
package {
import flash.display.*;
public dynamic class MonsterMeterFiller extends MovieClip {
public var _fillerImage:MonsterMeterFillerImage;
}
}//package
Section 50
//MonsterMeterFillerImage (MonsterMeterFillerImage)
package {
import flash.display.*;
public dynamic class MonsterMeterFillerImage extends MovieClip {
}
}//package
Section 51
//MonsterMeterFillerMask (MonsterMeterFillerMask)
package {
import flash.display.*;
public dynamic class MonsterMeterFillerMask extends MovieClip {
}
}//package
Section 52
//MonsterMeterFull (MonsterMeterFull)
package {
import flash.media.*;
public dynamic class MonsterMeterFull extends Sound {
}
}//package
Section 53
//Mountains (Mountains)
package {
import flash.display.*;
public dynamic class Mountains extends MovieClip {
}
}//package
Section 54
//MusicManager (MusicManager)
package {
import flash.events.*;
import flash.media.*;
import flash.net.*;
public class MusicManager {
static const COLD_FUNK:Number = 0;
static const ROCKET:Number = 1;
static const NUMBER_OF_SOUNDS:Number = 2;
static const IS_LOCAL:Number = 1;
private static var _rocket:Sound;
private static var _channel:SoundChannel;
private static var _repeatSet:Boolean;
private static var _currentSoundIndex:Number;
private static var _currentlyPlaying:Boolean;
private static var _positions:Array;
private static var _coldFunk:Sound;
private static var _instance:MusicManager;
private static var _volume:Number;
public function MusicManager(_arg1:Function){
var _local2:Number;
super();
if (_arg1 !== hidden){
throw (new Error("Music Manager is a singleton; access via MusicManager.getInstance()"));
};
_repeatSet = true;
_currentlyPlaying = false;
_volume = 1;
_currentSoundIndex = 0;
_local2 = 0;
_positions = new Array();
while (_local2 < NUMBER_OF_SOUNDS) {
_positions.push(0);
_local2++;
};
}
private static function soundCompleteHandler(_arg1:Event):void{
if (_channel != null){
_channel.removeEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
_positions[_currentSoundIndex] = 0;
_currentlyPlaying = false;
if (_repeatSet){
playCurrent();
};
};
}
public static function stopCurrent():void{
if (_instance == null){
_instance = new MusicManager(hidden);
};
if (_currentlyPlaying){
_channel.removeEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
_channel.stop();
_positions[_currentSoundIndex] = 0;
_currentlyPlaying = false;
};
}
public static function getInstance():MusicManager{
if (_instance == null){
_instance = new MusicManager(hidden);
};
return (_instance);
}
public static function getVolume():Number{
return (_volume);
}
public static function setVolume(_arg1:Number):void{
var _local2:SoundTransform;
if (_instance == null){
_instance = new MusicManager(hidden);
};
_volume = _arg1;
if (_currentlyPlaying){
if (_channel != null){
};
_local2 = new SoundTransform(_arg1, 0);
_channel.soundTransform = _local2;
};
}
public static function pauseCurrent():void{
if (_instance == null){
_instance = new MusicManager(hidden);
};
if (_currentlyPlaying){
_channel.removeEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
_positions[_currentSoundIndex] = _channel.position;
_channel.stop();
_currentlyPlaying = false;
};
}
public static function setRepeat(_arg1:Boolean):void{
if (_instance == null){
_instance = new MusicManager(hidden);
};
_repeatSet = _arg1;
}
public static function playCurrent():void{
var _local1:URLRequest;
if (_instance == null){
_instance = new MusicManager(hidden);
};
if (_currentlyPlaying == false){
switch (_currentSoundIndex){
case COLD_FUNK:
if (_coldFunk == null){
_local1 = new URLRequest("Cold Funk.mp3");
_coldFunk = new Sound();
_coldFunk.load(_local1);
};
_channel = _coldFunk.play(_positions[COLD_FUNK]);
_channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
_currentlyPlaying = true;
break;
case ROCKET:
if (_rocket == null){
_local1 = new URLRequest("Rocket.mp3");
_rocket = new Sound();
_rocket.load(_local1);
};
_channel = _rocket.play(_positions[ROCKET]);
_channel.addEventListener(Event.SOUND_COMPLETE, soundCompleteHandler);
_currentlyPlaying = true;
break;
};
setVolume(_volume);
};
}
private static function hidden():void{
}
public static function toggleMusic():void{
if (_instance == null){
_instance = new MusicManager(hidden);
};
if (_currentlyPlaying){
stopCurrent();
} else {
playCurrent();
};
}
public static function isRepeating():Boolean{
if (_instance == null){
_instance = new MusicManager(hidden);
};
return (_repeatSet);
}
public static function setCurrent(_arg1:Number):void{
if (_instance == null){
_instance = new MusicManager(hidden);
};
_currentSoundIndex = _arg1;
}
}
}//package
Section 55
//MuteButton (MuteButton)
package {
import flash.display.*;
public dynamic class MuteButton extends MovieClip {
public function MuteButton(){
addFrameScript(0, frame1, 5, frame6);
}
function frame6(){
stop();
}
function frame1(){
stop();
}
}
}//package
Section 56
//Notification (Notification)
package {
import flash.display.*;
import flash.text.*;
public class Notification extends MovieClip {
private var _allDynamicAssets:Array;
private var _ctr:Number;
public var _stageLabel:TextField;
public function Notification(_arg1:Stage, _arg2:String, _arg3:Array){
addFrameScript(0, frame1, 1, frame2);
_allDynamicAssets = _arg3;
_ctr = 0;
if (_arg2 == "go"){
this.gotoAndStop("go");
this.x = ((_arg1.stageWidth - this.width) - 5);
this.y = (((_arg1.stageHeight / 2) - (this.height / 2)) - 50);
} else {
this.gotoAndStop("stage");
this.x = ((_arg1.stageWidth / 2) - (this.width / 2));
this.y = (((_arg1.stageHeight / 2) - (this.height / 2)) - 50);
_stageLabel.text = (("wave " + Number(_arg2)) + "\nget ready!");
};
}
public function update():void{
if (_ctr < 70){
_ctr++;
if ((Math.floor((_ctr / 10)) % 2) == 0){
this.visible = true;
} else {
this.visible = false;
};
} else {
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
parent.removeChild(this);
};
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 57
//Player (Player)
package {
import flash.events.*;
import flash.media.*;
public class Player extends Unit {
private var _clock:Clock;
private var _spacePressed:Boolean;
private var _autoAdrenalineDuration:Number;
public var _rightFootSide:PlayerFootSide;
private var _active:Boolean;
public var _idleRightHand:Hand;
private var _timeMeter:TimeMeter;
private var _rightPressed:Boolean;
private var _adrenalineFactor:Number;
private var _allShurikens:Array;
private var _downPressed:Boolean;
private var _leftPressed:Boolean;
private var _noThrow:Boolean;
private var _autoAdrenaline:Boolean;
private var _dyingSequenceCallback:Function;
public var _body:PlayerBody;
private var _upPressed:Boolean;
private var _adrenalinePower:Number;
public var _actionLeftHand:Hand;
private var _frameFraction:Number;
private var _mouseDownCtr:Number;
private var _swordSwing:SwordSwing;
private var _bubble:Bubble;
private var _autoAdrenalineCtr:Number;
public var _rightFootFront:PlayerFootFront;
public var _head:PlayerHead;
private var _maxAdrenaline:Number;
private var _redMeter:RedMeter;
public var _actionRightHand:Hand;
private var _levitateSpeed:Number;
private var _volumeControl:VolumeControl;
private var _maxAdrenalineNumerator:Number;
public var _idleLeftHand:Hand;
private var _surikenThrow:SurikenThrow;
public var _leftFootSide:PlayerFootSide;
private var _transitionFlags:Array;
public function Player():void{
addFrameScript(199, frame200, 309, frame310, 319, frame320, 631, frame632, 711, frame712, 733, frame734, 746, frame747, 753, frame754, 796, frame797, 817, frame818, 847, frame848, 862, frame863);
_noThrow = false;
_mouseDownCtr = 16;
_head.gotoAndStop("sad");
_idleLeftHand.gotoAndStop("idle");
_idleRightHand.gotoAndStop("idle");
_rightFootFront.gotoAndStop("cat");
_leftFootSide.gotoAndStop("cat");
_body.gotoAndStop("cat");
_active = true;
_autoAdrenalineDuration = 23;
_autoAdrenalineCtr = 0;
_swordSwing = new SwordSwing();
_surikenThrow = new SurikenThrow();
_virtualX = 0;
_virtualY = 0;
_status.set(["facingRight"]);
_head._decorations.gotoAndStop("stripe");
_actionLeftHand.visible = false;
_actionRightHand.visible = false;
_adrenalineFactor = 1;
_hitBounds = getAllHitBounds(this);
_upPressed = false;
_downPressed = false;
_leftPressed = false;
_rightPressed = false;
_spacePressed = false;
_adrenalinePower = 100;
_frameFraction = 0;
_maxAdrenalineNumerator = 2;
_levitateSpeed = 20;
_allShurikens = new Array();
_transitionFlags = ["jumping to falling", "begin levitating"];
this.initializeFrameData();
_autoAdrenaline = true;
}
private function throwShuriken():void{
var _local1:Number;
var _local2:Number;
var _local3:Number;
var _local4:Shuriken;
var _local5:Number;
var _local6:Number;
_stats.shurikensThrown++;
_status.set(["beginThrowingShuriken"]);
if (this.scaleX < 0){
_local5 = -(_actionLeftHand.x);
_local6 = -(this.mouseX);
} else {
_local5 = _actionLeftHand.x;
_local6 = this.mouseX;
};
_local2 = (_local6 - _local5);
_local3 = (this.mouseY - _actionLeftHand.y);
_local1 = Math.sqrt(((_local2 * _local2) + (_local3 * _local3)));
_local4 = new Shuriken((_local2 / _local1), (_local3 / _local1));
_local4.registerReferences({playerHitAssets:_playerHitAssets, player:this, stage:_stage, allDynamicAssets:_allDynamicAssets, scrollingAssets:_scrollingAssets, stats:_stats});
_local4.x = (this.x + _local5);
_local4.y = (this.y + _actionLeftHand.y);
parent.addChild(_local4);
_scrollingAssets.push(_local4);
_allDynamicAssets.push(_local4);
_allShurikens.push(_local4);
}
function frame310(){
gotoAndPlay("running");
}
function frame797(){
gotoAndStop("falling dead");
}
public function mouseUpHandler(_arg1:MouseEvent):void{
_mouseDownCtr = 16;
}
function frame712(){
gotoAndPlay("levitating");
}
private function processBoundaryCollisions():void{
var _local1:Boolean;
if ((((((_vy >= 0)) && (!(_status.get(["beginJumping"]))))) || (_status.get(["levitating"])))){
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
_status.set(["grounded"]);
} else {
if (_boundaries.hitTestPoint(this.x, (this.y + SLOPE_TOLERANCE), true)){
_local1 = false;
_status.set(["grounded"]);
} else {
_local1 = false;
_status.clear(["grounded"]);
if (this.currentLabel == "running"){
this.gotoAndStop("jumping to falling");
};
};
};
if (_local1){
while (_local1) {
this.y = (this.y - 1);
_virtualY = (_virtualY - 1);
_local1 = false;
if (_boundaries.hitTestPoint(this.x, this.y, true)){
_local1 = true;
};
};
_vy = 0;
};
};
}
function frame320(){
stop();
}
public function get hitBounds():Array{
return (_hitBounds);
}
function frame200(){
gotoAndPlay("standing");
}
function frame848(){
gotoAndStop("lying dead");
}
private function processAndUpdateState():void{
var _local1:SoundChannel;
var _local2:SoundChannel;
if (((!(_status.get(["grounded"]))) && ((_vy > 0)))){
_status.set(["movingDown"]);
};
if (((_status.get(["movingDown", "grounded"])) && (!(_status.get(["levitating"]))))){
_status.clear(["movingDown"]);
if (_healthMeter.health <= 0){
this.gotoAndPlay("landing dead");
_dyingSequenceCallback();
} else {
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
this.gotoAndStop("running");
} else {
if (_downPressed){
_status.set(["beginSitting", "sitting"]);
} else {
this.gotoAndStop("standing");
};
};
};
};
if (((((((((((_status.get(["movingUp"])) && (!(_status.get(["beginJumping"]))))) && ((_vy > 0)))) && (!(_status.get(["levitating"]))))) && (!((this.currentLabel == "jumping to falling"))))) && (!((this.currentLabel == "falling"))))){
_status.clear(["movingUp"]);
this.gotoAndStop("jumping to falling");
_status.set(["movingDown"]);
};
if (_status.get(["beginLevitating"])){
_vx = 0;
_vy = 0;
_head.gotoAndStop("concentrate");
this.gotoAndStop("begin levitating");
_status.clear(["beginLevitating"]);
};
if (_status.get(["stopLevitating"])){
_head.gotoAndStop("sad");
if (_status.get(["grounded"])){
this.gotoAndStop("standing");
} else {
this.gotoAndStop("jumping to falling");
};
_status.clear(["stopLevitating"]);
};
if (_status.get(["beginForcingAdrenaline"])){
_status.clear(["beginForcingAdrenaline"]);
};
if (_status.get(["stopForcingAdrenaline"])){
_status.clear(["stopForcingAdrenaline"]);
};
if (_status.get(["beginSitting"])){
_vx = 0;
this.gotoAndStop("standing to sitting");
_status.clear(["beginSitting"]);
};
if (_status.get(["stopSitting"])){
if ((((this.currentLabel == "sitting")) || ((this.currentLabel == "standing to sitting")))){
this.gotoAndStop("sitting to standing");
};
_status.clear(["stopSitting"]);
};
if (_status.get(["beginLevitatingLeft"])){
_vx = -(_levitateSpeed);
_status.clear(["beginLevitatingLeft"]);
};
if (_status.get(["beginLevitatingRight"])){
_vx = _levitateSpeed;
_status.clear(["beginLevitatingRight"]);
};
if (_status.get(["beginLevitatingUp"])){
_vy = -(_levitateSpeed);
_status.clear(["beginLevitatingUp"]);
};
if (_status.get(["beginLevitatingDown"])){
_vy = _levitateSpeed;
_status.clear(["beginLevitatingDown"]);
};
if (_status.get(["stopLevitatingLeft"])){
_vx = 0;
_status.clear(["stopLevitatingLeft"]);
};
if (_status.get(["stopLevitatingRight"])){
_vx = 0;
_status.clear(["stopLevitatingRight"]);
};
if (_status.get(["stopLevitatingUp"])){
_vy = 0;
_status.clear(["stopLevitatingUp"]);
};
if (_status.get(["stopLevitatingDown"])){
_vy = 0;
_status.clear(["stopLevitatingDown"]);
};
if (_status.get(["beginAttacking1"])){
_local1 = _swordSwing.play();
_local1.soundTransform = new SoundTransform(MusicManager.getVolume(), 0);
_idleRightHand.visible = false;
_actionRightHand.visible = true;
_actionRightHand.gotoAndStop("active right hand swing");
_status.clear(["beginAttacking1"]);
};
if (_status.get(["stopAttacking1"])){
_actionRightHand.visible = false;
_idleRightHand.visible = true;
_actionRightHand.gotoAndStop("idle");
_status.clear(["stopAttacking1"]);
};
if (_status.get(["beginThrowingShuriken"])){
_local2 = _surikenThrow.play();
_local2.soundTransform = new SoundTransform((MusicManager.getVolume() * 0.5), 0);
_idleLeftHand.visible = false;
_actionLeftHand.visible = true;
_actionLeftHand.gotoAndStop("active left hand throw");
_status.clear(["beginThrowingShuriken"]);
};
if (_status.get(["stopThrowingShuriken"])){
_actionLeftHand.visible = false;
_idleLeftHand.visible = true;
_actionLeftHand.gotoAndStop("idle");
_status.clear(["stopThrowingShuriken"]);
};
if (_status.get(["beginFacingRight"])){
this.scaleX = 1;
_status.clear(["beginFacingRight"]);
};
if (_status.get(["beginFacingLeft"])){
this.scaleX = -1;
_status.clear(["beginFacingLeft"]);
};
if (_status.get(["beginMovingRight"])){
_vx = 10;
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingRight"]);
};
if (_status.get(["beginMovingLeft"])){
_vx = -10;
if (_status.get(["grounded"])){
this.gotoAndStop("running");
};
_status.clear(["beginMovingLeft"]);
};
if (_status.get(["beginJumping"])){
_vy = -30;
this.gotoAndStop("jumping");
_status.clear(["beginJumping"]);
};
if (_status.get(["stopMovingRight"])){
_vx = 0;
if (((_status.get(["grounded"])) && ((this.currentLabel == "running")))){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingRight"]);
};
if (_status.get(["stopMovingLeft"])){
_vx = 0;
if (((_status.get(["grounded"])) && ((this.currentLabel == "running")))){
this.gotoAndStop("standing");
};
_status.clear(["stopMovingLeft"]);
};
if ((((this.currentLabel == "falling")) && (_status.get(["grounded"])))){
trace("fix");
if (((_status.get(["movingRight"])) || (_status.get(["movingLeft"])))){
this.gotoAndStop("running");
} else {
this.gotoAndStop("standing");
};
};
}
function frame734(){
gotoAndPlay("sitting");
}
public function set virtualX(_arg1:Number):void{
_virtualX = _arg1;
}
public function set virtualY(_arg1:Number):void{
_virtualY = _arg1;
}
function frame863(){
gotoAndPlay("null space");
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
if (!_active){
return;
};
switch (_arg1.keyCode){
case 32:
if (((!(_status.get(["levitating"]))) && (!(_spacePressed)))){
_status.set(["beginLevitating", "levitating"]);
if (((_status.get(["movingLeft"])) || (_status.get(["beginMovingLeft"])))){
_status.set(["beginLevitatingLeft", "levitatingLeft"]);
};
if (((_status.get(["movingRight"])) || (_status.get(["beginMovingRight"])))){
_status.set(["beginLevitatingRight", "levitatingRight"]);
};
if (_upPressed){
_status.set(["beginLevitatingUp", "levitatingUp"]);
} else {
if (_downPressed){
_status.set(["beginLevitatingDown", "levitatingDown"]);
};
};
_status.clear(["movingLeft", "movingRight", "beginMovingLeft", "beginMovingRight"]);
};
_spacePressed = true;
break;
case 65:
_leftPressed = true;
if (_status.get(["levitating"])){
if (!_status.get(["levitatingLeft"])){
_status.set(["beginLevitatingLeft", "beginFacingLeft", "levitatingLeft", "facingLeft"]);
_status.clear(["beginLevitatingRight", "levitatingRight", "stopLevitatingRight", "facingRight", "beginFacingRight"]);
};
} else {
if (!_status.get(["movingLeft"])){
_status.set(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft"]);
_status.clear(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight", "stopMovingRight"]);
};
};
break;
case 87:
_upPressed = true;
if (_status.get(["levitating"])){
if (!_status.get(["levitatingUp"])){
_status.set(["beginLevitatingUp", "levitatingUp"]);
_status.clear(["beginLevitatingDown", "levitatingDown", "stopLevitatingDown"]);
};
} else {
if (_status.get(["grounded"])){
_status.set(["beginJumping", "movingUp"]);
_status.clear(["grounded"]);
};
};
break;
case 68:
_rightPressed = true;
if (_status.get(["levitating"])){
if (!_status.get(["levitatingRight"])){
_status.set(["beginLevitatingRight", "beginFacingRight", "levitatingRight", "facingRight"]);
_status.clear(["beginLevitatingLeft", "levitatingLeft", "stopLevitatingLeft", "facingLeft", "beginFacingLeft"]);
};
} else {
if (!_status.get(["movingRight"])){
_status.set(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight"]);
_status.clear(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft", "stopMovingLeft"]);
};
};
break;
case 83:
_downPressed = true;
if (_status.get(["levitating"])){
if (!_status.get(["levitatingDown"])){
_status.set(["beginLevitatingDown", "levitatingDown"]);
_status.clear(["beginLevitatingUp", "levitatingUp", "stopLevitatingUp"]);
};
} else {
if (((_status.get(["grounded"])) && (!(_status.get(["levitating"]))))){
if (((((!(_status.get(["sitting"]))) && (_status.get(["grounded"])))) && (!(_status.get(["levitating"]))))){
_status.set(["beginSitting", "sitting"]);
_status.clear(["movingLeft", "beginMovingLeft", "beginMovingRight", "movingRight"]);
};
};
};
break;
case 70:
break;
case 16:
if (!_status.get(["forcingAdrenaline"])){
_status.set(["beginForcingAdrenaline", "forcingAdrenaline"]);
};
break;
};
}
public function mouseDownHandler(_arg1:MouseEvent):void{
if (!_active){
return;
};
_mouseDownCtr = 1;
if (((((((((!((_arg1.target.parent == _timeMeter))) && (!((_arg1.target.parent == _volumeControl))))) && (!((_arg1.target.parent == _clock))))) && (!((_arg1.target == _clock))))) && (!((_arg1.target.parent == _timeMeter._autoSlowMotionControl))))){
this.throwShuriken();
_noThrow = false;
} else {
if (_arg1.target == _timeMeter._autoSlowMotionControl){
this.throwShuriken();
_noThrow = false;
} else {
_noThrow = true;
};
};
}
function frame747(){
gotoAndPlay("standing");
}
public function warpToVirtualCoordinates(_arg1:Number, _arg2:Number):void{
this.x = (this.x + (_arg1 - _virtualX));
this.y = (this.y + (_arg2 - _virtualY));
_virtualX = _arg1;
_virtualY = _arg2;
_vy = 0;
}
function frame632(){
gotoAndPlay("falling");
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
if (!_active){
return;
};
switch (_arg1.keyCode){
case 16:
if (_status.get(["forcingAdrenaline"])){
_status.set(["stopForcingAdrenaline"]);
_status.clear(["forcingAdrenaline"]);
};
break;
case 32:
_spacePressed = false;
if (_status.get(["levitating"])){
if (_status.get(["levitatingLeft"])){
_status.set(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft"]);
} else {
if (_status.get(["levitatingRight"])){
_status.set(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight"]);
} else {
if (_status.get(["levitatingDown", "grounded"])){
_status.set(["beginSitting", "sitting"]);
};
};
};
_status.set(["stopLevitating"]);
_status.clear(["levitating", "beginLevitatingRight", "beginLevitatingLeft", "levitatingRight", "levitatingLeft", "beginLevitatingUp", "beginLevitatingDown", "levitatingUp", "levitatingDown"]);
};
break;
case 65:
_leftPressed = false;
if (_status.get(["levitating"])){
if (_status.get(["levitatingLeft"])){
_status.set(["stopLevitatingLeft"]);
_status.clear(["levitatingLeft"]);
};
if (((_rightPressed) && (!(_status.get(["levitatingRight"]))))){
_status.set(["beginLevitatingRight", "beginFacingRight", "levitatingRight", "facingRight"]);
_status.clear(["beginLevitatingLeft", "levitatingLeft", "stopLevitatingLeft", "facingLeft", "beginFacingLeft"]);
};
} else {
if (_status.get(["movingLeft"])){
_status.set(["stopMovingLeft"]);
_status.clear(["movingLeft"]);
};
if (((_rightPressed) && (!(_status.get(["movingRight"]))))){
_status.set(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight"]);
_status.clear(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft", "stopMovingLeft"]);
};
};
break;
case 87:
_upPressed = false;
if (_status.get(["levitating"])){
if (_status.get(["levitatingUp"])){
_status.set(["stopLevitatingUp"]);
_status.clear(["levitatingUp"]);
};
};
break;
case 68:
_rightPressed = false;
if (_status.get(["levitating"])){
if (_status.get(["levitatingRight"])){
_status.set(["stopLevitatingRight"]);
_status.clear(["levitatingRight"]);
};
if (((_leftPressed) && (!(_status.get(["levitatingLeft"]))))){
_status.set(["beginLevitatingLeft", "beginFacingLeft", "levitatingLeft", "facingLeft"]);
_status.clear(["beginLevitatingRight", "levitatingRight", "stopLevitatingRight", "facingRight", "beginFacingRight"]);
};
} else {
if (_status.get(["movingRight"])){
_status.set(["stopMovingRight"]);
_status.clear(["movingRight"]);
};
if (((_leftPressed) && (!(_status.get(["movingLeft"]))))){
_status.set(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft"]);
_status.clear(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight", "stopMovingRight"]);
};
};
break;
case 83:
_downPressed = false;
if (_status.get(["levitating"])){
if (_status.get(["levitatingDown"])){
_status.set(["stopLevitatingDown"]);
_status.clear(["levitatingDown"]);
};
} else {
if (_status.get(["sitting"])){
_status.set(["stopSitting"]);
_status.clear(["sitting"]);
if (((_rightPressed) && (!(_status.get(["movingRight"]))))){
_status.set(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight"]);
_status.clear(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft", "stopMovingLeft"]);
};
if (((_leftPressed) && (!(_status.get(["movingLeft"]))))){
_status.set(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft"]);
_status.clear(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight", "stopMovingRight"]);
};
};
};
break;
};
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
if (_arg1.bubble != null){
_bubble = _arg1.bubble;
};
if (_arg1.redMeter != null){
_redMeter = _arg1.redMeter;
};
if (_arg1.timeMeter != null){
_timeMeter = _arg1.timeMeter;
};
if (_arg1.volumeControl != null){
_volumeControl = _arg1.volumeControl;
};
if (_arg1.clock != null){
_clock = _arg1.clock;
};
if (_arg1.dyingSequenceCallback != null){
_dyingSequenceCallback = _arg1.dyingSequenceCallback;
};
}
public function set autoAdrenaline(_arg1:Boolean):void{
_autoAdrenaline = _arg1;
}
private function processUnitAndHitCollisions():void{
var _local2:Number;
var _local5:Unit;
if (!_active){
return;
};
var _local1:Number = 0;
var _local3:Boolean;
var _local4:Boolean;
while (_local1 < _enemyHitAssets.length) {
if ((_enemyHitAssets[_local1].parent is Hatchet)){
_local5 = _enemyHitAssets[_local1].parent;
} else {
_local5 = _enemyHitAssets[_local1].parent.parent;
};
if (((((((!(_local3)) && (_enemyHitAssets[_local1].hitTestObject(_bubble)))) && (_autoAdrenaline))) && ((_autoAdrenalineCtr >= 0)))){
if (Math.abs((_local5.vx - _vx)) > Math.abs((_local5.vy - _vy))){
if (((_local5.vx - _vx) * (_local5.x - this.x)) < 0){
_status.set(["adrenaline"]);
_local3 = true;
_maxAdrenaline = (_maxAdrenalineNumerator / Math.abs((_local5.vx - _vx)));
if (_maxAdrenaline > 1){
_maxAdrenaline = 1;
};
};
} else {
if (((_local5.vy - _vy) * (_local5.y - this.y)) < 0){
_status.set(["adrenaline"]);
_local3 = true;
_maxAdrenaline = (_maxAdrenalineNumerator / Math.abs((_local5.vy - _vy)));
if (_maxAdrenaline > 1){
_maxAdrenaline = 1;
};
};
};
if (((_local3) && ((_autoAdrenalineCtr == 0)))){
_autoAdrenalineCtr = _autoAdrenalineDuration;
};
};
_local2 = 0;
while (_local2 < _hitBounds.length) {
if (_enemyHitAssets[_local1].hitTestObject(_hitBounds[_local2])){
_local4 = true;
break;
};
_local2++;
};
if (((((_local4) && (!(_status.get(["blinking"]))))) && (!(_status.get(["dying"]))))){
if (!_stats.beenHit){
_stats.beenHit = true;
};
this.beginBlinking();
_status.set(["blinking"]);
_healthMeter.adjustHealth(-0.5);
if (_healthMeter.health == 0){
this.stopBlinking();
_active = false;
_status = new Status();
_status.set(["dying"]);
_vx = 0;
_vy = -10;
this.gotoAndPlay("tipping dead");
_head.gotoAndStop("dead");
};
};
_local1++;
};
if (!_local3){
_status.clear(["adrenaline"]);
};
}
function frame754(){
gotoAndStop("falling dead");
}
public function updateInput(_arg1:Object):void{
var _local2:KeyboardEvent;
if (((!(_leftPressed)) && (_arg1.left))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, 65, 0, false, false, false);
this.keyDownHandler(_local2);
} else {
if (((_leftPressed) && (!(_arg1.left)))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, 65, 0, false, false, false);
this.keyUpHandler(_local2);
};
};
if (((!(_upPressed)) && (_arg1.up))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, 87, 0, false, false, false);
this.keyDownHandler(_local2);
} else {
if (((_upPressed) && (!(_arg1.up)))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, 87, 0, false, false, false);
this.keyUpHandler(_local2);
};
};
if (((!(_rightPressed)) && (_arg1.right))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, 68, 0, false, false, false);
this.keyDownHandler(_local2);
} else {
if (((_rightPressed) && (!(_arg1.right)))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, 68, 0, false, false, false);
this.keyUpHandler(_local2);
};
};
if (((!(_downPressed)) && (_arg1.down))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, 83, 0, false, false, false);
this.keyDownHandler(_local2);
} else {
if (((_downPressed) && (!(_arg1.down)))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, 83, 0, false, false, false);
this.keyUpHandler(_local2);
};
};
if (((!(_spacePressed)) && (_arg1.space))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_DOWN, true, false, 0, 32, 0, false, false, false);
this.keyDownHandler(_local2);
} else {
if (((_spacePressed) && (!(_arg1.space)))){
_local2 = new KeyboardEvent(KeyboardEvent.KEY_UP, true, false, 0, 32, 0, false, false, false);
this.keyUpHandler(_local2);
};
};
}
public function get virtualX():Number{
return (_virtualX);
}
override protected function doneBlinking():void{
_status.clear(["blinking"]);
}
public function set maxAdrenalineNumerator(_arg1:Number):void{
_maxAdrenalineNumerator = _arg1;
}
public function get virtualY():Number{
return (_virtualY);
}
public function get maxAdrenalineNumerator():Number{
return (_maxAdrenalineNumerator);
}
public function update():void{
var _local1:String;
var _local2:Number;
if (_autoAdrenalineCtr == 1){
if (!_status.get(["forcingAdrenaline"])){
_maxAdrenaline = 1;
};
_autoAdrenalineCtr = -1;
} else {
if (_autoAdrenalineCtr > 1){
_autoAdrenalineCtr--;
} else {
if ((((_autoAdrenalineCtr < 0)) && ((_adrenalineFactor == 1)))){
_autoAdrenalineCtr = 0;
};
};
};
if (_status.get(["adrenaline"])){
if (_adrenalineFactor > _maxAdrenaline){
_adrenalineFactor = _maxAdrenaline;
};
} else {
if (_status.get(["forcingAdrenaline"])){
_maxAdrenaline = (_timeMeter.getMaxAdrenalineNumerator() / 10);
if (_maxAdrenaline > 1){
_maxAdrenaline = 1;
};
_adrenalineFactor = _maxAdrenaline;
} else {
if (_adrenalineFactor < 1){
_adrenalineFactor = (_adrenalineFactor + 0.08);
if (_adrenalineFactor > 1){
_adrenalineFactor = 1;
_frameFraction = 0;
};
};
};
};
_frameFraction = (_frameFraction + (5 * _adrenalineFactor));
if (_frameFraction >= 1){
_local1 = this.currentLabel;
this.gotoAndStop((this.currentFrame + Math.floor(_frameFraction)));
if (_transitionFlags.indexOf(_local1) == -1){
_local2 = 0;
while (((!((this.currentLabel == _local1))) && ((_local2 < Math.ceil(_frameFraction))))) {
this.gotoAndStop((this.currentFrame - 1));
_local2++;
};
};
_local1 = _actionRightHand.currentLabel;
_actionRightHand.gotoAndStop((_actionRightHand.currentFrame + Math.floor(_frameFraction)));
while (_actionRightHand.currentLabel != _local1) {
_actionRightHand.gotoAndStop((_actionRightHand.currentFrame - 1));
};
_local1 = _actionLeftHand.currentLabel;
_actionLeftHand.gotoAndStop((_actionLeftHand.currentFrame + Math.floor(_frameFraction)));
while (_actionLeftHand.currentLabel != _local1) {
_actionLeftHand.gotoAndStop((_actionLeftHand.currentFrame - 1));
};
_frameFraction = (_frameFraction - Math.floor(_frameFraction));
};
if (_mouseDownCtr < 15){
if (((((_mouseDownCtr % 5) == 0)) && (!(_noThrow)))){
this.throwShuriken();
};
_mouseDownCtr++;
};
if (!_status.get(["levitating"])){
_vy = (_vy + (2 * _adrenalineFactor));
};
this.x = (this.x + (_vx * _adrenalineFactor));
this.y = (this.y + (_vy * _adrenalineFactor));
_virtualX = (_virtualX + (_vx * _adrenalineFactor));
_virtualY = (_virtualY + (_vy * _adrenalineFactor));
_bubble.x = ((this.x + _body.x) + (_body.width / 2));
_bubble.y = (this.y + _body.y);
if (_status.get(["levitating"])){
if ((_adrenalinePower - (5 * _adrenalineFactor)) <= 1){
if (_status.get(["levitatingLeft"])){
_status.set(["beginMovingLeft", "beginFacingLeft", "movingLeft", "facingLeft"]);
} else {
if (_status.get(["levitatingRight"])){
_status.set(["beginMovingRight", "beginFacingRight", "movingRight", "facingRight"]);
};
};
_status.set(["stopLevitating"]);
_status.clear(["levitating", "beginLevitatingRight", "beginLevitatingLeft", "levitatingRight", "levitatingLeft", "beginLevitatingUp", "beginLevitatingDown", "levitatingUp", "levitatingDown"]);
_adrenalinePower = 1;
_redMeter.gotoAndStop(1);
} else {
_adrenalinePower = (_adrenalinePower - (5 * _adrenalineFactor));
_redMeter.gotoAndStop(Math.floor(_adrenalinePower));
};
} else {
if ((_adrenalinePower + (1 * _adrenalineFactor)) > 100){
_adrenalinePower = 100;
_redMeter.gotoAndStop(100);
} else {
_adrenalinePower = (_adrenalinePower + (1 * _adrenalineFactor));
_redMeter.gotoAndStop(Math.floor(_adrenalinePower));
};
};
processBoundaryCollisions();
processAndUpdateState();
processUnitAndHitCollisions();
cleanupShurikens();
}
private function cleanupShurikens():void{
var _local1:Number = 0;
while (_local1 < _allShurikens.length) {
if (_allShurikens[_local1].deactivated){
_allShurikens.splice(_local1, 1);
} else {
_local1++;
};
};
}
function frame818(){
stop();
}
public function get adrenalineFactor():Number{
return (_adrenalineFactor);
}
}
}//package
Section 58
//PlayerBody (PlayerBody)
package {
import flash.display.*;
public dynamic class PlayerBody extends MovieClip {
public var _beatingHeart:BeatingHeart;
public function PlayerBody(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 59
//PlayerFootFront (PlayerFootFront)
package {
import flash.display.*;
public dynamic class PlayerFootFront extends MovieClip {
public function PlayerFootFront(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 60
//PlayerFootSide (PlayerFootSide)
package {
import flash.display.*;
public dynamic class PlayerFootSide extends MovieClip {
public function PlayerFootSide(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 61
//PlayerHead (PlayerHead)
package {
import flash.display.*;
public dynamic class PlayerHead extends MovieClip {
public var _hb:HitBound;
public var _decorations:PlayerHeadDecorations;
public function PlayerHead(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 72, frame73);
}
function frame73(){
stop();
}
function frame1(){
stop();
}
function frame2(){
stop();
}
function frame3(){
stop();
}
function frame4(){
stop();
}
function frame5(){
stop();
}
}
}//package
Section 62
//PlayerHeadDecorations (PlayerHeadDecorations)
package {
import flash.display.*;
public dynamic class PlayerHeadDecorations extends MovieClip {
}
}//package
Section 63
//PreloadScreen (PreloadScreen)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class PreloadScreen extends MovieClip {
public var _preloadText:TextField;
private var _isActivated:Boolean;
private var _isInitialized:Boolean;
private var _callbacks:Object;
public function PreloadScreen():void{
_isInitialized = false;
_isActivated = false;
}
public function uninitialize():void{
if (!_isInitialized){
return;
};
_isInitialized = false;
deactivate();
_callbacks = null;
}
public function setCallbacks(_arg1:Object):void{
if (_arg1.preloadFinished != null){
_callbacks.preloadFinished = _arg1.preloadFinished;
};
}
public function deactivate():void{
if (!_isActivated){
return;
};
_isActivated = false;
parent.loaderInfo.removeEventListener(ProgressEvent.PROGRESS, loaderInfoProgressHandler);
}
public function initialize():void{
if (_isInitialized){
uninitialize();
};
_isInitialized = true;
_callbacks = new Object();
}
public function activate():void{
if (_isActivated){
return;
};
_isActivated = true;
parent.loaderInfo.addEventListener(ProgressEvent.PROGRESS, loaderInfoProgressHandler);
}
private function loaderInfoProgressHandler(_arg1:ProgressEvent):void{
var _local2:Number;
_local2 = ((_arg1.bytesLoaded / _arg1.bytesTotal) * 100);
_preloadText.text = (Math.ceil(_local2) + "%");
if (_local2 == 100){
_callbacks.preloadFinished();
};
}
}
}//package
Section 64
//RadioButton (RadioButton)
package {
import flash.display.*;
public dynamic class RadioButton extends MovieClip {
public function RadioButton(){
addFrameScript(0, frame1, 1, frame2);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
}
}//package
Section 65
//RedMeter (RedMeter)
package {
import flash.display.*;
public dynamic class RedMeter extends MovieClip {
}
}//package
Section 66
//SettingsWindow (SettingsWindow)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class SettingsWindow extends MovieClip {
public var _high:RadioButton;
public var _shurikensThrown:TextField;
public var _resumeGameButton:SettingsWindowResumeGameButton;
private var _toMenuScreenCallback:Function;
private var _stage:Stage;
public var _menuButton:ToMenuFromSettingsButton;
private var _documentMain:DocumentMain;
public var _medium:RadioButton;
public var _low:RadioButton;
private var _mouseListeningAssets:Array;
private var _stats:Object;
private var _keyListeningAssets:Array;
public var _accuracy:TextField;
public var _explanation:Explanation;
private var _unpauseCallback:Function;
public var _wavesSurvived:TextField;
public var _totalKnockouts:TextField;
public var _timeElapsed:TextField;
public function SettingsWindow(_arg1:Array, _arg2:Array, _arg3:Stage, _arg4:Function, _arg5:DocumentMain, _arg6:Object, _arg7:Function):void{
if (_arg3.quality == StageQuality.LOW){
_low.gotoAndStop("on");
_medium.gotoAndStop("off");
_high.gotoAndStop("off");
} else {
if (_arg3.quality == StageQuality.MEDIUM){
_low.gotoAndStop("off");
_medium.gotoAndStop("on");
_high.gotoAndStop("off");
} else {
_low.gotoAndStop("off");
_medium.gotoAndStop("off");
_high.gotoAndStop("on");
};
};
_stats = _arg6;
_toMenuScreenCallback = _arg7;
_timeElapsed.text = String(Math.floor((_arg6.secondsElapsed / 60)));
if ((_arg6.secondsElapsed % 60) < 10){
_timeElapsed.appendText(":0");
} else {
_timeElapsed.appendText(":");
};
_timeElapsed.appendText(String((_arg6.secondsElapsed % 60)));
_wavesSurvived.text = String(_arg6.wavesSurvived);
_totalKnockouts.text = String(_arg6.totalKnockouts);
_shurikensThrown.text = String(_arg6.shurikensThrown);
if (_arg6.shurikensThrown == 0){
_accuracy.text = "n/a";
} else {
_accuracy.text = (String((Math.floor((1000 * (_arg6.shurikensHit / _arg6.shurikensThrown))) / 10)) + "%");
};
if (_stats.shurikensHit > _stats.shurikensThrown){
_explanation.visible = true;
} else {
_explanation.visible = false;
};
_menuButton.buttonMode = true;
_resumeGameButton.buttonMode = true;
_documentMain = _arg5;
_mouseListeningAssets = _arg1;
_keyListeningAssets = _arg2;
_stage = _arg3;
_unpauseCallback = _arg4;
}
public function update():void{
_timeElapsed.text = String(Math.floor((_stats.secondsElapsed / 60)));
if ((_stats.secondsElapsed % 60) < 10){
_timeElapsed.appendText(":0");
} else {
_timeElapsed.appendText(":");
};
_timeElapsed.appendText(String((_stats.secondsElapsed % 60)));
_wavesSurvived.text = String(_stats.wavesSurvived);
_totalKnockouts.text = String(_stats.totalKnockouts);
_shurikensThrown.text = String(_stats.shurikensThrown);
if (_stats.shurikensThrown == 0){
_accuracy.text = "n/a";
} else {
_accuracy.text = (String((Math.floor((1000 * (_stats.shurikensHit / _stats.shurikensThrown))) / 10)) + "%");
};
if (_stats.shurikensHit > _stats.shurikensThrown){
_explanation.visible = true;
} else {
_explanation.visible = false;
};
}
public function mouseUpHandler(_arg1:MouseEvent):void{
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == 81){
this.resumeGame();
};
}
private function resumeGame():void{
_mouseListeningAssets.splice(_mouseListeningAssets.indexOf(this), 1);
_keyListeningAssets.splice(_keyListeningAssets.indexOf(this), 1);
parent.removeChild(this);
_stage.focus = _stage;
_unpauseCallback();
}
public function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.target == _resumeGameButton){
this.resumeGame();
} else {
if (_arg1.target == _menuButton){
MusicManager.stopCurrent();
_toMenuScreenCallback();
};
};
if (_arg1.target == _low){
stage.quality = StageQuality.LOW;
_low.gotoAndStop("on");
_medium.gotoAndStop("off");
_high.gotoAndStop("off");
} else {
if (_arg1.target == _medium){
stage.quality = StageQuality.MEDIUM;
_low.gotoAndStop("off");
_medium.gotoAndStop("on");
_high.gotoAndStop("off");
} else {
stage.quality = StageQuality.HIGH;
_low.gotoAndStop("off");
_medium.gotoAndStop("off");
_high.gotoAndStop("on");
};
};
}
public function updateMenuScreenCallback(_arg1:Function):void{
_toMenuScreenCallback = _arg1;
}
}
}//package
Section 67
//SettingsWindowResumeGameButton (SettingsWindowResumeGameButton)
package {
import flash.display.*;
public dynamic class SettingsWindowResumeGameButton extends MovieClip {
}
}//package
Section 68
//ShieldSound (ShieldSound)
package {
import flash.media.*;
public dynamic class ShieldSound extends Sound {
}
}//package
Section 69
//Shuriken (Shuriken)
package {
import flash.events.*;
import flash.display.*;
import flash.media.*;
import flash.geom.*;
public class Shuriken extends Unit {
private var _stuckCtr:Number;
private var _deflectedBy:Unit;
private var _decelerateAndFall:Boolean;
private var _vr:Number;
public var _surikenImage:SurikenImage;
private var _shieldSound:ShieldSound;
public var _shurikenMask:ShurikenMask;
private var _ctr:Number;
private var _listenerAdded:Boolean;
private var _deactivated:Boolean;
public static const ROTATION_SPEED:Number = 40;
public static const SPEED:Number = 40;
public function Shuriken(_arg1:Number, _arg2:Number):void{
_shieldSound = new ShieldSound();
_listenerAdded = false;
_ctr = 0;
_vx = (_arg1 * SPEED);
_vy = (_arg2 * SPEED);
_deactivated = false;
_stuckCtr = -1;
_damage = 1;
_decelerateAndFall = false;
if (_vx > 0){
_vr = ((ROTATION_SPEED + (Math.random() * 6)) - 3);
} else {
_vr = -(((ROTATION_SPEED + (Math.random() * 6)) - 3));
};
_hitBounds = this.getAllHitBounds(this);
}
public function get deflectedBy():Unit{
return (_deflectedBy);
}
public function update():void{
var _local1:Number;
if (_ctr > 60){
if (!_listenerAdded){
this.remove();
return;
};
} else {
_ctr = (_ctr + _player.adrenalineFactor);
};
this.x = (this.x + (_vx * _player.adrenalineFactor));
this.y = (this.y + (_vy * _player.adrenalineFactor));
this._surikenImage.rotation = (this._surikenImage.rotation + (_vr * _player.adrenalineFactor));
if ((((((((this.x < -200)) || ((this.x > (stage.stageWidth + 200))))) || ((((this.y < -200)) && ((this.y < (_player.y - 100))))))) || ((((this.y > (stage.stageHeight + 200))) && ((this.y > _player.y)))))){
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
_local1 = 0;
while (_local1 < _hitBounds.length) {
_playerHitAssets.splice(_playerHitAssets.indexOf(_hitBounds[_local1]), 1);
_local1++;
};
_deactivated = true;
};
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
while (_local2 < _hitBounds.length) {
_playerHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
public function remove():void{
parent.removeChild(this);
if (_allDynamicAssets.indexOf(this) != -1){
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
};
if (_scrollingAssets.indexOf(this) != -1){
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
};
var _local1:Number = 0;
while (_local1 < _hitBounds.length) {
if (_playerHitAssets.indexOf(_hitBounds[_local1]) != -1){
_playerHitAssets.splice(_playerHitAssets.indexOf(_hitBounds[_local1]), 1);
};
_local1++;
};
_deactivated = true;
}
private function enterFrameHandler(_arg1:Event):void{
if (_stuckCtr > 0){
if (_stuckCtr < 100){
this.alpha = (_stuckCtr / 100);
};
_stuckCtr--;
this.scaleX = (1 / Math.abs(parent.parent.scaleX));
this.scaleX = (this.scaleX / parent.scaleX);
this.scaleY = (1 / Math.abs(parent.parent.scaleY));
this.scaleY = (this.scaleY / parent.scaleY);
if (parent.parent.scaleX < 0){
this.scaleX = (this.scaleX * -1);
};
if (_decelerateAndFall){
this.x = (this.x + (_vx * _player.adrenalineFactor));
this.y = (this.y + (_vy * _player.adrenalineFactor));
this._surikenImage.rotation = (this._surikenImage.rotation + (_vr * _player.adrenalineFactor));
_vx = (_vx * (0.55 * _player.adrenalineFactor));
_vr = (_vr * (0.85 * _player.adrenalineFactor));
_vy = (_vy + 2);
_stuckCtr = (_stuckCtr - 9);
};
} else {
if (_scrollingAssets.indexOf(this) != -1){
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
};
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
parent.removeChild(this);
};
}
public function decelerateAndFall():void{
var _local1:Number;
_decelerateAndFall = true;
_deactivated = true;
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_local1 = 0;
while (_local1 < _hitBounds.length) {
_playerHitAssets.splice(_playerHitAssets.indexOf(_hitBounds[_local1]), 1);
_local1++;
};
_stuckCtr = 100;
_listenerAdded = true;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
public function stickTo(_arg1:MovieClip):void{
var _local2:Number;
var _local3:Point;
_stats.shurikensHit++;
parent.removeChild(this);
_arg1.addChild(this);
_local3 = _arg1.globalToLocal(new Point(this.x, this.y));
this.x = _local3.x;
this.y = _local3.y;
this.scaleX = (1 / Math.abs(parent.parent.scaleX));
this.scaleX = (this.scaleX / parent.scaleX);
this.scaleY = (1 / Math.abs(parent.parent.scaleY));
this.scaleY = (this.scaleY / parent.scaleY);
if (_arg1.parent.scaleX < 0){
this.scaleX = (this.scaleX * -1);
};
_deactivated = true;
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_scrollingAssets.splice(_scrollingAssets.indexOf(this), 1);
_local2 = 0;
while (_local2 < _hitBounds.length) {
_playerHitAssets.splice(_playerHitAssets.indexOf(_hitBounds[_local2]), 1);
_local2++;
};
if ((_arg1.parent is Enemy)){
if (_decelerateAndFall){
this.transform.colorTransform = new ColorTransform((2 / 0.7), (0.5 / 0.7), (0.5 / 0.7), 1, 0, 0, 0, 0);
} else {
this.transform.colorTransform = new ColorTransform((1 / 0.7), (1 / 0.7), (1 / 0.7), 1, 0, 0, 0, 0);
};
} else {
if ((_arg1.parent is Enemy2)){
if (_decelerateAndFall){
this.transform.colorTransform = new ColorTransform((2 / 0.9), (0.5 / 0.7), (0.5 / 0.7), 1, 0, 0, 0, 0);
} else {
this.transform.colorTransform = new ColorTransform((1 / 0.9), (1 / 0.7), (1 / 0.7), 1, 0, 0, 0, 0);
};
} else {
if ((_arg1.parent is Enemy3)){
if (_decelerateAndFall){
this.transform.colorTransform = new ColorTransform((2 / 0.7), (0.5 / 0.7), (0.5 / 0.9), 1, 0, 0, 0, 0);
} else {
this.transform.colorTransform = new ColorTransform((1 / 0.7), (1 / 0.7), (1 / 0.9), 1, 0, 0, 0, 0);
};
} else {
if ((_arg1.parent is Enemy4)){
if (_decelerateAndFall){
this.transform.colorTransform = new ColorTransform((2 / 0.7), (0.5 / 0.7), (0.5 / 0.7), 1, 0, 0, 0, 0);
} else {
this.transform.colorTransform = new ColorTransform((1 / 0.7), (1 / 0.7), (1 / 0.7), 1, 0, 0, 0, 0);
};
};
};
};
};
if (((((((((this.x - (this.width / 2)) > 0)) && (((this.x + (this.width / 2)) < _arg1.width)))) && (((this.y - (this.height / 2)) > 0)))) && (((this.y + (this.height / 2)) < _arg1.height)))){
if (Math.abs(_vx) > Math.abs(_vy)){
if (_vx > 0){
_shurikenMask.x = (_shurikenMask.x - (7 + (Math.random() * 3)));
} else {
_shurikenMask.x = (_shurikenMask.x + (7 + (Math.random() * 3)));
};
} else {
if (_vy > 0){
_shurikenMask.y = (_shurikenMask.y - (7 + (Math.random() * 3)));
} else {
_shurikenMask.y = (_shurikenMask.y + (7 + (Math.random() * 3)));
};
};
};
_stuckCtr = 150;
_listenerAdded = true;
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
}
public function deflect(_arg1:Unit):void{
var _local2:SoundChannel;
if (_deflectedBy == null){
_stats.shurikensHit++;
};
if (_deflectedBy != _arg1){
_local2 = _shieldSound.play();
_local2.soundTransform = new SoundTransform(MusicManager.getVolume(), 0);
_vx = (_vx * (-1 + (Math.random() * 0.4)));
_vy = (_vy * (-1 + (Math.random() * 0.4)));
_deflectedBy = _arg1;
};
}
public function get deactivated():Boolean{
return (_deactivated);
}
public function set vr(_arg1:Number):void{
_vr = _arg1;
}
public function get vr():Number{
return (_vr);
}
}
}//package
Section 70
//ShurikenMask (ShurikenMask)
package {
import flash.display.*;
public dynamic class ShurikenMask extends MovieClip {
}
}//package
Section 71
//SignPost (SignPost)
package {
import flash.display.*;
public dynamic class SignPost extends MovieClip {
public function SignPost(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4, 4, frame5, 5, frame6);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
function frame3(){
stop();
}
function frame4(){
stop();
}
function frame5(){
stop();
}
function frame6(){
stop();
}
}
}//package
Section 72
//SkipButton (SkipButton)
package {
import flash.display.*;
public dynamic class SkipButton extends MovieClip {
}
}//package
Section 73
//SlideFillerMask (SlideFillerMask)
package {
import flash.display.*;
public dynamic class SlideFillerMask extends MovieClip {
}
}//package
Section 74
//SliderBG (SliderBG)
package {
import flash.display.*;
public dynamic class SliderBG extends MovieClip {
}
}//package
Section 75
//SpeechBubble (SpeechBubble)
package {
import flash.display.*;
import flash.text.*;
public dynamic class SpeechBubble extends MovieClip {
public var _textField:TextField;
}
}//package
Section 76
//SpeechBubblePointer (SpeechBubblePointer)
package {
import flash.display.*;
public dynamic class SpeechBubblePointer extends MovieClip {
}
}//package
Section 77
//SpeedMonitor (SpeedMonitor)
package {
import flash.utils.*;
public class SpeedMonitor {
private static var _times:Object;
private static var _instantiated:Boolean;
public function SpeedMonitor(_arg1:Function){
throw (new Error("SpeedMonitor is a singleton; access through static methods"));
}
public static function startTimer(_arg1:String):void{
if (!_instantiated){
SpeedMonitor.instantiate();
};
if (_times[(_arg1 + "Start")] == null){
_times[(_arg1 + "Ctr")] = 0;
_times[(_arg1 + "Sum")] = 0;
};
_times[(_arg1 + "Start")] = getTimer();
}
public static function resetAverage(_arg1:String):void{
if (!_instantiated){
SpeedMonitor.instantiate();
};
if (_times[(_arg1 + "Start")] == null){
throw (new Error("resetAverage: id not recognized"));
};
_times[(_arg1 + "Ctr")] = 0;
_times[(_arg1 + "Sum")] = 0;
}
public static function getAverage(_arg1:String):Number{
if (!_instantiated){
SpeedMonitor.instantiate();
};
if (_times[(_arg1 + "Start")] == null){
throw (new Error("getAverage: id not recognized"));
};
return ((_times[(_arg1 + "Sum")] / _times[(_arg1 + "Ctr")]));
}
public static function endTimer(_arg1:String):void{
if (!_instantiated){
SpeedMonitor.instantiate();
};
if (_times[(_arg1 + "Start")] == null){
throw (new Error("endTimer: id not recognized"));
};
var _local2 = _times;
var _local3 = (_arg1 + "Ctr");
var _local4 = (_local2[_local3] + 1);
_local2[_local3] = _local4;
_times[(_arg1 + "Sum")] = (_times[(_arg1 + "Sum")] + (getTimer() - _times[(_arg1 + "Start")]));
}
private static function instantiate():void{
_instantiated = true;
_times = new Object();
}
}
}//package
Section 78
//SpiritSphere (SpiritSphere)
package {
public class SpiritSphere extends Unit {
private var _targetX:Number;
private var _targetY:Number;
public function SpiritSphere(_arg1:Number, _arg2:Number, _arg3:Number, _arg4:Number){
_targetX = _arg3;
_targetY = _arg4;
this.x = _arg1;
this.y = _arg2;
this.scaleX = (0.4 + (Math.random() * 0.4));
this.scaleY = this.scaleX;
this.alpha = 0.5;
var _local5:Number = (_targetX - this.x);
var _local6:Number = (_targetY - this.y);
var _local7:Number = Math.sqrt(((_local5 * _local5) + (_local6 * _local6)));
_vx = ((-(Math.random()) * 20) * (_local5 / _local7));
_vy = ((-(Math.random()) * 20) * (_local6 / _local7));
}
public function update():void{
this.x = (this.x + (_player.adrenalineFactor * _vx));
this.y = (this.y + (_player.adrenalineFactor * _vy));
var _local1:Number = (_targetX - this.x);
var _local2:Number = (_targetY - this.y);
if ((((Math.abs(_local1) <= Math.abs((_vx * 1.2)))) && ((Math.abs(_local2) <= Math.abs((_vy * 1.2)))))){
this.remove();
};
var _local3:Number = Math.sqrt(((_local1 * _local1) + (_local2 * _local2)));
if (_local3 < 100){
_vx = (_vx * (1 - (_player.adrenalineFactor * 0.35)));
_vy = (_vy * (1 - (_player.adrenalineFactor * 0.35)));
} else {
_vx = (_vx * (1 - (_player.adrenalineFactor * 0.05)));
_vy = (_vy * (1 - (_player.adrenalineFactor * 0.05)));
};
_vx = (_vx + (((_player.adrenalineFactor * 4) * _local1) / _local3));
_vy = (_vy + (((_player.adrenalineFactor * 4) * _local2) / _local3));
}
private function remove():void{
parent.removeChild(this);
_allDynamicAssets.splice(_allDynamicAssets.indexOf(this), 1);
_monsterMeter.adjustMeter(1);
}
}
}//package
Section 79
//StartAnchor (StartAnchor)
package {
import flash.display.*;
public dynamic class StartAnchor extends MovieClip {
}
}//package
Section 80
//StatsWindow (StatsWindow)
package {
import flash.events.*;
import flash.display.*;
import flash.text.*;
public class StatsWindow extends MovieClip {
private var _stage:Stage;
private var _originalVolume:Number;
public var _wavesSurvived:TextField;
private var _toMenuScreenCallback:Function;
public var _menuButton:ToMenuFromStatsButton;
public var _timeElapsed:TextField;
public var _accuracy:TextField;
public var _explanation:Explanation;
public var _totalKnockouts:TextField;
public var _shurikensThrown:TextField;
public function StatsWindow(_arg1:Stage, _arg2:Object, _arg3:Function):void{
_toMenuScreenCallback = _arg3;
_timeElapsed.text = String(Math.floor((_arg2.secondsElapsed / 60)));
if ((_arg2.secondsElapsed % 60) < 10){
_timeElapsed.appendText(":0");
} else {
_timeElapsed.appendText(":");
};
_timeElapsed.appendText(String((_arg2.secondsElapsed % 60)));
_wavesSurvived.text = String(_arg2.wavesSurvived);
_totalKnockouts.text = String(_arg2.totalKnockouts);
_shurikensThrown.text = String(_arg2.shurikensThrown);
if (_arg2.shurikensThrown == 0){
_accuracy.text = "n/a";
} else {
_accuracy.text = (String((Math.floor((1000 * (_arg2.shurikensHit / _arg2.shurikensThrown))) / 10)) + "%");
};
if (_arg2.shurikensHit > _arg2.shurikensThrown){
_explanation.visible = true;
} else {
_explanation.visible = false;
};
_stage = _arg1;
_menuButton.buttonMode = true;
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
if (_arg1.keyCode == 13){
_toMenuScreenCallback();
_stage.focus = _stage;
};
}
public function mouseUpHandler(_arg1:MouseEvent):void{
}
public function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.target == _menuButton){
_toMenuScreenCallback();
_stage.focus = _stage;
};
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
}
}
}//package
Section 81
//Status (Status)
package {
public class Status {
private var _stopLevitating:Boolean;
private var _beginLevitatingRight:Boolean;
private var _beginLevitatingUp:Boolean;
private var _levitatingLeft:Boolean;
private var _beginLevitating:Boolean;
private var _movingLeft:Boolean;
private var _sitting:Boolean;
private var _stopAttacking1:Boolean;
private var _facingLeft:Boolean;
private var _beginAttacking1:Boolean;
private var _facingRight:Boolean;
private var _beginThrowingShuriken:Boolean;
private var _stopSitting:Boolean;
private var _dying:Boolean;
private var _movingRight:Boolean;
private var _stopLevitatingLeft:Boolean;
private var _levitatingDown:Boolean;
private var _beginLevitatingLeft:Boolean;
private var _levitatingUp:Boolean;
private var _beginForcingAdrenaline:Boolean;
private var _stopMovingLeft:Boolean;
private var _movingDown:Boolean;
private var _stopLevitatingUp:Boolean;
private var _grounded:Boolean;
private var _throwingShuriken:Boolean;
private var _stopLevitatingDown:Boolean;
private var _beginFacingLeft:Boolean;
private var _stopMovingRight:Boolean;
private var _beginMovingLeft:Boolean;
private var _beginLevitatingDown:Boolean;
private var _forcingAdrenaline:Boolean;
private var _levitatingRight:Boolean;
private var _beginFacingRight:Boolean;
private var _beginSitting:Boolean;
private var _stunned:Boolean;
private var _adrenaline:Boolean;
private var _beginMovingRight:Boolean;
private var _levitating:Boolean;
private var _stopThrowingShuriken:Boolean;
private var _beginJumping:Boolean;
private var _stopForcingAdrenaline:Boolean;
private var _movingUp:Boolean;
private var _stopLevitatingRight:Boolean;
private var _attacking1:Boolean;
private var _blinking:Boolean;
public function Status():void{
_facingRight = false;
_facingLeft = false;
_movingRight = false;
_movingLeft = false;
_grounded = false;
_movingUp = false;
_movingDown = false;
_beginMovingRight = false;
_beginMovingLeft = false;
_beginJumping = false;
_stopMovingRight = false;
_stopMovingLeft = false;
_beginFacingRight = false;
_beginFacingLeft = false;
_beginAttacking1 = false;
_attacking1 = false;
_adrenaline = false;
_beginLevitating = false;
_levitating = false;
_stopLevitating = false;
_beginLevitatingLeft = false;
_beginLevitatingRight = false;
_stopLevitatingLeft = false;
_stopLevitatingRight = false;
_beginLevitatingUp = false;
_beginLevitatingDown = false;
_stopLevitatingUp = false;
_stopLevitatingDown = false;
_levitatingLeft = false;
_levitatingRight = false;
_levitatingUp = false;
_levitatingDown = false;
_stopAttacking1 = false;
_blinking = false;
_sitting = false;
_beginSitting = false;
_stopSitting = false;
_beginForcingAdrenaline = false;
_forcingAdrenaline = false;
_stopForcingAdrenaline = false;
_stunned = false;
_dying = false;
_beginThrowingShuriken = false;
_throwingShuriken = false;
_stopThrowingShuriken = false;
}
public function set(_arg1:Array):void{
var _local2:Number = 0;
while (_local2 < _arg1.length) {
if (this[("_" + _arg1[_local2])] == null){
trace(("state name not found: " + _arg1[_local2]));
};
this[("_" + _arg1[_local2])] = true;
_local2++;
};
}
public function get(_arg1:Array):Boolean{
var _local2:Number = 0;
while (_local2 < _arg1.length) {
if (this[("_" + _arg1[_local2])] == null){
trace(("state name not found: " + _arg1[_local2]));
};
if (this[("_" + _arg1[_local2])] == false){
return (false);
};
_local2++;
};
return (true);
}
public function clear(_arg1:Array):void{
var _local2:Number = 0;
while (_local2 < _arg1.length) {
if (this[("_" + _arg1[_local2])] == null){
trace(("state name not found: " + _arg1[_local2]));
};
this[("_" + _arg1[_local2])] = false;
_local2++;
};
}
}
}//package
Section 82
//Stick (Stick)
package {
public class Stick extends Unit {
private var _activated:Boolean;
public function Stick():void{
_hitBounds = this.getAllHitBounds(this);
}
public function get activated():Boolean{
return (_activated);
}
public function set activated(_arg1:Boolean):void{
this.activate();
}
public function activate():void{
_hitBounds = this.getAllHitBounds(this);
trace("activating stick");
}
override public function registerReferences(_arg1:Object):void{
super.registerReferences(_arg1);
var _local2:Number = 0;
while (_local2 < _hitBounds.length) {
_enemyHitAssets.push(_hitBounds[_local2]);
_local2++;
};
}
}
}//package
Section 83
//SurikenImage (SurikenImage)
package {
import flash.display.*;
public dynamic class SurikenImage extends MovieClip {
}
}//package
Section 84
//SurikenThrow (SurikenThrow)
package {
import flash.media.*;
public dynamic class SurikenThrow extends Sound {
}
}//package
Section 85
//SwingSound (SwingSound)
package {
import flash.media.*;
public dynamic class SwingSound extends Sound {
}
}//package
Section 86
//SwordSwing (SwordSwing)
package {
import flash.media.*;
public dynamic class SwordSwing extends Sound {
}
}//package
Section 87
//TimeMeter (TimeMeter)
package {
import flash.events.*;
import flash.display.*;
public class TimeMeter extends MovieClip {
private const MAX:Number = 433.9;
private const RANGE:Number = 417;
private const MIN:Number = 16.9;
private var _player:Player;
private var _dragTarget:MovieClip;
public var _marker2:TimeMeterMarker;
private var _dragOffsetX:Number;
public var _meterPointer:MeterPointer;
public var _timeMeterBar:TimeMeterBar;
public var _autoSlowMotionControl:AutoSlowMotionControl;
public var _marker1:TimeMeterMarker;
public var _marker3:TimeMeterMarker;
public function TimeMeter(_arg1:Player):void{
_player = _arg1;
_timeMeterBar.buttonMode = true;
_dragTarget = null;
_marker1.gotoAndStop(1);
_marker1.x = MIN;
_marker1.y = _timeMeterBar.y;
_marker1.buttonMode = true;
_marker2.gotoAndStop(2);
_marker2.x = 58.6;
_marker2.y = _timeMeterBar.y;
_marker2.buttonMode = true;
_marker3.gotoAndStop(3);
_marker3.x = MAX;
_marker3.y = _timeMeterBar.y;
_marker3.buttonMode = true;
_marker1.visible = false;
_marker2.visible = false;
_marker3.visible = false;
_meterPointer.x = _marker2.x;
_meterPointer.buttonMode = true;
_player.maxAdrenalineNumerator = this.getMaxAdrenalineNumerator();
_autoSlowMotionControl._autoSlowMotionButton.buttonMode = true;
_autoSlowMotionControl._autoSlowMotionButton.gotoAndStop("checked");
_player.autoAdrenaline = true;
if ((_meterPointer.x - MIN) > (RANGE / 2)){
_autoSlowMotionControl.targetX = (_autoSlowMotionControl.x = (MIN + 10));
} else {
_autoSlowMotionControl.targetX = (_autoSlowMotionControl.x = 244);
};
}
public function update():void{
var _local1:Number;
if (_dragTarget != null){
_dragTarget.x = (this.mouseX + _dragOffsetX);
if (_dragTarget.x < MIN){
_dragTarget.x = MIN;
} else {
if (_dragTarget.x > MAX){
_dragTarget.x = MAX;
};
};
if (_dragTarget == _meterPointer){
_local1 = 10;
if ((((((_dragTarget.x > (_marker1.x - 5))) && ((_dragTarget.x < (_marker1.x + 5))))) && ((Math.abs((_marker1.x - _dragTarget.x)) < _local1)))){
_dragTarget.x = _marker1.x;
_local1 = Math.abs((_marker1.x - _dragTarget.x));
} else {
if ((((((_dragTarget.x > (_marker2.x - 5))) && ((_dragTarget.x < (_marker2.x + 5))))) && ((Math.abs((_marker2.x - _dragTarget.x)) < _local1)))){
_dragTarget.x = _marker2.x;
_local1 = Math.abs((_marker2.x - _dragTarget.x));
} else {
if ((((((_dragTarget.x > (_marker3.x - 5))) && ((_dragTarget.x < (_marker3.x + 5))))) && ((Math.abs((_marker3.x - _dragTarget.x)) < _local1)))){
_dragTarget.x = _marker3.x;
_local1 = Math.abs((_marker3.x - _dragTarget.x));
};
};
};
_player.maxAdrenalineNumerator = this.getMaxAdrenalineNumerator();
};
};
if ((_meterPointer.x - MIN) > (RANGE / 2)){
_autoSlowMotionControl.targetX = (MIN + 10);
} else {
_autoSlowMotionControl.targetX = 244;
};
if (_autoSlowMotionControl.x != _autoSlowMotionControl.targetX){
_autoSlowMotionControl.x = (_autoSlowMotionControl.x + ((_autoSlowMotionControl.targetX - _autoSlowMotionControl.x) / 4));
if (Math.abs((_autoSlowMotionControl.x - _autoSlowMotionControl.targetX)) < 0.5){
_autoSlowMotionControl.x = _autoSlowMotionControl.targetX;
};
};
}
public function mouseUpHandler(_arg1:MouseEvent):void{
_dragTarget = null;
}
public function keyUpHandler(_arg1:KeyboardEvent):void{
}
public function mouseDownHandler(_arg1:MouseEvent):void{
if (_arg1.target == _meterPointer){
_dragTarget = _meterPointer;
_dragOffsetX = (_meterPointer.x - this.mouseX);
} else {
if (_arg1.target == _timeMeterBar){
_meterPointer.x = this.mouseX;
if (_meterPointer.x < MIN){
_meterPointer.x = MIN;
} else {
if (_meterPointer.x > MAX){
_meterPointer.x = MAX;
} else {
if ((((_meterPointer.x > 104.7)) && ((_meterPointer.x < 114.7)))){
_meterPointer.x = 109.7;
};
};
};
_player.maxAdrenalineNumerator = this.getMaxAdrenalineNumerator();
_dragTarget = _meterPointer;
_dragOffsetX = (_meterPointer.x - this.mouseX);
} else {
if (_arg1.target == _autoSlowMotionControl._autoSlowMotionButton){
if (_autoSlowMotionControl._autoSlowMotionButton.currentLabel == "unchecked"){
_autoSlowMotionControl._autoSlowMotionButton.gotoAndStop("checked");
_player.autoAdrenaline = true;
} else {
_autoSlowMotionControl._autoSlowMotionButton.gotoAndStop("unchecked");
_player.autoAdrenaline = false;
};
};
};
};
}
public function keyDownHandler(_arg1:KeyboardEvent):void{
}
public function getMaxAdrenalineNumerator():Number{
var _local1:Number;
_local1 = ((10 * (_meterPointer.x - MIN)) / RANGE);
if (_local1 < 0.1){
_local1 = 0.1;
} else {
if (_local1 > 9.9){
_local1 = 10000;
};
};
return (_local1);
}
}
}//package
Section 88
//TimeMeterBar (TimeMeterBar)
package {
import flash.display.*;
public dynamic class TimeMeterBar extends MovieClip {
}
}//package
Section 89
//TimeMeterMarker (TimeMeterMarker)
package {
import flash.display.*;
public dynamic class TimeMeterMarker extends MovieClip {
public function TimeMeterMarker(){
addFrameScript(0, frame1, 1, frame2, 2, frame3, 3, frame4);
}
function frame1(){
stop();
}
function frame2(){
stop();
}
function frame3(){
stop();
}
function frame4(){
stop();
}
}
}//package
Section 90
//ToMenuFromSettingsButton (ToMenuFromSettingsButton)
package {
import flash.display.*;
public dynamic class ToMenuFromSettingsButton extends MovieClip {
}
}//package
Section 91
//ToMenuFromStatsButton (ToMenuFromStatsButton)
package {
import flash.display.*;
public dynamic class ToMenuFromStatsButton extends MovieClip {
}
}//package
Section 92
//Trees (Trees)
package {
import flash.display.*;
public dynamic class Trees extends MovieClip {
}
}//package
Section 93
//TVOff (TVOff)
package {
import flash.media.*;
public dynamic class TVOff extends Sound {
}
}//package
Section 94
//TVOn (TVOn)
package {
import flash.media.*;
public dynamic class TVOn extends Sound {
}
}//package
Section 95
//Unit (Unit)
package {
import flash.events.*;
import flash.display.*;
public class Unit extends MovieClip {
protected const SLOPE_TOLERANCE:Number = 6;
protected var _player:Player;
private var _blinkCtr:Number;
protected var _virtualX:Number;
protected var _virtualY:Number;
protected var _damage:Number;
protected var _status:Status;
protected var _scrollingAssets:Array;
protected var _stats:Object;
protected var _hitBounds:Array;
protected var _currentStageData:Array;
protected var _monsterMeter:MonsterMeter;
protected var _frameData:Array;
protected var _stageData:Array;
protected var _healthMeter:HealthMeter;
protected var _playerHitAssets:Array;
protected var _allDynamicAssets:Array;
protected var _vx:Number;
protected var _vy:Number;
protected var _allEnemies:Array;
protected var _boundaries:MovieClip;
protected var _enemyHitAssets:Array;
protected var _isBlinking:Boolean;
protected var _health:Number;
protected var _stage:Stage;
public function Unit():void{
_vx = 0;
_vy = 0;
_status = new Status();
_isBlinking = false;
}
public function getFrameData(_arg1:MovieClip):Array{
var _local2:Array = new Array();
var _local3:Array = _arg1.currentLabels;
var _local4:Number = 0;
while (_local3.length > 0) {
if (_local4 < (_local3[0].frame - 1)){
_local2.push(((_local3[0].frame - _local4) - 1));
} else {
_local2.push(0);
_local3.shift();
};
_local4++;
};
return (_local2);
}
public function set vy(_arg1:Number):void{
_vy = _arg1;
}
public function registerReferences(_arg1:Object):void{
if (_arg1.boundaries != null){
_boundaries = _arg1.boundaries;
};
if (_arg1.playerHitAssets != null){
_playerHitAssets = _arg1.playerHitAssets;
};
if (_arg1.enemyHitAssets != null){
_enemyHitAssets = _arg1.enemyHitAssets;
};
if (_arg1.scrollingAssets != null){
_scrollingAssets = _arg1.scrollingAssets;
};
if (_arg1.allDynamicAssets != null){
_allDynamicAssets = _arg1.allDynamicAssets;
};
if (_arg1.stage != null){
_stage = _arg1.stage;
};
if (_arg1.healthMeter != null){
_healthMeter = _arg1.healthMeter;
};
if (_arg1.player != null){
_player = _arg1.player;
};
if (_arg1.stageData != null){
_stageData = _arg1.stageData;
};
if (_arg1.currentStageData != null){
_currentStageData = _arg1.currentStageData;
};
if (_arg1.monsterMeter != null){
_monsterMeter = _arg1.monsterMeter;
};
if (_arg1.allEnemies != null){
_allEnemies = _arg1.allEnemies;
};
if (_arg1.stats != null){
_stats = _arg1.stats;
};
}
public function set vx(_arg1:Number):void{
_vx = _arg1;
}
public function initializeFrameData():void{
_frameData = this.getFrameData(this);
}
public function get damage():Number{
return (_damage);
}
public function stopBlinking():void{
if (_isBlinking){
_isBlinking = false;
this.removeEventListener(Event.ENTER_FRAME, blink);
this.visible = true;
this.doneBlinking();
};
}
protected function doneBlinking():void{
}
public function get vy():Number{
return (_vy);
}
public function beginBlinking():void{
_isBlinking = true;
_blinkCtr = 0;
this.addEventListener(Event.ENTER_FRAME, blink);
}
public function get vx():Number{
return (_vx);
}
public function get health():Number{
return (_health);
}
private function blink(_arg1:Event):void{
if (_blinkCtr < 40){
if (this.visible == true){
this.visible = false;
} else {
this.visible = true;
};
_blinkCtr = (_blinkCtr + _player.adrenalineFactor);
} else {
_isBlinking = false;
this.visible = true;
this.removeEventListener(Event.ENTER_FRAME, blink);
this.doneBlinking();
};
}
public function get status():Status{
return (_status);
}
protected function getAllHitBounds(_arg1:MovieClip):Array{
var _local2:Array = new Array();
var _local3:Number = 0;
while (_local3 < _arg1.numChildren) {
if ((_arg1.getChildAt(_local3) is HitBound)){
_local2.push(_arg1.getChildAt(_local3));
_arg1.getChildAt(_local3).visible = false;
} else {
if ((_arg1.getChildAt(_local3) is MovieClip)){
_local2 = _local2.concat(this.getAllHitBounds(MovieClip(_arg1.getChildAt(_local3))));
};
};
_local3++;
};
return (_local2);
}
}
}//package
Section 96
//WarningMessage (WarningMessage)
package {
import flash.display.*;
public dynamic class WarningMessage extends MovieClip {
}
}//package
Section 97
//WeakSpotArrow (WeakSpotArrow)
package {
import flash.display.*;
public dynamic class WeakSpotArrow extends MovieClip {
}
}//package
Section 98
//WeakSpotMessage (WeakSpotMessage)
package {
import flash.display.*;
public dynamic class WeakSpotMessage extends MovieClip {
}
}//package
Section 99
//VolumeControl (VolumeControl)
package {
import flash.events.*;
import flash.display.*;
public class VolumeControl extends MovieClip {
const MIN_X:Number = 37.2;
const MAX_X:Number = 127.2;
public var _sliderBG:SliderBG;
public var _isActivated:Boolean;
public var _muteButton:MuteButton;
public var _slideFillerMask:SlideFillerMask;
public var _volumeMarker:VolumeMarker;
public var _muted:Boolean;
public var _unmutedVolume:Number;
public var _dragging:Boolean;
public function VolumeControl():void{
_muted = false;
_muteButton.gotoAndStop("on");
_isActivated = false;
_dragging = false;
_volumeMarker.buttonMode = true;
_volumeMarker.x = (MIN_X + (MusicManager.getVolume() * (MAX_X - MIN_X)));
_slideFillerMask.scaleX = ((_volumeMarker.x - MIN_X) / (MAX_X - MIN_X));
_muteButton.buttonMode = true;
_sliderBG.buttonMode = true;
}
public function enterFrameHandler(_arg1:Event):void{
if (this.mouseX < 2){
_volumeMarker.x = MIN_X;
mouseUpHandler(null);
} else {
if (this.mouseX > (this.width - 2)){
_volumeMarker.x = MAX_X;
mouseUpHandler(null);
} else {
if ((((this.mouseY < 2)) || ((this.mouseY > (this.height - 2))))){
mouseUpHandler(null);
} else {
if (this.mouseX < MIN_X){
_volumeMarker.x = MIN_X;
} else {
if (this.mouseX > MAX_X){
_volumeMarker.x = MAX_X;
} else {
_volumeMarker.x = this.mouseX;
};
};
};
};
};
MusicManager.setVolume(((_volumeMarker.x - MIN_X) / (MAX_X - MIN_X)));
_slideFillerMask.scaleX = ((_volumeMarker.x - MIN_X) / (MAX_X - MIN_X));
}
public function mouseUpHandler(_arg1:MouseEvent):void{
if (_dragging){
this.removeEventListener(Event.ENTER_FRAME, enterFrameHandler);
_dragging = false;
};
}
public function sliderBGMouseDownHandler(_arg1:MouseEvent):void{
volumeMarkerMouseDownHandler(_arg1);
}
public function activate():void{
if (!_isActivated){
_volumeMarker.addEventListener(MouseEvent.MOUSE_DOWN, volumeMarkerMouseDownHandler);
this.addEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
_muteButton.addEventListener(MouseEvent.CLICK, muteButtonClickHandler);
_sliderBG.addEventListener(MouseEvent.MOUSE_DOWN, sliderBGMouseDownHandler);
_isActivated = true;
if (MusicManager.getVolume() == 0){
_muted = true;
_unmutedVolume = 0.33;
_volumeMarker.x = MIN_X;
_slideFillerMask.scaleX = 0;
_muteButton.gotoAndStop("off");
} else {
_muted = false;
_volumeMarker.x = (MIN_X + (MusicManager.getVolume() * (MAX_X - MIN_X)));
_slideFillerMask.scaleX = ((_volumeMarker.x - MIN_X) / (MAX_X - MIN_X));
_muteButton.gotoAndStop("on");
};
};
}
public function muteButtonClickHandler(_arg1:MouseEvent):void{
if (_muted){
_muted = false;
MusicManager.setVolume(_unmutedVolume);
_volumeMarker.x = (MIN_X + (MusicManager.getVolume() * (MAX_X - MIN_X)));
_slideFillerMask.scaleX = ((_volumeMarker.x - MIN_X) / (MAX_X - MIN_X));
_muteButton.gotoAndStop("on");
} else {
_muted = true;
_unmutedVolume = MusicManager.getVolume();
MusicManager.setVolume(0);
_volumeMarker.x = MIN_X;
_slideFillerMask.scaleX = 0;
_muteButton.gotoAndStop("off");
};
}
public function volumeMarkerMouseDownHandler(_arg1:MouseEvent):void{
if (!_dragging){
this.addEventListener(Event.ENTER_FRAME, enterFrameHandler);
_dragging = true;
if (_muted){
_muted = false;
_muteButton.gotoAndStop("on");
};
};
}
public function deactivate():void{
if (_isActivated){
_volumeMarker.removeEventListener(MouseEvent.MOUSE_DOWN, volumeMarkerMouseDownHandler);
this.removeEventListener(MouseEvent.MOUSE_UP, mouseUpHandler);
_muteButton.removeEventListener(MouseEvent.CLICK, muteButtonClickHandler);
_sliderBG.removeEventListener(MouseEvent.MOUSE_DOWN, sliderBGMouseDownHandler);
_isActivated = false;
};
}
}
}//package
Section 100
//VolumeMarker (VolumeMarker)
package {
import flash.display.*;
public dynamic class VolumeMarker extends MovieClip {
}
}//package