STORY   LOOP   FURRY   PORN   GAMES
• C •   SERVICES [?] [R] RND   POPULAR
Archived flashes:
228075
/disc/ · /res/     /show/ · /fap/ · /gg/ · /swf/P0001 · P2560 · P5120

<div style="position:absolute;top:-99px;left:-99px;"><img src="http://swfchan.com:57475/58226541?noj=FRM58226541-30DC" width="1" height="1"></div>

Preview - Amber's Journey 3 DX by Doom-the-wolf.swf

This is the info page for
Flash #168105

(Click the ID number above for more basic data on this flash file.)


Text
-Music and sound effects
-Enemies and bosses
-Improved gameplay
-Other minor improvements
Estimated release date:
August 2015

http://doom-the-wolf.deviantart.com

PLAY

ActionScript [AS3]

Section 1
//Amber (amber3.Amber) package amber3 { import flash.media.*; import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; public class Amber extends Character { private var _lives:int; private var _oldY:Number; private var _fireballTimer:Number; private var _flyTimer:Number; private var _bellyMode:int; private var _invincibleTimer:Number; private var _modesUnlocked:int; private var _controller:Controller; private var _soundTransform:SoundTransform; private var _fireImage:Class; private var _isPaused:Boolean; private var _maxHealth:int; private var _sounds:Array; private var _platPos:Point; private var _pieces:int; private var _glow:Number; private var _health:int; private var _attackMode:int; private var _appleTimer:Number; private var _appleImage:Class; public var playerID:int; private var _currentSoundID:int; private var _platform:Platform; private var _recoveryTimer:Number; private var RANDOM_V:uint; private var RANDOM_W:uint; private var RANDOM_X:uint; private var RANDOM_Y:uint; private var _soundQueue:Array; private var _items:Number; private var RANDOM_Z:uint; private var _nextBellyMode:int; private var _fireballCount:int; private var _currentSound:SoundChannel; private var _oldX:Number; public static const WALL_BOUNCE_SPEED:int = 18; public static const ANIM_STAND:int = 1; public static const WATER_MULTIPLIER:Number = 0.5; public static const FLOATING:int = 11; private static const RUN_SOUND:int = 1; public static const DECELERATION:int = 4; private static const BELLY_ATTACK_SOUND:int = 12; public static const INVINCIBLE:int = 17; public static const MODE_DRAGON:int = 3; public static const WALK_SPEED:int = 8; public static const ANIM_ATTACK:int = 7; public static const SIDE_ATTACK:int = 3; public static const STOMP:String = "stomp"; public static const BELLY_DRAGON_JUMP_SPEED:Number = 22; public static const FLOAT:int = 8; private static const TRANSFORM_SOUND:int = 10; public static const ATTACK_BOUNCE_SPEED:Number = 26; public static const SEEK_PLAYER_1:String = "seekPlayer1"; private static const CRUSH_SOUND:int = 8; public static const MOVING:int = 3; public static const FLY:int = 16; public static const DAMAGE_TIMER:Number = 10; private static const GOLD_SOUND:int = 13; public static const FLOAT_SPEED:int = 8; public static const DEAD:String = "dead"; public static const CHANGING:int = 7; public static const ANIMATIONS_PER_MODE:int = 11; public static const DISABLED:int = 5; public static const ANIM_BOUNCE:int = 9; private static const BOUNCE_SOUND:int = 0; public static const ACCELERATION:int = 4; public static const ATTACKING:int = 6; public static const ANIM_STOMP:int = 7; public static const NO_ATTACK:int = 0; public static const THROWABLE_TIME:Number = 4; public static const SURFACE:int = 1; public static const FLYING:int = 15; public static const MODE_LIGHT_BELLY:int = 1; public static const ANIM_START:int = 0; public static const ANIM_FLOAT:int = 8; private static const INFLATE_SOUND:int = 3; public static const THROWABLE_LIFE:Number = 30; public static const THROW_HEIGHT:Number = 21; public static const PAUSE_GAME:String = "pauseGame"; private static const ITEM_SOUND:int = 4; private static const MAX_FIRE_BALLS:int = 8; public static const ONEWAY:int = 18; public static const DAMAGE_RECOVERY_TIMER:Number = 60; private static const WALL_BOUNCE_SOUND:int = 7; public static const CHANGE_MODE:String = "changeMode"; private static const FIRE_BALL_INTERVAL:Number = 1; public static const JUMP_SPEED:int = 26; public static const NUMBER_OF_MODES:int = 5; public static const ANIM_FALL:int = 5; public static const ANIM_CRUSH:int = 8; public static const ANIM_FILL:int = 7; public static const WATER:int = 14; public static const FRICTION:Number = 0.9; public static const LIFE:String = "life"; public static const ANIM_START_FIRE:int = 7; public static const MODE_NORMAL:int = 0; public static const WALL_BOUNCE_HEIGHT:int = 20; public static const ANIM_FROM_DRAGON:int = 8; public static const MAX_HORIZONTAL_VELOCITY:int = 24; public static const ANIM_THROW:int = 8; public static const JUMP_ONLY:int = 20; public static const ANIM_FLY:int = 9; public static const BOSS_ENCOUNTERED:String = "bossEncountered"; public static const COLLECT_ITEM:String = "collectItem"; public static const ANIM_WALK:int = 2; public static const FLY_SPEED:int = 5; public static const ANIM_RUN:int = 3; private static const MID_GLOW:int = 10; public static const BOUNCING:int = 9; public static const CRUSHING:int = 12; public static const ANIMATING:int = 13; public static const RUN_SPEED:int = 15; public static const DAMAGE_SPEED:Number = 10; public static const ANIM_DAMAGE:int = 6; public static const PROJECTILE_ATTACK:int = 1; public static const DIRECTION:int = 4; private static const STOMP_SOUND:int = 5; public static const THROW_SPEED:Number = 18; public static const JUMP_ATTACK:int = 2; public static const DAMAGE:String = "damage"; public static const INV_MAX_FLY_TIME:Number = 0.01; public static const GROUND:int = 0; public static const CHECKPOINT:String = "checkpoint"; public static const MODE_HEAVY_BELLY:int = 2; public static const CUTSCENE:int = 21; public static const ANIM_END:int = 10; private static const BREAK_SOUND:int = 6; public static const BELLY_DRAGON_RUN_SPEED:Number = 13; public static const ANIM_JUMP:int = 4; public static const RUNNING:int = 2; public static const ANIM_FIRE:int = 8; private static const FIRE_SOUND:int = 11; public static const ANIM_TO_DRAGON:int = 9; private static const MAX_GLOW:int = 12; public static const BOUNCE_SPEED:int = 39; public static const SWIM_SPEED:Number = 4; private static const DEFLATE_SOUND:int = 7; private static const TAIL_ATTACK_SOUND:int = 2; public static const MAX_FLY_TIME:int = 100; public static const MODE_BELLY_DRAGON:int = 4; public static const NO_REPEAT:int = 10; private static const HEAL_SOUND:int = 9; public static const MESSAGE:String = "message"; public static const VICTORY:String = "victory"; public static const RIGHT:int = 19; public static const LOSE_ITEM:String = "loseItem"; public static var RECORD:Boolean = false; public static var RECORD_X_OFFSET:int = 0; public static var RECORD_Y_OFFSET:int = 0; public static var RECORD_NAME:String = "frames"; public function Amber(_arg1:int, _arg2:int, _arg3:Class, _arg4:Controller){ super(_arg1, _arg2, _arg3); _type = "amber"; _controller = _arg4; _controller.addEventListener(ButtonEvent.BUTTON_DOWN, buttonDown, false, 0, true); _controller.addEventListener(ButtonEvent.BUTTON_UP, buttonUp, false, 0, true); _fireImage = null; _appleImage = null; _bellyMode = 0; _nextBellyMode = 0; _modesUnlocked = 0; _lives = 0; _items = 0; _health = 0; _maxHealth = 0; _pieces = 0; _platform = null; _platPos = null; _fireballCount = 0; _fireballTimer = 0; _appleTimer = 0; _attackMode = NO_ATTACK; _glow = -1; _flyTimer = -1; _invincibleTimer = -1; _recoveryTimer = -1; _isPaused = false; _oldX = 0; _oldY = 0; clip.attackbox.visible = false; playerID = 0; _sounds = [new BounceSound(), new RunSound(), new TailAttackSound(), new InflateSound(), new ItemSound(), new StompSound(), new BreakSound(), new DeflateSound(), new CrushSound(), new HealSound(), new TransformSound(), new FireSound(), new BellyAttackSound(), new GoldSound()]; _soundQueue = []; _currentSoundID = -1; _currentSound = null; _soundTransform = new SoundTransform(); RANDOM_X = 957462256; RANDOM_Y = 6363463525; RANDOM_Z = 1058206222; RANDOM_W = 65020508; RANDOM_V = 345072345; } public function get maxHealth():int{ return (_maxHealth); } public function buttonDown(_arg1:ButtonEvent){ var _local2:int; if (bit(CUTSCENE)){ return; }; if (((bit(DISABLED)) && (!((_arg1.button == Controller.BUTTON_START))))){ if (((bit(CHANGING)) && ((_arg1.button == Controller.BUTTON_B)))){ if ((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_END){ _bellyMode = _nextBellyMode; }; bitReset(CHANGING); bitReset(ANIMATING); bitReset(DISABLED); animate(ANIM_STAND); _glow = MAX_GLOW; makeSparkles(); dispatchEvent(new Event(CHANGE_MODE)); }; if (!((bit(JUMP_ONLY)) && ((_arg1.button == Controller.BUTTON_A)))){ return; }; }; if (((_isPaused) && (!((_arg1.button == Controller.BUTTON_START))))){ return; }; switch (_arg1.button){ case Controller.BUTTON_UP: break; case Controller.BUTTON_DOWN: break; case Controller.BUTTON_LEFT: if (((!(bit(GROUND))) && (!(bit(FLOATING))))){ clip.scaleX = -1; }; break; case Controller.BUTTON_RIGHT: if (((!(bit(GROUND))) && (!(bit(FLOATING))))){ clip.scaleX = 1; }; break; case Controller.BUTTON_A: if (bit(FLOATING)){ break; }; if (((bit(GROUND)) || (bit(WATER)))){ if (bellyMode == MODE_BELLY_DRAGON){ vY = -(BELLY_DRAGON_JUMP_SPEED); } else { vY = -(JUMP_SPEED); }; if (_controller.down(Controller.BUTTON_LEFT)){ clip.scaleX = -1; if (_controller.down(Controller.BUTTON_RIGHT)){ clip.scaleX = ((_v.x > 0)) ? 1 : -1; }; } else { if (_controller.down(Controller.BUTTON_RIGHT)){ clip.scaleX = 1; }; }; bitReset(GROUND); if (((((bit(ATTACKING)) && ((bellyMode == MODE_DRAGON)))) && (Boolean(((((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_START_FIRE)) || (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_FIRE))))))){ bitReset(DISABLED); bitReset(ANIMATING); bitReset(ATTACKING); }; if (bit(JUMP_ONLY)){ bitReset(DISABLED); bitReset(ANIMATING); bitReset(ATTACKING); bitReset(JUMP_ONLY); }; } else { if (bellyMode == MODE_LIGHT_BELLY){ animate(ANIM_BOUNCE); bitSet(ATTACKING); bitSet(BOUNCING); _attackMode = JUMP_ATTACK; } else { if (bellyMode == MODE_HEAVY_BELLY){ animate(ANIM_CRUSH); bitSet(ATTACKING); bitSet(CRUSHING); _attackMode = JUMP_ATTACK; } else { if (bellyMode == MODE_DRAGON){ if (((((!(bit(FLY))) && (!(bit(DISABLED))))) && (!(bit(CUTSCENE))))){ bitReset(DISABLED); bitReset(ANIMATING); bitSet(FLYING); bitSet(FLY); _flyTimer = MAX_FLY_TIME; animate(ANIM_FLY); _attackMode = NO_ATTACK; }; }; }; }; }; break; case Controller.BUTTON_B: if (bit(FLOATING)){ bitReset(FLOATING); playSound(DEFLATE_SOUND); break; }; if ((((bit(GROUND) | bit(WATER))) && (_controller.down(Controller.BUTTON_DOWN)))){ if (_modesUnlocked <= 1){ break; }; vX = 0; vY = 0; _nextBellyMode = ((_bellyMode + 1) % _modesUnlocked); if ((((_bellyMode == MODE_DRAGON)) && ((_nextBellyMode == MODE_BELLY_DRAGON)))){ bitSet(DISABLED); bitSet(ANIMATING); bitSet(CHANGING); _bellyMode = _nextBellyMode; animate(ANIM_FROM_DRAGON, false); playSound(TRANSFORM_SOUND, false); } else { if ((((_bellyMode == MODE_BELLY_DRAGON)) && ((_nextBellyMode == MODE_DRAGON)))){ bitSet(DISABLED); bitSet(ANIMATING); bitSet(CHANGING); animate(ANIM_TO_DRAGON, false); _bellyMode = _nextBellyMode; playSound(TRANSFORM_SOUND, false); } else { bitSet(DISABLED); bitSet(ANIMATING); bitSet(CHANGING); animate(ANIM_END, false); }; }; } else { if (((((!(bit(FLOAT))) && ((bellyMode == MODE_LIGHT_BELLY)))) && (_controller.down(Controller.BUTTON_UP)))){ if (!bit(FLOATING)){ vX = 0; vY = 0; animate(ANIM_FILL, false); bitSet(FLOAT); bitSet(FLOATING); bitSet(ANIMATING); bitSet(DISABLED); playSound(INFLATE_SOUND); }; } else { if ((((bellyMode == MODE_NORMAL)) && (_controller.down(Controller.BUTTON_UP)))){ if ((((_items > 0)) && (!(_appleTimer)))){ if (_controller.down(Controller.BUTTON_LEFT)){ clip.scaleX = -1; } else { if (_controller.down(Controller.BUTTON_RIGHT)){ clip.scaleX = 1; }; }; bitSet(DISABLED); bitSet(ANIMATING); bitSet(ATTACKING); animate(ANIM_THROW, false); _attackMode = PROJECTILE_ATTACK; _items--; }; } else { if (bellyMode == MODE_NORMAL){ if (_controller.down(Controller.BUTTON_LEFT)){ clip.scaleX = -1; } else { if (_controller.down(Controller.BUTTON_RIGHT)){ clip.scaleX = 1; }; }; if (bit(GROUND)){ }; bitSet(DISABLED); bitSet(JUMP_ONLY); bitSet(ANIMATING); bitSet(ATTACKING); animate(ANIM_ATTACK, false); playSound(TAIL_ATTACK_SOUND); _attackMode = SIDE_ATTACK; } else { if (bellyMode == MODE_HEAVY_BELLY){ if (_controller.down(Controller.BUTTON_LEFT)){ clip.scaleX = -1; } else { if (_controller.down(Controller.BUTTON_RIGHT)){ clip.scaleX = 1; }; }; if (((bit(GROUND)) && ((Math.abs(vX) <= RUN_SPEED)))){ }; bitSet(ANIMATING); bitSet(ATTACKING); animate(ANIM_ATTACK, false); _attackMode = SIDE_ATTACK; playSound(BELLY_ATTACK_SOUND); } else { if (bellyMode == MODE_DRAGON){ if (!bit(FLYING)){ _attackMode = PROJECTILE_ATTACK; bitSet(ANIMATING); bitSet(ATTACKING); animate(ANIM_START_FIRE, false); } else { bitSet(ATTACKING); }; }; }; }; }; }; }; break; case Controller.BUTTON_START: if (playerID > 0){ if (((!(bit(DISABLED))) && (!(bit(CUTSCENE))))){ dispatchEvent(new Event(SEEK_PLAYER_1)); }; } else { if (!bit(CUTSCENE)){ _isPaused = !(_isPaused); if (_isPaused){ stopSound(); }; dispatchEvent(new Event(PAUSE_GAME)); }; }; break; case Controller.BUTTON_C: if (_modesUnlocked <= 1){ break; }; if (!(bit(GROUND) | bit(WATER))){ break; }; _local2 = MODE_NORMAL; if (_controller.down(Controller.BUTTON_UP)){ _local2 = MODE_LIGHT_BELLY; } else { if (_controller.down(Controller.BUTTON_DOWN)){ _local2 = MODE_BELLY_DRAGON; } else { if (_controller.down(Controller.BUTTON_LEFT)){ _local2 = MODE_HEAVY_BELLY; } else { if (_controller.down(Controller.BUTTON_RIGHT)){ _local2 = MODE_DRAGON; }; }; }; }; bitReset(ANIMATING); bitReset(ATTACKING); quickChange(_local2); break; }; } public function get lives():int{ return (_lives); } public function set lives(_arg1:int){ _lives = _arg1; } public function transformTo(_arg1:int){ if (_arg1 >= modesUnlocked){ return; }; vX = 0; vY = 0; bitSet(DISABLED); bitSet(ANIMATING); bitSet(CHANGING); animate(ANIM_END, false); _nextBellyMode = _arg1; } public function enemyKilled(_arg1:Enemy){ dispatchEvent(new EnemyEvent(EnemyEvent.ENEMY_KILLED, _arg1)); } public function get fireImage():Class{ return (_fireImage); } override protected function updateFrame(){ var _local1:int; var _local2:int; _local1 = Math.floor(_time); _local2 = ((_animations[((_currentAnimation * 2) + 1)] - _animations[(_currentAnimation * 2)]) + 1); if (bit(NO_REPEAT)){ _local1 = Math.min(_local1, (_local2 - 1)); } else { _local1 = (_local1 % _local2); }; _clip.gotoAndStop((_animations[(_currentAnimation * 2)] + _local1)); } public function get soundTransform():SoundTransform{ var _local1:SoundTransform; _local1 = new SoundTransform(); _local1.leftToLeft = _soundTransform.leftToLeft; _local1.leftToRight = _soundTransform.leftToRight; _local1.pan = _soundTransform.pan; _local1.rightToLeft = _soundTransform.rightToLeft; _local1.rightToRight = _soundTransform.rightToRight; _local1.volume = _soundTransform.volume; return (_local1); } public function attackSprite(_arg1:GameSprite, _arg2:World):Boolean{ if (((((bit(ATTACKING)) && (Geometry.collide(getAttackPoints(), _arg1.getPoints(_arg2.timeSpeed))))) || ((((((_bellyMode == MODE_BELLY_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_RUN)))) && (Geometry.collide(getAttackPoints(), _arg1.getPoints(_arg2.timeSpeed))))))){ if (_arg1.type == "block"){ if ((_arg1 as Block).subtype == Block.CONTAINER_BLOCK){ hitContainer((_arg1 as Container), _arg2); } else { (_arg1 as Block).smash(_arg2); queueSound(BREAK_SOUND); }; } else { if (_arg1.type == "enemy"){ return (hitEnemy((_arg1 as Enemy), _arg2)); }; _arg2.removeSprite(_arg1); }; return (true); }; return (false); } public function hitContainer(_arg1:Container, _arg2:World){ _items = (_items + _arg1.numItems); dispatchEvent(new ItemEvent(COLLECT_ITEM, Item.COLLECTIBLE)); _arg1.smash(_arg2); queueSound(BREAK_SOUND); } public function get appleImage():Class{ return (_appleImage); } private function pseudoRandom():Number{ var _local1:uint; var _local2:Number; _local1 = (RANDOM_X ^ (RANDOM_X >> 7)); RANDOM_X = RANDOM_Y; RANDOM_Y = RANDOM_Z; RANDOM_Z = RANDOM_W; RANDOM_W = RANDOM_V; RANDOM_V = ((RANDOM_V ^ (RANDOM_V << 6)) ^ (_local1 ^ (_local1 << 13))); _local2 = (uint((((RANDOM_Y + RANDOM_Y) + 1) * RANDOM_V)) / Number(uint.MAX_VALUE)); return (_local2); } public function set controller(_arg1:Controller){ _controller.removeEventListener(ButtonEvent.BUTTON_DOWN, buttonDown); _controller.removeEventListener(ButtonEvent.BUTTON_UP, buttonUp); _controller = _arg1; _controller.addEventListener(ButtonEvent.BUTTON_DOWN, buttonDown, false, 0, true); _controller.addEventListener(ButtonEvent.BUTTON_UP, buttonUp, false, 0, true); } public function get pieces():int{ return (_pieces); } public function set appleImage(_arg1:Class){ _appleImage = _arg1; } public function get modesUnlocked():int{ return (_modesUnlocked); } public function set soundTransform(_arg1:SoundTransform){ _soundTransform.leftToLeft = _arg1.leftToLeft; _soundTransform.leftToRight = _arg1.leftToRight; _soundTransform.pan = _arg1.pan; _soundTransform.rightToLeft = _arg1.rightToLeft; _soundTransform.rightToRight = _arg1.rightToRight; _soundTransform.volume = _arg1.volume; } function playSound(_arg1:int, _arg2:Boolean=true){ var _local3:Sound; if (_arg2){ stopSound(); }; _local3 = _sounds[_arg1]; if (_arg2){ _currentSoundID = _arg1; _currentSound = _local3.play(0, 0, _soundTransform); _currentSound.addEventListener(Event.SOUND_COMPLETE, soundComplete, false, 0, true); } else { _local3.play(0, 0, _soundTransform); }; } public function reset(_arg1:Boolean=true){ _state = 0; if (_arg1){ _bellyMode = MODE_NORMAL; }; _clip.transform.colorTransform = new ColorTransform(); _time = 0; _platform = null; _platPos = null; _fireballCount = 0; _fireballTimer = 0; _appleTimer = 0; _glow = -1; _flyTimer = -1; _invincibleTimer = -1; _recoveryTimer = -1; _health = _maxHealth; vX = 0; vY = 0; animate(ANIM_STAND); } override public function getRect():Rectangle{ var _local1:MovieClip; var _local2:MovieClip; var _local3:Rectangle; var _local4:Rectangle; _local1 = _clip.hitbox; _local2 = _clip.attackbox; if ((((_local1 == null)) || ((_local2 == null)))){ throw ("Error in Character::getRect(). Property 'hitbox' or 'attackbox' not found in Character::clip"); }; _local3 = _local1.getRect(clip); _local4 = _local2.getRect(clip); if (clip.scaleX == -1){ _local3.x = (-(_local3.x) - _local3.width); _local4.x = (-(_local4.x) - _local4.width); }; _local3.x = (_local3.x + x); _local3.y = (_local3.y + y); _local4.x = (_local4.x + x); _local4.y = (_local4.y + y); return (_local3.union(_local4)); } public function get health():int{ return (_health); } public function collectItem(_arg1:Item, _arg2:World):Boolean{ if (!Geometry.collide(getStaticPoints(), _arg1.getPoints(_arg2.timeSpeed))){ return (false); }; switch (_arg1.subtype){ case Item.WATER: bitSet(WATER); bitReset(FLOAT); bitReset(FLY); break; case Item.COLLECTIBLE: _items++; dispatchEvent(new ItemEvent(COLLECT_ITEM, _arg1.subtype)); _arg2.removeSprite(_arg1); queueSound(ITEM_SOUND); break; case Item.RECOVERY: if (_health < _maxHealth){ _health++; } else { return (false); }; dispatchEvent(new ItemEvent(COLLECT_ITEM, _arg1.subtype)); _arg2.removeSprite(_arg1); queueSound(HEAL_SOUND); break; case Item.HEALTH: _pieces++; dispatchEvent(new ItemEvent(COLLECT_ITEM, _arg1.subtype)); _arg2.removeSprite(_arg1); queueSound(GOLD_SOUND); break; case Item.LIFE: _lives++; dispatchEvent(new Event(LIFE)); _arg2.removeSprite(_arg1); break; case Item.VICTORY: dispatchEvent(new Event(VICTORY)); break; case Item.CHECKPOINT: dispatchEvent(new CheckPointEvent(CHECKPOINT, _arg1.x, _arg1.y)); break; case Item.BOSS_EVENT: dispatchEvent(new Event(BOSS_ENCOUNTERED)); break; default: dispatchEvent(new ItemEvent(COLLECT_ITEM, _arg1.subtype)); break; }; return (true); } public function set modesUnlocked(_arg1:int){ _modesUnlocked = _arg1; } public function get collectibles():int{ return (Math.floor(_items)); } public function buttonUp(_arg1:ButtonEvent){ switch (_arg1.button){ case Controller.BUTTON_UP: break; case Controller.BUTTON_DOWN: break; case Controller.BUTTON_LEFT: break; case Controller.BUTTON_RIGHT: break; case Controller.BUTTON_A: if ((((bellyMode == MODE_LIGHT_BELLY)) && ((_currentAnimation == (ANIM_BOUNCE + (MODE_LIGHT_BELLY * ANIMATIONS_PER_MODE)))))){ bitReset(BOUNCING); bitReset(ATTACKING); _attackMode = NO_ATTACK; }; if ((((bellyMode == MODE_HEAVY_BELLY)) && ((_currentAnimation == (ANIM_CRUSH + (MODE_HEAVY_BELLY * ANIMATIONS_PER_MODE)))))){ bitReset(CRUSHING); bitReset(ATTACKING); _attackMode = NO_ATTACK; }; if (bellyMode == MODE_DRAGON){ bitReset(DISABLED); bitReset(FLYING); bitReset(ATTACKING); _flyTimer = -1; _attackMode = NO_ATTACK; }; break; case Controller.BUTTON_B: if (((bit(ATTACKING)) && ((bellyMode == MODE_DRAGON)))){ bitReset(DISABLED); bitReset(ANIMATING); bitReset(ATTACKING); _attackMode = NO_ATTACK; }; break; case Controller.BUTTON_START: break; }; } public function getAttackPoints():Array{ var _local1:MovieClip; var _local2:Rectangle; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; _local1 = _clip.attackbox; if (_local1 == null){ throw ("Error in Character::getAttackPoints(). Property 'attackbox' not found in Character::clip"); }; _local2 = _local1.getRect(clip); _local3 = ((_local2.x * clip.scaleX) + x); _local4 = (_local2.y + y); _local5 = Math.min((_local3 + (_local2.width * clip.scaleX)), _local3); _local6 = Math.max((_local3 + (_local2.width * clip.scaleX)), _local3); return ([new Point(_local5, _local4), new Point(_local6, _local4), new Point(_local6, (_local4 + _local2.height)), new Point(_local5, (_local4 + _local2.height))]); } public function bossKilled(_arg1:Enemy){ dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DEFEATED, _arg1)); } function queueSound(_arg1:int){ _soundQueue.push(_arg1); } public function set fireImage(_arg1:Class){ _fireImage = _arg1; } public function hitByEnemy(_arg1:Enemy, _arg2:World){ var _local3:Number; var _local4:Number; var _local5:Array; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Array; var _local10:Boolean; var _local11:Array; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Number; var _local16:int; var _local17:int; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; _local3 = 0.8; _local4 = 10; _local5 = getStaticPoints(); _local6 = (base.x - _arg1.base.x); _local7 = (base.y - _arg1.base.y); _local8 = Math.atan2(_local7, _local6); _local9 = []; _local10 = super.getRect().intersects(_arg1.getRect()); if (!_local10){ return; }; _local16 = _lives; _local14 = _local5[GROUND_POINT].y; _local12 = (_local5[LEFT_GROUND_POINT].y - vY); _local11 = _arg1.getStaticPoints(); _local15 = _local11[HEAD_POINT].y; _local13 = (_local11[HEAD_POINT].y - _arg1.vY); if (!_arg1.dangerous){ return; }; if (((((((((!(_arg1.jumpResistant)) && ((vY >= (_arg1.vY - 1))))) && ((_local14 >= (_local15 - 1))))) && ((_local12 <= (_local13 + 1))))) && (_arg1.solid))){ _local17 = _arg1.health; if (((!(_arg1.invincible)) && (_arg1.solid))){ _arg1.damage(this, _arg2); }; if (_arg1.health < _local17){ if (_arg1.boss){ if (!_arg1.health){ dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DEFEATED, _arg1)); } else { dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DAMAGED, _arg1)); }; } else { dispatchEvent(new EnemyEvent(EnemyEvent.ENEMY_KILLED, _arg1)); }; }; if (_bellyMode != MODE_BELLY_DRAGON){ _local18 = (_local11[HEAD_POINT].y - _local5[GROUND_POINT].y); y = (y + ((_local18)<0) ? _local18 : 0); vY = (-(ATTACK_BOUNCE_SPEED) + _arg1.vY); if (bit(BOUNCING)){ vY = -(BOUNCE_SPEED); playSound(BOUNCE_SOUND); }; bitReset(GROUND); bitReset(FLOAT); bitReset(FLY); }; } else { if (((((!(_arg1.hurt())) && (_arg1.solid))) && (damage()))){ vY = -(DAMAGE_SPEED); y--; if (_arg1.base.x < x){ vX = DAMAGE_SPEED; } else { vX = -(DAMAGE_SPEED); }; } else { if (((((_arg1.boss) && (_arg1.health))) && ((_lives < _local16)))){ _arg1.revive(); dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DAMAGED, _arg1)); }; if (_arg1.solid){ _local19 = Math.min((_local11[LEFT_GROUND_POINT].x - _local5[RIGHT_GROUND_POINT].x), 0); _local20 = Math.max((_local11[RIGHT_GROUND_POINT].x - _local5[LEFT_GROUND_POINT].x), 0); _local21 = Math.max((_local11[GROUND_POINT].y - _local5[HEAD_POINT].y)); if ((((((-(_local19) <= _local21)) || ((_local20 <= _local21)))) || (bit(GROUND)))){ if (-(_local19) < _local20){ _local22 = (_local19 * _local3); if (_local22 < -(_local4)){ _local22 = -(_local4); }; } else { _local22 = (_local20 * _local3); if (_local22 > _local4){ _local22 = _local4; }; }; x = (x + _local22); } else { if ((((_local21 > 0)) && (!(bit(GROUND))))){ y = (y + (_local21 * _local3)); vY = Math.max(vY, 0); }; }; }; }; }; } public function damage(_arg1:Boolean=false):Boolean{ if (((((bit(INVINCIBLE)) || (bit(CHANGING)))) || (bit(CUTSCENE)))){ return (false); }; _health--; _state = 0; _invincibleTimer = DAMAGE_RECOVERY_TIMER; _recoveryTimer = DAMAGE_TIMER; bitSet(INVINCIBLE); bitSet(DISABLED); bitReset(FLYING); bitReset(ATTACKING); _flyTimer = -1; bitReset(FLOATING); animate(ANIM_DAMAGE); if ((((_health <= 0)) || (_arg1))){ _lives--; dispatchEvent(new Event(DEAD)); return (false); }; dispatchEvent(new Event(DAMAGE)); _clip.transform.colorTransform = new ColorTransform(1, 0.5, 0.5, 1); return (true); } private function shootApple(_arg1:World){ var _local2:Projectile; _local2 = new Projectile(_appleImage, THROWABLE_LIFE, this, (_clip.attackbox.x * _clip.scaleX), _clip.attackbox.y); _local2.x = (x + (_clip.attackbox.x * clip.scaleX)); _local2.y = (y + _clip.attackbox.y); _local2.vX = (THROW_SPEED * clip.scaleX); _local2.vY = -(THROW_HEIGHT); _local2.depth = 1; _local2.linked = false; _local2.gravity = true; _arg1.addProjectile(_local2); _appleTimer = THROWABLE_TIME; dispatchEvent(new ItemEvent(LOSE_ITEM, Item.COLLECTIBLE)); } private function shootFireBall(_arg1:World){ var _local2:Array; var _local3:Number; var _local4:int; var _local5:Projectile; var _local6:Number; var _local7:Number; var _local8:Number; if (_fireballTimer > 0){ _fireballTimer = (_fireballTimer - _arg1.timeSpeed); return; }; _fireballTimer = (_fireballTimer + FIRE_BALL_INTERVAL); if (_fireballCount >= MAX_FIRE_BALLS){ return; }; _fireballCount++; _local2 = getStaticPoints(); _local3 = (_local2[GROUND_POINT].y - _local2[HEAD_POINT].y); _local4 = 8; _local5 = new Projectile(_fireImage, _local4, this, (_clip.attackbox.x * _clip.scaleX), _clip.attackbox.y); _local5.x = ((x + (_clip.attackbox.x * clip.scaleX)) + (pseudoRandom() * 2)); _local5.y = ((y + _clip.attackbox.y) + (pseudoRandom() * 2)); _local6 = (Math.PI * 0.45); _local7 = (_local3 / _local4); _local8 = (((Math.PI * 0.25) + (pseudoRandom() * _local6)) - (0.5 * _local6)); _local5.vX = ((Math.cos(_local8) * _local7) * clip.scaleX); _local5.vY = (Math.sin(_local8) * _local7); _local5.clip.scaleX = (_local5.clip.scaleX - (pseudoRandom() * 0.25)); _local5.clip.scaleY = _local5.clip.scaleX; _local5.depth = 1; _arg1.addProjectile(_local5); playSound(FIRE_SOUND); } public function get bellyMode():int{ return (_bellyMode); } public function get flyTimer():int{ return (_flyTimer); } public function bossDamaged(_arg1:Enemy){ dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DAMAGED, _arg1)); } public function get controller():Controller{ return (_controller); } function makeSparkles(){ var sparkle:MovieClip; var fade:Function; var points:Array; var p:Point; var rad:Number; var radMin:Number; var i:int; playSound(TRANSFORM_SOUND, false); fade = function (_arg1:Event){ var _local2:MovieClip; var _local3:ColorTransform; _local2 = (_arg1.currentTarget as MovieClip); _local2.x = (_local2.x + _local2.vX); _local2.y = (_local2.y + _local2.vY); _local2.rotation = (_local2.rotation + _local2.vR); _local2.vX = (_local2.vX * 0.98); _local2.vY = (_local2.vY * 0.98); _local2.vR = (_local2.vR * 0.99); _local2.shine = (_local2.shine * _local2.shineDivide); _local2.life--; _local3 = new ColorTransform(1, _local2.shine, 1); _local2.transform.colorTransform = _local3; if (_local2.life <= 0){ _local2.parent.removeChild(_local2); _local2.removeEventListener("enterFrame", _local2.myFunc); }; }; points = getStaticPoints(); p = new Point(); p.x = points[HEAD_POINT].x; p.y = ((points[HEAD_POINT].y * 0.5) + (points[GROUND_POINT].y * 0.5)); rad = (points[GROUND_POINT].y - points[HEAD_POINT].y); rad = (rad * 0.05); radMin = (rad * 0.2); i = 0; while (i < 20) { sparkle = new MovieClip(); sparkle.x = p.x; sparkle.y = p.y; sparkle.scaleX = ((1 + (Math.random() * 0.1)) - 0.05); sparkle.scaleY = sparkle.scaleX; sparkle.graphics.beginFill(0xFFFFFF); sparkle.graphics.moveTo(rad, 0); sparkle.graphics.lineTo(radMin, radMin); sparkle.graphics.lineTo(0, rad); sparkle.graphics.lineTo(-(radMin), radMin); sparkle.graphics.lineTo(-(rad), 0); sparkle.graphics.lineTo(-(radMin), -(radMin)); sparkle.graphics.lineTo(0, -(rad)); sparkle.graphics.lineTo(radMin, -(radMin)); sparkle.graphics.endFill(); sparkle.vX = ((Math.random() * 20) - 10); sparkle.vY = ((Math.random() * 20) - 10); sparkle.vR = ((Math.random() * 20) - 10); sparkle.life = 10; sparkle.shine = 1; sparkle.myFunc = fade; sparkle.shineDivide = (0.9 + (Math.random() * 0.09)); clip.parent.addChild(sparkle); sparkle.addEventListener("enterFrame", fade, false, 0, true); i = (i + 1); }; } public function hitEnemy(_arg1:Enemy, _arg2:World):Boolean{ if (((((((((((_arg1.jumpResistant) && ((_attackMode == JUMP_ATTACK)))) || (((_arg1.attackResistant) && ((_attackMode == SIDE_ATTACK)))))) || (((_arg1.fireResistant) && ((_attackMode == PROJECTILE_ATTACK)))))) || (!(((_arg1.dangerous) || (_arg1.solid)))))) || (_arg1.invincible))){ return (false); }; _arg1.damage(this, _arg2); if (_arg1.boss){ if (!_arg1.health){ dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DEFEATED, _arg1)); } else { dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_DAMAGED, _arg1)); }; } else { dispatchEvent(new EnemyEvent(EnemyEvent.ENEMY_KILLED, _arg1)); }; return (true); } override public function behaviour(_arg1:World){ var _local2:int; var _local3:Point; var _local4:Point; var _local5:Number; var _local6:Number; var _local7:Boolean; var _local8:int; var _local9:Array; var _local10:int; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:int; var _local17:Array; var _local18:GameSprite; var _local19:int; var _local20:Platform; var _local21:Point; var _local22:Point; var _local23:Number; var _local24:Array; var _local25:Number; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:int; var _local30:OneWayWall; var _local31:Array; var _local32:Array; var _local33:Array; var _local34:MessageBlock; var _local35:SpikeBlock; var _local36:Number; var _local37:Number; var _local38:int; var _local39:Number; var _local40:Number; var _local41:Boolean; var _local42:Number; var _local43:Array; var _local44:Number; var _local45:int; var _local46:Number; var _local47:int; var _local48:Point; var _local49:Point; var _local50:Number; var _local51:Point; var _local52:Number; var _local53:Number; var _local54:ColorTransform; _local2 = WALK_SPEED; bitReset(RUNNING); bitReset(MOVING); if (!bit(GROUND)){ if (!Boolean((((bellyMode == MODE_LIGHT_BELLY)) && (bit(WATER))))){ vY = (vY + (World.GRAVITY * _arg1.timeSpeed)); }; } else { if (_controller.down(Controller.BUTTON_B)){ bitSet(RUNNING); if (bellyMode == MODE_BELLY_DRAGON){ _local2 = BELLY_DRAGON_RUN_SPEED; } else { _local2 = RUN_SPEED; }; }; }; if (((((((!(bit(DISABLED))) && (!(bit(CUTSCENE))))) && (!(bit(FLOATING))))) || (bit(JUMP_ONLY)))){ if (_controller.down(Controller.BUTTON_LEFT)){ if (vX > -(_local2)){ vX = (vX - (ACCELERATION * _arg1.timeSpeed)); if (vX < -(_local2)){ vX = -(_local2); }; }; bitSet(MOVING); bitReset(DIRECTION); } else { if (_controller.down(Controller.BUTTON_RIGHT)){ if (vX < _local2){ vX = (vX + (ACCELERATION * _arg1.timeSpeed)); if (vX > _local2){ vX = _local2; }; }; bitSet(MOVING); bitSet(DIRECTION); }; }; }; if (bit(FLOATING)){ vY = -(FLOAT_SPEED); vX = 0; } else { if (((bit(WATER)) && ((bellyMode == MODE_LIGHT_BELLY)))){ if (vY >= (-(SWIM_SPEED) + 1)){ vY--; } else { if (vY > -(SWIM_SPEED)){ vY = -(SWIM_SPEED); }; }; }; }; _local3 = _p.clone(); if (bit(ONEWAY)){ if (bit(RIGHT)){ vX = Math.max(vX, 0); } else { vX = Math.min(vX, 0); }; }; _local4 = _v.clone(); _v.clone().x = (_local4.x * _arg1.timeSpeed); _local4.y = (_local4.y * _arg1.timeSpeed); if (bit(WATER)){ _local4.x = (_local4.x * WATER_MULTIPLIER); if ((((vY <= 0)) || (!((_bellyMode == MODE_BELLY_DRAGON))))){ _local4.y = (_local4.y * WATER_MULTIPLIER); }; }; _oldX = x; _oldY = y; if (_platform != null){ y = (_platform.y + 0.5); x = (x + (_platform.x - _platPos.x)); _platform = null; }; x = (x + _local4.x); y = (y + _local4.y); _local5 = _v.y; bitReset(ONEWAY); _local6 = bit(WATER); bitReset(WATER); _local7 = false; _local8 = getTimer(); _local9 = _arg1.hitSprites(this); _local10 = (getTimer() - _local8); _local11 = 0; _local12 = 0; if (_local10 > 40){ trace(("TIMEOUT:" + _local10)); }; _local13 = 0; _local14 = 0; _local15 = []; _local16 = 0; while (_local16 < _local9.length) { _local18 = _local9[_local16]; switch (_local18.type){ case "block": _local19 = Block(_local18).subtype; switch (true){ case (((_local19 == Block.GROUND_BLOCK)) && ((((((bellyMode == MODE_HEAVY_BELLY)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_CRUSH)))) || ((((bellyMode == MODE_BELLY_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_STOMP))))))): case (((((_local19 == Block.GROUND_BLOCK)) && ((bellyMode == MODE_HEAVY_BELLY)))) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_BOUNCE))): case (((((_local19 == Block.WALL_BLOCK)) && ((bellyMode == MODE_HEAVY_BELLY)))) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_ATTACK))): case (((_local19 == Block.CONTAINER_BLOCK)) && (Boolean((((((((((((((bellyMode == MODE_HEAVY_BELLY)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_ATTACK)))) || ((((bellyMode == MODE_HEAVY_BELLY)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_BOUNCE)))))) || ((((bellyMode == MODE_HEAVY_BELLY)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_CRUSH)))))) || ((((bellyMode == MODE_BELLY_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_STOMP)))))) || ((((bellyMode == MODE_NORMAL)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_ATTACK)))))) || ((((bellyMode == MODE_BELLY_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_RUN)))))))): if (attackSprite(_local18, _arg1)){ break; }; default: _local33 = hitBlock((_local18 as Block), _arg1, _oldX, _oldY); if (_local33.length){ if ((((((_local19 == Block.THIN_BLOCK)) && ((bellyMode == MODE_BELLY_DRAGON)))) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_RUN)))){ if (_local33[0].x == _local33[1].x){ if (attackSprite(_local18, _arg1)){ break; }; }; }; if (Block(_local18).subtype == Block.MESSAGE_BLOCK){ _local34 = MessageBlock(_local18); dispatchEvent(new MessageEvent(_local34.message)); } else { if (Block(_local18).subtype == Block.SPIKE_BLOCK){ _local35 = SpikeBlock(_local18); _local36 = ((Math.PI * 0.5) * _local35.orientation); _local37 = (Math.atan2((_local33[1].y - _local33[0].y), (_local33[1].x - _local33[0].x)) - (Math.PI * 0.5)); if (Geometry.angularDistance(_local36, _local37) >= (1 - Geometry.TOLERANCE)){ if (damage()){ _local38 = (_local35.positive * DAMAGE_SPEED); if (_local35.vertical){ vY = _local38; } else { vX = _local38; }; }; }; } else { if (Block(_local18).subtype == Block.FIRE_BLOCK){ if ((((bellyMode < MODE_DRAGON)) && (damage()))){ _local37 = (Math.atan2((_local33[1].y - _local33[0].y), (_local33[1].x - _local33[0].x)) - (Math.PI * 0.5)); vY = (Math.sin(_local37) * DAMAGE_SPEED); vX = (Math.cos(_local37) * DAMAGE_SPEED); }; } else { if (Block(_local18).subtype == Block.CONTAINER_BLOCK){ _local37 = (Math.atan2((_local33[1].y - _local33[0].y), (_local33[1].x - _local33[0].x)) - (Math.PI * 0.5)); if ((((Geometry.angularDistance((-(Math.PI) * 0.5), _local37) >= (1 - Geometry.TOLERANCE))) && ((vY >= 0)))){ hitContainer((_local18 as Container), _arg1); if (_bellyMode != MODE_BELLY_DRAGON){ y = (y + ((_local33[0].y - getStaticPoints()[GROUND_POINT].y) - 1)); vY = -(ATTACK_BOUNCE_SPEED); if (bit(BOUNCING)){ vY = -(BOUNCE_SPEED); playSound(BOUNCE_SOUND); }; bitReset(GROUND); bitReset(FLOAT); bitReset(FLY); }; _local33 = []; } else { if (((bit(ATTACKING)) && (Geometry.polygon2polygon(getAttackPoints(), (_local18 as Container).getPoints(_arg1.timeSpeed))))){ hitContainer((_local18 as Container), _arg1); _local33 = []; }; }; }; }; }; }; }; _local15 = _local15.concat(_local33); break; }; break; case "platform": _local20 = (_local18 as Platform); _local21 = new Point(_local20.x, _local20.y); _local22 = _local20.position((_arg1.time - _arg1.timeSpeed)); if (((_platform) && ((_platform.position(_arg1.time).y <= _local21.y)))){ break; }; _local23 = ((_local4.y + _local12) - (_local21.y - _local22.y)); _local24 = getStaticPoints(); if ((((_local24[LEFT_GROUND_POINT].x > (_local20.x + _local20.clip.width))) || ((_local24[RIGHT_GROUND_POINT].x < _local20.x)))){ break; }; _local25 = (Math.min(y, (_oldY - _local12)) - 1); _local26 = (Math.min(_local21.y, _local22.y) - 1); _local27 = (Math.max(y, (_oldY - _local12)) + 1); _local28 = (Math.max(_local21.y, _local22.y) + 1); if ((((_local27 >= _local26)) && ((_local25 <= _local28)))){ _platform = _local20; y = (_platform.y + 0.5); vY = Math.min(vY, 0); _platPos = _local21.clone(); _local15.push(new Point(_local21.x, _local21.y)); _local15.push(new Point((_local21.x + _platform.clip.width), _local21.y)); bitReset(FLYING); bitReset(FLY); _flyTimer = -1; }; break; case "item": collectItem(Item(_local18), _arg1); break; case "wind": if ((((((((((bellyMode == MODE_HEAVY_BELLY)) || ((bellyMode == MODE_BELLY_DRAGON)))) || (_local7))) || (!(hitSprite(_local18, _arg1.timeSpeed))))) || (!((_platform == null))))){ break; }; _local7 = true; _local29 = ((_local18 as Wind).positive * (_local18 as Wind).speed); if (Wind(_local18).vertical){ if ((((_local29 < 0)) || (!(bit(GROUND))))){ _local12 = (_local12 + _local29); y = (y + _local29); }; } else { _local11 = (_local11 + _local29); x = (x + _local29); }; break; case "oneway": _local30 = (_local18 as OneWayWall); _local31 = getStaticPoints(); _local32 = _local30.getPoints(_arg1.timeSpeed); if (_local31[HEAD_POINT].y > _local32[2].y){ break; }; if (_local31[GROUND_POINT].y < _local32[0].y){ break; }; if (_local31[LEFT_HEAD_POINT].x > _local32[2].x){ break; }; if (_local31[RIGHT_GROUND_POINT].x < _local32[0].x){ break; }; if (_local30.direction > 0){ bitSet(RIGHT); if (_local31[HEAD_POINT].x >= (_local30.x + Tile.TILE_HALF)){ _local15.push(new Point((_local30.x + Tile.TILE_HALF), _local30.y)); _local15.push(new Point((_local30.x + Tile.TILE_HALF), (_local30.y + Tile.TILE_HALF))); }; } else { bitReset(RIGHT); if (_local31[HEAD_POINT].x <= _local30.x){ _local15.push(new Point(_local30.x, (_local30.y + Tile.TILE_HALF))); _local15.push(new Point(_local30.x, _local30.y)); }; }; bitSet(ONEWAY); break; case "enemy": if (!attackSprite((_local18 as Enemy), _arg1)){ hitByEnemy((_local18 as Enemy), _arg1); }; break; default: break; }; _local16++; }; if (((_local6) && (!(bit(WATER))))){ if ((((vY >= -(SWIM_SPEED))) && ((vY < 0)))){ vY = 1; y++; bitSet(WATER); bitReset(FLOAT); bitReset(FLY); }; }; _local47 = 0; while (_local47 < _local15.length) { _local50 = (Math.atan2((_local15[1].y - _local15[0].y), (_local15[1].x - _local15[0].x)) - (Math.PI * 0.5)); _local39 = Math.cos(_local50); _local40 = Math.sin(_local50); if (_local39 < -(Geometry.TOLERANCE)){ vX = Math.min(vX, 0); } else { if (_local39 > Geometry.TOLERANCE){ vX = Math.max(vX, 0); }; }; if (_local40 < -(Geometry.TOLERANCE)){ vY = Math.min(vY, 0); } else { if (_local40 > Geometry.TOLERANCE){ vY = Math.max(vY, 0); }; }; _local47 = (_local47 + 2); }; _local17 = correct(_arg1, _local3); _local17 = _local17.concat(_local15); x = _local3.x; y = _local3.y; if (_local17.length){ _local41 = false; _local42 = Infinity; _local43 = []; _local44 = 0; _local45 = 0; _local46 = NaN; _local47 = 0; while (_local47 < _local17.length) { _local48 = _local17[_local47]; _local49 = _local17[(_local47 + 1)]; _local50 = Math.atan2((_local49.y - _local48.y), (_local49.x - _local48.x)); _local44 = (_local44 + _local50); _local45++; if (Math.cos(_local50) >= (Math.SQRT1_2 - Geometry.TOLERANCE)){ _local51 = Geometry.closestPointOnLine(base, _local48, _local49); if (((((((!(_platform)) || (!((_local48.x == _platPos.x))))) || (!((_local48.y == _platPos.y))))) || (!((_local49.y == _local48.y))))){ if (((isNaN(_local46)) || ((_local51.y < _local46)))){ _local46 = _local51.y; }; }; if (base.y <= (Math.max(_local48.y, _local49.y) + 4)){ _local41 = true; }; }; _local47 = (_local47 + 2); }; if (_local45){ _local44 = (_local44 / _local45); }; if (_local41){ if (bit(GROUND)){ } else { if (bit(BOUNCING)){ vY = -(BOUNCE_SPEED); playSound(BOUNCE_SOUND); } else { if (_recoveryTimer >= 0){ } else { if ((((((((bellyMode == MODE_BELLY_DRAGON)) && (!(bit(DISABLED))))) && (!(bit(CUTSCENE))))) && ((_local5 > 14)))){ bitSet(DISABLED); bitSet(ANIMATING); bitSet(ATTACKING); animate(ANIM_STOMP, false); dispatchEvent(new Event(STOMP)); _attackMode = JUMP_ATTACK; playSound(STOMP_SOUND, false); vX = (vY = 0); } else { if (_recoveryTimer >= 0){ _recoveryTimer = 0; }; vY = 0; }; }; }; if (bit(CRUSHING)){ vX = 0; bitReset(CRUSHING); bitSet(ANIMATING); bitSet(DISABLED); animate(ANIM_BOUNCE, false); playSound(CRUSH_SOUND); }; }; bitSet(GROUND); if (((_platform) && ((_local46 < _platPos.y)))){ y = (_local46 + 0.5); _platform = null; }; bitReset(FLOAT); bitReset(FLY); } else { if (bit(GROUND)){ } else { if (bit(BOUNCING)){ if (Math.abs(Geometry.angularDistance(_local44, (Math.PI * 0.5))) > (Math.SQRT1_2 - Geometry.TOLERANCE)){ if (Math.sin(_local44) > 0){ vX = WALL_BOUNCE_SPEED; clip.scaleX = 1; } else { vX = -(WALL_BOUNCE_SPEED); clip.scaleX = -1; }; vY = -(WALL_BOUNCE_HEIGHT); playSound(WALL_BOUNCE_SOUND, false); }; }; }; bitReset(GROUND); }; if (Geometry.angularDistance(_local44, -(Math.PI)) >= Math.SQRT1_2){ vY = Math.max(vY, 0); }; } else { if (bit(GROUND)){ _local52 = _arg1.highestSurfaceUnder(getStaticPoints(), _local4); if (((!(((bit(WATER)) && ((_bellyMode == MODE_LIGHT_BELLY))))) && (!(isNaN(_local52))))){ y = (y + _local52); } else { bitReset(GROUND); }; } else { bitReset(GROUND); }; }; if (bit(GROUND)){ if (((((bit(ANIMATING)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_ATTACK)))) && ((bellyMode == MODE_HEAVY_BELLY)))){ } else { if (!bit(MOVING)){ speed = (speed - ((Number((1 - FRICTION)) * _arg1.timeSpeed) * speed)); }; }; if (speed < (1 * _arg1.timeSpeed)){ _v.x = 0; _v.y = 0; }; }; if (vX > MAX_HORIZONTAL_VELOCITY){ vX = MAX_HORIZONTAL_VELOCITY; } else { if (vX < -(MAX_HORIZONTAL_VELOCITY)){ vX = -(MAX_HORIZONTAL_VELOCITY); }; }; if (vY > TERMINAL_VELOCITY){ vY = TERMINAL_VELOCITY; } else { if (vY < -(TERMINAL_VELOCITY)){ vY = -(TERMINAL_VELOCITY); }; }; if (_health <= 0){ animate(ANIM_DAMAGE); } else { if (_recoveryTimer >= 0){ } else { if (bit(BOUNCING)){ animate(ANIM_BOUNCE); } else { if (bit(CRUSHING)){ animate(ANIM_CRUSH); } else { if (bit(ANIMATING)){ if ((((_currentAnimation == (ANIM_ATTACK + (MODE_NORMAL * ANIMATIONS_PER_MODE)))) && (bit(GROUND)))){ }; if ((((((bellyMode == MODE_NORMAL)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_THROW)))) && ((clip.currentFrame == (_animations[(_currentAnimation * 2)] + 2))))){ shootApple(_arg1); }; if (bit(FLOATING)){ vX = 0; vY = 0; }; if (clip.currentFrame >= _animations[((_currentAnimation * 2) + 1)]){ if (bit(FLOATING)){ vY = -(FLOAT_SPEED); animate(ANIM_FLOAT); }; if (bit(CHANGING)){ if ((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_END){ _bellyMode = _nextBellyMode; animate(ANIM_START, false); playSound(TRANSFORM_SOUND, false); } else { if (((((((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_START)) || ((((_bellyMode == MODE_BELLY_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_FROM_DRAGON)))))) || ((((_bellyMode == MODE_DRAGON)) && ((_currentAnimation == (ANIM_TO_DRAGON + (ANIMATIONS_PER_MODE * MODE_BELLY_DRAGON)))))))){ bitReset(CHANGING); bitReset(ANIMATING); bitReset(DISABLED); dispatchEvent(new Event(CHANGE_MODE)); animate(ANIM_STAND); }; }; } else { if ((((bellyMode == MODE_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_START_FIRE)))){ animate(ANIM_FIRE); bitReset(ANIMATING); } else { bitReset(ANIMATING); bitReset(DISABLED); bitReset(JUMP_ONLY); bitReset(ATTACKING); _attackMode = NO_ATTACK; if (!bit(FLOATING)){ if (bit(GROUND)){ animate(ANIM_STAND); } else { animate(ANIM_FALL); }; }; }; }; }; } else { if (bit(ATTACKING)){ if ((((bellyMode == MODE_DRAGON)) && (((_currentAnimation % ANIMATIONS_PER_MODE) == ANIM_FIRE)))){ if (_controller.down(Controller.BUTTON_LEFT)){ clip.scaleX = -1; } else { if (_controller.down(Controller.BUTTON_RIGHT)){ clip.scaleX = 1; }; }; shootFireBall(_arg1); }; if ((((bellyMode == MODE_DRAGON)) && (bit(FLYING)))){ shootFireBall(_arg1); }; } else { if (bit(FLOATING)){ animate(ANIM_FLOAT); } else { if (bit(FLYING)){ animate(ANIM_FLY); } else { if (!bit(GROUND)){ if ((((vY < 0)) || (bit(WATER)))){ if ((((_bellyMode == MODE_BELLY_DRAGON)) && ((Math.abs(vX) > WALK_SPEED)))){ animate(ANIM_RUN); _attackMode = SIDE_ATTACK; } else { animate(ANIM_JUMP, false); }; } else { if ((((_bellyMode == MODE_BELLY_DRAGON)) && ((Math.abs(vX) > WALK_SPEED)))){ animate(ANIM_RUN); _attackMode = SIDE_ATTACK; } else { animate(ANIM_FALL, false); }; }; } else { if (vX > 0){ clip.scaleX = 1; } else { if (vX < 0){ clip.scaleX = -1; }; }; if (Math.abs(vX) > WALK_SPEED){ animate(ANIM_RUN); if (!_currentSound){ playSound(RUN_SOUND); }; if (_bellyMode == MODE_BELLY_DRAGON){ _attackMode = SIDE_ATTACK; } else { _attackMode = NO_ATTACK; }; } else { if (Math.abs(vX) > Geometry.TOLERANCE){ animate(ANIM_WALK); _attackMode = NO_ATTACK; } else { animate(ANIM_STAND); _attackMode = NO_ATTACK; }; }; }; }; }; }; }; }; }; }; }; if (_glow > -1){ if (_glow >= MID_GLOW){ _local53 = (1 - (Number((MID_GLOW - _glow)) / Number((MID_GLOW - MAX_GLOW)))); } else { _local53 = (1 - (Number((MID_GLOW - _glow)) / Number(MID_GLOW))); }; _local54 = new ColorTransform(1, 1, 1, 1, (_local53 * 0xFF), (_local53 * 0xFF), (_local53 * 0xFF), 0); clip.transform.colorTransform = _local54; _glow = (_glow - _arg1.timeSpeed); if (_glow <= -1){ _glow = -1; clip.transform.colorTransform = new ColorTransform(); }; }; if (((bit(FLYING)) && ((_flyTimer > -1)))){ vY = Math.min(vY, -(FLY_SPEED)); _flyTimer = (_flyTimer - _arg1.timeSpeed); if (_flyTimer < 0){ bitReset(FLYING); animate(ANIM_FALL); bitReset(ATTACKING); _flyTimer = -1; }; }; if (_invincibleTimer >= 0){ _local54 = _clip.transform.colorTransform; _clip.transform.colorTransform.redOffset = (_clip.transform.colorTransform.greenOffset = (_local54.blueOffset = (Number(((Math.cos((_invincibleTimer * 2)) * 0.5) + 0.5)) * 68))); _clip.transform.colorTransform = _local54; _invincibleTimer = (_invincibleTimer - _arg1.timeSpeed); if (_invincibleTimer < 0){ _invincibleTimer = -1; bitReset(INVINCIBLE); _clip.transform.colorTransform = new ColorTransform(); }; }; if (_recoveryTimer >= 0){ _recoveryTimer = (_recoveryTimer - _arg1.timeSpeed); if (_recoveryTimer < 0){ _recoveryTimer = -1; bitReset(DISABLED); _clip.transform.colorTransform = new ColorTransform(); }; }; if (_appleTimer > 0){ _appleTimer = (_appleTimer - _arg1.timeSpeed); if (_appleTimer < 0){ _appleTimer = 0; }; }; if (y > (Number((_arg1.maxY + 2)) * Tile.TILE_SIZE)){ bitReset(INVINCIBLE); vY = -(DAMAGE_SPEED); damage(true); }; updateFrame(); _time = (_time + _arg1.timeSpeed); if (RECORD){ trace((((((((((RECORD_NAME + ".push({x:") + int((x + RECORD_X_OFFSET)).toString()) + ",y:") + int((y + RECORD_Y_OFFSET)).toString()) + ",frame:") + _clip.currentFrame) + ",scaleX:") + _clip.scaleX) + "});")); }; if (_soundQueue.length){ playSound((_soundQueue.shift() as int), false); }; super.behaviour(_arg1); } public function set health(_arg1:int){ _health = _arg1; } public function set maxHealth(_arg1:int){ _maxHealth = _arg1; } function stopSound(){ if (_currentSound){ _currentSoundID = -1; _currentSound.stop(); _currentSound.removeEventListener(Event.SOUND_COMPLETE, soundComplete); _currentSound = null; }; } override public function getPoints(_arg1:Number):Array{ return (Geometry.getOuterPoints(getStaticPoints().concat(getAttackPoints()))); } override public function animate(_arg1:int, _arg2:Boolean=true){ super.animate((_arg1 + (bellyMode * ANIMATIONS_PER_MODE))); if (_arg2){ bitReset(NO_REPEAT); } else { bitSet(NO_REPEAT); }; } function soundComplete(_arg1:Event){ stopSound(); } public function removeFireBall(){ _fireballCount--; } override public function destroy(){ super.destroy(); if (_currentSound){ _currentSound.stop(); _currentSound.removeEventListener(Event.SOUND_COMPLETE, soundComplete); _currentSound = null; }; if (_controller){ _controller.removeEventListener(ButtonEvent.BUTTON_DOWN, buttonDown); _controller.removeEventListener(ButtonEvent.BUTTON_UP, buttonUp); _controller.destroy(); _controller = null; }; } public function quickChange(_arg1:int):Boolean{ if (!(bit(GROUND) | bit(WATER))){ return (false); }; if ((((_arg1 >= modesUnlocked)) || ((_arg1 == _bellyMode)))){ return (false); }; _bellyMode = _arg1; bitReset(CHANGING); bitReset(ANIMATING); bitReset(DISABLED); animate(ANIM_STAND); _glow = MAX_GLOW; makeSparkles(); dispatchEvent(new Event(CHANGE_MODE)); return (true); } } }//package amber3
Section 2
//AmberSound (amber3.AmberSound) package amber3 { import flash.media.*; import flash.events.*; import flash.utils.*; public class AmberSound { private var _channel:SoundChannel; private var _repeat:Boolean; private var _sound:Sound; private var _pauseTime:int; private var _repeatTime:int; private var _transform:SoundTransform; public function AmberSound(){ _sound = null; _channel = null; _transform = new SoundTransform(); _pauseTime = 0; _repeat = true; _repeatTime = 0; } public function stop(){ if (_channel){ _pauseTime = 0; _channel.stop(); _channel.removeEventListener(Event.SOUND_COMPLETE, soundComplete); _channel = null; }; } public function get repeatTime():int{ return (_repeatTime); } public function get soundTransform():SoundTransform{ var _local1:SoundTransform; _local1 = new SoundTransform(); _local1.leftToLeft = _transform.leftToLeft; _local1.leftToRight = _transform.leftToRight; _local1.pan = _transform.pan; _local1.rightToLeft = _transform.rightToLeft; _local1.rightToRight = _transform.rightToRight; _local1.volume = _transform.volume; return (_local1); } public function set repeatTime(_arg1:int){ _repeatTime = _arg1; } public function load(_arg1:String):Boolean{ var soundClass:Class; var str = _arg1; stop(); try { soundClass = (getDefinitionByName(str) as Class); if (!soundClass){ return (false); }; _sound = new (soundClass); } catch(E:Error) { unload(); return (false); }; return (true); } private function soundComplete(_arg1:Event){ _pauseTime = 0; _channel.stop(); _channel.removeEventListener(Event.SOUND_COMPLETE, soundComplete); _channel = null; if (_repeat){ _channel = _sound.play(_repeatTime, 0, _transform); _channel.addEventListener(Event.SOUND_COMPLETE, soundComplete, false, 0, true); }; } public function get playing():Boolean{ return (!((_channel == null))); } public function pause(){ if (_channel){ _pauseTime = _channel.position; _channel.stop(); _channel.removeEventListener(Event.SOUND_COMPLETE, soundComplete); _channel = null; }; } public function set soundTransform(_arg1:SoundTransform){ _transform.leftToLeft = _arg1.leftToLeft; _transform.leftToRight = _arg1.leftToRight; _transform.pan = _arg1.pan; _transform.rightToLeft = _arg1.rightToLeft; _transform.rightToRight = _arg1.rightToRight; _transform.volume = _arg1.volume; _channel.soundTransform = _transform; } public function play(_arg1:Boolean=true, _arg2:Boolean=true):Boolean{ if (!_sound){ return (false); }; _repeat = _arg1; if (((!((_channel == null))) && (!(_arg2)))){ return (true); }; stop(); _channel = _sound.play(_pauseTime, 0, _transform); _channel.addEventListener(Event.SOUND_COMPLETE, soundComplete, false, 0, true); return (true); } public function unload(){ stop(); _sound = null; _pauseTime = (_repeatTime = 0); } } }//package amber3
Section 3
//Block (amber3.Block) package amber3 { import flash.events.*; import flash.display.*; import flash.geom.*; public class Block extends Static { private var _subtype:int; private var _neighbors:Array; public static const PLANT_BLOCK:int = 2; public static const TOP:int = 0; public static const LEFT:int = 3; public static const THIN_BLOCK:int = 3; public static const CONTAINER_BLOCK:int = 7; public static const SPIKE_BLOCK:int = 6; public static const MESSAGE_BLOCK:int = 5; public static const BOSS_BLOCK:int = 8; public static const FIRE_BLOCK:int = 4; public static const DEFAULT_COLOR:Array = [8930321, 0x666666, 0x339900, 0xCCCCCC, 0xFF6600, 0xFF00FF, 14540287, 14527078]; public static const BOTTOM:int = 2; public static const GROUND_BLOCK:int = 0; public static const RIGHT:int = 1; public static const WALL_BLOCK:int = 1; public function Block(_arg1:int, _arg2:int, _arg3:int, _arg4:BitmapData=null, _arg5:int=-1){ var _local6:Bitmap; super(_arg1, _arg2, _arg4, _arg5); _neighbors = [null, null, null, null]; _type = "block"; _subtype = _arg3; if (_clip.numChildren){ _local6 = (_clip.getChildAt(0) as Bitmap); (_clip.getChildAt(0) as Bitmap).width = (_local6.height = Tile.TILE_HALF); } else { _clip.graphics.beginFill(DEFAULT_COLOR[subtype]); _clip.graphics.drawRect(0, 0, Tile.TILE_HALF, Tile.TILE_HALF); }; } public function get subtype():int{ return (_subtype); } override public function getPoints(_arg1:Number):Array{ return ([new Point(_p.x, _p.y), new Point((_p.x + Tile.TILE_HALF), _p.y), new Point((_p.x + Tile.TILE_HALF), (_p.y + Tile.TILE_HALF)), new Point(_p.x, (_p.y + Tile.TILE_HALF))]); } public function smash(_arg1:World){ var i:int; var bmpData:BitmapData; var mat:Matrix; var corner1:MovieClip; var corner2:MovieClip; var corner3:MovieClip; var corner4:MovieClip; var cen:Point; var fallTime:int; var fall:Function; var world = _arg1; i = 0; while (i < 4) { if (_neighbors[i]){ _neighbors[i].setNeighbor(((i + 2) % 4), null); _neighbors[i] = null; }; i = (i + 1); }; bmpData = world.getBitmapByID(_bitmapID); corner1 = new MovieClip(); corner2 = new MovieClip(); corner3 = new MovieClip(); corner4 = new MovieClip(); cen = new Point((_p.x + (Tile.TILE_SIZE * 0.125)), (_p.y + (Tile.TILE_SIZE * 0.125))); fallTime = 20; fall = function (_arg1:Event){ var _local2:MovieClip; _local2 = MovieClip(_arg1.currentTarget); _local2.x = (_local2.x + _local2.vX); _local2.y = (_local2.y + _local2.vY); _local2.vY = (_local2.vY + 2); _local2.timer--; if (_local2.timer <= 0){ _local2.removeEventListener("enterFrame", _local2.fun); if (_local2.parent){ _local2.parent.removeChild(_local2); }; }; }; if (((!(clip.parent)) || (!(bmpData)))){ world.removeSprite(this); return; }; mat = new Matrix(); mat.scale(((Tile.TILE_SIZE * 0.5) / bmpData.width), ((Tile.TILE_SIZE * 0.5) / bmpData.height)); corner1.graphics.beginBitmapFill(bmpData, mat, false, false); corner1.graphics.drawRect(0, 0, (Tile.TILE_SIZE * 0.25), (Tile.TILE_SIZE * 0.25)); corner1.graphics.endFill(); corner1.x = _p.x; corner1.y = _p.y; corner1.vX = (corner1.x - cen.x); corner1.vY = (corner1.y - cen.y); corner1.timer = fallTime; corner1.fun = fall; corner1.addEventListener("enterFrame", fall, false, 0, true); clip.parent.addChild(corner1); mat = new Matrix(); mat.scale(((Tile.TILE_SIZE * 0.5) / bmpData.width), ((Tile.TILE_SIZE * 0.5) / bmpData.height)); mat.translate((-(Tile.TILE_SIZE) * 0.25), 0); corner2.graphics.beginBitmapFill(bmpData, mat, false, false); corner2.graphics.drawRect(0, 0, (Tile.TILE_SIZE * 0.25), (Tile.TILE_SIZE * 0.25)); corner2.graphics.endFill(); corner2.x = (_p.x + (Tile.TILE_SIZE * 0.25)); corner2.y = _p.y; corner2.vX = (corner2.x - cen.x); corner2.vY = (corner2.y - cen.y); corner2.timer = fallTime; corner2.fun = fall; corner2.addEventListener("enterFrame", fall, false, 0, true); clip.parent.addChild(corner2); mat = new Matrix(); mat.scale(((Tile.TILE_SIZE * 0.5) / bmpData.width), ((Tile.TILE_SIZE * 0.5) / bmpData.height)); mat.translate((-(Tile.TILE_SIZE) * 0.25), (-(Tile.TILE_SIZE) * 0.25)); corner3.graphics.beginBitmapFill(bmpData, mat, false, false); corner3.graphics.drawRect(0, 0, (Tile.TILE_SIZE * 0.25), (Tile.TILE_SIZE * 0.25)); corner3.graphics.endFill(); corner3.x = (_p.x + (Tile.TILE_SIZE * 0.25)); corner3.y = (_p.y + (Tile.TILE_SIZE * 0.25)); corner3.vX = (corner3.x - cen.x); corner3.vY = (corner3.y - cen.y); corner3.timer = fallTime; corner3.fun = fall; corner3.addEventListener("enterFrame", fall, false, 0, true); clip.parent.addChild(corner3); mat = new Matrix(); mat.scale(((Tile.TILE_SIZE * 0.5) / bmpData.width), ((Tile.TILE_SIZE * 0.5) / bmpData.height)); mat.translate(0, (-(Tile.TILE_SIZE) * 0.25)); corner4.graphics.beginBitmapFill(bmpData, mat, false, false); corner4.graphics.drawRect(0, 0, (Tile.TILE_SIZE * 0.25), (Tile.TILE_SIZE * 0.25)); corner4.graphics.endFill(); corner4.x = _p.x; corner4.y = (_p.y + (Tile.TILE_SIZE * 0.25)); corner4.vX = (corner4.x - cen.x); corner4.vY = (corner4.y - cen.y); corner4.timer = fallTime; corner4.fun = fall; corner4.addEventListener("enterFrame", fall, false, 0, true); clip.parent.addChild(corner4); world.removeSprite(this); } public function getNeighbor(_arg1:int):Block{ if ((((_arg1 < 0)) || ((_arg1 >= 4)))){ return (null); }; return (_neighbors[_arg1]); } public function setNeighbor(_arg1:int, _arg2:Block){ if ((((_arg1 < 0)) || ((_arg1 >= 4)))){ return; }; _neighbors[_arg1] = _arg2; } override public function redraw(_arg1:World){ var _local2:Bitmap; super.redraw(_arg1); if (_clip.numChildren){ _clip.graphics.clear(); _local2 = (_clip.getChildAt(0) as Bitmap); _local2.width = (_local2.height = Tile.TILE_HALF); } else { _clip.graphics.clear(); _clip.graphics.beginFill(DEFAULT_COLOR[subtype]); _clip.graphics.drawRect(0, 0, Tile.TILE_HALF, Tile.TILE_HALF); }; } } }//package amber3
Section 4
//ButtonEvent (amber3.ButtonEvent) package amber3 { import flash.events.*; public class ButtonEvent extends Event { private var _button:int; public static const BUTTON_UP:String = "buttonUp"; public static const BUTTON_DOWN:String = "buttonDown"; public function ButtonEvent(_arg1:String, _arg2:int){ super(_arg1); _button = _arg2; } public function get button():int{ return (_button); } } }//package amber3
Section 5
//Character (amber3.Character) package amber3 { import flash.display.*; import flash.geom.*; public class Character extends GameSprite { protected var _animations:Array; protected var _state:int; protected var _time:Number; protected var _currentAnimation:int; protected var _record:Array; protected var _recording:Boolean; protected var _v:Point; public static const BLOCK_MARGIN:Number = 1; public static const TERMINAL_VELOCITY:int = 40; public static const LEFT_GROUND_POINT:int = 3; public static const LEFT_HEAD_POINT:int = 2; public static const SURFACE_DEPTH:Number = 0.99; public static const RIGHT_HEAD_POINT:int = 4; public static const HEAD_POINT:int = 0; public static const RIGHT_GROUND_POINT:int = 5; public static const GROUND_POINT:int = 1; public function Character(_arg1:int, _arg2:int, _arg3:Class){ super(_arg1, _arg2); _type = "character"; _clip = new (_arg3); _clip.stop(); _clip.x = x; _clip.y = y; _animations = [1, 1]; _currentAnimation = 0; _time = 0; _v = new Point(); if (clip.hitbox){ clip.hitbox.visible = false; }; _recording = false; _record = []; } public function get recording():Boolean{ return (_recording); } public function set recording(_arg1:Boolean){ _recording = _arg1; } public function set direction(_arg1:Number){ var _local2:Number; _local2 = speed; _v.x = (Math.cos(_arg1) * _local2); _v.y = (Math.sin(_arg1) * _local2); } public function get currentAnimation():int{ return (_currentAnimation); } public function get currentFrame():int{ return (_clip.currentFrame); } public function bit(_arg1:int):int{ return ((_state & int((1 << _arg1)))); } protected function correct(_arg1:World, _arg2:Point):Array{ var _local3:Point; var _local4:Boolean; var _local5:Array; var _local6:int; var _local7:Point; var _local8:int; var _local9:Point; var _local10:Point; var _local11:Number; var _local12:Number; var _local13:Point; var _local14:Point; var _local15:Array; var _local16:Array; var _local17:Array; _local3 = _p.clone(); _local4 = true; _local5 = []; _local6 = 32; _arg2.x = _p.x; _arg2.y = _p.y; _local15 = []; while (((_local4) && ((_local6 > 0)))) { _local16 = getStaticPoints(); _local17 = _arg1.hitSurfaces(_local16); _local4 = false; _local7 = _local16[LEFT_HEAD_POINT]; _local8 = 0; while (_local8 < _local17.length) { _local9 = _local17[_local8]; _local10 = _local17[(_local8 + 1)]; _local11 = Math.atan2((_local10.y - _local9.y), (_local10.x - _local9.x)); _local12 = (_local11 - (Math.PI * 0.5)); if (Geometry.angularDistance(_local12, 0) >= 0.01){ _local14 = movePointUnder(_local7, _local9, _local10, _local15); if (_local14 != null){ _local13 = _local14.subtract(_local7); _local13.normalize((Point.distance(_local14, _local7) - (SURFACE_DEPTH * 0))); _p.x = (_p.x + _local13.x); _p.y = (_p.y + _local13.y); _local4 = true; insertSurface(_local15, _local9, _local10); break; }; }; _local8 = (_local8 + 2); }; if (_local4){ _local6--; } else { _local7 = _local16[LEFT_GROUND_POINT]; _local8 = 0; while (_local8 < _local17.length) { _local9 = _local17[_local8]; _local10 = _local17[(_local8 + 1)]; _local11 = Math.atan2((_local10.y - _local9.y), (_local10.x - _local9.x)); _local12 = (_local11 - (Math.PI * 0.5)); if (Geometry.angularDistance(_local12, 0) >= 0.01){ _local14 = movePointUnder(_local7, _local9, _local10, _local15); if (_local14 != null){ _local13 = _local14.subtract(_local7); _local13.normalize((Point.distance(_local14, _local7) - (SURFACE_DEPTH * 0))); _p.x = (_p.x + _local13.x); _p.y = (_p.y + _local13.y); _local4 = true; insertSurface(_local15, _local9, _local10); break; }; }; _local8 = (_local8 + 2); }; if (_local4){ _local6--; } else { _local7 = _local16[RIGHT_HEAD_POINT]; _local8 = 0; while (_local8 < _local17.length) { _local9 = _local17[_local8]; _local10 = _local17[(_local8 + 1)]; _local11 = Math.atan2((_local10.y - _local9.y), (_local10.x - _local9.x)); _local12 = (_local11 - (Math.PI * 0.5)); if (Geometry.angularDistance(_local12, Math.PI) >= 0.01){ _local14 = movePointUnder(_local7, _local9, _local10, _local15); if (_local14 != null){ _local13 = _local14.subtract(_local7); _local13.normalize((Point.distance(_local14, _local7) - (SURFACE_DEPTH * 0))); _p.x = (_p.x + _local13.x); _p.y = (_p.y + _local13.y); _local4 = true; insertSurface(_local15, _local9, _local10); break; }; }; _local8 = (_local8 + 2); }; if (_local4){ _local6--; } else { _local7 = _local16[RIGHT_GROUND_POINT]; _local8 = 0; while (_local8 < _local17.length) { _local9 = _local17[_local8]; _local10 = _local17[(_local8 + 1)]; _local11 = Math.atan2((_local10.y - _local9.y), (_local10.x - _local9.x)); _local12 = (_local11 - (Math.PI * 0.5)); if (Geometry.angularDistance(_local12, Math.PI) >= 0.01){ _local14 = movePointUnder(_local7, _local9, _local10, _local15); if (_local14 != null){ _local13 = _local14.subtract(_local7); _local13.normalize((Point.distance(_local14, _local7) - (SURFACE_DEPTH * 0))); _p.x = (_p.x + _local13.x); _p.y = (_p.y + _local13.y); _local4 = true; insertSurface(_local15, _local9, _local10); break; }; }; _local8 = (_local8 + 2); }; if (_local4){ _local6--; } else { _local7 = _local16[HEAD_POINT]; _local8 = 0; while (_local8 < _local17.length) { _local9 = _local17[_local8]; _local10 = _local17[(_local8 + 1)]; _local11 = Math.atan2((_local10.y - _local9.y), (_local10.x - _local9.x)); _local12 = (_local11 - (Math.PI * 0.5)); if (Geometry.angularDistance(_local12, (Math.PI * 0.5)) >= 0.01){ _local14 = movePointUnder(_local7, _local9, _local10, _local15); if (_local14 != null){ _local13 = _local14.subtract(_local7); _local13.normalize((Point.distance(_local14, _local7) - (SURFACE_DEPTH * 0))); _p.x = (_p.x + _local13.x); _p.y = (_p.y + _local13.y); _local4 = true; insertSurface(_local15, _local9, _local10); break; }; }; _local8 = (_local8 + 2); }; if (_local4){ _local6--; } else { _local7 = _local16[GROUND_POINT]; _local8 = 0; while (_local8 < _local17.length) { _local9 = _local17[_local8]; _local10 = _local17[(_local8 + 1)]; _local11 = Math.atan2((_local10.y - _local9.y), (_local10.x - _local9.x)); _local12 = (_local11 - (Math.PI * 0.5)); if (Geometry.angularDistance(_local12, (-(Math.PI) * 0.5)) >= 0.01){ _local14 = movePointUnder(_local7, _local9, _local10, _local15); if (_local14 != null){ _local13 = _local14.subtract(_local7); _local13.normalize((Point.distance(_local14, _local7) - SURFACE_DEPTH)); _p.x = (_p.x + _local13.x); _p.y = (_p.y + _local13.y); _local4 = true; insertSurface(_local15, _local9, _local10); break; }; }; _local8 = (_local8 + 2); }; _local6--; }; }; }; }; }; }; _arg2.x = _p.x; _arg2.y = _p.y; _p.x = _local3.x; _p.y = _local3.y; return (_local15); } public function set speed(_arg1:Number){ var _local2:Number; _local2 = direction; _v.x = (Math.cos(_local2) * _arg1); _v.y = (Math.sin(_local2) * _arg1); } public function get vX():Number{ return (_v.x); } public function get vY():Number{ return (_v.y); } protected function updateFrame(){ _clip.gotoAndStop((_animations[(_currentAnimation * 2)] + (Math.floor(_time) % ((_animations[((_currentAnimation * 2) + 1)] - _animations[(_currentAnimation * 2)]) + 1)))); } public function bitSet(_arg1:int){ _state = (_state | int((1 << _arg1))); } public function getBox():Array{ var _local1:MovieClip; var _local2:Rectangle; var _local3:Number; var _local4:Number; _local1 = _clip.hitbox; if (_local1 == null){ throw ("Error in Character::getStaticPoints(). Property 'hitbox' not found in Character::clip"); }; _local2 = _local1.getRect(clip); _local3 = ((_local2.x * clip.scaleX) + x); _local4 = (_local2.y + y); return ([new Point(_local3, _local4), new Point((_local3 + _local2.width), _local4), new Point((_local3 + _local2.width), (_local4 + _local2.height)), new Point(_local3, (_local4 + _local2.height))]); } public function behaviour(_arg1:World){ if (_recording){ _record[_record.length] = uint(x); _record[_record.length] = uint(y); _record[_record.length] = uint(_clip.currentFrame); }; } public function bitReset(_arg1:int){ _state = (_state & ~(int((1 << _arg1)))); } public function set vX(_arg1:Number){ _v.x = _arg1; } public function set vY(_arg1:Number){ _v.y = _arg1; if (_v.y > TERMINAL_VELOCITY){ _v.y = TERMINAL_VELOCITY; }; } public function hitBlock(_arg1:Block, _arg2:World, _arg3:Number=-1, _arg4:Number=-1):Array{ var _local5:Array; var _local6:Array; var _local7:Boolean; var _local8:Boolean; var _local9:Boolean; var _local10:Boolean; var _local11:Number; var _local12:Number; var _local13:Point; var _local14:Number; var _local15:Number; var _local16:Number; var _local17:Number; var _local18:Number; var _local19:Number; var _local20:Number; var _local21:Number; var _local22:Number; var _local23:Number; var _local24:int; var _local25:Array; var _local26:Number; var _local27:Number; var _local28:Number; var _local29:Number; var _local30:Number; _local5 = _arg1.getPoints(_arg2.timeSpeed); _local6 = getStaticPoints(); if (_local6[HEAD_POINT].y > _local5[2].y){ return ([]); }; if (_local6[GROUND_POINT].y < _local5[0].y){ return ([]); }; if (_local6[LEFT_HEAD_POINT].x > _local5[2].x){ return ([]); }; if (_local6[RIGHT_GROUND_POINT].x < _local5[0].x){ return ([]); }; _local7 = !((_arg1.getNeighbor(Block.TOP) == null)); _local8 = !((_arg1.getNeighbor(Block.BOTTOM) == null)); _local9 = !((_arg1.getNeighbor(Block.LEFT) == null)); _local10 = !((_arg1.getNeighbor(Block.RIGHT) == null)); _local11 = (_p.x - _arg3); _local12 = (_p.y - _arg4); if (_arg3 == -1){ _local11 = (vX * _arg2.timeSpeed); _local12 = (vY * _arg2.timeSpeed); }; if (_local6[GROUND_POINT].y <= (_local5[0].y + BLOCK_MARGIN)){ if (_local7){ return ([]); }; _local26 = Math.min(((_local5[0].y + (BLOCK_MARGIN * 0.5)) - _local6[GROUND_POINT].y), 0); y = (y + _local26); return ([_local5[0], _local5[1]]); }; if (_local6[RIGHT_HEAD_POINT].x <= (_local5[0].x + BLOCK_MARGIN)){ if (_local9){ return ([]); }; _local27 = Math.min(((_local5[0].x + (BLOCK_MARGIN * 0.5)) - _local6[RIGHT_HEAD_POINT].x), 0); x = (x + _local27); return ([_local5[3], _local5[0]]); }; if (_local6[LEFT_HEAD_POINT].x >= (_local5[2].x - BLOCK_MARGIN)){ if (_local10){ return ([]); }; _local27 = Math.max(((_local5[2].x - (BLOCK_MARGIN * 0.5)) - _local6[LEFT_HEAD_POINT].x), 0); x = (x + _local27); return ([_local5[1], _local5[2]]); }; if (_local6[HEAD_POINT].y >= (_local5[2].y - BLOCK_MARGIN)){ if (_local8){ return ([]); }; _local26 = Math.max(((_local5[2].y - (BLOCK_MARGIN * 0.5)) - _local6[HEAD_POINT].y), 0); y = (y + _local26); return ([_local5[2], _local5[3]]); }; if (((((!(_local7)) && ((_local6[GROUND_POINT].y >= (_local5[0].y + BLOCK_MARGIN))))) && (((_local6[GROUND_POINT].y - _local12) <= (_local5[0].y + BLOCK_MARGIN))))){ _local26 = Math.min(((_local5[0].y + 0.5) - _local6[GROUND_POINT].y), 0); y = (y + _local26); return ([_local5[0], _local5[1]]); }; if (((((!(_local9)) && ((_local6[RIGHT_HEAD_POINT].x >= (_local5[0].x + BLOCK_MARGIN))))) && (((_local6[RIGHT_HEAD_POINT].x - _local11) <= (_local5[0].x + BLOCK_MARGIN))))){ _local27 = Math.min(((_local5[0].x + 0.5) - _local6[RIGHT_HEAD_POINT].x), 0); x = (x + _local27); return ([_local5[3], _local5[0]]); }; if (((((!(_local10)) && ((_local6[LEFT_HEAD_POINT].x <= (_local5[2].x - BLOCK_MARGIN))))) && (((_local6[LEFT_HEAD_POINT].x - _local11) >= (_local5[2].x - BLOCK_MARGIN))))){ _local27 = Math.max(((_local5[2].x - (BLOCK_MARGIN * 0.5)) - _local6[LEFT_HEAD_POINT].x), 0); x = (x + _local27); return ([_local5[1], _local5[2]]); }; if (((((!(_local8)) && ((_local6[HEAD_POINT].y <= (_local5[2].y - BLOCK_MARGIN))))) && (((_local6[HEAD_POINT].y - _local12) >= (_local5[2].y - BLOCK_MARGIN))))){ _local26 = Math.max(((_local5[2].y - (BLOCK_MARGIN * 0.5)) - _local6[HEAD_POINT].y), 0); y = (y + _local26); return ([_local5[2], _local5[3]]); }; _local13 = new Point(((_local6[RIGHT_HEAD_POINT].x * 0.5) + (_local6[LEFT_HEAD_POINT].x * 0.5)), ((_local6[GROUND_POINT].y * 0.5) + (_local6[HEAD_POINT].y * 0.5))); _local14 = Point.distance(_local13, new Point(_local5[0].x, ((_local5[0].y * 0.5) + (_local5[2].y * 0.5)))); _local15 = Point.distance(_local13, new Point(_local5[2].x, ((_local5[0].y * 0.5) + (_local5[2].y * 0.5)))); _local16 = Point.distance(_local13, new Point(((_local5[0].x * 0.5) + (_local5[2].x * 0.5)), _local5[0].y)); _local17 = Point.distance(_local13, new Point(((_local5[0].x * 0.5) + (_local5[2].x * 0.5)), _local5[2].y)); _local18 = Math.abs((_local6[RIGHT_HEAD_POINT].x - _local5[0].x)); _local19 = Math.abs((_local5[2].x - _local6[LEFT_HEAD_POINT].x)); _local20 = Math.abs((_local6[GROUND_POINT].y - _local5[0].y)); _local21 = Math.abs((_local5[2].y - _local6[HEAD_POINT].y)); _local22 = Infinity; _local23 = 0; _local24 = -1; if (((((!(_local7)) && ((_local16 >= 0)))) && ((_local22 > _local16)))){ _local22 = _local16; _local23 = _local20; _local24 = 0; }; if (((!(_local9)) && ((_local22 > _local15)))){ _local24 = 1; _local22 = _local15; _local23 = _local19; }; if (((!(_local8)) && ((_local22 > _local17)))){ _local22 = _local17; _local23 = _local21; _local24 = 2; }; if (((!(_local10)) && ((_local22 > _local14)))){ _local22 = _local14; _local23 = _local18; _local24 = 3; }; if (_local24 > -1){ _local25 = [_local5[_local24], _local5[(int((_local24 + 1)) % _local5.length)]]; _local28 = Math.max((_local23 - 0.5), 0); _local29 = ((_local25[0].x)==_local25[1].x) ? ((_local25[0].y)<_local25[1].y) ? 1 : -1 : 0; _local30 = ((_local25[0].y)==_local25[1].y) ? ((_local25[0].x)<_local25[1].x) ? -1 : 1 : 0; x = (x + (_local29 * _local28)); y = (y + (_local30 * _local28)); return (_local25); //unresolved jump }; return ([]); } public function getDynamicPoints(_arg1:Point):Array{ if (speed <= 0.01){ return (getStaticPoints()); }; return (Geometry.getOuterPoints(getStaticPoints().concat(Geometry.movePoints(getStaticPoints(), _arg1)))); } public function get speed():Number{ return (Math.sqrt(((_v.x * _v.x) + (_v.y * _v.y)))); } override public function getPoints(_arg1:Number):Array{ return (getStaticPoints()); } override public function getRect():Rectangle{ var _local1:MovieClip; var _local2:Rectangle; _local1 = _clip.hitbox; if (_local1 == null){ throw ("Error in Character::getRect(). Property 'hitbox' not found in Character::clip"); }; _local2 = _local1.getRect(clip); if (clip.scaleX == -1){ _local2.x = (-(_local2.x) - _local2.width); }; _local2.x = (_local2.x + x); _local2.y = (_local2.y + y); return (_local2); } public function animate(_arg1:int, _arg2:Boolean=true){ if (_currentAnimation == _arg1){ return; }; _currentAnimation = _arg1; _time = 0; _clip.gotoAndStop(_animations[(_currentAnimation * 2)]); } public function getStaticPoints():Array{ var _local1:MovieClip; var _local2:Rectangle; var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local1 = _clip.hitbox; if (_local1 == null){ throw ("Error in Character::getStaticPoints(). Property 'hitbox' not found in Character::clip"); }; _local2 = _local1.getRect(clip); _local3 = ((_local2.x * clip.scaleX) + x); _local4 = (_local2.y + y); _local5 = Math.min((_local3 + (_local2.width * clip.scaleX)), _local3); _local6 = Math.max((_local3 + (_local2.width * clip.scaleX)), _local3); _local7 = (_local2.height * 0.25); return ([new Point((_local5 + (Number((_local6 - _local5)) * 0.5)), _local4), new Point((_local5 + (Number((_local6 - _local5)) * 0.5)), (_local4 + _local2.height)), new Point(_local5, (_local4 + _local7)), new Point(_local5, ((_local4 + _local2.height) - _local7)), new Point(_local6, (_local4 + _local7)), new Point(_local6, ((_local4 + _local2.height) - _local7))]); } protected function movePointUnder(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Array):Point{ var _local5:Point; if (!Geometry.pointUnderLine(_arg1, _arg2, _arg3)){ return (null); }; _local5 = Geometry.closestPointOnLine(_arg1, _arg2, _arg3); if (!Geometry.point2line(_local5, _arg2, _arg3)){ return (null); }; if ((((((Point.distance(_local5, _arg2) < 0)) || ((Point.distance(_local5, _arg3) < 0)))) || ((Point.distance(_local5, _arg1) <= 0)))){ insertSurface(_arg4, _arg2, _arg3); return (null); }; return (_local5); } public function get base():Point{ var _local1:Point; var _local2:Array; _local2 = getStaticPoints(); _local1 = _local2[GROUND_POINT]; return (_local1); } public function set animations(_arg1:Array){ if (((!(_arg1.length)) || ((_arg1.length % 2)))){ throw ("Error in function set Character::animations(). The Array length must be a multiple of 2 greater than 0."); }; _animations = _arg1.concat(); } public function get animations():Array{ return (_animations); } public function get record():Array{ return (_record); } public function get direction():Number{ return (Math.atan2(_v.y, _v.x)); } private static function insertSurface(_arg1:Array, _arg2:Point, _arg3:Point){ var _local4:int; _local4 = 0; while (_local4 < _arg1.length) { if (((_arg2.equals(_arg1[_local4])) && (_arg3.equals(_arg1[(_local4 + 1)])))){ return; }; _local4 = (_local4 + 2); }; _arg1.push(_arg2); _arg1.push(_arg3); } } }//package amber3
Section 6
//CheckPointEvent (amber3.CheckPointEvent) package amber3 { import flash.events.*; public class CheckPointEvent extends Event { private var _x:int; private var _y:int; public function CheckPointEvent(_arg1:String, _arg2:int, _arg3:int){ super(_arg1); _x = _arg2; _y = _arg3; } public function get y():int{ return (_y); } public function get x():int{ return (_x); } } }//package amber3
Section 7
//Container (amber3.Container) package amber3 { import flash.display.*; public class Container extends Block { private var _numItems:int; public function Container(_arg1:int, _arg2:int, _arg3:uint, _arg4:BitmapData=null, _arg5:int=-1){ super(_arg1, _arg2, Block.CONTAINER_BLOCK, _arg4, _arg5); _numItems = _arg3; } public function get numItems():int{ return (_numItems); } } }//package amber3
Section 8
//Controller (amber3.Controller) package amber3 { import flash.events.*; import flash.display.*; import flash.ui.*; public class Controller extends EventDispatcher { private var _buttons:Array; protected var _state:Array; protected var _stage:Stage; public static const BUTTON_START:int = 6; public static const NUM_BUTTONS:int = 8; public static const BUTTON_UP:int = 0; public static const BUTTON_RIGHT:int = 3; public static const BUTTON_LEFT:int = 2; public static const BUTTON_DOWN:int = 1; public static const BUTTON_A:int = 4; public static const BUTTON_B:int = 5; public static const BUTTON_C:int = 7; public function Controller(_arg1:Stage){ _state = [false, false, false, false, false, false, false]; _buttons = ["W".charCodeAt(0), "S".charCodeAt(0), "A".charCodeAt(0), "D".charCodeAt(0), "J".charCodeAt(0), "K".charCodeAt(0), Keyboard.SPACE, "L".charCodeAt(0)]; _stage = _arg1; _arg1.addEventListener("keyDown", kDown, false, 0, true); _arg1.addEventListener("keyUp", kUp, false, 0, true); } public function set keyconfig(_arg1:Array){ var _local2:int; _local2 = 0; while (_local2 < NUM_BUTTONS) { _buttons[_local2] = _arg1[_local2]; _local2++; }; } public function get binaryState():int{ var _local1:int; var _local2:int; _local2 = 0; _local1 = 0; while (_local1 < NUM_BUTTONS) { if (_state[_local1]){ _local2 = (_local2 | (1 << _local1)); }; _local1++; }; return (_local2); } public function get state():Array{ return (_state.concat()); } public function down(_arg1:int):Boolean{ return (_state[_arg1]); } protected function kUp(_arg1:KeyboardEvent){ var _local2:int; _local2 = 0; while (_local2 < NUM_BUTTONS) { if (_arg1.keyCode == _buttons[_local2]){ if (_state[_local2]){ _state[_local2] = false; dispatchEvent(new ButtonEvent(ButtonEvent.BUTTON_UP, _local2)); }; }; _local2++; }; } protected function kDown(_arg1:KeyboardEvent){ var _local2:int; _local2 = 0; while (_local2 < NUM_BUTTONS) { if (_arg1.keyCode == _buttons[_local2]){ if (!_state[_local2]){ _state[_local2] = true; dispatchEvent(new ButtonEvent(ButtonEvent.BUTTON_DOWN, _local2)); }; }; _local2++; }; } public function destroy(){ _stage.removeEventListener("keyDown", kDown); _stage.removeEventListener("keyUp", kUp); } } }//package amber3
Section 9
//Enemy (amber3.Enemy) package amber3 { import flash.display.*; import flash.geom.*; public class Enemy extends Character { protected var _attackResistant:Boolean; protected var _noRepeat:Boolean; protected var _fireResistant:Boolean; protected var _jumpResistant:Boolean; protected var _boss:Boolean; protected var _maxHealth:int; protected var _name:String; protected var _health:int; protected var _mode:int; protected var _clipID:int; protected var _ignoreAttack:Boolean; protected var _solid:Boolean; protected var _attackClip2:MovieClip; protected var _invincible:Boolean; protected var _ignoreJump:Boolean; protected var _id:int; protected var _ignoreFire:Boolean; protected var _attackClip1:MovieClip; protected var _jumpClip2:MovieClip; protected var _jumpClip1:MovieClip; protected var _amber:Amber; public static const GROUND:int = 0; public static const ONEWAY:int = 2; public static const SPIKE_SCALE:Number = 0.8; public static const MAX_SPIKE_WIDTH:Number = 30; public static const SPIKE_THICKNESS:Number = 1.4; public static const RIGHT:int = 1; public function Enemy(_arg1:int, _arg2:int, _arg3:Class, _arg4:int, _arg5:int){ super(_arg1, _arg2, _arg3); _type = "enemy"; _name = "Enemy"; _mode = 0; _health = (_maxHealth = 1); _boss = false; _id = _arg4; _clipID = _arg5; _noRepeat = false; _amber = null; _solid = true; _fireResistant = (_attackResistant = (_jumpResistant = false)); _ignoreFire = (_ignoreJump = (_ignoreAttack = false)); _attackClip1 = new MovieClip(); _attackClip1.graphics.beginFill(0x888888); drawSpikeShield(_attackClip1.graphics, 1); _attackClip1.graphics.endFill(); _attackClip1.visible = false; clip.addChild(_attackClip1); _attackClip2 = new MovieClip(); _attackClip2.graphics.beginFill(0x888888); drawSpikeShield(_attackClip2.graphics, 1); _attackClip2.graphics.endFill(); _attackClip2.rotation = 180; _attackClip2.visible = false; clip.addChild(_attackClip2); _jumpClip1 = new MovieClip(); _jumpClip1.graphics.beginFill(0x888888); drawSpikeShield(_jumpClip1.graphics, 1); _jumpClip1.graphics.endFill(); _jumpClip1.rotation = -90; _jumpClip1.visible = false; clip.addChild(_jumpClip1); _jumpClip2 = new MovieClip(); _jumpClip2.graphics.beginFill(0x888888); drawSpikeShield(_jumpClip2.graphics, 1); _jumpClip2.graphics.endFill(); _jumpClip2.rotation = 90; _jumpClip2.visible = false; clip.addChild(_jumpClip2); _invincible = false; } public function hurt():Boolean{ return (false); } public function get invincible():Boolean{ return (_invincible); } public function updateColor(){ var _local1:int; var _local2:Number; var _local3:ColorTransform; _local1 = 0xFF; _local2 = (((_fireResistant) && (!(_ignoreFire)))) ? _local1 : 0; _local3 = new ColorTransform(); _local3.redOffset = _local2; if (_local2){ _local3.blueMultiplier = 0.75; _local3.greenMultiplier = 0.75; }; clip.transform.colorTransform = _local3; updateSpikes(); } public function get id():int{ return (_id); } public function get fireResistant():Boolean{ return (_fireResistant); } override protected function updateFrame(){ var _local1:int; var _local2:int; _local1 = Math.floor(_time); _local2 = ((_animations[((_currentAnimation * 2) + 1)] - _animations[(_currentAnimation * 2)]) + 1); if (_noRepeat){ _local1 = Math.min(_local1, (_local2 - 1)); } else { _local1 = (_local1 % _local2); }; _clip.gotoAndStop((_animations[(_currentAnimation * 2)] + _local1)); updateSpikes(); } public function get jumpResistant():Boolean{ return (_jumpResistant); } public function set fireResistant(_arg1:Boolean){ if (_ignoreFire){ return; }; _fireResistant = _arg1; updateColor(); } public function get attackResistant():Boolean{ return (_attackResistant); } function updateSpikes(){ var _local1:Rectangle; _local1 = clip.hitbox.getRect(clip); _attackClip1.y = (_attackClip2.y = (_local1.y + (_local1.height * 0.5))); _attackClip1.x = (_local1.x + _local1.width); _attackClip2.x = _local1.x; _attackClip1.scaleX = (_attackClip1.scaleY = (_local1.height * SPIKE_SCALE)); _attackClip2.scaleX = (_attackClip2.scaleY = _attackClip1.scaleY); _attackClip2.scaleX = (_attackClip1.scaleX = Math.min(_attackClip1.scaleX, MAX_SPIKE_WIDTH)); _jumpClip1.x = (_jumpClip2.x = (_local1.x + (_local1.width * 0.5))); _jumpClip1.y = _local1.y; _jumpClip2.y = (_local1.y + _local1.height); _jumpClip1.scaleX = (_jumpClip1.scaleY = (_local1.width * SPIKE_SCALE)); _jumpClip2.scaleX = (_jumpClip2.scaleY = _jumpClip1.scaleY); _jumpClip2.scaleX = (_jumpClip1.scaleX = Math.min(_jumpClip1.scaleX, MAX_SPIKE_WIDTH)); } public function get health():int{ return (_health); } public function get dangerous():Boolean{ return ((_health > 0)); } protected function physics(_arg1:World):Array{ var _local2:Point; var _local3:Array; var _local4:Array; var _local5:Array; var _local6:int; var _local7:Point; var _local8:Array; var _local9:GameSprite; var _local10:OneWayWall; var _local11:Array; var _local12:Array; var _local13:int; var _local14:Point; var _local15:Point; var _local16:Number; var _local17:Number; if (bit(ONEWAY)){ if (bit(RIGHT)){ vX = Math.max(vX, 0); } else { vX = Math.min(vX, 0); }; }; _local2 = _v.clone(); _local2.x = (_local2.x * _arg1.timeSpeed); _local2.y = (_local2.y * _arg1.timeSpeed); x = (x + _local2.x); y = (y + _local2.y); _local3 = _arg1.hitSprites(this); _local4 = []; bitReset(ONEWAY); _local6 = 0; while (_local6 < _local3.length) { _local9 = _local3[_local6]; _local5 = []; switch (_local9.type){ case "block": _local5 = hitBlock((_local9 as Block), _arg1); _local4 = _local4.concat(_local5); break; case "oneway": _local10 = (_local9 as OneWayWall); _local11 = getStaticPoints(); _local12 = _local10.getPoints(_arg1.timeSpeed); if (_local11[HEAD_POINT].y > _local12[2].y){ break; }; if (_local11[GROUND_POINT].y < _local12[0].y){ break; }; if (_local11[LEFT_HEAD_POINT].x > _local12[2].x){ break; }; if (_local11[RIGHT_GROUND_POINT].x < _local12[0].x){ break; }; if (_local10.direction > 0){ bitSet(RIGHT); if (_local11[HEAD_POINT].x >= (_local10.x + Tile.TILE_HALF)){ _local4.push(new Point((_local10.x + Tile.TILE_HALF), _local10.y)); _local4.push(new Point((_local10.x + Tile.TILE_HALF), (_local10.y + Tile.TILE_HALF))); }; } else { bitReset(RIGHT); if (_local11[HEAD_POINT].x <= _local10.x){ _local4.push(new Point(_local10.x, (_local10.y + Tile.TILE_HALF))); _local4.push(new Point(_local10.x, _local10.y)); }; }; bitSet(ONEWAY); break; }; _local6++; }; _local7 = _p.clone(); _local8 = correct(_arg1, _local7); x = _local7.x; y = _local7.y; _local8 = _local8.concat(_local4); if (_local8.length){ bitReset(GROUND); _local13 = 0; while (_local13 < _local8.length) { _local14 = _local8[_local13]; _local15 = _local8[(_local13 + 1)]; _local16 = Math.atan2((_local15.y - _local14.y), (_local15.x - _local14.x)); if ((((Math.cos(_local16) >= (Math.SQRT1_2 - Geometry.TOLERANCE))) && ((base.y <= (Math.max(_local14.y, _local15.y) + 2))))){ bitSet(GROUND); }; _local13 = (_local13 + 2); }; } else { if (bit(GROUND)){ _local2 = _v.clone(); _local2.x = (_local2.x * _arg1.timeSpeed); _local2.y = (_local2.y * _arg1.timeSpeed); _local17 = _arg1.highestSurfaceUnder(getStaticPoints(), _local2); if (!isNaN(_local17)){ y = (y + _local17); } else { bitReset(GROUND); }; } else { bitReset(GROUND); }; }; return (_local8); } public function get clipID():int{ return (_clipID); } public function get boss():Boolean{ return (_boss); } public function revive(){ _health = 1; } public function set jumpResistant(_arg1:Boolean){ if (_ignoreJump){ return; }; _jumpClip1.visible = (_jumpClip2.visible = _arg1); _jumpResistant = _arg1; updateColor(); } public function damage(_arg1:GameSprite, _arg2:World){ if (_health > 0){ _health--; }; } public function get name():String{ return (_name); } public function get solid():Boolean{ return (_solid); } public function set attackResistant(_arg1:Boolean){ if (_ignoreAttack){ return; }; _attackClip1.visible = (_attackClip2.visible = _arg1); _attackResistant = _arg1; updateColor(); } public function set amber(_arg1:Amber){ _amber = _arg1; } override public function animate(_arg1:int, _arg2:Boolean=true){ super.animate(_arg1); _noRepeat = !(_arg2); } public function get maxHealth():int{ return (_maxHealth); } public function get amber():Amber{ return (_amber); } public function activate(_arg1:World=null){ } public static function drawSpikeShield(_arg1:Graphics, _arg2:Number=1){ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Number; var _local12:Number; var _local13:Number; var _local14:Number; var _local15:Array; var _local16:Array; _local3 = Math.SQRT1_2; _local4 = Math.cos((Math.PI * 0.125)); _local5 = 1; _local6 = Math.SQRT1_2; _local7 = Math.sin((Math.PI * 0.125)); _local8 = 0; _local9 = SPIKE_THICKNESS; _local10 = Math.cos(((Math.PI * 0.25) - (Math.PI * 0.0625))); _local11 = Math.cos((Math.PI * 0.0625)); _local12 = Math.sin(((Math.PI * 0.25) - (Math.PI * 0.0625))); _local13 = Math.sin((Math.PI * 0.0625)); _local14 = (1 - _local4); _local15 = [[(_local6 - _local6), -(_local6)], [((_local4 + (_local4 * _local14)) - _local3), (-(_local7) - (_local7 * _local14))], [(_local5 - _local3), _local8], [((_local4 + (_local4 * _local14)) - _local3), (_local7 + (_local7 * _local14))], [(_local6 - _local6), _local6]]; _local16 = [[(_local6 - _local6), (_local6 * _local9)], [((_local10 + (_local10 * _local14)) - _local3), (_local12 + (_local12 * _local14))], [((_local4 * _local9) - _local3), (_local7 * _local9)], [((_local11 + (_local11 * _local14)) - _local3), (_local13 + (_local13 * _local14))], [((_local5 * _local9) - _local3), (_local8 * _local9)], [((_local11 + (_local11 * _local14)) - _local3), (-(_local13) - (_local13 * _local14))], [((_local4 * _local9) - _local3), (-(_local7) * _local9)], [((_local10 + (_local10 * _local14)) - _local3), (-(_local12) - (_local12 * _local14))], [(_local6 - _local6), (-(_local6) * _local9)]]; _arg1.moveTo((_local15[0][0] * _arg2), (_local15[0][1] * _arg2)); _arg1.curveTo(((_local15[1][0] * _arg2) + _local14), (_local15[1][1] * _arg2), (_local15[2][0] * _arg2), (_local15[2][1] * _arg2)); _arg1.curveTo((_local15[3][0] * _arg2), (_local15[3][1] * _arg2), (_local15[4][0] * _arg2), (_local15[4][1] * _arg2)); _arg1.lineTo((_local16[0][0] * _arg2), (_local16[0][1] * _arg2)); _arg1.curveTo((_local16[1][0] * _arg2), (_local16[1][1] * _arg2), (_local16[2][0] * _arg2), (_local16[2][1] * _arg2)); _arg1.curveTo((_local16[3][0] * _arg2), (_local16[3][1] * _arg2), (_local16[4][0] * _arg2), (_local16[4][1] * _arg2)); _arg1.curveTo((_local16[5][0] * _arg2), (_local16[5][1] * _arg2), (_local16[6][0] * _arg2), (_local16[6][1] * _arg2)); _arg1.curveTo((_local16[7][0] * _arg2), (_local16[7][1] * _arg2), (_local16[8][0] * _arg2), (_local16[8][1] * _arg2)); _arg1.lineTo((_local15[0][0] * _arg2), (_local15[0][1] * _arg2)); } } }//package amber3
Section 10
//EnemyEvent (amber3.EnemyEvent) package amber3 { import flash.events.*; public class EnemyEvent extends Event { private var _enemy:Enemy; public static const BOSS_VISIBLE:String = "bossVisible"; public static const BOSS_DAMAGED:String = "bossDamaged"; public static const BOSS_DEFEATED:String = "bossDefeated"; public static const ENEMY_KILLED:String = "enemyKilled"; public static const BOSS_ACTIVATED:String = "bossActivated"; public function EnemyEvent(_arg1:String, _arg2:Enemy){ super(_arg1); _enemy = _arg2; } public function get enemy():Enemy{ return (_enemy); } } }//package amber3
Section 11
//GameSprite (amber3.GameSprite) package amber3 { import flash.events.*; import flash.display.*; import flash.geom.*; public class GameSprite extends EventDispatcher { public var depth:int; public var enabled:Boolean; protected var _tile:Point; protected var _type:String; protected var _clip:MovieClip; protected var _p:Point; public function GameSprite(_arg1:int, _arg2:int){ depth = -1; _type = "gamesprite"; _clip = new MovieClip(); _tile = new Point(); _tile.x = _arg1; _tile.y = _arg2; _p = new Point(); x = (_tile.x * Tile.TILE_HALF); y = (_tile.y * Tile.TILE_HALF); enabled = true; } public function destroy(){ _clip.parent.removeChild(_clip); } public function get clip():MovieClip{ return (_clip); } public function set tX(_arg1:int){ _tile.x = _arg1; } public function set y(_arg1:Number){ _clip.y = (_p.y = _arg1); } public function getPoints(_arg1:Number):Array{ return (null); } public function getRect():Rectangle{ var _local1:MovieClip; var _local2:Rectangle; _local1 = _clip; if (_local1 == null){ throw ("Error in Character::getRect(). Property 'hitbox' not found in Character::clip"); }; _local2 = _local1.getRect(_clip); if (clip.scaleX == -1){ _local2.x = (-(_local2.x) - _local2.width); }; _local2.x = (_local2.x + x); _local2.y = (_local2.y + y); return (_local2); } public function get tX():int{ return (_tile.x); } public function set x(_arg1:Number){ _clip.x = (_p.x = _arg1); } public function set tY(_arg1:int){ _tile.y = _arg1; } public function get x():Number{ return (_p.x); } public function get y():Number{ return (_p.y); } public function get type():String{ return (_type); } public function get tY():int{ return (_tile.y); } public function hitSprite(_arg1:GameSprite, _arg2:Number):Boolean{ return (Geometry.collide(getPoints(_arg2), _arg1.getPoints(_arg2))); } } }//package amber3
Section 12
//Geometry (amber3.Geometry) package amber3 { import flash.geom.*; public class Geometry { public static const TOLERANCE:Number = 0.01; public static function intersectLines(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point, _arg5:Boolean=true):Point{ var _local6:Point; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:Boolean; var _local12:Boolean; var _local13:Boolean; var _local14:Boolean; _local6 = new Point(); _local11 = (Math.abs((_arg1.y - _arg2.y)) < TOLERANCE); _local12 = (Math.abs((_arg3.y - _arg4.y)) < TOLERANCE); _local13 = (Math.abs((_arg1.x - _arg2.x)) < TOLERANCE); _local14 = (Math.abs((_arg3.x - _arg4.x)) < TOLERANCE); _local7 = ((_arg2.y - _arg1.y) / (_arg2.x - _arg1.x)); _local9 = (_arg1.y - (_arg1.x * _local7)); _local8 = ((_arg4.y - _arg3.y) / (_arg4.x - _arg3.x)); _local10 = (_arg3.y - (_arg3.x * _local8)); switch (true){ case ((_local11) && (_local12)): if (Math.abs((_arg3.y - _arg1.y)) < TOLERANCE){ _local6 = _arg1.clone(); }; return (null); case ((_local11) && (_local14)): _local6.x = _arg3.x; _local6.y = _arg1.y; break; case ((_local13) && (_local12)): _local6.x = _arg1.x; _local6.y = _arg3.y; break; case ((_local13) && (_local14)): if (Math.abs((_arg3.x - _arg1.x)) < TOLERANCE){ _local6 = _arg1.clone(); }; return (null); case _local13: _local6.x = _arg1.x; _local6.y = ((_local8 * _local6.x) + _local10); break; case _local14: _local6.x = _arg3.x; _local6.y = ((_local7 * _local6.x) + _local9); break; case _local11: _local6.y = _arg1.y; _local6.x = (Number((_local6.y - _local10)) / _local8); break; case _local12: _local6.y = _arg3.y; _local6.x = (Number((_local6.y - _local9)) / _local7); break; default: if ((((Math.abs((_local9 - _local10)) < TOLERANCE)) && ((Math.abs((_local7 - _local8)) < TOLERANCE)))){ return (null); }; _local6.x = (Number((_local10 - _local9)) / Number((_local7 - _local8))); _local6.y = ((_local6.x * _local7) + _local9); }; if (_arg5){ if ((((_local6.x > Math.max(_arg1.x, _arg2.x))) || ((_local6.x < Math.min(_arg1.x, _arg2.x))))){ return (null); }; if ((((_local6.y > Math.max(_arg1.y, _arg2.y))) || ((_local6.y < Math.min(_arg1.y, _arg2.y))))){ return (null); }; if ((((_local6.x > Math.max(_arg3.x, _arg4.x))) || ((_local6.x < Math.min(_arg3.x, _arg4.x))))){ return (null); }; if ((((_local6.y > Math.max(_arg3.y, _arg4.y))) || ((_local6.y < Math.min(_arg3.y, _arg4.y))))){ return (null); }; }; return (_local6.clone()); } private static function getLowestPositiveAngle(_arg1:Number):Number{ var _local2:Number; _local2 = (_arg1 % (Math.PI * 2)); while (_local2 < 0) { _local2 = (_local2 + (Math.PI * 2)); }; while (_local2 >= (Math.PI * 2)) { _local2 = (_local2 - (Math.PI * 2)); }; return (_local2); } public static function pointUnderLine(_arg1:Point, _arg2:Point, _arg3:Point):Boolean{ var _local4:Number; var _local5:Number; _local4 = (Math.atan2((_arg3.y - _arg2.y), (_arg3.x - _arg2.x)) + (Math.PI * 0.5)); _local5 = Math.atan2((_arg1.y - _arg2.y), (_arg1.x - _arg2.x)); return ((angularDistance(_local5, _local4) >= TOLERANCE)); } public static function line2triangle(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point, _arg5:Point):Boolean{ if (line2line(_arg1, _arg2, _arg3, _arg4)){ return (true); }; if (line2line(_arg1, _arg2, _arg4, _arg5)){ return (true); }; if (line2line(_arg1, _arg2, _arg5, _arg3)){ return (true); }; if (point2triangle(_arg1, _arg3, _arg4, _arg5)){ return (true); }; return (false); } public static function getOuterPoints(_arg1:Array):Array{ var _local2:Array; var _local3:Point; var _local4:int; var _local5:Array; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Point; var _local11:int; var _local12:Number; var _local13:Point; var _local14:int; var _local15:Number; var _local16:Number; _local2 = _arg1.concat(); _local3 = _local2[0]; _local4 = 1; while (_local4 < _local2.length) { if (_local2[_local4].y < _local3.y){ _local3 = _local2[_local4]; }; _local4++; }; _local5 = [_local3]; _local6 = Infinity; _local8 = 0; _local9 = 0; _local10 = _local5[0]; _local11 = _local2.length; while (1) { _local12 = (Math.PI * 2); _local13 = null; _local4 = 0; while (_local4 < _local2.length) { _local7 = Math.atan2((_local2[_local4].y - _local5[(_local5.length - 1)].y), (_local2[_local4].x - _local5[(_local5.length - 1)].x)); _local16 = getLowestPositiveAngle((_local7 - _local8)); if ((((_local16 <= _local12)) && (!((_local2[_local4] == _local5[(_local5.length - 1)]))))){ _local13 = _local2[_local4]; _local12 = _local16; }; _local4++; }; if ((((_local13 == null)) || ((((_local13 == _local5[0])) && ((_local5.length > 1)))))){ break; }; _local15 = _local8; _local8 = getLowestPositiveAngle(Math.atan2((_local13.y - _local5[(_local5.length - 1)].y), (_local13.x - _local5[(_local5.length - 1)].x))); _local9 = (_local9 + getLowestPositiveAngle((_local8 - _local15))); if (_local9 >= (Math.PI * 2)){ break; }; _local5.push(_local13); --_local11; if (!_local11){ trace(("FAILURE: " + (_local9 - (Math.PI * 2))), "\n"); break; }; }; if ((((_local5.length > 2)) && ((_local5[(_local5.length - 1)] == _local5[1])))){ _local5.pop(); }; return (_local5); } public static function polygon2polygon(_arg1:Array, _arg2:Array):Boolean{ var _local3:Point; var _local4:Point; var _local5:Point; var _local6:Point; var _local7:Point; var _local8:Point; var _local9:int; var _local10:int; if ((((_arg1.length < 3)) || ((_arg2.length < 3)))){ return (false); }; _local3 = _arg1[0]; _local6 = _arg2[0]; _local9 = 1; while (_local9 < (_arg1.length - 1)) { _local4 = _arg1[_local9]; _local5 = _arg1[(_local9 + 1)]; _local10 = 1; while (_local10 < (_arg2.length - 1)) { _local7 = _arg2[_local10]; _local8 = _arg2[(_local10 + 1)]; if (triangle2triangle(_local3, _local4, _local5, _local6, _local7, _local8)){ return (true); }; _local10++; }; _local9++; }; return (false); } public static function point2triangle(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point):Boolean{ var _local5:Number; var _local6:Number; var _local7:Number; var _local8:Number; var _local9:Number; var _local10:Number; _local5 = (Number((_arg3.y - _arg2.y)) / Number((_arg3.x - _arg2.x))); _local6 = (Number((_arg4.y - _arg3.y)) / Number((_arg4.x - _arg3.x))); _local7 = (Number((_arg2.y - _arg4.y)) / Number((_arg2.x - _arg4.x))); _local8 = (_arg2.y - (_local5 * _arg2.x)); _local9 = (_arg3.y - (_local6 * _arg3.x)); _local10 = (_arg4.y - (_local7 * _arg4.x)); if (Math.abs((_arg3.x - _arg2.x)) < TOLERANCE){ if ((((Math.abs((_arg4.x - _arg2.x)) < TOLERANCE)) || (!((Boolean((_arg3.x < _arg1.x)) == Boolean((_arg3.x < _arg4.x))))))){ return (false); }; }; if ((((((_arg4.y <= ((_local5 * _arg4.x) + _local8))) && ((_arg1.y > ((_local5 * _arg1.x) + _local8))))) || ((((_arg4.y >= ((_local5 * _arg4.x) + _local8))) && ((_arg1.y < ((_local5 * _arg1.x) + _local8))))))){ return (false); }; if (Math.abs((_arg4.x - _arg3.x)) < TOLERANCE){ if ((((Math.abs((_arg2.x - _arg3.x)) < TOLERANCE)) || (!((Boolean((_arg4.x < _arg1.x)) == Boolean((_arg4.x < _arg2.x))))))){ return (false); }; }; if ((((((_arg2.y <= ((_local6 * _arg2.x) + _local9))) && ((_arg1.y > ((_local6 * _arg1.x) + _local9))))) || ((((_arg2.y >= ((_local6 * _arg2.x) + _local9))) && ((_arg1.y < ((_local6 * _arg1.x) + _local9))))))){ return (false); }; if (Math.abs((_arg2.x - _arg4.x)) < TOLERANCE){ if ((((Math.abs((_arg3.x - _arg4.x)) < TOLERANCE)) || (!((Boolean((_arg2.x < _arg1.x)) == Boolean((_arg2.x < _arg3.x))))))){ return (false); }; }; if ((((((_arg3.y <= ((_local7 * _arg3.x) + _local10))) && ((_arg1.y > ((_local7 * _arg1.x) + _local10))))) || ((((_arg3.y >= ((_local7 * _arg3.x) + _local10))) && ((_arg1.y < ((_local7 * _arg1.x) + _local10))))))){ return (false); }; return (true); } public static function closestPointOnLine(_arg1:Point, _arg2:Point, _arg3:Point):Point{ var _local4:Point; var _local5:Point; _local4 = _arg1.add(getNormal(_arg2, _arg3)); _local5 = intersectLines(_arg1, _local4, _arg2, _arg3, false); if (_local5 == null){ throw (((((((("Unexpected error in Geometry::closestPointToLine. Perpendicular lines aren't intersecting!\nA1:" + _arg1) + " A2:") + _local4) + " B1:") + _arg2) + " B2:") + _arg3)); }; return (_local5); } public static function triangle2triangle(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point, _arg5:Point, _arg6:Point):Boolean{ if (line2triangle(_arg1, _arg2, _arg4, _arg5, _arg6)){ return (true); }; if (line2triangle(_arg2, _arg3, _arg4, _arg5, _arg6)){ return (true); }; if (line2triangle(_arg3, _arg1, _arg4, _arg5, _arg6)){ return (true); }; if (point2triangle(_arg1, _arg4, _arg5, _arg6)){ return (true); }; if (point2triangle(_arg4, _arg1, _arg2, _arg3)){ return (true); }; return (false); } public static function movePoints(_arg1:Array, _arg2:Point):Array{ var _local3:Array; var _local4:int; _local3 = []; _local4 = 0; while (_local4 < _arg1.length) { _local3[_local4] = _arg1[_local4].add(_arg2); _local4++; }; return (_local3); } public static function point2line(_arg1:Point, _arg2:Point, _arg3:Point):Boolean{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; if ((((_arg1.x < (Math.min(_arg2.x, _arg3.x) - TOLERANCE))) || ((_arg1.x > (Math.max(_arg2.x, _arg3.x) + TOLERANCE))))){ return (false); }; if ((((_arg1.y < (Math.min(_arg2.y, _arg3.y) - TOLERANCE))) || ((_arg1.y > (Math.max(_arg2.y, _arg3.y) + TOLERANCE))))){ return (false); }; _local4 = (_arg1.x - _arg2.x); _local5 = (_arg1.y - _arg2.y); _local6 = (_arg3.x - _arg2.x); _local7 = (_arg3.y - _arg2.y); if (Math.abs(_local6) < TOLERANCE){ if (Math.abs(_local7) < TOLERANCE){ return ((((Math.abs(_local4) < TOLERANCE)) && ((Math.abs(_local5) < TOLERANCE)))); }; if (Math.abs(_local4) < TOLERANCE){ return (true); }; return (false); }; if (Math.abs(((_local5 / _local4) - (_local7 / _local6))) > TOLERANCE){ return (false); }; return (true); } public static function angularDistance(_arg1:Number, _arg2:Number):Number{ return (Math.cos((_arg1 - _arg2))); } public static function point2polygon(_arg1:Point, _arg2:Array):Boolean{ var _local3:Point; var _local4:Point; var _local5:Point; var _local6:int; if (_arg2.length < 3){ return (false); }; _local3 = _arg2[0]; _local6 = 1; while (_local6 < (_arg2.length - 1)) { _local4 = _arg2[_local6]; _local5 = _arg2[(_local6 + 1)]; if (point2triangle(_arg1, _local3, _local4, _local5)){ return (true); }; _local6++; }; return (false); } public static function line2line(_arg1:Point, _arg2:Point, _arg3:Point, _arg4:Point):Boolean{ return (!((intersectLines(_arg1, _arg2, _arg3, _arg4) == null))); } public static function rotate(_arg1:Point, _arg2:Number, _arg3:Point):Point{ var _local4:Number; var _local5:Number; var _local6:Number; var _local7:Number; _local4 = (_arg1.x - _arg3.x); _local5 = (_arg1.y - _arg3.y); _local6 = Math.cos(_arg2); _local7 = Math.sin(_arg2); return (new Point(((_arg3.x + (_local4 * _local6)) + (_local5 * _local7)), ((_arg3.y - (_local4 * _local7)) + (_local5 * _local6)))); } public static function line2polygon(_arg1:Point, _arg2:Point, _arg3:Array):Boolean{ var _local4:Point; var _local5:Point; var _local6:Point; var _local7:int; if (_arg3.length < 3){ return (false); }; _local4 = _arg3[0]; _local7 = 1; while (_local7 < (_arg3.length - 1)) { _local5 = _arg3[_local7]; _local6 = _arg3[(_local7 + 1)]; if (line2triangle(_arg1, _arg2, _local4, _local5, _local6)){ return (true); }; _local7++; }; return (false); } public static function getNormal(_arg1:Point, _arg2:Point):Point{ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Point; _local3 = (_arg2.x - _arg1.x); _local4 = (_arg2.y - _arg1.y); _local5 = Math.sqrt(((_local3 * _local3) + (_local4 * _local4))); _local6 = new Point((-(_local4) / _local5), (_local3 / _local5)); return (_local6); } public static function collide(_arg1:Array, _arg2:Array){ if ((((((((_arg1 == null)) || (!(_arg1.length)))) || ((_arg2 == null)))) || (!(_arg2.length)))){ return (false); }; if (_arg1.length > 2){ if (_arg2.length > 2){ return (polygon2polygon(_arg1, _arg2)); }; if (_arg2.length > 1){ return (line2polygon(_arg2[0], _arg2[1], _arg1)); }; return (point2polygon(_arg2[0], _arg1)); } else { if (_arg1.length > 1){ if (_arg2.length > 2){ return (line2polygon(_arg1[0], _arg1[1], _arg2)); }; if (_arg2.length > 1){ return (line2line(_arg1[0], _arg1[1], _arg2[0], _arg2[1])); }; } else { if (_arg2.length > 2){ return (point2polygon(_arg1[0], _arg2)); }; }; }; return (false); } public static function cutComponents(_arg1:Point, _arg2:Array):Point{ var _local3:Number; var _local4:Number; var _local5:int; var _local6:Number; if (!_arg2.length){ return (_arg1.clone()); }; _local3 = 0; _local4 = (Math.atan2(_arg1.y, _arg1.x) - Math.PI); _local5 = 0; while (_local5 < _arg2.length) { _local3 = (_local3 + Math.atan2((_arg2[(_local5 + 1)].y - _arg2[_local5].y), (_arg2[(_local5 + 1)].x - _arg2[_local5].x))); _local5 = (_local5 + 2); }; _local3 = (_local3 / (_arg2.length >> 1)); _local3 = (_local3 - (Math.PI * 0.5)); _local6 = (1 - Math.max(Math.cos((_local4 - _local3)), 0)); return (new Point((_arg1.x * _local6), (_arg1.y * _local6))); } } }//package amber3
Section 13
//Item (amber3.Item) package amber3 { import flash.display.*; public class Item extends Static { private var _subtype:String; public static const LIFE:String = "Life"; public static const CAMERA:String = "Camera"; public static const CHECKPOINT:String = "Checkpoint"; public static const START:String = "Start"; public static const COLLECTIBLE:String = "Collectible"; public static const BOSS_EVENT:String = "BossEvent"; public static const VICTORY:String = "Victory"; public static const RECOVERY:String = "Recovery"; public static const WATER:String = "Water"; public static const HEALTH:String = "Health"; public static const DECORATION:String = "Decoration"; public function Item(_arg1:int, _arg2:int, _arg3:String, _arg4:BitmapData, _arg5:int){ super(_arg1, _arg2, _arg4, _arg5); _type = "item"; _subtype = _arg3; } public function get subtype():String{ return (_subtype); } } }//package amber3
Section 14
//ItemEvent (amber3.ItemEvent) package amber3 { import flash.events.*; public class ItemEvent extends Event { var _subtype:String; public function ItemEvent(_arg1:String, _arg2:String){ super(_arg1); _subtype = _arg2; } public function get subtype():String{ return (_subtype); } } }//package amber3
Section 15
//MessageBlock (amber3.MessageBlock) package amber3 { import flash.display.*; public class MessageBlock extends Block { private var _message:String; public function MessageBlock(_arg1:int, _arg2:int, _arg3:String, _arg4:BitmapData=null, _arg5:int=-1){ super(_arg1, _arg2, Block.MESSAGE_BLOCK, _arg4, _arg5); _message = _arg3.replace(/}/g, "?"); _message = _arg3.replace(/{/g, "¿"); _message = _arg3.replace(/\r/g, ""); } public function get message():String{ return (_message); } } }//package amber3
Section 16
//MessageEvent (amber3.MessageEvent) package amber3 { import flash.events.*; public class MessageEvent extends Event { private var _message:String; public function MessageEvent(_arg1:String){ super(Amber.MESSAGE); _message = _arg1; } public function get message():String{ return (_message); } } }//package amber3
Section 17
//OneWayWall (amber3.OneWayWall) package amber3 { import flash.display.*; import flash.geom.*; public class OneWayWall extends Static { private var _direction:int; public function OneWayWall(_arg1:int, _arg2:int, _arg3:int, _arg4:BitmapData=null, _arg5:int=-1){ super(_arg1, _arg2, _arg4, _arg5); _type = "oneway"; if (_clip.numChildren){ _clip.getChildAt(0).width = Tile.TILE_HALF; _clip.getChildAt(0).height = Tile.TILE_HALF; }; _direction = (Boolean((_arg3 >= 0))) ? 1 : -1; } public function get direction():int{ return (_direction); } override public function getPoints(_arg1:Number):Array{ return ([new Point(_p.x, _p.y), new Point((_p.x + Tile.TILE_HALF), _p.y), new Point((_p.x + Tile.TILE_HALF), (_p.y + Tile.TILE_HALF)), new Point(_p.x, (_p.y + Tile.TILE_HALF))]); } override public function redraw(_arg1:World){ super.redraw(_arg1); if (_clip.numChildren){ _clip.getChildAt(0).width = Tile.TILE_HALF; _clip.getChildAt(0).height = Tile.TILE_HALF; }; } } }//package amber3
Section 18
//Platform (amber3.Platform) package amber3 { import flash.display.*; import flash.geom.*; public class Platform extends Static { private var _vScale:Number; private var _time:Number; private var _radius:Number; private var _angle:Number; private var _frequency:Number; private var _period:Number; private var _hScale:Number; private var _phase:Number; public static const MAX_RADIUS:int = 8; public function Platform(_arg1:int, _arg2:int, _arg3:BitmapData, _arg4:int, _arg5:Number=0, _arg6:Number=0, _arg7:uint=0, _arg8:int=0, _arg9:uint=1){ super(_arg1, _arg2, _arg3, _arg4); _type = "platform"; _hScale = _arg5; _vScale = _arg6; _radius = (Math.min(Math.max(_arg7, 0), MAX_RADIUS) * Tile.TILE_HALF); _phase = Number(((_arg8 * Math.PI) / 180)); _period = (_arg9 * 20); _frequency = (1 / _period); _angle = 0; _time = 0; } public function get vScale():Number{ return (_vScale); } public function get radius():Number{ return (_radius); } public function get phase():Number{ return (_phase); } public function position(_arg1:Number):Point{ var _local2:Point; _angle = (((_arg1 * _frequency) * Math.PI) * 2); _local2 = new Point(); _local2.x = (((Math.cos((_angle + _phase)) * _hScale) * _radius) + (_tile.x * Tile.TILE_HALF)); _local2.y = (((Math.sin((_angle + _phase)) * _vScale) * _radius) + (_tile.y * Tile.TILE_HALF)); return (_local2); } public function behaviour(_arg1:World){ _time = _arg1.time; _p = position(_arg1.time); } override public function getPoints(_arg1:Number):Array{ return ([new Point(_p.x, _p.y), new Point((_p.x + _clip.width), _p.y), new Point((_p.x + _clip.width), (_p.y + _clip.height)), new Point(_p.x, (_p.y + _clip.height))]); } public function get period():Number{ return (_period); } public function get hScale():Number{ return (_hScale); } } }//package amber3
Section 19
//ProgrammedInput (amber3.ProgrammedInput) package amber3 { import flash.events.*; import flash.display.*; public class ProgrammedInput extends Controller { private var _programLength:int; private var _complete:Boolean; private var _compressed:Boolean; public var loop:Boolean; private var _compressedCounter:int; private var _program:Array; private var _compressedPosition:int; private var _frame:int; private var _playing:Boolean; public function ProgrammedInput(_arg1:Stage, _arg2:Array, _arg3:Boolean=true, _arg4:Boolean=false){ var _local5:int; super(_arg1); _program = _arg2; _programLength = 0; loop = _arg3; _complete = false; _playing = false; if (_program){ _programLength = _program.length; }; _compressed = _arg4; if (_compressed){ _compressedPosition = 0; _compressedCounter = _program[1]; _programLength = 0; _local5 = 1; while (_local5 < _program.length) { _programLength = (_programLength + _program[_local5]); _local5 = (_local5 + 2); }; }; _arg1.removeEventListener("keyDown", kDown); _arg1.removeEventListener("keyUp", kUp); } public function stop():void{ if (_compressed){ _stage.removeEventListener(Event.ENTER_FRAME, compressedFrame); } else { _stage.removeEventListener(Event.ENTER_FRAME, eFrame); }; _playing = false; } private function eFrame(_arg1:Event){ var _local2:int; var _local3:int; var _local4:Boolean; _local3 = _program[_frame]; _local2 = 0; while (_local2 < NUM_BUTTONS) { _local4 = Boolean((_local3 & (1 << _local2))); if (((_state[_local2]) && (!(_local4)))){ dispatchEvent(new ButtonEvent(ButtonEvent.BUTTON_UP, _local2)); } else { if (((!(_state[_local2])) && (_local4))){ dispatchEvent(new ButtonEvent(ButtonEvent.BUTTON_DOWN, _local2)); }; }; _state[_local2] = _local4; _local2++; }; _frame = (_frame + 1); if (_frame >= _programLength){ _frame = 0; if (!loop){ _complete = true; stop(); }; }; } public function begin():void{ if (_playing){ return; }; _complete = false; if (_compressed){ _stage.addEventListener(Event.ENTER_FRAME, compressedFrame, false, 10, true); } else { _stage.addEventListener(Event.ENTER_FRAME, eFrame, false, 10, true); }; _playing = true; } public function get complete():Boolean{ return (_complete); } public function set frame(_arg1:uint){ if (!_program){ return; }; if (_arg1 >= _program.length){ _arg1 = (_program.length - 1); }; _frame = _arg1; } public function get frame():uint{ return (_frame); } private function compressedFrame(_arg1:Event){ var _local2:int; var _local3:int; var _local4:Boolean; _local2 = _program[_compressedPosition]; _local3 = 0; while (_local3 < NUM_BUTTONS) { _local4 = Boolean((_local2 & (1 << _local3))); if (((_state[_local3]) && (!(_local4)))){ dispatchEvent(new ButtonEvent(ButtonEvent.BUTTON_UP, _local3)); } else { if (((!(_state[_local3])) && (_local4))){ dispatchEvent(new ButtonEvent(ButtonEvent.BUTTON_DOWN, _local3)); }; }; _state[_local3] = _local4; _local3++; }; _compressedCounter--; _frame = (_frame + 1); if (!_compressedCounter){ _compressedPosition = (_compressedPosition + 2); _compressedCounter = _program[(_compressedPosition + 1)]; }; if (_frame >= _programLength){ _frame = 0; _compressedPosition = 0; _compressedCounter = _program[1]; if (!loop){ _complete = true; stop(); }; }; } public function get length():int{ return (_programLength); } override public function destroy(){ stop(); } public static function compress(_arg1:Array):Array{ var _local2:Array; var _local3:int; var _local4:uint; var _local5:uint; var _local6:int; _local2 = []; _local3 = _arg1.length; _local4 = 0; _local5 = 0; _local6 = 0; while (_local6 < _local3) { if (_arg1[_local6] != _local4){ if (_local5){ _local2[_local2.length] = _local4; _local2[_local2.length] = _local5; }; _local4 = _arg1[_local6]; _local5 = 1; } else { _local5++; }; _local6++; }; if (_local5){ _local2[_local2.length] = _local4; _local2[_local2.length] = _local5; }; return (_local2); } public static function decompress(_arg1:Array){ var _local2:Array; var _local3:int; var _local4:int; var _local5:int; var _local6:uint; var _local7:uint; _local2 = []; _local5 = _arg1.length; _local6 = 0; _local7 = 0; _local3 = 0; while (_local3 < _local5) { _local6 = _arg1[_local3]; _local7 = _arg1[(_local3 + 1)]; _local4 = 0; while (_local4 < _local7) { _local2[_local2.length] = _local6; _local4++; }; _local3 = (_local3 + 2); }; return (_local2); } } }//package amber3
Section 20
//Projectile (amber3.Projectile) package amber3 { import flash.display.*; import flash.geom.*; public class Projectile extends GameSprite { private var _localp:Point; private var _world:World; private var _gravity:Boolean; private var _fire:Boolean; private var _time:Number; private var _owner:Character; private var _offset:Point; private var _linked:Boolean; private var _life:Number; private var _start:Point; private var _v:Point; public function Projectile(_arg1:Class, _arg2:int, _arg3:Character, _arg4:Number, _arg5:Number){ super(0, 0); depth = -1; _v = new Point(); _type = "projectile"; _clip = new (_arg1); _clip.x = x; _clip.y = y; _life = _arg2; if (_arg3){ _start = new Point((_arg3.x + _arg4), (_arg3.y + _arg5)); }; _localp = new Point(); _owner = _arg3; _time = 0; _offset = new Point(_arg4, _arg5); _linked = true; _gravity = false; _fire = true; } public function get linked():Boolean{ return (_linked); } public function get vX():Number{ return (_v.x); } public function get vY():Number{ return (_v.y); } public function set gravity(_arg1:Boolean){ _gravity = _arg1; } public function get fire():Boolean{ return (_fire); } public function set vX(_arg1:Number){ _v.x = _arg1; } public function behaviour(_arg1:World){ var _local2:Array; var _local3:Array; var _local4:Boolean; var _local5:int; var _local6:int; var _local7:int; var _local8:Enemy; var _local9:Array; var _local10:int; var _local11:Amber; _world = _arg1; _local2 = _arg1.hitSurfaces([_p.add(_v), _p.subtract(_v)]); _local3 = null; if (((_owner) && ((_owner.type == "amber")))){ _local3 = _arg1.hitSprites(this); }; _local4 = false; if (_local2.length){ _local4 = true; }; _local6 = 0; if (_local3){ _local6 = _local3.length; }; _local5 = 0; while (_local5 < _local6) { if (_local3[_local5].type == "block"){ if (((_fire) && ((Block(_local3[_local5]).subtype == Block.PLANT_BLOCK)))){ Block(_local3[_local5]).smash(_arg1); }; if (Block(_local3[_local5]).subtype == Block.CONTAINER_BLOCK){ if (_owner){ (_owner as Amber).hitContainer(Container(_local3[_local5]), _arg1); }; }; _local4 = true; }; if (_local3[_local5].type == "enemy"){ _local8 = (_local3[_local5] as Enemy); if (((!(_local8.invincible)) && (!(_local8.fireResistant)))){ _local8.damage(this, _arg1); if (_owner){ if (_local8.boss){ if (!_local8.health){ (_owner as Amber).bossKilled(_local8); } else { (_owner as Amber).bossDamaged(_local8); }; } else { (_owner as Amber).enemyKilled(_local8); }; }; }; _local4 = true; }; _local5++; }; if (((_owner) && (!((_owner.type == "amber"))))){ _local9 = _arg1.players; _local10 = _arg1.players.length; _local5 = 0; while (_local5 < _local10) { _local11 = _local9[_local5]; if (getRect().intersects(_local11.getRect())){ _local11.damage(); _local4 = true; break; }; _local5++; }; }; if (_gravity){ vY = (vY + World.GRAVITY); }; _localp.x = (_localp.x + (vX * _arg1.timeSpeed)); _localp.y = (_localp.y + (vY * _arg1.timeSpeed)); if (((_owner) && (_linked))){ x = ((_owner.x + _offset.x) + _localp.x); y = ((_owner.y + _offset.y) + _localp.y); } else { x = (_start.x + _localp.x); y = (_start.y + _localp.y); }; _local7 = Math.floor(_time); _local7 = (_local7 % clip.totalFrames); clip.gotoAndStop((1 + _local7)); _time = (_time + _arg1.timeSpeed); _life = (_life - _arg1.timeSpeed); if ((((_life <= 0)) || (_local4))){ _arg1.removeProjectile(this); if (((_owner) && ((_owner.type == "amber")))){ (_owner as Amber).removeFireBall(); }; }; } public function get gravity():Boolean{ return (_gravity); } public function set vY(_arg1:Number){ _v.y = _arg1; } override public function getPoints(_arg1:Number):Array{ var _local2:MovieClip; var _local3:Rectangle; var _local4:Number; var _local5:Number; _local2 = _clip; if (_local2 == null){ throw ("Error in Character::getStaticPoints(). Property 'hitbox' not found in Character::clip"); }; _local3 = _local2.getRect(clip); _local4 = (_local3.x + x); _local5 = (_local3.y + y); return ([new Point(_local4, _local5), new Point((_local4 + _local3.width), _local5), new Point((_local4 + _local3.width), (_local5 + _local3.height)), new Point(_local4, (_local5 + _local3.height))]); } public function set linked(_arg1:Boolean){ _linked = _arg1; } public function set fire(_arg1:Boolean){ _fire = _arg1; } } }//package amber3
Section 21
//SpikeBlock (amber3.SpikeBlock) package amber3 { import flash.display.*; public class SpikeBlock extends Block { private var _orientation:int; public function SpikeBlock(_arg1:int, _arg2:int, _arg3:uint, _arg4:BitmapData=null, _arg5:int=-1){ super(_arg1, _arg2, Block.SPIKE_BLOCK, _arg4, _arg5); _orientation = (_arg3 % 4); _clip.rotation = (_orientation * 90); x = _p.x; y = _p.y; } public function get positive():int{ return ((Boolean((_orientation < 2))) ? 1 : -1); } public function get orientation():int{ return (_orientation); } override public function set x(_arg1:Number){ super.x = _arg1; _clip.x = (_p.x + (Tile.TILE_HALF * int((((_orientation == 1)) || ((_orientation == 2)))))); } override public function set y(_arg1:Number){ super.y = _arg1; _clip.y = (_p.y + (Tile.TILE_HALF * int((_orientation > 1)))); } public function get vertical():Boolean{ return (Boolean((_orientation % 2))); } } }//package amber3
Section 22
//Static (amber3.Static) package amber3 { import flash.display.*; import flash.geom.*; public class Static extends GameSprite { protected var _bitmapID:int; public function Static(_arg1:int, _arg2:int, _arg3:BitmapData=null, _arg4:int=-1){ var _local5:Bitmap; super(_arg1, _arg2); _type = "static"; _bitmapID = _arg4; if (_arg3 != null){ _local5 = new Bitmap(_arg3); _clip.addChild(_local5); }; } override public function getPoints(_arg1:Number):Array{ var _local2:DisplayObjectContainer; var _local3:Rectangle; var _local4:Number; var _local5:Number; _local2 = _clip; if (!_clip.width){ return ([]); }; _local3 = _local2.getRect(_clip); _local4 = (_local3.x + x); _local5 = (_local3.y + y); return ([new Point(_local4, _local5), new Point((_local4 + _local3.width), _local5), new Point((_local4 + _local3.width), (_local5 + _local3.height)), new Point(_local4, (_local5 + _local3.height))]); } public function get bitmapID():int{ return (_bitmapID); } public function redraw(_arg1:World){ var _local2:BitmapData; var _local3:Bitmap; _local2 = _arg1.getBitmapByID(_bitmapID); while (_clip.numChildren) { _clip.removeChildAt(0); }; if (_local2 == null){ return; }; _local3 = new Bitmap(_local2); _clip.addChild(_local3); } } }//package amber3
Section 23
//Tile (amber3.Tile) package amber3 { import flash.display.*; import flash.geom.*; public class Tile { private var _position:Point; private var _end:int; private var _start:int; private var _color:int; private var _bitmapID:int; private var _clip:MovieClip; private var _center:Boolean; public static const LOW_CENTER:int = 5; public static const LOW_LEFT:int = 6; public static const MID_RIGHT:int = 3; public static const TILE_HALF:int = 50; public static const MID_CENTER:int = 8; public static const MID_LEFT:int = 7; public static const TOP_LEFT:int = 0; public static const TILE_SIZE:int = 100; public static const LOW_RIGHT:int = 4; public static const TOP_RIGHT:int = 2; public static const TOP_CENTER:int = 1; public function Tile(_arg1:Point, _arg2:int, _arg3:int, _arg4:Boolean, _arg5:BitmapData=null, _arg6=-1, _arg7:int=0){ _clip = new MovieClip(); _clip.x = (_arg1.x * TILE_SIZE); _clip.y = (_arg1.y * TILE_SIZE); _start = _arg2; _end = _arg3; _center = _arg4; _position = _arg1.clone(); _bitmapID = _arg6; _color = _arg7; draw(_start, _end, _center, _clip, _arg5, _color); } public function get bitmapID():int{ return (_bitmapID); } public function get center():Boolean{ return (_center); } public function get end():int{ return (_end); } public function get clip():MovieClip{ return (_clip); } public function get start():int{ return (_start); } public function get color():int{ return (_color); } public function getSurfaces():Array{ var _local1:Array; _local1 = []; _local1.push(getPoint(_start)); _local1[(_local1.length - 1)].x = (_local1[(_local1.length - 1)].x + (_position.x * TILE_SIZE)); _local1[(_local1.length - 1)].y = (_local1[(_local1.length - 1)].y + (_position.y * TILE_SIZE)); if (_center){ _local1.push(getPoint(Tile.MID_CENTER)); _local1[(_local1.length - 1)].x = (_local1[(_local1.length - 1)].x + (_position.x * TILE_SIZE)); _local1[(_local1.length - 1)].y = (_local1[(_local1.length - 1)].y + (_position.y * TILE_SIZE)); _local1.push(getPoint(Tile.MID_CENTER)); _local1[(_local1.length - 1)].x = (_local1[(_local1.length - 1)].x + (_position.x * TILE_SIZE)); _local1[(_local1.length - 1)].y = (_local1[(_local1.length - 1)].y + (_position.y * TILE_SIZE)); }; _local1.push(getPoint(_end)); _local1[(_local1.length - 1)].x = (_local1[(_local1.length - 1)].x + (_position.x * TILE_SIZE)); _local1[(_local1.length - 1)].y = (_local1[(_local1.length - 1)].y + (_position.y * TILE_SIZE)); return (_local1); } public function redraw(_arg1:World){ draw(_start, _end, _center, _clip, _arg1.getBitmapByID(_bitmapID), _color); } public function get y():int{ return (_position.y); } public function destroy(){ _clip.parent.removeChild(_clip); } public function get x():int{ return (_position.x); } public static function draw(_arg1:int, _arg2:int, _arg3:Boolean, _arg4:MovieClip, _arg5:BitmapData, _arg6:int){ var _local7:Array; var _local8:int; var _local9:int; var _local10:Point; _arg4.graphics.clear(); if (((!(_arg5)) || (!(_arg5.width)))){ _arg4.graphics.beginFill(_arg6); } else { _arg4.graphics.beginBitmapFill(_arg5); }; if (_arg1 == _arg2){ _arg4.graphics.drawRect(0, 0, TILE_SIZE, TILE_SIZE); _arg4.graphics.endFill(); return; }; _local7 = []; _local7.push(getPoint(_arg1)); _arg4.graphics.moveTo(_local7[0].x, _local7[0].y); if (_arg3){ _local7.push(getPoint(Tile.MID_CENTER)); }; _local7.push(getPoint(_arg2)); _local8 = 1; while (_local8 < _local7.length) { _arg4.graphics.lineTo(_local7[_local8].x, _local7[_local8].y); _local8++; }; _local9 = ((_arg2 + 1) % 9); while (_local9 != _arg1) { if (_local9 == MID_CENTER){ if (_local9 == _arg1){ break; }; _local9++; _local9 = (_local9 % 9); if (_local9 == _arg1){ break; }; }; _local10 = getPoint(_local9); _arg4.graphics.lineTo(_local10.x, _local10.y); _local9++; _local9 = (_local9 % 9); }; _arg4.graphics.endFill(); } public static function getPoint(_arg1:int):Point{ var _local2:Point; _local2 = new Point(); switch ((_arg1 % 9)){ case TOP_LEFT: case MID_LEFT: case LOW_LEFT: _local2.x = 0; break; case TOP_CENTER: case MID_CENTER: case LOW_CENTER: _local2.x = TILE_HALF; break; case TOP_RIGHT: case MID_RIGHT: case LOW_RIGHT: _local2.x = TILE_SIZE; break; }; switch ((_arg1 % 9)){ case TOP_LEFT: case TOP_CENTER: case TOP_RIGHT: _local2.y = 0; break; case MID_LEFT: case MID_CENTER: case MID_RIGHT: _local2.y = TILE_HALF; break; case LOW_LEFT: case LOW_CENTER: case LOW_RIGHT: _local2.y = TILE_SIZE; break; }; return (_local2); } } }//package amber3
Section 24
//Wind (amber3.Wind) package amber3 { import flash.display.*; import flash.geom.*; public class Wind extends Static { private var _position:int; private var LEFT:int; private var _orientation:int; private var _speed:int; public function Wind(_arg1:Number, _arg2:Number, _arg3:uint, _arg4:uint, _arg5:BitmapData=null, _arg6:int=-1){ super(_arg1, _arg2, _arg5, _arg6); _type = "wind"; if (((_clip) && (_clip.parent))){ _clip.parent.removeChild(_clip); }; _clip = new MovieClip(); _orientation = (_arg3 % 4); _speed = _arg4; _position = 0; x = _p.x; y = _p.y; } public function get positive():int{ return ((Boolean((_orientation < 2))) ? 1 : -1); } public function behaviour(_arg1:World){ _position = (_speed * _arg1.time); redraw(_arg1); } private function draw(_arg1:BitmapData){ var _local2:Number; var _local3:Matrix; _clip.graphics.clear(); if (((!((_arg1 == null))) && ((_bitmapID > -1)))){ _position = (Math.floor(_position) % _arg1.width); _local2 = ((orientation * Math.PI) * 0.5); _local3 = new Matrix(); _local3.scale((Tile.TILE_SIZE / _arg1.width), (Tile.TILE_SIZE / _arg1.height)); _local3.rotate(_local2); if (vertical){ _local3.translate(0, (_position * positive)); } else { _local3.translate((_position * positive), 0); }; _clip.graphics.beginBitmapFill(_arg1, _local3, true, false); } else { _clip.graphics.beginFill(0xFF00FF); }; _clip.graphics.drawRect(0, 0, Tile.TILE_SIZE, Tile.TILE_SIZE); _clip.graphics.endFill(); } public function get speed():int{ return (_speed); } public function get orientation():int{ return (_orientation); } override public function getPoints(_arg1:Number):Array{ return ([new Point(x, y), new Point((x + Tile.TILE_SIZE), y), new Point((x + Tile.TILE_SIZE), (y + Tile.TILE_SIZE)), new Point(x, (y + Tile.TILE_SIZE))]); } override public function set x(_arg1:Number){ super.x = _arg1; _clip.x = _p.x; } override public function set y(_arg1:Number){ super.y = _arg1; _clip.y = _p.y; } public function get vertical():Boolean{ return (Boolean((_orientation % 2))); } override public function redraw(_arg1:World){ draw(_arg1.getBitmapByID(_bitmapID)); } } }//package amber3
Section 25
//World (amber3.World) package amber3 { import flash.events.*; import flash.display.*; import flash.geom.*; import flash.utils.*; import flash.ui.*; import flash.net.*; public class World extends EventDispatcher { private var _enemyClipLibrary:Array; private var _isPausable:Boolean; private var _projectileLibrary:Array; private var _sprites:Array; public var CAMERA_AMBER_FACTOR:Number;// = 15 private var _front:MovieClip; private var _soundID:String; private var _cameraOffsetX:Number; private var _tileYStart:int; private var _tileXEnd:int; private var _players:Array; private var _cameraItem:Object; private var _tileClip:MovieClip; private var _running:Boolean; private var _waterClip:MovieClip; private var _bitmapLibrary:Array; private var _cameraPosition:Point; private var _focusOn:Object; private var _bitmapNames:Array; private var _camShakeAngle:int; private var _tiles:Array; private var _ready:Boolean; private var _backgroundID:int; private var _time:Number; private var _middle:MovieClip; private var _tileXStart:int; private var _back:MovieClip; private var _parent:DisplayObjectContainer; private var _background:Bitmap; private var _tileYEnd:int; private var _victory:Boolean; private var _windClip:MovieClip; private var _platforms:Array; private var _bossActivated:Array; private var _enemies:Array; public var cameraCenter:Point; private var _projectiles:Array; private var _startPoint:Point; private var _wind:Array; private var _totalPieces:int; private var _enemyLibrary:Array; private var _camOffsetY:Number; private var _timeSpeed:Number; private var _camOffsetX:Number; private var _stage:Stage; public static const GAME_OVER:String = "gameOver"; public static const CAMERA_RANGE:Number = 0; public static const CAMERA_Y_AMBER_FACTOR:Number = 2; public static const CAMERA_SPEED:Number = 0.5; public static const MAX_SHAKE_AMPLITUDE:int = 3; public static const CAMERA_AMBER_SPEED:Number = 0.2; public static const ACTIVE_AREA_RADIUS:int = 4; public static const SHAKE_ANGLE:Number = 4.18879020478639; public static const MAX_SHAKE_TIME:int = 20; public static const GRAVITY:Number = 3; public static const DEFAULT_PLAYER_CONFIG:Array = [["W".charCodeAt(), "S".charCodeAt(), "A".charCodeAt(), "D".charCodeAt(), "J".charCodeAt(), "K".charCodeAt(), Keyboard.SPACE, "L".charCodeAt(0)], [Keyboard.UP, Keyboard.DOWN, Keyboard.LEFT, Keyboard.RIGHT, Keyboard.NUMPAD_4, Keyboard.NUMPAD_5, Keyboard.ENTER, Keyboard.NUMPAD_6]]; public static const VICTORY:String = "victory"; public function World(_arg1:DisplayObjectContainer, _arg2:Stage){ CAMERA_AMBER_FACTOR = 15; super(); if (_arg2 == null){ throw ("Error in World::World(). Parameter 2 cannot be null"); }; cameraCenter = new Point(400, 300); _stage = _arg2; _parent = _arg1; _soundID = ""; _background = new Bitmap(); _backgroundID = -1; _back = new MovieClip(); _waterClip = new MovieClip(); _windClip = new MovieClip(); _tileClip = new MovieClip(); _middle = new MovieClip(); _front = new MovieClip(); if (_parent.parent == null){ _stage.addChild(_parent); }; _bitmapLibrary = []; _bitmapNames = []; _tiles = []; _sprites = []; _players = []; _platforms = []; _enemies = []; _projectiles = []; _bossActivated = []; _wind = []; _ready = false; _time = 0; _timeSpeed = 1; _running = false; _startPoint = new Point(); _tileXStart = int.MAX_VALUE; _tileXEnd = int.MIN_VALUE; _tileYStart = int.MAX_VALUE; _tileYEnd = int.MIN_VALUE; _camOffsetX = 0; _camOffsetY = 0; _camShakeAngle = 0; _cameraOffsetX = 0; _focusOn = null; _cameraItem = null; _cameraPosition = new Point(NaN, NaN); _victory = false; _isPausable = true; _totalPieces = 0; _enemyLibrary = []; _enemyClipLibrary = []; _projectileLibrary = []; } public function destroy(){ var _local1:int; var _local2:Amber; if (_stage){ _stage.removeEventListener("enterFrame", frame); }; _local1 = 0; while (_local1 < _players.length) { _local2 = _players[_local1]; _local2.removeEventListener(Amber.VICTORY, victory); _local2.removeEventListener(Amber.DEAD, killPlayer); _local2.removeEventListener(Amber.CHECKPOINT, setPlayerStart); _local2.removeEventListener(Amber.STOMP, shakeCamera); _local2.removeEventListener(Amber.SEEK_PLAYER_1, gotoPlayer1); _local2.removeEventListener(Amber.PAUSE_GAME, pauseGame); _local2.removeEventListener(Amber.BOSS_ENCOUNTERED, findBosses); _local2.removeEventListener(EnemyEvent.BOSS_DEFEATED, removeBossBlocks); _local1++; }; } public function updateSprite(_arg1:GameSprite, _arg2:int){ var _local3:int; removeFromArray(_arg1, _sprites[_arg2]); _local3 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (!_sprites[_local3]){ _sprites[_local3] = []; }; addToArray(_arg1, _sprites[_local3]); } public function pauseGame(_arg1:Event){ if (!_isPausable){ return; }; start(); } public function get back():MovieClip{ return (_back); } public function getNextSurface(_arg1:Point, _arg2:Point, _arg3:Point):Array{ var _local4:Number; var _local5:Number; var _local6:Point; var _local7:int; var _local8:Number; var _local9:Number; var _local10:Array; var _local11:int; var _local12:int; var _local13:int; _local4 = Math.atan2((_arg2.y - _arg1.y), (_arg2.x - _arg1.x)); _local5 = Math.atan2(_arg3.y, _arg3.x); _local7 = 0; if (Geometry.angularDistance(_local5, _local4) >= 0){ _local6 = _arg2; } else { _local6 = _arg1; _local7 = 1; }; _local8 = Math.floor((_local6.x / Tile.TILE_SIZE)); _local9 = Math.floor((_local6.y / Tile.TILE_SIZE)); _local11 = (_local8 - 1); while (_local11 <= (_local8 + 1)) { if (!_tiles[_local11]){ } else { _local12 = (_local9 - 1); while (_local12 <= (_local9 + 1)) { if (!_tiles[_local11][_local12]){ } else { _local10 = _tiles[_local11][_local12].getSurfaces(); _local13 = 0; while (_local13 < _local10.length) { if (_local10[(_local13 + _local7)].equals(_local6)){ return ([_local10[_local13], _local10[(_local13 + 1)]]); }; _local13 = (_local13 + 2); }; }; _local12++; }; }; _local11++; }; return ([]); } public function unload(){ var _local1:int; _local1 = 0; while (_local1 < _players.length) { _players[_local1].destroy(); _local1++; }; destroy(); if (_back.parent){ _back.parent.removeChild(_back); }; if (_waterClip.parent){ _waterClip.parent.removeChild(_waterClip); }; if (_windClip.parent){ _windClip.parent.removeChild(_windClip); }; if (_tileClip.parent){ _tileClip.parent.removeChild(_tileClip); }; if (_middle.parent){ _middle.parent.removeChild(_middle); }; if (_front.parent){ _front.parent.removeChild(_front); }; if (_background.parent){ _background.parent.removeChild(_background); }; _background = new Bitmap(); _back = new MovieClip(); _waterClip = new MovieClip(); _windClip = new MovieClip(); _tileClip = new MovieClip(); _middle = new MovieClip(); _front = new MovieClip(); _backgroundID = -1; _local1 = 0; while (_local1 < _bitmapLibrary.length) { if (_bitmapLibrary[_local1] != null){ BitmapData(_bitmapLibrary[_local1]).dispose(); }; _local1++; }; _bitmapLibrary = []; _tiles = []; _bitmapNames = []; _sprites = []; _players = []; _platforms = []; _enemies = []; _wind = []; _ready = false; _time = 0; _timeSpeed = 1; _running = false; _startPoint = new Point(); _totalPieces = 0; _stage.removeEventListener("enterFrame", frame); } public function addTile(_arg1:Tile){ if (_tiles[_arg1.x] == undefined){ _tiles[_arg1.x] = []; }; if (_tiles[_arg1.x][_arg1.y] != undefined){ _tiles[_arg1.x][_arg1.y].destroy(); _tiles[_arg1.x][_arg1.y] = undefined; }; _tileClip.addChild(_arg1.clip); _tiles[_arg1.x][_arg1.y] = _arg1; _tileXStart = Math.min(_tileXStart, _arg1.x); _tileXEnd = Math.max(_tileXEnd, _arg1.x); _tileYStart = Math.min(_tileYStart, _arg1.y); _tileYEnd = Math.max(_tileYEnd, _arg1.y); } protected function bitmapLoaded(_arg1:Event){ var _local2:LoaderInfo; var _local3:Bitmap; var _local4:int; var _local5:String; var _local6:int; var _local7:int; var _local8:int; _local2 = (_arg1.currentTarget as LoaderInfo); _local3 = Bitmap(_local2.content); _local4 = (_local2.url.lastIndexOf("/") + 1); _local5 = _local2.url.slice(_local4, _local2.url.length); _local2.removeEventListener("complete", bitmapLoaded); _local2.removeEventListener("ioError", bitmapFailed); _local6 = 0; while (_local6 < _bitmapNames.length) { if (_bitmapNames[_local6] == _local5){ _bitmapLibrary[_local6] = _local3.bitmapData; if (_backgroundID == _local6){ backgroundID = _local6; }; _local7 = 0; while (_local7 < _tiles.length) { if (!_tiles[_local7]){ } else { _local8 = 0; while (_local8 < _tiles[_local7].length) { if (_tiles[_local7][_local8]){ _tiles[_local7][_local8].redraw(this); }; _local8++; }; }; _local7++; }; _local7 = 0; while (_local7 < _wind.length) { if (!_wind[_local7]){ } else { _local8 = 0; while (_local8 < _wind[_local7].length) { if (_wind[_local7][_local8]){ _wind[_local7][_local8].redraw(this); }; _local8++; }; }; _local7++; }; _local7 = 0; while (_local7 < _platforms.length) { if (!_platforms[_local7]){ } else { _local8 = 0; while (_local8 < _platforms[_local7].length) { if (_platforms[_local7][_local8]){ _platforms[_local7][_local8].redraw(this); }; _local8++; }; }; _local7++; }; _local7 = 0; while (_local7 < _sprites.length) { if (!_sprites[_local7]){ } else { _local8 = 0; while (_local8 < _sprites[_local7].length) { if (_sprites[_local7][_local8]){ _sprites[_local7][_local8].redraw(this); }; _local8++; }; }; _local7++; }; return; }; _local6++; }; throw (((("Error in World::bitmapLoaded(). Bitmap with URL " + _local2.url) + " is not in the library:\n") + _bitmapNames)); } public function hitSurfaces(_arg1:Array):Array{ var _local2:Array; var _local3:Array; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:int; var _local9:int; var _local10:int; var _local11:int; _local2 = new Array(); _local3 = new Array(); _local4 = (_arg1[0].x / Tile.TILE_SIZE); _local5 = (_arg1[0].x / Tile.TILE_SIZE); _local6 = (_arg1[0].y / Tile.TILE_SIZE); _local7 = (_arg1[0].y / Tile.TILE_SIZE); _local8 = 1; while (_local8 < _arg1.length) { _local4 = Math.min(_local4, Math.floor((_arg1[_local8].x / Tile.TILE_SIZE))); _local6 = Math.min(_local6, Math.floor((_arg1[_local8].y / Tile.TILE_SIZE))); _local5 = Math.max(_local5, Math.floor((_arg1[_local8].x / Tile.TILE_SIZE))); _local7 = Math.max(_local7, Math.floor((_arg1[_local8].y / Tile.TILE_SIZE))); _local8++; }; _local9 = _local4; while (_local9 <= _local5) { if (!_tiles[_local9]){ } else { _local10 = _local6; while (_local10 <= _local7) { if (!_tiles[_local9][_local10]){ } else { _local3 = _tiles[_local9][_local10].getSurfaces(); _local11 = 0; while (_local11 < _local3.length) { if (Geometry.collide([_local3[_local11], _local3[(_local11 + 1)]], _arg1)){ _local2.push(_local3[_local11]); _local2.push(_local3[(_local11 + 1)]); }; _local11 = (_local11 + 2); }; }; _local10++; }; }; _local9++; }; return (_local2); } public function load(_arg1:String, _arg2:Boolean=true){ var _local3:String; var _local4:Boolean; var _local5:int; unload(); _parent.addChild(_background); _parent.addChild(_back); _parent.addChild(_waterClip); _parent.addChild(_windClip); _parent.addChild(_tileClip); _parent.addChild(_middle); _parent.addChild(_front); _local3 = ""; _local4 = false; _local5 = 0; while (_local5 < _arg1.length) { if (_arg1.charAt(_local5) == "{"){ _local4 = true; } else { if (_arg1.charAt(_local5) == "}"){ _local4 = false; readLine(_local3, _arg2); _local3 = ""; } else { if (_local4){ _local3 = (_local3 + _arg1.charAt(_local5)); }; }; }; _local5++; }; } public function get enemyLibrary():Array{ return (_enemyLibrary.concat()); } public function get front():MovieClip{ return (_front); } public function camera(_arg1:Point, _arg2:Point=null){ var _local3:Number; var _local4:Number; var _local5:Number; var _local6:Number; var _local7:int; var _local8:int; var _local9:int; var _local10:Number; var _local11:int; var _local12:int; var _local13:int; var _local14:Number; var _local15:Number; var _local16:Number; if (_arg2 == null){ _arg2 = new Point(400, 300); }; if (_camShakeAngle > 0){ _local15 = ((MAX_SHAKE_AMPLITUDE * _camShakeAngle) / MAX_SHAKE_TIME); _local16 = (_camShakeAngle * SHAKE_ANGLE); _camOffsetX = ((Math.cos(_local16) * _local15) * 0.2); _camOffsetY = (Math.sin(_local16) * _local15); _camShakeAngle--; } else { _camOffsetX = 0; _camOffsetY = 0; _camShakeAngle = 0; }; _local3 = (_arg2.x - (_arg1.x * _parent.scaleX)); _local4 = (_arg2.y - (_arg1.y * _parent.scaleY)); if (_local3 > _parent.x){ _local5 = ((_local3 - (_arg2.x * CAMERA_RANGE)) - _parent.x); } else { _local5 = ((_local3 + (_arg2.x * CAMERA_RANGE)) - _parent.x); }; if (_local4 > _parent.y){ _local6 = ((_local4 - (_arg2.y * CAMERA_RANGE)) - _parent.y); } else { _local6 = ((_local4 + (_arg2.y * CAMERA_RANGE)) - _parent.y); }; if ((((((_local3 > _parent.x)) && ((_local5 > 0)))) || ((((_local3 < _parent.x)) && ((_local5 < 0)))))){ _parent.x = (_parent.x + _local5); _parent.x = Math.round(_parent.x); }; if ((((((_local4 > _parent.y)) && ((_local6 > 0)))) || ((((_local4 < _parent.y)) && ((_local6 < 0)))))){ _parent.y = (_parent.y + _local6); _parent.y = Math.round(_parent.y); }; _local7 = ((-(_tileXStart) * Tile.TILE_SIZE) * _parent.scaleX); _local8 = (((-(int((_tileXEnd + 1))) * Tile.TILE_SIZE) * _parent.scaleX) + (_arg2.x * 2)); if (_local8 > _local7){ _local7 = (_local7 + _local8); _local8 = (_local7 - _local8); _local7 = (_local7 - _local8); }; _parent.x = Math.max(_local8, _parent.x); _parent.x = Math.min(_local7, _parent.x); _local9 = (_background.width - (_arg2.x * 2)); _local10 = (Number((_parent.x - _local8)) / Number((_local7 - _local8))); _background.x = ((-(Number((1 - _local10))) * _local9) - (_parent.x / _parent.scaleX)); _local11 = ((-(_tileYStart) * Tile.TILE_SIZE) * _parent.scaleY); _local12 = (((-(int((_tileYEnd + 1))) * Tile.TILE_SIZE) * _parent.scaleY) + (_arg2.y * 2)); if (_local12 > _local11){ _local11 = (_local11 + _local12); _local12 = (_local11 - _local12); _local11 = (_local11 - _local12); }; _parent.y = Math.max(_local12, _parent.y); _parent.y = Math.min(_local11, _parent.y); _local13 = (_background.height - (_arg2.y * 2)); _local14 = (Number((_parent.y - _local12)) / Number((_local11 - _local12))); _background.y = ((-(Number((1 - _local14))) * _local13) - (_parent.y / _parent.scaleY)); _parent.x = (_parent.x + _camOffsetX); _parent.y = (_parent.y + _camOffsetY); _parent.x = Math.round(_parent.x); _parent.y = Math.round(_parent.y); } public function set timeSpeed(_arg1:Number){ _timeSpeed = Math.max(Math.min(_arg1, 2), 0.5); } public function set enemyLibrary(_arg1:Array){ if ((_arg1 is Array)){ _enemyLibrary = _arg1.concat(); }; } public function get pausable():Boolean{ return (_isPausable); } public function hitSprites(_arg1:GameSprite):Array{ var _local2:Array; var _local3:Array; var _local4:int; var _local5:int; var _local6:int; var _local7:Array; var _local8:Rectangle; var _local9:Rectangle; var _local10:int; var _local11:int; _local2 = new Array(); _local3 = _arg1.getPoints(timeSpeed); _local4 = (_local3[0].x / Tile.TILE_SIZE); _local5 = (_local3[0].x / Tile.TILE_SIZE); _local6 = 1; while (_local6 < _local3.length) { _local4 = Math.min(_local4, Math.floor((_local3[_local6].x / Tile.TILE_SIZE))); _local5 = Math.max(_local5, Math.floor((_local3[_local6].x / Tile.TILE_SIZE))); _local6++; }; _local7 = []; _local8 = _arg1.getRect(); _local10 = (_local4 - 3); while (_local10 <= (_local5 + 3)) { if (_sprites[_local10]){ _local6 = 0; while (_local6 < _sprites[_local10].length) { if (_local8.intersects(_sprites[_local10][_local6].getRect())){ _local7.push(_sprites[_local10][_local6]); }; _local6++; }; }; if (_enemies[_local10]){ _local6 = 0; while (_local6 < _enemies[_local10].length) { if (_local8.intersects(_enemies[_local10][_local6].getRect())){ _local7.push(_enemies[_local10][_local6]); }; _local6++; }; }; if (_wind[_local10]){ _local6 = 0; while (_local6 < _wind[_local10].length) { if (_local8.intersects(_wind[_local10][_local6].getRect())){ _local7.push(_wind[_local10][_local6]); }; _local6++; }; }; _local10++; }; _local10 = ((_local4 - (Platform.MAX_RADIUS * 0.5)) - 2); while (_local10 <= ((_local5 + (Platform.MAX_RADIUS * 0.5)) + 2)) { if (_platforms[_local10]){ _local11 = 0; while (_local11 < _platforms[_local10].length) { if (_local8.intersects(_platforms[_local10][_local11].getRect())){ _local7.push(_platforms[_local10][_local11]); }; _local11++; }; }; _local10++; }; return (_local7); } public function set projectileLibrary(_arg1:Array){ if ((_arg1 is Array)){ _projectileLibrary = _arg1.concat(); }; } public function updateEnemy(_arg1:Enemy, _arg2:int){ var _local3:int; _local3 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local3 < 0){ _local3 = 0; }; if (((!(_enemies[_arg2])) || ((_arg2 == _local3)))){ return; }; removeFromArray(_arg1, _enemies[_arg2]); if (!_enemies[_local3]){ _enemies[_local3] = []; }; addToArray(_arg1, _enemies[_local3]); } public function addPlatform(_arg1:Platform){ var _local2:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local2 < 0){ _local2 = 0; }; if (_platforms[_local2] == undefined){ _platforms[_local2] = []; }; if (_arg1.depth > 0){ _front.addChild(_arg1.clip); } else { _back.addChild(_arg1.clip); }; addToArray(_arg1, _platforms[_local2]); } public function get minX():int{ return (_tileXStart); } public function addWind(_arg1:Wind){ var _local2:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local2 < 0){ _local2 = 0; }; if (_wind[_local2] == undefined){ _wind[_local2] = []; }; if (_arg1.depth > 0){ _windClip.addChild(_arg1.clip); } else { _windClip.addChild(_arg1.clip); }; addToArray(_arg1, _wind[_local2]); } public function victory(_arg1:Event){ _victory = true; } protected function bitmapFailed(_arg1:Event){ var _local2:LoaderInfo; _local2 = (_arg1.currentTarget as LoaderInfo); _local2.removeEventListener("complete", bitmapLoaded); _local2.removeEventListener("ioError", bitmapFailed); throw (("Error: Failed to load bitmap " + (_arg1.currentTarget as LoaderInfo).url)); } public function get startPoint():Point{ return (_startPoint); } public function set pausable(_arg1:Boolean):void{ _isPausable = _arg1; } public function set enemyClipLibrary(_arg1:Array){ if ((_arg1 is Array)){ _enemyClipLibrary = _arg1.concat(); }; } public function setPlayerStart(_arg1:CheckPointEvent){ var _local2:Amber; var _local3:int; var _local4:int; _local2 = (_arg1.currentTarget as Amber); _local3 = _local2.tX; _local4 = _local2.tY; _local2.tX = (_arg1.x / Tile.TILE_HALF); _local2.tY = (_arg1.y / Tile.TILE_HALF); if (((!((_local3 == _local2.tX))) || (!((_local4 == _local2.tY))))){ dispatchEvent(new CheckPointEvent(Amber.CHECKPOINT, _arg1.x, _arg1.y)); }; } public function get minY():int{ return (_tileYStart); } public function start(_arg1:Event=null){ if (_running){ _stage.removeEventListener("enterFrame", frame); } else { _stage.addEventListener("enterFrame", frame, false, 0, true); }; _running = !(_running); } public function removeEnemy(_arg1:Enemy){ var _local2:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local2 < 0){ _local2 = 0; }; if (!_enemies[_local2]){ throw ((((("ERROR in World::removeEnemy(). _enemies[" + _local2) + "] does not exist. Character at position ") + _arg1.x) + " could not be removed.")); }; if (((_arg1.clip) && (_arg1.clip.parent))){ _arg1.clip.parent.removeChild(_arg1.clip); }; removeFromArray(_arg1, _enemies[_local2]); } public function addEnemy(_arg1:Enemy){ var _local2:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local2 < 0){ _local2 = 0; }; if (_enemies[_local2] == undefined){ _enemies[_local2] = []; }; if (_arg1.depth > 0){ _front.addChild(_arg1.clip); } else { _back.addChild(_arg1.clip); }; addToArray(_arg1, _enemies[_local2]); } public function removeSprite(_arg1:GameSprite){ var _local2:int; var _local3:Block; var _local4:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (!_sprites[_local2]){ throw ((((("ERROR in World::removeSprite(). _sprites[" + _local2) + "] does not exist. Sprite at position ") + _arg1.x) + " could not be removed.")); }; if (((_arg1.clip) && (_arg1.clip.parent))){ _arg1.clip.parent.removeChild(_arg1.clip); }; removeFromArray(_arg1, _sprites[_local2]); if (_arg1.type == "block"){ _local3 = (_arg1 as Block); _local4 = 0; while (_local4 < 4) { if (_local3.getNeighbor(_local4)){ _local3.getNeighbor(_local4).setNeighbor(((_local4 + 2) % 4), null); _local3.setNeighbor(_local4, null); }; _local4++; }; }; if ((((_arg1.type == "block")) && ((Block(_arg1).subtype == Block.BOSS_BLOCK)))){ removeFromArray(_arg1, _bossActivated); }; } public function get soundID():String{ return (_soundID); } public function frame(_arg1:Event){ var _local2:int; var _local3:int; var _local4:Point; var _local5:Array; var _local6:Array; var _local7:int; var _local8:Number; var _local9:Number; var _local10:Number; var _local11:int; var _local12:int; var _local13:Point; var _local14:Number; var _local15:int; _local4 = new Point(); _local5 = []; _local6 = []; _local12 = 0; while (_local12 < _projectiles.length) { if (_projectiles[_local12]){ _projectiles[_local12].behaviour(this); }; _local12++; }; _local7 = 0; while (_local7 < _players.length) { if (!_players[_local7]){ } else { _local2 = (Math.floor((_players[_local7].x / Tile.TILE_SIZE)) - 1); _local3 = (Math.ceil((_players[_local7].x / Tile.TILE_SIZE)) + 1); _local11 = ((_local2 - (Platform.MAX_RADIUS * 0.5)) - 3); while (_local11 <= ((_local3 + (Platform.MAX_RADIUS * 0.5)) + 3)) { if (((!(_platforms[_local11])) || ((_local6[_local11] == true)))){ } else { _local6[_local11] = true; _local12 = 0; while (_local12 < _platforms[_local11].length) { _local13 = _platforms[_local11][_local12].position(_time); _platforms[_local11][_local12].x = _local13.x; _platforms[_local11][_local12].y = _local13.y; _local12++; }; }; _local11++; }; _local11 = ((_local2 - ACTIVE_AREA_RADIUS) - 2); while (_local11 <= ((_local3 + ACTIVE_AREA_RADIUS) + 2)) { if (_local5[_local11] != true){ if (_enemies[_local11]){ _local12 = 0; while (_local12 < _enemies[_local11].length) { if (_enemies[_local11][_local12]){ _local14 = _enemies[_local11][_local12].x; _local15 = _enemies[_local11].length; _enemies[_local11][_local12].behaviour(this); if (_local15 == _enemies[_local11].length){ updateEnemy(_enemies[_local11][_local12], Math.floor((_local14 / Tile.TILE_SIZE))); }; }; _local12++; }; }; if (_wind[_local11]){ _local12 = 0; while (_local12 < _wind[_local11].length) { if (_wind[_local11][_local12]){ _wind[_local11][_local12].behaviour(this); }; _local12++; }; }; }; _local5[_local11] = true; _local11++; }; _players[_local7].behaviour(this); if (_players[_local7]){ _local4.offset(_players[_local7].x, _players[_local7].y); }; }; _local7++; }; if (!_players.length){ dispatchEvent(new Event(GAME_OVER)); return; }; _local8 = (1 / _players.length); _local4.x = (_local4.x * _local8); _local4.y = (_local4.y * _local8); _local4.y = (_local4.y - (_players[0].clip.hitbox.height * 0.5)); _local9 = _players[0].vX; _local10 = _players[0].vY; _cameraOffsetX = (_cameraOffsetX + (((_local9 * CAMERA_AMBER_FACTOR) - _cameraOffsetX) * CAMERA_AMBER_SPEED)); _local4.x = (_local4.x + _cameraOffsetX); if (((_focusOn) && (!(((isNaN(_focusOn.x)) || (isNaN(_focusOn.y))))))){ _local4.x = _focusOn.x; _local4.y = _focusOn.y; }; if (isNaN(_cameraPosition.x)){ _cameraPosition.x = _local4.x; _cameraPosition.y = _local4.y; } else { _cameraPosition.x = (_cameraPosition.x + ((_local4.x - _cameraPosition.x) * CAMERA_SPEED)); _cameraPosition.y = (_cameraPosition.y + ((_local4.y - _cameraPosition.y) * CAMERA_SPEED)); }; camera(_cameraPosition, cameraCenter); _time = (_time + _timeSpeed); if (_victory){ dispatchEvent(new Event(VICTORY)); }; } public function getBlockAt(_arg1:int, _arg2:int):Block{ var _local3:int; var _local4:int; _local3 = (_arg1 >> 1); if (_sprites[_local3]){ _local4 = 0; while (_local4 < _sprites[_local3].length) { if ((((((_sprites[_local3][_local4].tX == _arg1)) && ((_sprites[_local3][_local4].tY == _arg2)))) && ((_sprites[_local3][_local4].type == "block")))){ return (_sprites[_local3][_local4]); }; _local4++; }; }; return (null); } public function get maxX():int{ return (_tileXEnd); } public function get maxY():int{ return (_tileYEnd); } public function findBosses(_arg1:Event){ var _local2:int; var _local3:int; var _local4:int; var _local5:Array; var _local6:int; var _local7:Enemy; _local4 = _enemies.length; _local2 = 0; while (_local2 < _local4) { _local5 = _enemies[_local2]; if (_local5){ _local6 = _local5.length; _local3 = 0; while (_local3 < _local6) { _local7 = (_local5[_local3] as Enemy); if (((_local7) && (_local7.boss))){ _local7.activate(this); _local7.amber = (_arg1.currentTarget as Amber); dispatchEvent(new EnemyEvent(EnemyEvent.BOSS_ACTIVATED, _local7)); _focusOn = _cameraItem; return; }; _local3++; }; }; _local2++; }; } public function addProjectile(_arg1:Projectile){ var _local2:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local2 < 0){ _local2 = 0; }; if (_arg1.depth > 0){ _front.addChild(_arg1.clip); } else { _back.addChild(_arg1.clip); }; addToArray(_arg1, _projectiles); } public function get timeSpeed():Number{ return (_timeSpeed); } public function getBitmapByID(_arg1:int):BitmapData{ if ((((_arg1 >= _bitmapLibrary.length)) || ((_arg1 < 0)))){ return (null); }; if (_bitmapLibrary[_arg1]){ return (_bitmapLibrary[_arg1]); }; return (null); } public function setup(_arg1:Array, _arg2:Array=null){ var _local3:int; var _local4:Controller; var _local5:Amber; if (_arg2 == null){ _arg2 = DEFAULT_PLAYER_CONFIG; }; _local3 = 0; while (_local3 < _arg1.length) { _local4 = new Controller(_stage); _local4.keyconfig = _arg2[_local3]; _local5 = new Amber(_startPoint.x, _startPoint.y, _arg1[_local3], _local4); _local5.fireImage = _projectileLibrary[0]; _local5.appleImage = _projectileLibrary[1]; _local5.addEventListener(Amber.VICTORY, victory, false, 0, true); _local5.addEventListener(Amber.DEAD, killPlayer, false, 100, true); _local5.addEventListener(Amber.CHECKPOINT, setPlayerStart, false, 0, true); _local5.addEventListener(Amber.STOMP, shakeCamera, false, 0, true); _local5.addEventListener(Amber.SEEK_PLAYER_1, gotoPlayer1, false, 0, true); _local5.addEventListener(Amber.PAUSE_GAME, pauseGame, false, 0, true); _local5.addEventListener(Amber.BOSS_ENCOUNTERED, findBosses, false, 0, true); _local5.addEventListener(EnemyEvent.BOSS_DEFEATED, removeBossBlocks, false, 0, true); _local5.playerID = _local3; addPlayer(_local5); _local3++; }; _parent.x = (400 - ((_startPoint.x * Tile.TILE_HALF) * _parent.scaleX)); _parent.y = (300 - ((_startPoint.y * Tile.TILE_HALF) * _parent.scaleY)); } public function removePlayer(_arg1:Amber){ var _local2:int; _local2 = 0; while (_local2 < _players.length) { if (_players[_local2] == _arg1){ _middle.removeChild(_arg1.clip); removeFromArray(_arg1, _players); return; }; _local2++; }; } public function get projectileLibrary():Array{ return (_projectileLibrary.concat()); } public function get middle():MovieClip{ return (_middle); } public function save():String{ var _local1:String; var _local2:int; var _local3:Wind; var _local4:int; var _local5:GameSprite; var _local6:String; var _local7:Platform; var _local8:Enemy; var _local9:int; var _local10:int; _local1 = ""; _local1 = (_local1 + "stages.push(String(<![CDATA[\n\n"); _local1 = (_local1 + "[BITMAPS]\n"); _local2 = 0; while (_local2 < _bitmapNames.length) { _local1 = (_local1 + (("{BITMAP," + _bitmapNames[_local2]) + "}\n")); _local2++; }; _local1 = (_local1 + "[BACKGROUND]\n"); _local1 = (_local1 + (("{BACKGROUND," + _backgroundID) + "}\n")); _local1 = (_local1 + "[START POINT]\n"); _local1 = (_local1 + (((("{START," + _startPoint.x) + ",") + _startPoint.y) + "}\n")); _local1 = (_local1 + "[TILES]\n"); _local2 = 0; while (_local2 < _tiles.length) { if (!_tiles[_local2]){ } else { _local4 = 0; while (_local4 < _tiles[_local2].length) { if (!_tiles[_local2][_local4]){ } else { _local1 = (_local1 + (((((((((("{TILE," + _local2) + ",") + _local4) + ",") + _tiles[_local2][_local4].start) + ",") + _tiles[_local2][_local4].end) + ",") + int(_tiles[_local2][_local4].center)) + ",")); _local1 = (_local1 + (((_tiles[_local2][_local4].bitmapID + ",") + _tiles[_local2][_local4].color) + "}\n")); }; _local4++; }; }; _local2++; }; _local1 = (_local1 + "[SPRITES]\n"); _local2 = 0; while (_local2 < _sprites.length) { if (!_sprites[_local2]){ } else { _local4 = 0; while (_local4 < _sprites[_local2].length) { _local5 = _sprites[_local2][_local4]; _local6 = (((((((("{SPRITE," + _local5.type) + ",") + _local5.tX) + ",") + _local5.tY) + ",") + _local5.depth) + ","); switch (_local5.type){ case "item": _local6 = (_local6 + ((Item(_local5).subtype + ",") + Item(_local5).bitmapID)); break; case "block": if (Block(_local5).subtype == Block.MESSAGE_BLOCK){ _local6 = (((((("{SPRITE,message," + _local5.tX) + ",") + _local5.tY) + ",") + _local5.depth) + ","); _local6 = (_local6 + ((MessageBlock(_local5).bitmapID + ",") + MessageBlock(_local5).message)); } else { if (Block(_local5).subtype == Block.SPIKE_BLOCK){ _local6 = (((((("{SPRITE,spike," + _local5.tX) + ",") + _local5.tY) + ",") + _local5.depth) + ","); _local6 = (_local6 + ((SpikeBlock(_local5).bitmapID + ",") + SpikeBlock(_local5).orientation)); } else { if (Block(_local5).subtype == Block.CONTAINER_BLOCK){ _local6 = (((((("{SPRITE,container," + _local5.tX) + ",") + _local5.tY) + ",") + _local5.depth) + ","); _local6 = (_local6 + ((Container(_local5).bitmapID + ",") + Container(_local5).numItems)); } else { _local6 = (_local6 + ((Block(_local5).subtype + ",") + Block(_local5).bitmapID)); }; }; }; break; case "oneway": _local6 = (_local6 + ((OneWayWall(_local5).bitmapID + ",") + OneWayWall(_local5).direction)); break; }; _local1 = (_local1 + _local6); _local1 = (_local1 + "}\n"); _local4++; }; }; _local2++; }; _local2 = 0; while (_local2 < _wind.length) { if (!_wind[_local2]){ } else { _local4 = 0; while (_local4 < _wind[_local2].length) { _local3 = _wind[_local2][_local4]; _local6 = (((((((("{SPRITE," + _local3.type) + ",") + _local3.tX) + ",") + _local3.tY) + ",") + _local3.depth) + ","); _local6 = (_local6 + ((((_local3.orientation + ",") + _local3.speed) + ",") + _local3.bitmapID)); _local1 = (_local1 + _local6); _local1 = (_local1 + "}\n"); _local4++; }; }; _local2++; }; _local1 = (_local1 + "\n[PLATFORMS]\n"); _local2 = 0; while (_local2 < _platforms.length) { if (!_platforms[_local2]){ } else { _local4 = 0; while (_local4 < _platforms[_local2].length) { _local7 = _platforms[_local2][_local4]; _local1 = (_local1 + (((((("{PLATFORM," + _local7.tX) + ",") + _local7.tY) + ",") + _local7.depth) + ",")); _local1 = (_local1 + (((((_local7.bitmapID + ",") + _local7.hScale) + ",") + _local7.vScale) + ",")); _local1 = (_local1 + ((((Math.floor(((_local7.radius * 2) / Tile.TILE_SIZE)).toString() + ",") + int(Math.floor(((_local7.phase * 180) / Math.PI))).toString()) + ",") + int((_local7.period / 20)).toString())); _local1 = (_local1 + "}\n"); _local4++; }; }; _local2++; }; _local1 = (_local1 + "[ENEMIES]\n"); _local2 = 0; while (_local2 < _enemies.length) { if (!_enemies[_local2]){ } else { _local4 = 0; while (_local4 < _enemies[_local2].length) { _local8 = _enemies[_local2][_local4]; _local9 = _local8.id; _local10 = _local8.clipID; _local1 = (_local1 + (((((((((((((((("{ENEMY," + _local8.tX) + ",") + _local8.tY) + ",") + _local8.depth) + ",") + _local8.id) + ",") + _local8.clipID) + ",") + int(_local8.fireResistant).toString()) + ",") + int(_local8.attackResistant).toString()) + ",") + int(_local8.jumpResistant).toString()) + "}\n")); _local4++; }; }; _local2++; }; _local1 = (_local1 + "\n]]>));"); return (_local1); } public function get enemyClipLibrary():Array{ return (_enemyClipLibrary.concat()); } public function get totalPieces():int{ return (_totalPieces); } public function set backgroundID(_arg1:int){ if (_arg1 > _bitmapLibrary.length){ trace("Error in function World::backgroundID(n:int). Input parameter out of range."); return; }; _backgroundID = _arg1; if (_background.parent){ _background.parent.removeChild(_background); }; if ((((_arg1 < 0)) || ((_bitmapLibrary[_arg1] == null)))){ _background = new Bitmap(); _parent.addChildAt(_background, 0); return; }; _background = new Bitmap(_bitmapLibrary[_arg1]); _parent.addChildAt(_background, 0); } public function removeProjectile(_arg1:Projectile){ var _local2:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_local2 < 0){ _local2 = 0; }; if (((_arg1.clip) && (_arg1.clip.parent))){ _arg1.clip.parent.removeChild(_arg1.clip); }; removeFromArray(_arg1, _projectiles); } private function readLine(_arg1:String, _arg2:Boolean=true){ var list:Array; var t:Tile; var plat:Platform; var eClass:Class; var eClip:Class; var enemy:Enemy; var item:Item; var blk:Block; var msgBlk:MessageBlock; var wind:Wind; var spkBlk:SpikeBlock; var oneBlk:OneWayWall; var contBlk:Container; var str = _arg1; var useLibrary = _arg2; list = str.split(","); switch (list[0]){ case "BITMAP": loadBitmap(list[1], useLibrary); break; case "BACKGROUND": backgroundID = int(list[1]); break; case "MUSIC": _soundID = list[1]; break; case "TILE": t = new Tile(new Point(int(list[1]), int(list[2])), int(list[3]), int(list[4]), Boolean(int(list[5])), getBitmapByID(list[6]), int(list[6]), int(list[7])); addTile(t); case "SPRITE": switch (list[1]){ case "item": item = new Item(int(list[2]), int(list[3]), list[5], getBitmapByID(int(list[6])), int(list[6])); item.depth = int(list[4]); addSprite(item); break; case "block": blk = new Block(int(list[2]), int(list[3]), int(list[5]), getBitmapByID(int(list[6])), int(list[6])); blk.depth = int(list[4]); addSprite(blk); break; case "message": msgBlk = new MessageBlock(int(list[2]), int(list[3]), list.slice(6, list.length).join(","), getBitmapByID(int(list[5])), int(list[5])); msgBlk.depth = int(list[4]); addSprite(msgBlk); break; case "wind": if (list.length < 8){ wind = new Wind(int(list[2]), int(list[3]), int(list[5]), int(list[6])); } else { wind = new Wind(int(list[2]), int(list[3]), int(list[5]), int(list[6]), getBitmapByID(int(list[7])), int(list[7])); }; wind.depth = int(list[4]); addWind(wind); break; case "spike": spkBlk = new SpikeBlock(int(list[2]), int(list[3]), int(list[6]), getBitmapByID(int(list[5])), int(list[5])); spkBlk.depth = int(list[4]); addSprite(spkBlk); break; case "oneway": oneBlk = new OneWayWall(int(list[2]), int(list[3]), int(list[6]), getBitmapByID(int(list[5])), int(list[5])); oneBlk.depth = int(list[4]); addSprite(oneBlk); break; case "container": contBlk = new Container(int(list[2]), int(list[3]), int(list[6]), getBitmapByID(int(list[5])), int(list[5])); contBlk.depth = int(list[4]); addSprite(contBlk); break; }; break; case "PLATFORM": plat = new Platform(int(list[1]), int(list[2]), getBitmapByID(int(list[4])), int(list[4]), Number(list[5]), Number(list[6]), Number(list[7]), Number(list[8]), Number(list[9])); plat.depth = int(list[4]); addPlatform(plat); break; case "ENEMY": if (list.length < 6){ trace("YOUR STAGE IS OUTDATED. DELETE THE OLD ENEMY ITEMS"); break; }; try { eClass = (_enemyLibrary[int(list[4])] as Class); eClip = (_enemyClipLibrary[int(list[5])] as Class); } catch(E) { trace(((("Error loading enemy ID:" + int(list[4])) + " Clip:") + int(list[5]))); trace(E.message); break; }; if (!eClass){ trace((("Error in World::readLine. Enemy[" + int(list[4])) + "] does not exist")); break; }; if (!eClip){ trace((("Error in World::readLine. EnemyClip[" + int(list[5])) + "] does not exist")); break; }; enemy = new eClass(int(list[1]), int(list[2]), eClip, int(list[4]), int(list[5])); enemy.depth = int(list[3]); addEnemy(enemy); break; case "START": _startPoint.x = int(list[1]); _startPoint.y = int(list[2]); break; }; } public function get players():Array{ return (_players); } public function set focusOn(_arg1:Object){ _focusOn = _arg1; } public function gotoPlayer1(_arg1:Event){ var _local2:Amber; var _local3:int; _local2 = (_arg1.currentTarget as Amber); _local3 = 0; while (_local3 < _players.length) { if (((_players[_local3]) && ((_players[_local3].playerID == 0)))){ _local2.x = _players[_local3].x; _local2.y = _players[_local3].y; }; _local3++; }; } public function loadBitmap(_arg1:String, _arg2:Boolean=true){ var i:int; var image:BitmapData; var ImageClass:Class; var req:URLRequest; var loader:Loader; var loadInfo:LoaderInfo; var bmp = _arg1; var useLibrary = _arg2; i = 0; while (i < _bitmapNames.length) { if (_bitmapNames[i] == bmp){ return; }; i = (i + 1); }; _bitmapNames.push(bmp); image = null; try { if (useLibrary){ ImageClass = Class(getDefinitionByName(bmp)); image = BitmapData(new ImageClass(0, 0)); } else { req = new URLRequest(bmp); loader = new Loader(); loadInfo = loader.contentLoaderInfo; loadInfo.addEventListener("complete", bitmapLoaded, false, 0, true); loadInfo.addEventListener("ioError", bitmapFailed, false, 0, true); loader.load(req); }; } catch(E:Error) { if (useLibrary){ trace((("Error in World::loadBitmap(). Class " + bmp) + " does not exist.")); image = new BitmapData(Tile.TILE_SIZE, Tile.TILE_SIZE); }; }; _bitmapLibrary.push(image); } public function get running():Boolean{ return (_running); } public function killSprite(_arg1:GameSprite){ removeSprite(_arg1); } public function shakeCamera(_arg1){ if (_camShakeAngle > 0){ return; }; _camShakeAngle = MAX_SHAKE_TIME; } public function get backgroundID():int{ return (_backgroundID); } public function set soundID(_arg1:String){ _soundID = _arg1; } public function get time():Number{ return (_time); } public function get focusOn():Object{ return (_focusOn); } public function killPlayer(_arg1:Event){ var _local2:Amber; _local2 = (_arg1.currentTarget as Amber); if (_local2.lives == 0){ removePlayer(_local2); return; }; _local2.reset(false); } public function addPlayer(_arg1:Amber){ _middle.addChild(_arg1.clip); addToArray(_arg1, _players); } public function addSprite(_arg1:GameSprite){ var _local2:int; var _local3:Block; var _local4:int; _local2 = Math.floor((_arg1.x / Tile.TILE_SIZE)); if (_sprites[_local2] == undefined){ _sprites[_local2] = []; }; if ((((_arg1.type == "item")) && ((Item(_arg1).subtype == Item.WATER)))){ _waterClip.addChild(_arg1.clip); } else { if (_arg1.depth > 0){ _front.addChild(_arg1.clip); } else { _back.addChild(_arg1.clip); }; }; if ((((_arg1.type == "item")) && ((Item(_arg1).subtype == Item.HEALTH)))){ _totalPieces++; }; if ((((_arg1.type == "item")) && ((Item(_arg1).subtype == Item.CAMERA)))){ _cameraItem = _arg1; }; addToArray(_arg1, _sprites[_local2]); if ((((_arg1.type == "block")) && ((Block(_arg1).subtype == Block.BOSS_BLOCK)))){ addToArray(_arg1, _bossActivated); }; if (_arg1.type == "block"){ _local3 = (_arg1 as Block); _local3.setNeighbor(Block.LEFT, getBlockAt((_local3.tX - 1), _local3.tY)); _local3.setNeighbor(Block.RIGHT, getBlockAt((_local3.tX + 1), _local3.tY)); _local3.setNeighbor(Block.TOP, getBlockAt(_local3.tX, (_local3.tY - 1))); _local3.setNeighbor(Block.BOTTOM, getBlockAt(_local3.tX, (_local3.tY + 1))); _local4 = 0; while (_local4 < 4) { if (_local3.getNeighbor(_local4)){ _local3.getNeighbor(_local4).setNeighbor(((_local4 + 2) % 4), _local3); }; _local4++; }; }; } public function highestSurfaceUnder(_arg1:Array, _arg2:Point):Number{ var _local3:int; var _local4:int; var _local5:int; var _local6:int; var _local7:int; var _local8:Number; var _local9:int; var _local10:int; var _local11:Tile; var _local12:Array; var _local13:Point; var _local14:Point; var _local15:int; var _local16:Point; var _local17:Point; var _local18:Point; var _local19:Number; if (_arg2.y < (-(Math.abs(_arg2.x)) - Geometry.TOLERANCE)){ return (NaN); }; _local3 = (_arg1[0].x / Tile.TILE_SIZE); _local4 = (_arg1[0].x / Tile.TILE_SIZE); _local5 = (_arg1[0].y / Tile.TILE_SIZE); _local6 = (_arg1[0].y / Tile.TILE_SIZE); _local7 = 1; while (_local7 < _arg1.length) { _local3 = Math.min(_local3, Math.floor((_arg1[_local7].x / Tile.TILE_SIZE))); _local5 = Math.min(_local5, Math.floor((_arg1[_local7].y / Tile.TILE_SIZE))); _local4 = Math.max(_local4, Math.floor((_arg1[_local7].x / Tile.TILE_SIZE))); _local6 = Math.max(_local6, Math.floor((_arg1[_local7].y / Tile.TILE_SIZE))); _local7++; }; _local8 = Infinity; _local9 = (_local3 - 1); while (_local9 <= (_local4 + 1)) { if (!_tiles[_local9]){ } else { _local10 = (_local5 - 1); while (_local10 <= (_local6 + 1)) { _local11 = _tiles[_local9][_local10]; if (_local11){ _local12 = _local11.getSurfaces(); _local7 = 0; while (_local7 < _arg1.length) { _local13 = _arg1[_local7]; _local13 = _local13.clone(); _local14 = _local13.clone(); _local13.clone().y = (_local14.y + Math.min(Tile.TILE_SIZE, (Math.abs(_arg2.x) * 1.1))); _local13.y--; _local15 = 0; while (_local15 < _local12.length) { _local16 = _local12[_local15]; _local17 = _local12[(_local15 + 1)]; _local18 = Geometry.intersectLines(_local13, _local14, _local16, _local17); if (_local18 != null){ _local19 = (_local18.y - _local13.y); if ((((_local19 > 0)) && ((_local19 < _local8)))){ _local8 = _local19; }; }; _local15 = (_local15 + 2); }; _local7++; }; }; _local10++; }; }; _local9++; }; if (_local8 < Infinity){ return ((_local8 + 1)); }; return (NaN); } public function addToParent(){ _parent.addChild(_background); _parent.addChild(_back); _parent.addChild(_waterClip); _parent.addChild(_windClip); _parent.addChild(_tileClip); _parent.addChild(_middle); _parent.addChild(_front); } public function removeBossBlocks(_arg1:Event){ while (_bossActivated.length) { _bossActivated[0].smash(this); }; _bossActivated = []; if (((_cameraItem) && ((_focusOn == _cameraItem)))){ _cameraItem = (_focusOn = null); }; } public static function removeFromArray(_arg1, _arg2:Array){ var _local3:int; _local3 = 0; while (_local3 < _arg2.length) { if (_arg2[_local3] == _arg1){ _arg2.splice(_local3, 1); return; }; _local3++; }; } public static function addToArray(_arg1, _arg2:Array){ var _local3:int; _local3 = 0; while (_local3 < _arg2.length) { if (_arg2[_local3] == _arg1){ return; }; _local3++; }; _arg2[_local3] = _arg1; } } }//package amber3
Section 26
//png (beach_medsand.png) package beach_medsand { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package beach_medsand
Section 27
//png (cave_b.png) package cave_b { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package cave_b
Section 28
//png (cave_bg.png) package cave_bg { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package cave_bg
Section 29
//png (cave_bigp.png) package cave_bigp { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package cave_bigp
Section 30
//png (cave_floor1.png) package cave_floor1 { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package cave_floor1
Section 31
//png (cave_medb.png) package cave_medb { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package cave_medb
Section 32
//wav (cave_short.wav) package cave_short { import flash.media.*; public dynamic class wav extends Sound { } }//package cave_short
Section 33
//png (empty.png) package empty { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package empty
Section 34
//wav (field.wav) package field { import flash.media.*; public dynamic class wav extends Sound { } }//package field
Section 35
//wav (forest.wav) package forest { import flash.media.*; public dynamic class wav extends Sound { } }//package forest
Section 36
//png (plain_dirt.png) package plain_dirt { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package plain_dirt
Section 37
//png (plain_dirt2.png) package plain_dirt2 { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package plain_dirt2
Section 38
//png (plain_dirt3.png) package plain_dirt3 { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package plain_dirt3
Section 39
//png (plain_music.png) package plain_music { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package plain_music
Section 40
//png (plain_switch.png) package plain_switch { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package plain_switch
Section 41
//png (plains1bg.png) package plains1bg { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package plains1bg
Section 42
//MainTimeline (previewDX_fla.MainTimeline) package previewDX_fla { import flash.media.*; import flash.events.*; import flash.display.*; import flash.geom.*; import amber3.*; import flash.utils.*; import flash.ui.*; import flash.net.*; import adobe.utils.*; import flash.accessibility.*; import flash.errors.*; import flash.external.*; import flash.filters.*; import flash.printing.*; import flash.system.*; import flash.text.*; import flash.xml.*; public dynamic class MainTimeline extends MovieClip { public const STAGE_WIDTH:int = 400; public const AMBER_ENEMY_LIST:Array; public const PROJECTILE_LIBRARY:Array; public const STAGE_HEIGHT:int = 300; public const AMBER_ENEMY_CLIPS:Array; public var PLAYING:Boolean; public var amber:Amber; public var cover_mc:MovieClip; public var title_mc:MovieClip; public var backgrounds:Array; public var globalSound:AmberSound; public var stages:Array; public var sounds:Array; public var UNLOADING:Boolean; public var RECORD:Array; public var lcd_stolen_bg:MovieClip; public var fadeValue:int; public var world_mc:MovieClip; public var play_mc:MovieClip; public var world:World; public var globalSoundTransform:SoundTransform; public var MAX_FADE_VALUE:int; public var bounds:Rectangle; public var RECORDED:Array; public var currentItems:int; public var lcd_stolen_item:MovieClip; public var lcd_stolen:String; public var black_mc:Bitmap; public var sound_mc:MovieClip; public var RECORDING:Boolean; public function MainTimeline(){ AMBER_ENEMY_LIST = []; AMBER_ENEMY_CLIPS = []; PROJECTILE_LIBRARY = [FireBall, ThrowableApple]; super(); addFrameScript(0, frame1); } public function eFrame(_arg1:Event){ if (RECORDING){ RECORDED[RECORDED.length] = amber.controller.binaryState; }; if (UNLOADING){ if (fadeValue < MAX_FADE_VALUE){ fadeValue++; title_mc.alpha = (black_mc.alpha = (Number(fadeValue) / MAX_FADE_VALUE)); } else { unloadGame(null); }; } else { if (fadeValue > 0){ fadeValue--; black_mc.alpha = (Number(fadeValue) / MAX_FADE_VALUE); }; }; } public function loadGame(_arg1:Event=null){ var _local2:ProgrammedInput; if (title_mc.parent){ stage.removeChild(title_mc); }; play_mc.removeEventListener(MouseEvent.CLICK, loadGame, false); stage.removeChild(play_mc); globalSound.stop(); globalSoundTransform.volume = 0; currentItems = 0; world = new World(world_mc, stage); world.CAMERA_AMBER_FACTOR = 0; world.cameraCenter = new Point((STAGE_WIDTH * 0.5), (STAGE_HEIGHT * 0.5)); world.enemyLibrary = AMBER_ENEMY_LIST; world.enemyClipLibrary = AMBER_ENEMY_CLIPS; world.projectileLibrary = PROJECTILE_LIBRARY; world.load(stages[0], true); world.setup([AmberClip]); amber = world.players[0]; amber.modesUnlocked = 5; amber.animations = [10, 11, 10, 13, 14, 29, 35, 46, 50, 54, 55, 59, 60, 64, 66, 73, 11, 11, 10, 11, 10, 11, 85, 90, 92, 95, 97, 112, 118, 129, 133, 136, 138, 141, 143, 146, 148, 153, 154, 158, 167, 170, 171, 175, 185, 191, 192, 195, 197, 212, 218, 229, 233, 236, 238, 241, 243, 246, 248, 0x0100, 269, 272, 280, 291, 295, 300, 305, 318, 319, 323, 324, 339, 345, 356, 360, 364, 365, 368, 370, 373, 376, 378, 379, 381, 384, 393, 397, 410, 413, 429, 432, 436, 437, 452, 458, 469, 473, 477, 478, 482, 483, 487, 488, 498, 520, 527, 531, 538, 499, 515]; amber.lives = 1; amber.maxHealth = 2; amber.health = 2; amber.soundTransform = globalSoundTransform; world.backgroundID = backgrounds[0]; amber.addEventListener(Amber.COLLECT_ITEM, hitItem, false, 0, true); if (PLAYING){ _local2 = new ProgrammedInput(stage, RECORD, false, true); amber.controller = _local2; _local2.begin(); }; if (RECORDING){ RECORDED = []; }; world.start(); stage.addEventListener(Event.ENTER_FRAME, eFrame); UNLOADING = false; stage.addChild(sound_mc); stage.addChild(cover_mc); stage.addChild(black_mc); fadeValue = MAX_FADE_VALUE; black_mc.alpha = 0; } function frame1(){ stage.scaleMode = StageScaleMode.NO_SCALE; stage.align = StageAlign.TOP_LEFT; lcd_stolen = new LocalConnection().domain; if (lcd_stolen.indexOf("swfchan") != -1){ stop(); lcd_stolen_bg = new MovieClip(); while (numChildren) { removeChildAt(0); }; lcd_stolen_bg.graphics.beginFill(0xFFFFFF); lcd_stolen_bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); lcd_stolen_bg.graphics.endFill(); lcd_stolen_item = new MovieClip(); lcd_stolen_item.tF = new TextFormat(); lcd_stolen_item.tF.bold = true; lcd_stolen_item.tF.size = 64; lcd_stolen_item.tF.color = 0xFF2200; lcd_stolen_item.tF.font = "Trebuchet MS"; lcd_stolen_item.txt = new TextField(); lcd_stolen_item.txt.defaultTextFormat = lcd_stolen_item.tF; lcd_stolen_item.txt.text = "swfchan.com"; lcd_stolen_item.txt.width = (lcd_stolen_item.txt.textWidth + 5); lcd_stolen_item.txt.height = (lcd_stolen_item.txt.textHeight + 5); lcd_stolen_item.bmp = new Bitmap(new BitmapData((lcd_stolen_item.txt.textWidth + 5), (lcd_stolen_item.txt.textHeight + 5), true, 0)); lcd_stolen_item.bmp.bitmapData.draw(lcd_stolen_item.txt); lcd_stolen_item.bmp.x = (lcd_stolen_item.bmp.x - (lcd_stolen_item.bmp.width * 0.5)); lcd_stolen_item.bmp.y = (lcd_stolen_item.bmp.y - (lcd_stolen_item.bmp.height * 0.5)); lcd_stolen_item.addChild(lcd_stolen_item.bmp); delete lcd_stolen_item.txt; delete lcd_stolen_item.tF; lcd_stolen_item.x = (Math.random() * stage.stageWidth); lcd_stolen_item.y = (Math.random() * stage.stageWidth); lcd_stolen_item.vX = (5 + (Math.random() * 10)); lcd_stolen_item.vY = (5 + (Math.random() * 10)); lcd_stolen_item.vR = (1 + ((Math.random() * 5) * ((Math.random())<0.5) ? -1 : 1)); stage.addChild(lcd_stolen_bg); stage.addChild(lcd_stolen_item); stage.addEventListener(Event.RESIZE, function (_arg1:Event){ lcd_stolen_bg.graphics.clear(); lcd_stolen_bg.graphics.beginFill(0xFFFFFF); lcd_stolen_bg.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight); lcd_stolen_bg.graphics.endFill(); }); stage.addEventListener(Event.ENTER_FRAME, function (_arg1:Event){ lcd_stolen_item.x = (lcd_stolen_item.x + lcd_stolen_item.vX); lcd_stolen_item.y = (lcd_stolen_item.y + lcd_stolen_item.vY); lcd_stolen_item.rotation = (lcd_stolen_item.rotation + lcd_stolen_item.vR); bounds = lcd_stolen_item.getBounds(stage); if ((((((bounds.left < 0)) && ((lcd_stolen_item.vX < 0)))) || ((((bounds.right > stage.stageWidth)) && ((lcd_stolen_item.vX > 0)))))){ lcd_stolen_item.vX = -(lcd_stolen_item.vX); }; if ((((((bounds.top < 0)) && ((lcd_stolen_item.vY < 0)))) || ((((bounds.bottom > stage.stageHeight)) && ((lcd_stolen_item.vY > 0)))))){ lcd_stolen_item.vY = -(lcd_stolen_item.vY); }; }); return; }; RECORDING = false; PLAYING = true; UNLOADING = false; fadeValue = 0; MAX_FADE_VALUE = 40; RECORDED = []; RECORD = [0, 27, 16, 4, 8, 2, 0, 7, 4, 2, 0, 7, 16, 4, 0, 1, 8, 2, 0, 19, 32, 8, 40, 16, 8, 2, 0, 4, 8, 11, 0, 2, 8, 23, 0, 7, 2, 4, 34, 2, 2, 1, 0, 10, 8, 3, 16, 2, 0, 7, 4, 3, 0, 6, 8, 1, 0, 2, 16, 9, 20, 4, 16, 3, 20, 5, 16, 6, 24, 1, 16, 5, 0, 9, 8, 4, 0, 9, 8, 23, 40, 114, 8, 10, 0, 14, 2, 2, 34, 4, 2, 2, 0, 9, 32, 8, 40, 69, 0, 13, 8, 50, 2, 4, 34, 1, 32, 2, 0, 3, 8, 20, 40, 26, 56, 5, 40, 76, 8, 1, 0, 13, 2, 2, 34, 5, 32, 2, 0, 3, 8, 16, 0, 5, 8, 4, 24, 2, 16, 9, 0, 7, 4, 3, 0, 8, 8, 1, 0, 16, ((1 << Controller.BUTTON_B) | 8), 37]; stages = []; sounds = ["field.wav", "forest.wav", "cave_short.wav", "tundra.wav", "title_short.wav"]; backgrounds = [15, 16, 17, 18, 18]; stages.push(String(<![CDATA[ [BITMAPS] {BITMAP,plain_dirt.png} {BITMAP,plain_dirt3.png} {BITMAP,plain_dirt2.png} {BITMAP,plain_music.png} {BITMAP,plain_switch.png} {BITMAP,wood_bigbigtree2.png} {BITMAP,wood_grass.png} {BITMAP,wood_tree.png} {BITMAP,cave_b.png} {BITMAP,cave_medb.png} {BITMAP,cave_floor1.png} {BITMAP,cave_bigp.png} {BITMAP,tundra_snowrock.png} {BITMAP,tundra_medfrostyrock.png} {BITMAP,beach_medsand.png} {BITMAP,plains1bg.png} {BITMAP,wood_bg.png} {BITMAP,cave_bg.png} {BITMAP,tundrabg.png} [BACKGROUND] {BACKGROUND,-1} [START POINT] {START,2,10} [TILES] {TILE,0,0,1,5,0,2,0} {TILE,0,1,1,5,0,2,0} {TILE,0,2,1,5,0,2,0} {TILE,0,3,1,5,0,2,0} {TILE,0,4,1,5,0,2,0} {TILE,0,5,1,3,1,0,0} {TILE,1,5,7,3,1,0,0} {TILE,2,5,7,3,1,0,0} {TILE,3,5,7,3,1,0,0} {TILE,4,5,7,3,1,0,0} {TILE,5,5,7,3,1,0,0} {TILE,6,5,7,3,1,0,0} {TILE,7,5,7,3,1,0,0} {TILE,8,5,7,3,1,0,0} {TILE,9,5,7,3,1,0,0} {TILE,10,5,7,5,1,0,0} {TILE,10,6,1,5,0,2,0} {TILE,10,7,1,5,0,2,0} {TILE,10,8,1,5,0,2,0} {TILE,10,9,1,5,0,2,0} {TILE,10,10,1,5,0,2,0} {TILE,10,11,1,5,0,2,0} {TILE,10,12,1,5,0,2,0} {TILE,10,13,1,3,1,6,0} {TILE,11,13,7,3,1,6,0} {TILE,12,13,7,3,1,6,0} {TILE,13,13,7,3,1,6,0} {TILE,14,13,7,3,1,6,0} {TILE,15,13,7,3,1,6,0} {TILE,16,13,7,2,1,6,0} {TILE,17,12,6,2,1,6,0} {TILE,18,11,6,2,1,6,0} {TILE,19,10,6,2,1,6,0} {TILE,20,9,6,2,1,6,0} {TILE,21,8,6,3,1,6,0} {TILE,22,8,7,3,0,6,0} {TILE,23,8,7,3,0,6,0} {TILE,24,8,7,3,0,6,0} {TILE,25,8,7,3,0,10,0} {TILE,26,8,7,3,0,10,0} {TILE,27,8,7,4,1,9,0} {TILE,28,9,0,3,1,9,0} {TILE,29,9,7,3,1,10,0} {TILE,30,9,7,2,1,9,0} {TILE,31,8,6,2,1,9,0} {TILE,32,7,6,2,1,9,0} {TILE,33,6,6,3,1,9,0} {TILE,34,6,7,3,1,10,0} {TILE,35,6,7,3,1,10,0} {TILE,36,6,7,3,1,10,0} {TILE,37,6,7,3,1,10,0} {TILE,38,6,7,3,1,10,0} {TILE,39,6,7,3,1,10,0} {TILE,40,6,7,3,1,10,0} {TILE,41,6,7,3,1,10,0} {TILE,42,6,7,3,1,10,0} {TILE,43,6,7,3,1,10,0} {TILE,44,6,7,2,1,10,0} {TILE,45,5,6,3,1,10,0} {TILE,46,5,7,3,0,10,0} {TILE,46,6,0,2,0,10,0} {TILE,47,5,7,3,0,10,0} {TILE,47,6,0,2,0,10,0} {TILE,48,5,7,3,0,12,0} {TILE,49,5,7,3,0,12,0} {TILE,50,5,7,4,0,13,0} {TILE,51,6,0,4,0,13,0} {TILE,52,7,0,4,0,13,0} {TILE,53,8,0,4,0,13,0} {TILE,54,9,0,4,0,13,0} {TILE,55,10,0,4,0,13,0} {TILE,56,11,0,4,0,13,0} {TILE,57,12,0,3,0,13,0} {TILE,58,12,7,3,0,13,0} {TILE,59,12,7,2,1,13,0} {TILE,60,12,0,5,1,13,0} {TILE,60,13,1,5,1,13,0} {TILE,60,14,1,5,1,13,0} {TILE,60,15,1,5,1,13,0} {TILE,60,16,1,5,1,13,0} {TILE,60,17,1,5,1,13,0} {TILE,60,18,1,5,1,13,0} {TILE,60,19,1,5,1,13,0} {TILE,60,20,1,5,1,13,0} {TILE,60,21,1,5,1,13,0} {TILE,60,22,1,5,1,13,0} {TILE,60,23,1,3,1,13,0} {TILE,61,23,7,3,1,14,0} {TILE,62,23,7,3,1,14,0} {TILE,63,23,7,3,1,14,0} {TILE,64,23,7,3,1,14,0} {TILE,65,23,7,3,1,14,0} {TILE,66,23,7,3,1,14,0} {TILE,67,23,7,3,1,14,0} {TILE,68,23,7,3,1,14,0} {TILE,69,23,7,2,1,14,0} {TILE,70,14,5,1,1,13,0} {TILE,70,15,5,1,1,13,0} {TILE,70,16,5,1,1,13,0} {TILE,70,17,5,1,1,13,0} {TILE,70,18,5,1,1,13,0} {TILE,70,19,5,1,1,13,0} {TILE,70,20,5,1,1,13,0} {TILE,70,21,5,1,1,13,0} {TILE,70,22,6,1,1,13,0} [SPRITES] {SPRITE,item,0,10,1,Decoration,2} {SPRITE,item,0,11,1,Decoration,2} {SPRITE,item,0,12,-1,Decoration,1} {SPRITE,item,6,12,-1,Decoration,1} {SPRITE,container,7,10,1,3,1} {SPRITE,item,8,18,-1,Decoration,1} {SPRITE,item,8,24,-1,Decoration,1} {SPRITE,item,8,30,-1,Decoration,1} {SPRITE,item,12,12,-1,Decoration,1} {SPRITE,item,14,12,-1,Decoration,1} {SPRITE,item,14,18,-1,Decoration,1} {SPRITE,item,14,24,-1,Decoration,1} {SPRITE,item,14,30,-1,Decoration,1} {SPRITE,item,20,16,-1,Decoration,5} {SPRITE,item,20,20,-1,Decoration,5} {SPRITE,item,20,24,-1,Decoration,5} {SPRITE,item,20,26,1,Decoration,2} {SPRITE,item,20,28,-1,Decoration,1} {SPRITE,container,22,26,1,4,2} {SPRITE,item,24,16,-1,Decoration,5} {SPRITE,item,24,20,-1,Decoration,5} {SPRITE,item,24,24,-1,Decoration,5} {SPRITE,item,26,28,-1,Decoration,1} {SPRITE,item,28,16,-1,Decoration,5} {SPRITE,item,28,20,-1,Decoration,5} {SPRITE,item,28,24,-1,Decoration,5} {SPRITE,item,32,8,-1,Decoration,5} {SPRITE,item,32,12,-1,Decoration,5} {SPRITE,item,32,16,-1,Decoration,5} {SPRITE,item,32,20,-1,Decoration,5} {SPRITE,item,32,24,-1,Decoration,5} {SPRITE,item,32,28,1,Decoration,5} {SPRITE,item,32,30,1,Decoration,5} {SPRITE,item,34,26,-1,Decoration,6} {SPRITE,item,34,27,-1,Decoration,6} {SPRITE,item,34,28,-1,Decoration,5} {SPRITE,item,34,30,1,Decoration,5} {SPRITE,item,35,26,-1,Decoration,6} {SPRITE,item,35,27,-1,Decoration,6} {SPRITE,item,36,24,-1,Decoration,6} {SPRITE,item,36,25,-1,Decoration,6} {SPRITE,item,36,26,-1,Decoration,6} {SPRITE,item,36,27,-1,Decoration,5} {SPRITE,item,37,24,-1,Decoration,6} {SPRITE,item,37,25,-1,Decoration,6} {SPRITE,item,37,26,-1,Decoration,5} {SPRITE,item,38,22,-1,Decoration,6} {SPRITE,item,38,23,-1,Decoration,6} {SPRITE,item,38,24,-1,Decoration,6} {SPRITE,item,38,25,-1,Decoration,5} {SPRITE,item,38,26,1,Decoration,5} {SPRITE,item,38,30,1,Decoration,5} {SPRITE,item,39,22,-1,Decoration,6} {SPRITE,item,39,23,-1,Decoration,6} {SPRITE,item,39,24,-1,Decoration,5} {SPRITE,item,40,20,-1,Decoration,6} {SPRITE,item,40,21,-1,Decoration,6} {SPRITE,item,40,22,-1,Decoration,6} {SPRITE,item,40,23,-1,Decoration,5} {SPRITE,item,41,20,-1,Decoration,6} {SPRITE,item,41,21,-1,Decoration,6} {SPRITE,item,41,22,-1,Decoration,5} {SPRITE,item,42,18,-1,Decoration,6} {SPRITE,item,42,19,-1,Decoration,6} {SPRITE,item,42,20,-1,Decoration,6} {SPRITE,item,42,21,-1,Decoration,5} {SPRITE,item,42,22,1,Decoration,5} {SPRITE,item,42,26,1,Decoration,5} {SPRITE,item,43,18,-1,Decoration,6} {SPRITE,item,43,19,-1,Decoration,6} {SPRITE,item,43,20,-1,Decoration,5} {SPRITE,item,44,18,-1,Decoration,6} {SPRITE,item,44,19,-1,Decoration,5} {SPRITE,item,45,18,-1,Decoration,5} {SPRITE,item,46,18,1,Decoration,5} {SPRITE,item,46,22,1,Decoration,5} {SPRITE,item,46,26,1,Decoration,5} {SPRITE,item,50,4,-1,Decoration,9} {SPRITE,item,50,6,-1,Decoration,9} {SPRITE,item,50,8,-1,Decoration,9} {SPRITE,item,50,10,-1,Decoration,9} {SPRITE,item,50,12,-1,Decoration,9} {SPRITE,item,50,14,-1,Decoration,9} {SPRITE,item,50,16,-1,Decoration,9} {SPRITE,item,50,18,1,Decoration,9} {SPRITE,item,50,20,1,Decoration,9} {SPRITE,item,50,22,1,Decoration,9} {SPRITE,item,50,24,1,Decoration,9} {SPRITE,item,50,26,1,Decoration,9} {SPRITE,item,52,4,-1,Decoration,9} {SPRITE,item,52,6,-1,Decoration,9} {SPRITE,item,52,8,-1,Decoration,9} {SPRITE,item,52,10,-1,Decoration,9} {SPRITE,item,52,12,-1,Decoration,9} {SPRITE,item,52,14,-1,Decoration,9} {SPRITE,item,52,16,-1,Decoration,9} {SPRITE,item,52,18,1,Decoration,9} {SPRITE,item,52,20,1,Decoration,9} {SPRITE,item,52,22,1,Decoration,9} {SPRITE,item,52,24,1,Decoration,9} {SPRITE,item,52,26,1,Decoration,9} {SPRITE,item,54,6,-1,Decoration,11} {SPRITE,item,54,10,-1,Decoration,11} {SPRITE,item,54,14,-1,Decoration,11} {SPRITE,item,54,18,1,Decoration,9} {SPRITE,item,54,20,1,Decoration,9} {SPRITE,item,54,22,1,Decoration,9} {SPRITE,item,54,24,1,Decoration,9} {SPRITE,item,54,26,1,Decoration,9} {SPRITE,item,56,16,-1,Decoration,11} {SPRITE,item,56,20,1,Decoration,9} {SPRITE,item,56,22,1,Decoration,9} {SPRITE,item,56,24,1,Decoration,9} {SPRITE,item,56,26,1,Decoration,9} {SPRITE,item,58,2,-1,Decoration,11} {SPRITE,item,58,6,-1,Decoration,11} {SPRITE,item,58,10,-1,Decoration,11} {SPRITE,item,58,14,-1,Decoration,11} {SPRITE,item,58,16,-1,Decoration,11} {SPRITE,container,58,18,1,4,3} {SPRITE,item,58,20,1,Decoration,9} {SPRITE,item,58,22,1,Decoration,9} {SPRITE,item,58,24,1,Decoration,9} {SPRITE,item,58,26,1,Decoration,9} {SPRITE,item,60,14,-1,Decoration,11} {SPRITE,item,60,20,-1,Decoration,9} {SPRITE,item,60,22,1,Decoration,9} {SPRITE,item,60,24,1,Decoration,9} {SPRITE,item,60,26,1,Decoration,9} {SPRITE,item,62,2,-1,Decoration,11} {SPRITE,item,62,6,-1,Decoration,11} {SPRITE,item,62,10,-1,Decoration,11} {SPRITE,item,62,12,-1,Decoration,11} {SPRITE,item,62,18,-1,Decoration,9} {SPRITE,item,62,20,-1,Decoration,9} {SPRITE,item,62,22,1,Decoration,9} {SPRITE,item,62,24,1,Decoration,9} {SPRITE,item,62,26,1,Decoration,9} {SPRITE,item,64,16,-1,Decoration,9} {SPRITE,item,64,18,-1,Decoration,9} {SPRITE,item,64,20,1,Decoration,9} {SPRITE,item,64,22,1,Decoration,9} {SPRITE,item,64,24,1,Decoration,9} {SPRITE,item,64,26,1,Decoration,9} {SPRITE,item,66,2,-1,Decoration,11} {SPRITE,item,66,6,-1,Decoration,11} {SPRITE,item,66,10,-1,Decoration,11} {SPRITE,item,66,14,-1,Decoration,9} {SPRITE,item,66,16,-1,Decoration,9} {SPRITE,item,66,18,1,Decoration,9} {SPRITE,item,66,20,1,Decoration,9} {SPRITE,item,66,22,1,Decoration,9} {SPRITE,item,66,24,1,Decoration,9} {SPRITE,item,66,26,1,Decoration,9} {SPRITE,item,68,14,-1,Decoration,9} {SPRITE,item,68,16,1,Decoration,9} {SPRITE,item,68,18,1,Decoration,9} {SPRITE,item,68,20,1,Decoration,9} {SPRITE,item,68,22,1,Decoration,9} {SPRITE,item,68,24,1,Decoration,9} {SPRITE,item,70,14,1,Decoration,9} {SPRITE,item,70,16,1,Decoration,9} {SPRITE,item,70,18,1,Decoration,9} {SPRITE,item,70,20,1,Decoration,9} {SPRITE,item,70,22,1,Decoration,9} {SPRITE,item,72,14,1,Decoration,9} {SPRITE,item,72,16,1,Decoration,9} {SPRITE,item,72,18,1,Decoration,9} {SPRITE,item,74,14,1,Decoration,9} {SPRITE,item,74,16,1,Decoration,9} {SPRITE,item,74,18,1,Decoration,9} {SPRITE,item,76,14,-1,Decoration,11} {SPRITE,item,76,18,-1,Decoration,11} {SPRITE,item,76,22,-1,Decoration,11} {SPRITE,item,80,4,-1,Decoration,9} {SPRITE,item,80,6,-1,Decoration,9} {SPRITE,item,80,8,-1,Decoration,9} {SPRITE,item,80,10,-1,Decoration,9} {SPRITE,item,80,12,-1,Decoration,9} {SPRITE,item,80,14,-1,Decoration,11} {SPRITE,item,80,18,-1,Decoration,11} {SPRITE,item,80,22,-1,Decoration,11} {SPRITE,item,82,4,-1,Decoration,9} {SPRITE,item,82,6,-1,Decoration,9} {SPRITE,item,82,8,-1,Decoration,9} {SPRITE,item,82,10,-1,Decoration,9} {SPRITE,item,82,12,-1,Decoration,9} {SPRITE,item,84,4,-1,Decoration,9} {SPRITE,item,84,6,-1,Decoration,9} {SPRITE,item,84,8,-1,Decoration,9} {SPRITE,item,84,10,-1,Decoration,9} {SPRITE,item,84,12,-1,Decoration,9} {SPRITE,item,84,14,-1,Decoration,11} {SPRITE,item,84,18,-1,Decoration,11} {SPRITE,item,84,22,-1,Decoration,11} {SPRITE,item,86,4,-1,Decoration,9} {SPRITE,item,86,6,-1,Decoration,9} {SPRITE,item,86,8,-1,Decoration,9} {SPRITE,item,86,10,-1,Decoration,9} {SPRITE,item,86,12,-1,Decoration,9} {SPRITE,container,87,12,-1,4,4} {SPRITE,item,88,4,-1,Decoration,9} {SPRITE,item,88,6,-1,Decoration,9} {SPRITE,item,88,8,-1,Decoration,9} {SPRITE,item,88,10,-1,Decoration,9} {SPRITE,item,88,12,-1,Decoration,9} {SPRITE,item,88,14,-1,Decoration,11} {SPRITE,item,88,18,-1,Decoration,11} {SPRITE,item,90,4,-1,Decoration,9} {SPRITE,item,90,6,-1,Decoration,9} {SPRITE,item,90,8,-1,Decoration,9} {SPRITE,item,90,10,-1,Decoration,9} {SPRITE,item,90,12,-1,Decoration,10} {SPRITE,item,90,13,-1,Decoration,10} {SPRITE,item,91,12,-1,Decoration,10} {SPRITE,item,91,13,-1,Decoration,10} {SPRITE,item,92,4,-1,Decoration,9} {SPRITE,item,92,6,-1,Decoration,9} {SPRITE,item,92,8,-1,Decoration,9} {SPRITE,item,92,10,-1,Decoration,9} {SPRITE,item,92,14,-1,Decoration,11} {SPRITE,item,92,18,-1,Decoration,11} {SPRITE,item,94,4,-1,Decoration,9} {SPRITE,item,94,6,-1,Decoration,9} {SPRITE,item,94,8,-1,Decoration,9} {SPRITE,item,94,10,-1,Decoration,9} {SPRITE,item,96,12,-1,Decoration,13} {SPRITE,item,96,14,-1,Decoration,13} {SPRITE,item,96,16,-1,Decoration,13} {SPRITE,item,96,18,-1,Decoration,13} {SPRITE,item,98,12,-1,Decoration,13} {SPRITE,item,98,14,-1,Decoration,13} {SPRITE,item,98,16,-1,Decoration,13} {SPRITE,item,98,18,-1,Decoration,13} {SPRITE,item,100,12,-1,Decoration,13} {SPRITE,item,100,14,-1,Decoration,13} {SPRITE,item,100,16,-1,Decoration,13} {SPRITE,item,100,18,-1,Decoration,13} {SPRITE,item,102,14,-1,Decoration,13} {SPRITE,item,102,16,-1,Decoration,13} {SPRITE,item,102,18,-1,Decoration,13} {SPRITE,item,102,20,-1,Decoration,13} {SPRITE,item,104,16,-1,Decoration,13} {SPRITE,item,104,18,-1,Decoration,13} {SPRITE,item,104,20,-1,Decoration,13} {SPRITE,item,104,22,-1,Decoration,13} {SPRITE,item,106,18,-1,Decoration,13} {SPRITE,item,106,20,-1,Decoration,13} {SPRITE,item,106,22,-1,Decoration,13} {SPRITE,item,106,24,-1,Decoration,13} {SPRITE,item,108,20,-1,Decoration,13} {SPRITE,item,108,22,-1,Decoration,13} {SPRITE,item,108,24,-1,Decoration,13} {SPRITE,item,108,26,-1,Decoration,13} {SPRITE,item,110,22,-1,Decoration,13} {SPRITE,item,110,24,-1,Decoration,13} {SPRITE,item,110,26,-1,Decoration,13} {SPRITE,item,110,28,-1,Decoration,13} {SPRITE,item,112,24,-1,Decoration,13} {SPRITE,item,112,26,-1,Decoration,13} {SPRITE,item,112,28,-1,Decoration,13} {SPRITE,item,112,30,-1,Decoration,13} {SPRITE,item,112,32,-1,Decoration,13} {SPRITE,item,112,34,-1,Decoration,13} {SPRITE,item,112,36,-1,Decoration,13} {SPRITE,item,112,38,-1,Decoration,13} {SPRITE,item,112,40,-1,Decoration,13} {SPRITE,item,112,42,-1,Decoration,13} {SPRITE,item,112,44,-1,Decoration,13} {SPRITE,item,112,46,-1,Decoration,13} {SPRITE,item,112,48,-1,Decoration,13} {SPRITE,item,112,50,-1,Decoration,13} {SPRITE,item,112,52,-1,Decoration,13} {SPRITE,item,114,26,-1,Decoration,13} {SPRITE,item,114,28,-1,Decoration,13} {SPRITE,item,114,30,-1,Decoration,13} {SPRITE,item,114,32,-1,Decoration,13} {SPRITE,item,114,34,-1,Decoration,13} {SPRITE,item,114,36,-1,Decoration,13} {SPRITE,item,114,38,-1,Decoration,13} {SPRITE,item,114,40,-1,Decoration,13} {SPRITE,item,114,42,-1,Decoration,13} {SPRITE,item,114,44,-1,Decoration,13} {SPRITE,item,114,46,-1,Decoration,13} {SPRITE,item,114,48,-1,Decoration,13} {SPRITE,item,114,50,-1,Decoration,13} {SPRITE,item,114,52,-1,Decoration,13} {SPRITE,item,116,26,-1,Decoration,13} {SPRITE,item,116,28,-1,Decoration,13} {SPRITE,item,116,30,-1,Decoration,13} {SPRITE,item,116,32,-1,Decoration,13} {SPRITE,item,116,34,-1,Decoration,13} {SPRITE,item,116,36,-1,Decoration,13} {SPRITE,item,116,38,-1,Decoration,13} {SPRITE,item,116,40,-1,Decoration,13} {SPRITE,item,116,42,-1,Decoration,13} {SPRITE,item,116,44,-1,Decoration,13} {SPRITE,item,116,46,-1,Decoration,13} {SPRITE,item,116,48,-1,Decoration,13} {SPRITE,item,116,50,-1,Decoration,13} {SPRITE,item,116,52,-1,Decoration,13} {SPRITE,item,118,26,-1,Decoration,13} {SPRITE,item,118,28,-1,Decoration,13} {SPRITE,item,118,30,-1,Decoration,13} {SPRITE,item,118,32,-1,Decoration,13} {SPRITE,item,118,34,-1,Decoration,13} {SPRITE,item,118,36,-1,Decoration,13} {SPRITE,item,118,38,-1,Decoration,13} {SPRITE,item,118,40,-1,Decoration,13} {SPRITE,item,118,42,-1,Decoration,13} {SPRITE,item,118,44,-1,Decoration,13} {SPRITE,item,118,46,-1,Decoration,13} {SPRITE,item,118,48,-1,Decoration,13} {SPRITE,item,118,50,-1,Decoration,13} {SPRITE,item,118,52,-1,Decoration,13} {SPRITE,item,120,48,-1,Decoration,13} {SPRITE,item,120,50,-1,Decoration,13} {SPRITE,item,120,52,-1,Decoration,13} {SPRITE,container,122,46,-1,4,5} {SPRITE,item,122,48,-1,Decoration,14} {SPRITE,item,122,50,-1,Decoration,14} {SPRITE,item,122,52,-1,Decoration,14} {SPRITE,item,122,54,-1,Decoration,14} {SPRITE,item,124,48,-1,Decoration,14} {SPRITE,item,124,50,-1,Decoration,14} {SPRITE,item,124,52,-1,Decoration,14} {SPRITE,item,124,54,-1,Decoration,14} {SPRITE,item,126,48,-1,Decoration,14} {SPRITE,item,126,50,-1,Decoration,14} {SPRITE,item,126,52,-1,Decoration,14} {SPRITE,item,126,54,-1,Decoration,14} {SPRITE,item,128,48,-1,Decoration,14} {SPRITE,item,128,50,-1,Decoration,14} {SPRITE,item,128,52,-1,Decoration,14} {SPRITE,item,128,54,-1,Decoration,14} {SPRITE,item,130,48,-1,Decoration,14} {SPRITE,item,130,50,-1,Decoration,14} {SPRITE,item,130,52,-1,Decoration,14} {SPRITE,item,130,54,-1,Decoration,14} {SPRITE,item,132,48,-1,Decoration,14} {SPRITE,item,132,50,-1,Decoration,14} {SPRITE,item,132,52,-1,Decoration,14} {SPRITE,item,132,54,-1,Decoration,14} {SPRITE,item,134,48,-1,Decoration,14} {SPRITE,item,134,50,-1,Decoration,14} {SPRITE,item,134,52,-1,Decoration,14} {SPRITE,item,134,54,-1,Decoration,14} {SPRITE,item,136,48,-1,Decoration,14} {SPRITE,item,136,50,-1,Decoration,14} {SPRITE,item,136,52,-1,Decoration,14} {SPRITE,item,136,54,-1,Decoration,14} [PLATFORMS] [ENEMIES] ]]> )); currentItems = 0; world_mc = new MovieClip(); sound_mc = new SoundImage(); black_mc = new Bitmap(new BitmapData(STAGE_WIDTH, STAGE_HEIGHT, false, 0)); cover_mc = new MovieClip(); play_mc = new _btn(); title_mc = new _background(); globalSound = new AmberSound(); globalSoundTransform = new SoundTransform(0, 0); sound_mc.x = (STAGE_WIDTH * 0.5); sound_mc.y = (STAGE_HEIGHT * 0.5); sound_mc.alpha = 0.5; stage.addChild(play_mc); play_mc.x = ((STAGE_WIDTH - play_mc.width) - 20); play_mc.y = ((STAGE_HEIGHT - play_mc.height) - 20); play_mc.addEventListener(MouseEvent.CLICK, loadGame, false, 0, true); } public function coverResize(_arg1:Event=null){ var _local2:Graphics; _local2 = cover_mc.graphics; _local2.clear(); _local2.beginFill(0); _local2.drawRect(STAGE_WIDTH, 0, Math.max((stage.stageWidth - STAGE_WIDTH), 0), stage.stageHeight); _local2.endFill(); _local2.beginFill(0); _local2.drawRect(0, STAGE_HEIGHT, stage.stageWidth, Math.max((stage.stageHeight - STAGE_HEIGHT), 0)); _local2.endFill(); } public function unloadGame(_arg1:Event){ stage.removeEventListener(Event.ENTER_FRAME, eFrame); amber.removeEventListener(Amber.COLLECT_ITEM, hitItem); amber = null; world.unload(); world = null; if (RECORDING){ trace((("[\n" + ProgrammedInput.compress(RECORDED).toString()) + "\n]")); }; stage.removeChild(cover_mc); stage.removeChild(black_mc); stage.addChild(play_mc); play_mc.addEventListener(MouseEvent.CLICK, loadGame, false, 0, true); } public function hitItem(_arg1:ItemEvent){ var _local2:int; if (_arg1.subtype == Item.COLLECTIBLE){ _local2 = ((amber.collectibles - currentItems) - 1); if (_local2 == 0){ globalSoundTransform.volume = 1; amber.soundTransform = globalSoundTransform; stage.removeChild(sound_mc); }; if (_local2 >= 0){ globalSound.load(sounds[_local2]); globalSound.play(false); world.backgroundID = backgrounds[_local2]; }; if (_local2 == 4){ UNLOADING = true; stage.addChild(title_mc); }; currentItems = amber.collectibles; }; } } }//package previewDX_fla
Section 43
//wav (title_short.wav) package title_short { import flash.media.*; public dynamic class wav extends Sound { } }//package title_short
Section 44
//wav (tundra.wav) package tundra { import flash.media.*; public dynamic class wav extends Sound { } }//package tundra
Section 45
//png (tundra_medfrostyrock.png) package tundra_medfrostyrock { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package tundra_medfrostyrock
Section 46
//png (tundra_snowrock.png) package tundra_snowrock { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package tundra_snowrock
Section 47
//png (tundrabg.png) package tundrabg { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package tundrabg
Section 48
//png (wood_bg.png) package wood_bg { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package wood_bg
Section 49
//png (wood_bigbigtree2.png) package wood_bigbigtree2 { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package wood_bigbigtree2
Section 50
//png (wood_grass.png) package wood_grass { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package wood_grass
Section 51
//png (wood_tree.png) package wood_tree { import flash.display.*; public dynamic class png extends BitmapData { public function png(_arg1:Number, _arg2:Number){ super(_arg1, _arg2); } } }//package wood_tree
Section 52
//_background (_background) package { import flash.display.*; public dynamic class _background extends MovieClip { } }//package
Section 53
//_btn (_btn) package { import flash.display.*; public dynamic class _btn extends MovieClip { } }//package
Section 54
//AmberClip (AmberClip) package { import flash.display.*; public dynamic class AmberClip extends MovieClip { public var hitbox:TestClip; public var attackbox:TestClip; } }//package
Section 55
//BellyAttackSound (BellyAttackSound) package { import flash.media.*; public dynamic class BellyAttackSound extends Sound { } }//package
Section 56
//BounceSound (BounceSound) package { import flash.media.*; public dynamic class BounceSound extends Sound { } }//package
Section 57
//BreakSound (BreakSound) package { import flash.media.*; public dynamic class BreakSound extends Sound { } }//package
Section 58
//CrushSound (CrushSound) package { import flash.media.*; public dynamic class CrushSound extends Sound { } }//package
Section 59
//DeflateSound (DeflateSound) package { import flash.media.*; public dynamic class DeflateSound extends Sound { } }//package
Section 60
//DingSound (DingSound) package { import flash.media.*; public dynamic class DingSound extends Sound { } }//package
Section 61
//DramaticImpact (DramaticImpact) package { import flash.media.*; public dynamic class DramaticImpact extends Sound { } }//package
Section 62
//FireBall (FireBall) package { import flash.display.*; public dynamic class FireBall extends MovieClip { } }//package
Section 63
//FireSound (FireSound) package { import flash.media.*; public dynamic class FireSound extends Sound { } }//package
Section 64
//GoldSound (GoldSound) package { import flash.media.*; public dynamic class GoldSound extends Sound { } }//package
Section 65
//HealSound (HealSound) package { import flash.media.*; public dynamic class HealSound extends Sound { } }//package
Section 66
//InflateSound (InflateSound) package { import flash.media.*; public dynamic class InflateSound extends Sound { } }//package
Section 67
//ItemSound (ItemSound) package { import flash.media.*; public dynamic class ItemSound extends Sound { } }//package
Section 68
//RunSound (RunSound) package { import flash.media.*; public dynamic class RunSound extends Sound { } }//package
Section 69
//SoundImage (SoundImage) package { import flash.display.*; public dynamic class SoundImage extends MovieClip { } }//package
Section 70
//StompSound (StompSound) package { import flash.media.*; public dynamic class StompSound extends Sound { } }//package
Section 71
//TailAttackSound (TailAttackSound) package { import flash.media.*; public dynamic class TailAttackSound extends Sound { } }//package
Section 72
//TestClip (TestClip) package { import flash.display.*; public dynamic class TestClip extends MovieClip { } }//package
Section 73
//ThrowableApple (ThrowableApple) package { import flash.display.*; public dynamic class ThrowableApple extends MovieClip { } }//package
Section 74
//TransformSound (TransformSound) package { import flash.media.*; public dynamic class TransformSound extends Sound { } }//package

Library Items

Symbol 1 Sound {tundra.wav}
Symbol 2 Sound {title_short.wav}
Symbol 3 Sound {forest.wav}
Symbol 4 Sound {field.wav}
Symbol 5 Sound {DramaticImpact}
Symbol 6 Sound {cave_short.wav}
Symbol 7 Sound {TransformSound}
Symbol 8 Sound {TailAttackSound}
Symbol 9 Sound {StompSound}
Symbol 10 Sound {RunSound}
Symbol 11 Sound {ItemSound}
Symbol 12 Sound {InflateSound}
Symbol 13 Sound {HealSound}
Symbol 14 Sound {GoldSound}
Symbol 15 Sound {FireSound}
Symbol 16 Sound {DingSound}
Symbol 17 Sound {DeflateSound}
Symbol 18 Sound {CrushSound}
Symbol 19 Sound {BreakSound}
Symbol 20 Sound {BounceSound}
Symbol 21 Sound {BellyAttackSound}
Symbol 22 Bitmap {wood_tree.png}
Symbol 23 Bitmap {wood_grass.png}
Symbol 24 Bitmap {wood_bigbigtree2.png}
Symbol 25 Bitmap {wood_bg.png}
Symbol 26 Bitmap {tundrabg.png}
Symbol 27 Bitmap {tundra_snowrock.png}
Symbol 28 Bitmap {tundra_medfrostyrock.png}
Symbol 29 Bitmap {plains1bg.png}
Symbol 30 Bitmap {plain_switch.png}
Symbol 31 Bitmap {plain_music.png}
Symbol 32 Bitmap {plain_dirt3.png}
Symbol 33 Bitmap {plain_dirt2.png}
Symbol 34 Bitmap {plain_dirt.png}
Symbol 35 Bitmap {empty.png}
Symbol 36 Bitmap {cave_medb.png}
Symbol 37 Bitmap {cave_floor1.png}
Symbol 38 Bitmap {cave_bigp.png}
Symbol 39 Bitmap {cave_bg.png}
Symbol 40 Bitmap {cave_b.png}
Symbol 41 Bitmap {beach_medsand.png}
Symbol 42 GraphicUsed by:43
Symbol 43 MovieClip {TestClip}Uses:42Used by:739
Symbol 44 GraphicUsed by:739
Symbol 45 GraphicUsed by:739
Symbol 46 ShapeTweeningUsed by:739
Symbol 47 ShapeTweeningUsed by:739
Symbol 48 ShapeTweeningUsed by:739
Symbol 49 ShapeTweeningUsed by:739
Symbol 50 ShapeTweeningUsed by:739
Symbol 51 GraphicUsed by:739
Symbol 52 ShapeTweeningUsed by:739
Symbol 53 ShapeTweeningUsed by:739
Symbol 54 ShapeTweeningUsed by:739
Symbol 55 ShapeTweeningUsed by:739
Symbol 56 ShapeTweeningUsed by:739
Symbol 57 ShapeTweeningUsed by:739
Symbol 58 ShapeTweeningUsed by:739
Symbol 59 ShapeTweeningUsed by:739
Symbol 60 ShapeTweeningUsed by:739
Symbol 61 ShapeTweeningUsed by:739
Symbol 62 ShapeTweeningUsed by:739
Symbol 63 ShapeTweeningUsed by:739
Symbol 64 ShapeTweeningUsed by:739
Symbol 65 ShapeTweeningUsed by:739
Symbol 66 ShapeTweeningUsed by:739
Symbol 67 ShapeTweeningUsed by:739
Symbol 68 ShapeTweeningUsed by:739
Symbol 69 ShapeTweeningUsed by:739
Symbol 70 ShapeTweeningUsed by:739
Symbol 71 ShapeTweeningUsed by:739
Symbol 72 ShapeTweeningUsed by:739
Symbol 73 ShapeTweeningUsed by:739
Symbol 74 ShapeTweeningUsed by:739
Symbol 75 ShapeTweeningUsed by:739
Symbol 76 ShapeTweeningUsed by:739
Symbol 77 ShapeTweeningUsed by:739
Symbol 78 ShapeTweeningUsed by:739
Symbol 79 ShapeTweeningUsed by:739
Symbol 80 ShapeTweeningUsed by:739
Symbol 81 ShapeTweeningUsed by:739
Symbol 82 ShapeTweeningUsed by:739
Symbol 83 ShapeTweeningUsed by:739
Symbol 84 ShapeTweeningUsed by:739
Symbol 85 ShapeTweeningUsed by:739
Symbol 86 ShapeTweeningUsed by:739
Symbol 87 ShapeTweeningUsed by:739
Symbol 88 ShapeTweeningUsed by:739
Symbol 89 ShapeTweeningUsed by:739
Symbol 90 ShapeTweeningUsed by:739
Symbol 91 GraphicUsed by:739
Symbol 92 ShapeTweeningUsed by:739
Symbol 93 ShapeTweeningUsed by:739
Symbol 94 ShapeTweeningUsed by:739
Symbol 95 ShapeTweeningUsed by:739
Symbol 96 ShapeTweeningUsed by:739
Symbol 97 GraphicUsed by:739
Symbol 98 ShapeTweeningUsed by:739
Symbol 99 ShapeTweeningUsed by:739
Symbol 100 ShapeTweeningUsed by:739
Symbol 101 ShapeTweeningUsed by:739
Symbol 102 ShapeTweeningUsed by:739
Symbol 103 ShapeTweeningUsed by:739
Symbol 104 ShapeTweeningUsed by:739
Symbol 105 ShapeTweeningUsed by:739
Symbol 106 ShapeTweeningUsed by:739
Symbol 107 ShapeTweeningUsed by:739
Symbol 108 ShapeTweeningUsed by:739
Symbol 109 GraphicUsed by:739
Symbol 110 ShapeTweeningUsed by:739
Symbol 111 ShapeTweeningUsed by:739
Symbol 112 ShapeTweeningUsed by:739
Symbol 113 ShapeTweeningUsed by:739
Symbol 114 ShapeTweeningUsed by:739
Symbol 115 ShapeTweeningUsed by:739
Symbol 116 ShapeTweeningUsed by:739
Symbol 117 ShapeTweeningUsed by:739
Symbol 118 ShapeTweeningUsed by:739
Symbol 119 ShapeTweeningUsed by:739
Symbol 120 ShapeTweeningUsed by:739
Symbol 121 GraphicUsed by:739
Symbol 122 ShapeTweeningUsed by:739
Symbol 123 ShapeTweeningUsed by:739
Symbol 124 ShapeTweeningUsed by:739
Symbol 125 ShapeTweeningUsed by:739
Symbol 126 ShapeTweeningUsed by:739
Symbol 127 ShapeTweeningUsed by:739
Symbol 128 ShapeTweeningUsed by:739
Symbol 129 ShapeTweeningUsed by:739
Symbol 130 ShapeTweeningUsed by:739
Symbol 131 ShapeTweeningUsed by:739
Symbol 132 ShapeTweeningUsed by:739
Symbol 133 GraphicUsed by:739
Symbol 134 ShapeTweeningUsed by:739
Symbol 135 ShapeTweeningUsed by:739
Symbol 136 ShapeTweeningUsed by:739
Symbol 137 ShapeTweeningUsed by:739
Symbol 138 ShapeTweeningUsed by:739
Symbol 139 ShapeTweeningUsed by:739
Symbol 140 GraphicUsed by:739
Symbol 141 GraphicUsed by:739
Symbol 142 GraphicUsed by:739
Symbol 143 GraphicUsed by:739
Symbol 144 GraphicUsed by:739
Symbol 145 GraphicUsed by:739
Symbol 146 GraphicUsed by:739
Symbol 147 GraphicUsed by:739
Symbol 148 GraphicUsed by:739
Symbol 149 GraphicUsed by:739
Symbol 150 GraphicUsed by:739
Symbol 151 GraphicUsed by:739
Symbol 152 GraphicUsed by:739
Symbol 153 ShapeTweeningUsed by:739
Symbol 154 ShapeTweeningUsed by:739
Symbol 155 ShapeTweeningUsed by:739
Symbol 156 GraphicUsed by:739
Symbol 157 ShapeTweeningUsed by:739
Symbol 158 ShapeTweeningUsed by:739
Symbol 159 ShapeTweeningUsed by:739
Symbol 160 GraphicUsed by:739
Symbol 161 GraphicUsed by:739
Symbol 162 GraphicUsed by:739
Symbol 163 ShapeTweeningUsed by:739
Symbol 164 ShapeTweeningUsed by:739
Symbol 165 ShapeTweeningUsed by:739
Symbol 166 GraphicUsed by:739
Symbol 167 ShapeTweeningUsed by:739
Symbol 168 ShapeTweeningUsed by:739
Symbol 169 ShapeTweeningUsed by:739
Symbol 170 GraphicUsed by:739
Symbol 171 GraphicUsed by:739
Symbol 172 GraphicUsed by:739
Symbol 173 ShapeTweeningUsed by:739
Symbol 174 GraphicUsed by:739
Symbol 175 ShapeTweeningUsed by:739
Symbol 176 GraphicUsed by:739
Symbol 177 ShapeTweeningUsed by:739
Symbol 178 ShapeTweeningUsed by:739
Symbol 179 GraphicUsed by:739
Symbol 180 GraphicUsed by:739
Symbol 181 GraphicUsed by:739
Symbol 182 GraphicUsed by:739
Symbol 183 ShapeTweeningUsed by:739
Symbol 184 ShapeTweeningUsed by:739
Symbol 185 ShapeTweeningUsed by:739
Symbol 186 ShapeTweeningUsed by:739
Symbol 187 ShapeTweeningUsed by:739
Symbol 188 GraphicUsed by:739
Symbol 189 ShapeTweeningUsed by:739
Symbol 190 ShapeTweeningUsed by:739
Symbol 191 ShapeTweeningUsed by:739
Symbol 192 ShapeTweeningUsed by:739
Symbol 193 ShapeTweeningUsed by:739
Symbol 194 ShapeTweeningUsed by:739
Symbol 195 ShapeTweeningUsed by:739
Symbol 196 ShapeTweeningUsed by:739
Symbol 197 ShapeTweeningUsed by:739
Symbol 198 ShapeTweeningUsed by:739
Symbol 199 ShapeTweeningUsed by:739
Symbol 200 ShapeTweeningUsed by:739
Symbol 201 ShapeTweeningUsed by:739
Symbol 202 ShapeTweeningUsed by:739
Symbol 203 ShapeTweeningUsed by:739
Symbol 204 ShapeTweeningUsed by:739
Symbol 205 ShapeTweeningUsed by:739
Symbol 206 ShapeTweeningUsed by:739
Symbol 207 ShapeTweeningUsed by:739
Symbol 208 ShapeTweeningUsed by:739
Symbol 209 ShapeTweeningUsed by:739
Symbol 210 ShapeTweeningUsed by:739
Symbol 211 ShapeTweeningUsed by:739
Symbol 212 ShapeTweeningUsed by:739
Symbol 213 ShapeTweeningUsed by:739
Symbol 214 ShapeTweeningUsed by:739
Symbol 215 ShapeTweeningUsed by:739
Symbol 216 ShapeTweeningUsed by:739
Symbol 217 ShapeTweeningUsed by:739
Symbol 218 ShapeTweeningUsed by:739
Symbol 219 ShapeTweeningUsed by:739
Symbol 220 ShapeTweeningUsed by:739
Symbol 221 ShapeTweeningUsed by:739
Symbol 222 ShapeTweeningUsed by:739
Symbol 223 ShapeTweeningUsed by:739
Symbol 224 ShapeTweeningUsed by:739
Symbol 225 ShapeTweeningUsed by:739
Symbol 226 ShapeTweeningUsed by:739
Symbol 227 ShapeTweeningUsed by:739
Symbol 228 GraphicUsed by:739
Symbol 229 ShapeTweeningUsed by:739
Symbol 230 ShapeTweeningUsed by:739
Symbol 231 ShapeTweeningUsed by:739
Symbol 232 ShapeTweeningUsed by:739
Symbol 233 ShapeTweeningUsed by:739
Symbol 234 GraphicUsed by:739
Symbol 235 ShapeTweeningUsed by:739
Symbol 236 ShapeTweeningUsed by:739
Symbol 237 ShapeTweeningUsed by:739
Symbol 238 ShapeTweeningUsed by:739
Symbol 239 ShapeTweeningUsed by:739
Symbol 240 ShapeTweeningUsed by:739
Symbol 241 ShapeTweeningUsed by:739
Symbol 242 ShapeTweeningUsed by:739
Symbol 243 ShapeTweeningUsed by:739
Symbol 244 ShapeTweeningUsed by:739
Symbol 245 ShapeTweeningUsed by:739
Symbol 246 GraphicUsed by:739
Symbol 247 ShapeTweeningUsed by:739
Symbol 248 ShapeTweeningUsed by:739
Symbol 249 ShapeTweeningUsed by:739
Symbol 250 ShapeTweeningUsed by:739
Symbol 251 ShapeTweeningUsed by:739
Symbol 252 ShapeTweeningUsed by:739
Symbol 253 ShapeTweeningUsed by:739
Symbol 254 ShapeTweeningUsed by:739
Symbol 255 ShapeTweeningUsed by:739
Symbol 256 ShapeTweeningUsed by:739
Symbol 257 ShapeTweeningUsed by:739
Symbol 258 GraphicUsed by:739
Symbol 259 ShapeTweeningUsed by:739
Symbol 260 ShapeTweeningUsed by:739
Symbol 261 ShapeTweeningUsed by:739
Symbol 262 ShapeTweeningUsed by:739
Symbol 263 ShapeTweeningUsed by:739
Symbol 264 ShapeTweeningUsed by:739
Symbol 265 ShapeTweeningUsed by:739
Symbol 266 ShapeTweeningUsed by:739
Symbol 267 ShapeTweeningUsed by:739
Symbol 268 ShapeTweeningUsed by:739
Symbol 269 ShapeTweeningUsed by:739
Symbol 270 GraphicUsed by:739
Symbol 271 ShapeTweeningUsed by:739
Symbol 272 ShapeTweeningUsed by:739
Symbol 273 ShapeTweeningUsed by:739
Symbol 274 ShapeTweeningUsed by:739
Symbol 275 ShapeTweeningUsed by:739
Symbol 276 ShapeTweeningUsed by:739
Symbol 277 GraphicUsed by:739
Symbol 278 GraphicUsed by:739
Symbol 279 GraphicUsed by:739
Symbol 280 GraphicUsed by:739
Symbol 281 GraphicUsed by:739
Symbol 282 ShapeTweeningUsed by:739
Symbol 283 ShapeTweeningUsed by:739
Symbol 284 GraphicUsed by:739
Symbol 285 ShapeTweeningUsed by:739
Symbol 286 ShapeTweeningUsed by:739
Symbol 287 ShapeTweeningUsed by:739
Symbol 288 GraphicUsed by:739
Symbol 289 ShapeTweeningUsed by:739
Symbol 290 ShapeTweeningUsed by:739
Symbol 291 ShapeTweeningUsed by:739
Symbol 292 GraphicUsed by:739
Symbol 293 GraphicUsed by:739
Symbol 294 GraphicUsed by:739
Symbol 295 GraphicUsed by:739
Symbol 296 GraphicUsed by:739
Symbol 297 ShapeTweeningUsed by:739
Symbol 298 ShapeTweeningUsed by:739
Symbol 299 GraphicUsed by:739
Symbol 300 GraphicUsed by:739
Symbol 301 GraphicUsed by:739
Symbol 302 ShapeTweeningUsed by:739
Symbol 303 ShapeTweeningUsed by:739
Symbol 304 GraphicUsed by:739
Symbol 305 ShapeTweeningUsed by:739
Symbol 306 ShapeTweeningUsed by:739
Symbol 307 GraphicUsed by:739
Symbol 308 GraphicUsed by:739
Symbol 309 GraphicUsed by:739
Symbol 310 GraphicUsed by:739
Symbol 311 ShapeTweeningUsed by:739
Symbol 312 ShapeTweeningUsed by:739
Symbol 313 ShapeTweeningUsed by:739
Symbol 314 ShapeTweeningUsed by:739
Symbol 315 ShapeTweeningUsed by:739
Symbol 316 GraphicUsed by:739
Symbol 317 ShapeTweeningUsed by:739
Symbol 318 ShapeTweeningUsed by:739
Symbol 319 ShapeTweeningUsed by:739
Symbol 320 ShapeTweeningUsed by:739
Symbol 321 ShapeTweeningUsed by:739
Symbol 322 ShapeTweeningUsed by:739
Symbol 323 ShapeTweeningUsed by:739
Symbol 324 ShapeTweeningUsed by:739
Symbol 325 ShapeTweeningUsed by:739
Symbol 326 ShapeTweeningUsed by:739
Symbol 327 ShapeTweeningUsed by:739
Symbol 328 GraphicUsed by:739
Symbol 329 ShapeTweeningUsed by:739
Symbol 330 ShapeTweeningUsed by:739
Symbol 331 ShapeTweeningUsed by:739
Symbol 332 ShapeTweeningUsed by:739
Symbol 333 ShapeTweeningUsed by:739
Symbol 334 ShapeTweeningUsed by:739
Symbol 335 ShapeTweeningUsed by:739
Symbol 336 ShapeTweeningUsed by:739
Symbol 337 ShapeTweeningUsed by:739
Symbol 338 ShapeTweeningUsed by:739
Symbol 339 ShapeTweeningUsed by:739
Symbol 340 GraphicUsed by:739
Symbol 341 ShapeTweeningUsed by:739
Symbol 342 ShapeTweeningUsed by:739
Symbol 343 ShapeTweeningUsed by:739
Symbol 344 ShapeTweeningUsed by:739
Symbol 345 ShapeTweeningUsed by:739
Symbol 346 ShapeTweeningUsed by:739
Symbol 347 ShapeTweeningUsed by:739
Symbol 348 ShapeTweeningUsed by:739
Symbol 349 ShapeTweeningUsed by:739
Symbol 350 ShapeTweeningUsed by:739
Symbol 351 ShapeTweeningUsed by:739
Symbol 352 GraphicUsed by:739
Symbol 353 ShapeTweeningUsed by:739
Symbol 354 ShapeTweeningUsed by:739
Symbol 355 ShapeTweeningUsed by:739
Symbol 356 ShapeTweeningUsed by:739
Symbol 357 ShapeTweeningUsed by:739
Symbol 358 ShapeTweeningUsed by:739
Symbol 359 GraphicUsed by:739
Symbol 360 ShapeTweeningUsed by:739
Symbol 361 ShapeTweeningUsed by:739
Symbol 362 ShapeTweeningUsed by:739
Symbol 363 ShapeTweeningUsed by:739
Symbol 364 ShapeTweeningUsed by:739
Symbol 365 GraphicUsed by:739
Symbol 366 ShapeTweeningUsed by:739
Symbol 367 ShapeTweeningUsed by:739
Symbol 368 ShapeTweeningUsed by:739
Symbol 369 ShapeTweeningUsed by:739
Symbol 370 ShapeTweeningUsed by:739
Symbol 371 ShapeTweeningUsed by:739
Symbol 372 ShapeTweeningUsed by:739
Symbol 373 ShapeTweeningUsed by:739
Symbol 374 ShapeTweeningUsed by:739
Symbol 375 ShapeTweeningUsed by:739
Symbol 376 ShapeTweeningUsed by:739
Symbol 377 GraphicUsed by:739
Symbol 378 ShapeTweeningUsed by:739
Symbol 379 ShapeTweeningUsed by:739
Symbol 380 ShapeTweeningUsed by:739
Symbol 381 ShapeTweeningUsed by:739
Symbol 382 ShapeTweeningUsed by:739
Symbol 383 ShapeTweeningUsed by:739
Symbol 384 ShapeTweeningUsed by:739
Symbol 385 ShapeTweeningUsed by:739
Symbol 386 ShapeTweeningUsed by:739
Symbol 387 ShapeTweeningUsed by:739
Symbol 388 ShapeTweeningUsed by:739
Symbol 389 GraphicUsed by:739
Symbol 390 ShapeTweeningUsed by:739
Symbol 391 ShapeTweeningUsed by:739
Symbol 392 ShapeTweeningUsed by:739
Symbol 393 ShapeTweeningUsed by:739
Symbol 394 ShapeTweeningUsed by:739
Symbol 395 ShapeTweeningUsed by:739
Symbol 396 ShapeTweeningUsed by:739
Symbol 397 ShapeTweeningUsed by:739
Symbol 398 ShapeTweeningUsed by:739
Symbol 399 ShapeTweeningUsed by:739
Symbol 400 ShapeTweeningUsed by:739
Symbol 401 GraphicUsed by:739
Symbol 402 ShapeTweeningUsed by:739
Symbol 403 ShapeTweeningUsed by:739
Symbol 404 ShapeTweeningUsed by:739
Symbol 405 ShapeTweeningUsed by:739
Symbol 406 ShapeTweeningUsed by:739
Symbol 407 ShapeTweeningUsed by:739
Symbol 408 GraphicUsed by:739
Symbol 409 GraphicUsed by:739
Symbol 410 GraphicUsed by:739
Symbol 411 GraphicUsed by:739
Symbol 412 GraphicUsed by:739
Symbol 413 GraphicUsed by:739
Symbol 414 GraphicUsed by:739
Symbol 415 GraphicUsed by:739
Symbol 416 GraphicUsed by:739
Symbol 417 GraphicUsed by:739
Symbol 418 GraphicUsed by:739
Symbol 419 GraphicUsed by:739
Symbol 420 GraphicUsed by:739
Symbol 421 GraphicUsed by:739
Symbol 422 GraphicUsed by:739
Symbol 423 GraphicUsed by:739
Symbol 424 GraphicUsed by:739
Symbol 425 GraphicUsed by:739
Symbol 426 ShapeTweeningUsed by:739
Symbol 427 GraphicUsed by:739
Symbol 428 GraphicUsed by:739
Symbol 429 GraphicUsed by:739
Symbol 430 GraphicUsed by:739
Symbol 431 GraphicUsed by:739
Symbol 432 GraphicUsed by:739
Symbol 433 GraphicUsed by:739
Symbol 434 GraphicUsed by:739
Symbol 435 GraphicUsed by:739
Symbol 436 GraphicUsed by:739
Symbol 437 GraphicUsed by:739
Symbol 438 GraphicUsed by:739
Symbol 439 GraphicUsed by:739
Symbol 440 GraphicUsed by:739
Symbol 441 ShapeTweeningUsed by:739
Symbol 442 ShapeTweeningUsed by:739
Symbol 443 GraphicUsed by:739
Symbol 444 GraphicUsed by:739
Symbol 445 GraphicUsed by:739
Symbol 446 GraphicUsed by:739
Symbol 447 GraphicUsed by:739
Symbol 448 GraphicUsed by:739
Symbol 449 GraphicUsed by:739
Symbol 450 GraphicUsed by:739
Symbol 451 GraphicUsed by:739
Symbol 452 GraphicUsed by:739
Symbol 453 GraphicUsed by:739
Symbol 454 GraphicUsed by:739
Symbol 455 GraphicUsed by:739
Symbol 456 GraphicUsed by:739
Symbol 457 GraphicUsed by:739
Symbol 458 GraphicUsed by:739
Symbol 459 GraphicUsed by:739
Symbol 460 GraphicUsed by:739
Symbol 461 GraphicUsed by:739
Symbol 462 GraphicUsed by:739
Symbol 463 GraphicUsed by:739
Symbol 464 GraphicUsed by:739
Symbol 465 GraphicUsed by:739
Symbol 466 GraphicUsed by:739
Symbol 467 GraphicUsed by:739
Symbol 468 GraphicUsed by:739
Symbol 469 GraphicUsed by:739
Symbol 470 GraphicUsed by:739
Symbol 471 GraphicUsed by:739
Symbol 472 GraphicUsed by:739
Symbol 473 GraphicUsed by:739
Symbol 474 GraphicUsed by:739
Symbol 475 ShapeTweeningUsed by:739
Symbol 476 ShapeTweeningUsed by:739
Symbol 477 ShapeTweeningUsed by:739
Symbol 478 ShapeTweeningUsed by:739
Symbol 479 GraphicUsed by:739
Symbol 480 GraphicUsed by:739
Symbol 481 ShapeTweeningUsed by:739
Symbol 482 ShapeTweeningUsed by:739
Symbol 483 ShapeTweeningUsed by:739
Symbol 484 ShapeTweeningUsed by:739
Symbol 485 ShapeTweeningUsed by:739
Symbol 486 ShapeTweeningUsed by:739
Symbol 487 ShapeTweeningUsed by:739
Symbol 488 ShapeTweeningUsed by:739
Symbol 489 ShapeTweeningUsed by:739
Symbol 490 ShapeTweeningUsed by:739
Symbol 491 GraphicUsed by:739
Symbol 492 ShapeTweeningUsed by:739
Symbol 493 ShapeTweeningUsed by:739
Symbol 494 ShapeTweeningUsed by:739
Symbol 495 ShapeTweeningUsed by:739
Symbol 496 ShapeTweeningUsed by:739
Symbol 497 ShapeTweeningUsed by:739
Symbol 498 ShapeTweeningUsed by:739
Symbol 499 ShapeTweeningUsed by:739
Symbol 500 ShapeTweeningUsed by:739
Symbol 501 ShapeTweeningUsed by:739
Symbol 502 ShapeTweeningUsed by:739
Symbol 503 ShapeTweeningUsed by:739
Symbol 504 ShapeTweeningUsed by:739
Symbol 505 ShapeTweeningUsed by:739
Symbol 506 ShapeTweeningUsed by:739
Symbol 507 ShapeTweeningUsed by:739
Symbol 508 ShapeTweeningUsed by:739
Symbol 509 ShapeTweeningUsed by:739
Symbol 510 ShapeTweeningUsed by:739
Symbol 511 ShapeTweeningUsed by:739
Symbol 512 GraphicUsed by:739
Symbol 513 ShapeTweeningUsed by:739
Symbol 514 ShapeTweeningUsed by:739
Symbol 515 ShapeTweeningUsed by:739
Symbol 516 ShapeTweeningUsed by:739
Symbol 517 ShapeTweeningUsed by:739
Symbol 518 ShapeTweeningUsed by:739
Symbol 519 GraphicUsed by:739
Symbol 520 ShapeTweeningUsed by:739
Symbol 521 ShapeTweeningUsed by:739
Symbol 522 GraphicUsed by:739
Symbol 523 ShapeTweeningUsed by:739
Symbol 524 ShapeTweeningUsed by:739
Symbol 525 ShapeTweeningUsed by:739
Symbol 526 GraphicUsed by:739
Symbol 527 ShapeTweeningUsed by:739
Symbol 528 ShapeTweeningUsed by:739
Symbol 529 GraphicUsed by:739
Symbol 530 GraphicUsed by:739
Symbol 531 ShapeTweeningUsed by:739
Symbol 532 ShapeTweeningUsed by:739
Symbol 533 ShapeTweeningUsed by:739
Symbol 534 GraphicUsed by:739
Symbol 535 ShapeTweeningUsed by:739
Symbol 536 ShapeTweeningUsed by:739
Symbol 537 GraphicUsed by:739
Symbol 538 ShapeTweeningUsed by:739
Symbol 539 ShapeTweeningUsed by:739
Symbol 540 ShapeTweeningUsed by:739
Symbol 541 GraphicUsed by:739
Symbol 542 ShapeTweeningUsed by:739
Symbol 543 ShapeTweeningUsed by:739
Symbol 544 GraphicUsed by:739
Symbol 545 GraphicUsed by:739
Symbol 546 ShapeTweeningUsed by:739
Symbol 547 ShapeTweeningUsed by:739
Symbol 548 ShapeTweeningUsed by:739
Symbol 549 GraphicUsed by:739
Symbol 550 GraphicUsed by:739
Symbol 551 GraphicUsed by:739
Symbol 552 GraphicUsed by:739
Symbol 553 GraphicUsed by:739
Symbol 554 GraphicUsed by:739
Symbol 555 ShapeTweeningUsed by:739
Symbol 556 ShapeTweeningUsed by:739
Symbol 557 ShapeTweeningUsed by:739
Symbol 558 GraphicUsed by:739
Symbol 559 GraphicUsed by:739
Symbol 560 GraphicUsed by:739
Symbol 561 GraphicUsed by:739
Symbol 562 GraphicUsed by:739
Symbol 563 GraphicUsed by:739
Symbol 564 GraphicUsed by:739
Symbol 565 GraphicUsed by:739
Symbol 566 GraphicUsed by:739
Symbol 567 GraphicUsed by:739
Symbol 568 GraphicUsed by:739
Symbol 569 GraphicUsed by:739
Symbol 570 GraphicUsed by:739
Symbol 571 GraphicUsed by:739
Symbol 572 GraphicUsed by:739
Symbol 573 GraphicUsed by:739
Symbol 574 GraphicUsed by:739
Symbol 575 GraphicUsed by:739
Symbol 576 GraphicUsed by:739
Symbol 577 GraphicUsed by:739
Symbol 578 GraphicUsed by:739
Symbol 579 GraphicUsed by:739
Symbol 580 GraphicUsed by:739
Symbol 581 GraphicUsed by:739
Symbol 582 GraphicUsed by:739
Symbol 583 GraphicUsed by:739
Symbol 584 GraphicUsed by:739
Symbol 585 GraphicUsed by:739
Symbol 586 GraphicUsed by:739
Symbol 587 GraphicUsed by:739
Symbol 588 GraphicUsed by:739
Symbol 589 GraphicUsed by:739
Symbol 590 GraphicUsed by:739
Symbol 591 GraphicUsed by:739
Symbol 592 GraphicUsed by:739
Symbol 593 GraphicUsed by:739
Symbol 594 GraphicUsed by:739
Symbol 595 GraphicUsed by:739
Symbol 596 GraphicUsed by:739
Symbol 597 GraphicUsed by:739
Symbol 598 GraphicUsed by:739
Symbol 599 GraphicUsed by:739
Symbol 600 GraphicUsed by:739
Symbol 601 GraphicUsed by:739
Symbol 602 GraphicUsed by:739
Symbol 603 GraphicUsed by:739
Symbol 604 GraphicUsed by:739
Symbol 605 GraphicUsed by:739
Symbol 606 GraphicUsed by:739
Symbol 607 GraphicUsed by:739
Symbol 608 GraphicUsed by:739
Symbol 609 GraphicUsed by:739
Symbol 610 GraphicUsed by:739
Symbol 611 GraphicUsed by:739
Symbol 612 GraphicUsed by:739
Symbol 613 GraphicUsed by:739
Symbol 614 GraphicUsed by:739
Symbol 615 GraphicUsed by:739
Symbol 616 GraphicUsed by:739
Symbol 617 ShapeTweeningUsed by:739
Symbol 618 ShapeTweeningUsed by:739
Symbol 619 ShapeTweeningUsed by:739
Symbol 620 ShapeTweeningUsed by:739
Symbol 621 GraphicUsed by:739
Symbol 622 ShapeTweeningUsed by:739
Symbol 623 ShapeTweeningUsed by:739
Symbol 624 ShapeTweeningUsed by:739
Symbol 625 ShapeTweeningUsed by:739
Symbol 626 ShapeTweeningUsed by:739
Symbol 627 ShapeTweeningUsed by:739
Symbol 628 ShapeTweeningUsed by:739
Symbol 629 ShapeTweeningUsed by:739
Symbol 630 ShapeTweeningUsed by:739
Symbol 631 ShapeTweeningUsed by:739
Symbol 632 GraphicUsed by:739
Symbol 633 ShapeTweeningUsed by:739
Symbol 634 ShapeTweeningUsed by:739
Symbol 635 ShapeTweeningUsed by:739
Symbol 636 ShapeTweeningUsed by:739
Symbol 637 ShapeTweeningUsed by:739
Symbol 638 ShapeTweeningUsed by:739
Symbol 639 ShapeTweeningUsed by:739
Symbol 640 ShapeTweeningUsed by:739
Symbol 641 ShapeTweeningUsed by:739
Symbol 642 ShapeTweeningUsed by:739
Symbol 643 ShapeTweeningUsed by:739
Symbol 644 ShapeTweeningUsed by:739
Symbol 645 ShapeTweeningUsed by:739
Symbol 646 ShapeTweeningUsed by:739
Symbol 647 ShapeTweeningUsed by:739
Symbol 648 ShapeTweeningUsed by:739
Symbol 649 ShapeTweeningUsed by:739
Symbol 650 ShapeTweeningUsed by:739
Symbol 651 ShapeTweeningUsed by:739
Symbol 652 ShapeTweeningUsed by:739
Symbol 653 GraphicUsed by:739
Symbol 654 ShapeTweeningUsed by:739
Symbol 655 ShapeTweeningUsed by:739
Symbol 656 ShapeTweeningUsed by:739
Symbol 657 ShapeTweeningUsed by:739
Symbol 658 ShapeTweeningUsed by:739
Symbol 659 ShapeTweeningUsed by:739
Symbol 660 GraphicUsed by:739
Symbol 661 ShapeTweeningUsed by:739
Symbol 662 ShapeTweeningUsed by:739
Symbol 663 GraphicUsed by:739
Symbol 664 ShapeTweeningUsed by:739
Symbol 665 ShapeTweeningUsed by:739
Symbol 666 ShapeTweeningUsed by:739
Symbol 667 GraphicUsed by:739
Symbol 668 ShapeTweeningUsed by:739
Symbol 669 GraphicUsed by:739
Symbol 670 GraphicUsed by:739
Symbol 671 ShapeTweeningUsed by:739
Symbol 672 ShapeTweeningUsed by:739
Symbol 673 GraphicUsed by:739
Symbol 674 GraphicUsed by:739
Symbol 675 ShapeTweeningUsed by:739
Symbol 676 ShapeTweeningUsed by:739
Symbol 677 ShapeTweeningUsed by:739
Symbol 678 GraphicUsed by:739
Symbol 679 ShapeTweeningUsed by:739
Symbol 680 GraphicUsed by:739
Symbol 681 GraphicUsed by:739
Symbol 682 GraphicUsed by:739
Symbol 683 ShapeTweeningUsed by:739
Symbol 684 ShapeTweeningUsed by:739
Symbol 685 GraphicUsed by:739
Symbol 686 ShapeTweeningUsed by:739
Symbol 687 ShapeTweeningUsed by:739
Symbol 688 ShapeTweeningUsed by:739
Symbol 689 GraphicUsed by:739
Symbol 690 GraphicUsed by:739
Symbol 691 ShapeTweeningUsed by:739
Symbol 692 ShapeTweeningUsed by:739
Symbol 693 ShapeTweeningUsed by:739
Symbol 694 GraphicUsed by:739
Symbol 695 GraphicUsed by:739
Symbol 696 ShapeTweeningUsed by:739
Symbol 697 ShapeTweeningUsed by:739
Symbol 698 ShapeTweeningUsed by:739
Symbol 699 GraphicUsed by:739
Symbol 700 ShapeTweeningUsed by:739
Symbol 701 GraphicUsed by:739
Symbol 702 GraphicUsed by:739
Symbol 703 GraphicUsed by:739
Symbol 704 GraphicUsed by:739
Symbol 705 GraphicUsed by:739
Symbol 706 GraphicUsed by:739
Symbol 707 ShapeTweeningUsed by:739
Symbol 708 GraphicUsed by:739
Symbol 709 GraphicUsed by:739
Symbol 710 ShapeTweeningUsed by:739
Symbol 711 ShapeTweeningUsed by:739
Symbol 712 ShapeTweeningUsed by:739
Symbol 713 GraphicUsed by:739
Symbol 714 ShapeTweeningUsed by:739
Symbol 715 GraphicUsed by:739
Symbol 716 GraphicUsed by:739
Symbol 717 GraphicUsed by:739
Symbol 718 GraphicUsed by:739
Symbol 719 GraphicUsed by:739
Symbol 720 GraphicUsed by:739
Symbol 721 GraphicUsed by:739
Symbol 722 ShapeTweeningUsed by:739
Symbol 723 ShapeTweeningUsed by:739
Symbol 724 GraphicUsed by:739
Symbol 725 GraphicUsed by:739
Symbol 726 GraphicUsed by:739
Symbol 727 GraphicUsed by:739
Symbol 728 GraphicUsed by:739
Symbol 729 GraphicUsed by:739
Symbol 730 GraphicUsed by:739
Symbol 731 GraphicUsed by:739
Symbol 732 GraphicUsed by:739
Symbol 733 ShapeTweeningUsed by:739
Symbol 734 ShapeTweeningUsed by:739
Symbol 735 GraphicUsed by:739
Symbol 736 GraphicUsed by:739
Symbol 737 GraphicUsed by:739
Symbol 738 GraphicUsed by:739
Symbol 739 MovieClip {AmberClip}Uses:43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738
Symbol 740 GraphicUsed by:745
Symbol 741 FontUsed by:742 757
Symbol 742 TextUses:741Used by:745
Symbol 743 FontUsed by:744
Symbol 744 TextUses:743Used by:745
Symbol 745 MovieClip {_background}Uses:740 742 744
Symbol 746 GraphicUsed by:747
Symbol 747 MovieClip {ThrowableApple}Uses:746
Symbol 748 GraphicUsed by:755
Symbol 749 GraphicUsed by:755
Symbol 750 GraphicUsed by:755
Symbol 751 GraphicUsed by:755
Symbol 752 GraphicUsed by:755
Symbol 753 GraphicUsed by:755
Symbol 754 GraphicUsed by:755
Symbol 755 MovieClip {FireBall}Uses:748 749 750 751 752 753 754
Symbol 756 GraphicUsed by:758
Symbol 757 TextUses:741Used by:758
Symbol 758 MovieClip {_btn}Uses:756 757
Symbol 759 GraphicUsed by:760
Symbol 760 MovieClip {SoundImage}Uses:759

Instance Names

"hitbox"Symbol 739 MovieClip {AmberClip} Frame 1Symbol 43 MovieClip {TestClip}
"attackbox"Symbol 739 MovieClip {AmberClip} Frame 1Symbol 43 MovieClip {TestClip}

Special Tags

FileAttributes (69)Timeline Frame 1Access local files only, Metadata not present, AS3.
Protect (24)Timeline Frame 10 bytes ""

Labels

"template"Symbol 739 MovieClip {AmberClip} Frame 1
"stand_normal"Symbol 739 MovieClip {AmberClip} Frame 10
"walk_normal"Symbol 739 MovieClip {AmberClip} Frame 14
"run_normal"Symbol 739 MovieClip {AmberClip} Frame 35
"jump_normal"Symbol 739 MovieClip {AmberClip} Frame 50
"fall_normal"Symbol 739 MovieClip {AmberClip} Frame 55
"damage_normal"Symbol 739 MovieClip {AmberClip} Frame 60
"attack_normal"Symbol 739 MovieClip {AmberClip} Frame 66
"throw_normal"Symbol 739 MovieClip {AmberClip} Frame 75
"start_light"Symbol 739 MovieClip {AmberClip} Frame 85
"stand_light"Symbol 739 MovieClip {AmberClip} Frame 92
"walk_light"Symbol 739 MovieClip {AmberClip} Frame 97
"run_light"Symbol 739 MovieClip {AmberClip} Frame 118
"jump_light"Symbol 739 MovieClip {AmberClip} Frame 133
"fall_light"Symbol 739 MovieClip {AmberClip} Frame 138
"damage_light"Symbol 739 MovieClip {AmberClip} Frame 143
"fill_light"Symbol 739 MovieClip {AmberClip} Frame 148
"float_light"Symbol 739 MovieClip {AmberClip} Frame 154
"bounce_light"Symbol 739 MovieClip {AmberClip} Frame 167
"end_light"Symbol 739 MovieClip {AmberClip} Frame 171
"start_heavy"Symbol 739 MovieClip {AmberClip} Frame 185
"stand_heavy"Symbol 739 MovieClip {AmberClip} Frame 192
"walk_heavy"Symbol 739 MovieClip {AmberClip} Frame 197
"run_heavy"Symbol 739 MovieClip {AmberClip} Frame 218
"jump_heavy"Symbol 739 MovieClip {AmberClip} Frame 233
"fall_heavy"Symbol 739 MovieClip {AmberClip} Frame 238
"damage_heavy"Symbol 739 MovieClip {AmberClip} Frame 243
"attack_heavy"Symbol 739 MovieClip {AmberClip} Frame 248
"crush_heavy"Symbol 739 MovieClip {AmberClip} Frame 269
"bounce_heavy"Symbol 739 MovieClip {AmberClip} Frame 280
"end_heavy"Symbol 739 MovieClip {AmberClip} Frame 295
"start_dragon"Symbol 739 MovieClip {AmberClip} Frame 305
"stand_dragon"Symbol 739 MovieClip {AmberClip} Frame 319
"walk_dragon"Symbol 739 MovieClip {AmberClip} Frame 324
"run_dragon"Symbol 739 MovieClip {AmberClip} Frame 345
"jump_dragon"Symbol 739 MovieClip {AmberClip} Frame 360
"fall_dragon"Symbol 739 MovieClip {AmberClip} Frame 365
"damage_dragon"Symbol 739 MovieClip {AmberClip} Frame 370
"start_fire_dragon"Symbol 739 MovieClip {AmberClip} Frame 376
"fire_dragon"Symbol 739 MovieClip {AmberClip} Frame 379
"fly_dragon"Symbol 739 MovieClip {AmberClip} Frame 384
"end_dragon"Symbol 739 MovieClip {AmberClip} Frame 397
"start_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 413
"stand_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 432
"walk_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 437
"run_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 458
"jump_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 473
"fall_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 478
"damage_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 483
"stomp_dragon_belly"Symbol 739 MovieClip {AmberClip} Frame 488
"end_belly_dragon"Symbol 739 MovieClip {AmberClip} Frame 496
"from_dragon"Symbol 739 MovieClip {AmberClip} Frame 520
"to_dragon"Symbol 739 MovieClip {AmberClip} Frame 531




http://swfchan.com/34/168105/info.shtml
Created: 18/10 -2018 09:18:15 Last modified: 18/10 -2018 09:18:15 Server time: 30/04 -2024 19:51:22