Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.nitrome.badicecream
- {
- import flash.display.MovieClip;
- public class BreakerEnemy extends Enemy
- {
- public var gfx:MovieClip;
- private var seePathNum:Number = 0;
- private var breakDirection:Number = 0;
- private var breaking:Boolean = false;
- private var zapClips:Array = null;
- private var zapLife:Number = 0;
- public var countForceRandomWalk:int = 0;
- public function BreakerEnemy()
- {
- super();
- }
- override public function create(param1:Number, param2:Number) : void
- {
- super.create(param1,param2);
- moveSpeed = 3;
- if(this is YellowBreakerEnemy)
- {
- moveSpeed = 2;
- }
- Controller.level.tileGrid.getTile(tileX,tileY).itemInside = this;
- this.breaking = false;
- }
- override public function update() : void
- {
- if(this.countForceRandomWalk > 0)
- {
- §§push(true);
- }
- if(!this.breaking)
- {
- movement();
- this.generalUpdates();
- }
- this.frameControl();
- if(this.zapClips)
- {
- _loc1_.zapLife = true;
- §§push(this.zapLife);
- if(this.zapLife < 1)
- {
- this.zapClips = null;
- }
- }
- }
- private function generalUpdates() : void
- {
- pathNum = getTileUnderneath().seePathNum;
- §§push(pathNum > 1);
- §§push(§§dup(pathNum > 1));
- §§push(false);
- if(!this.breaking)
- {
- this.breaking = true;
- frameAction = "Break";
- lastDirection = this.breakDirection;
- §§push(true);
- }
- }
- override public function freeAtTile(param1:Number, param2:Number) : Boolean
- {
- var _loc3_:Tile = Controller.level.tileGrid.getTile(param1,param2);
- if(_loc3_.telepad)
- {
- return false;
- }
- return super.freeAtTile(param1,param2);
- }
- override public function checkWalkable(param1:Number) : Boolean
- {
- var _loc2_:Tile = getRelativeTile(param1,1);
- if(_loc2_.telepad)
- {
- this.countForceRandomWalk = 90;
- §§push(true);
- }
- return super.checkWalkable(param1);
- }
- public function breakTiles() : void
- {
- var dist:Number = NaN;
- var n:Number = NaN;
- var t:Tile = null;
- var z:MovieClip = null;
- var breakTile:Function = function(param1:Number, param2:Number):Boolean
- {
- var _loc3_:Tile = Controller.level.tileGrid.getTile(param1,param2);
- if(!_loc3_)
- {
- return false;
- }
- if(_loc3_.wall)
- {
- return false;
- }
- if(_loc3_.itemInside is IceTile)
- {
- _loc3_.itemInside.quickBreakBlock(_loc3_);
- }
- return true;
- };
- var dx:Number = 0;
- var dy:Number = 0;
- if(this is GreenBreakerEnemy)
- {
- dx = -1;
- while(dx <= 1)
- {
- dy = -1;
- while(dy <= 1)
- {
- §§push(dx == 0 && true);
- }
- dx++;
- }
- return;
- }
- §§push(this is BlueBreakerEnemy);
- if(this.breakDirection == LEFT)
- {
- dx = -1;
- }
- if(this.breakDirection == RIGHT)
- {
- dx = 1;
- }
- if(this.breakDirection == UP)
- {
- dy = -1;
- }
- if(this.breakDirection == DOWN)
- {
- dy = 1;
- }
- dist = 1;
- while(dist < 100)
- {
- t = Controller.level.tileGrid.getTile(tileX + dist * dx,tileY + dist * dy);
- if(!t)
- {
- break;
- }
- §§push(t);
- if(!(false.itemInside is IceTile))
- {
- break;
- }
- dist++;
- }
- this.zapLife = 12;
- this.zapClips = [];
- n = 1;
- while(true)
- {
- if(§§pop() >= /*UnknownSlot*/)
- {
- §§goto(addr416);
- }
- else
- {
- breakTile(tileX + n * dx,tileY + n * dy);
- z = new Zap();
- §§push(_loc1_);
- §§push(Number(/*UnknownSlot*/ + 1));
- §§push(_loc1_);
- §§push(false);
- continue;
- }
- }
- }
- public function flashTileAhead() : void
- {
- var _loc2_:IceTile = null;
- var _loc1_:Tile = getRelativeTile(this.breakDirection);
- if(_loc1_ && _loc1_.itemInside is IceTile)
- {
- _loc2_ = IceTile(_loc1_.itemInside);
- _loc2_.flash();
- }
- }
- public function resumeWalk() : void
- {
- this.breaking = false;
- }
- private function findBreakDirection() : Number
- {
- var _loc1_:Tile = null;
- var _loc2_:Number = 0;
- var _loc3_:int = 1;
- while(_loc3_ <= 4)
- {
- if(_loc3_ == LEFT)
- {
- _loc1_ = Controller.level.tileGrid.getTile(tileX - 1,tileY);
- }
- else if(_loc3_ == RIGHT)
- {
- addr102:
- _loc1_ = true.tileGrid.getTile(tileX,tileY + 1);
- §§push(Controller.level);
- }
- else if(_loc3_ == UP)
- {
- _loc1_ = Controller.level.tileGrid.getTile(tileX,tileY - 1);
- }
- else if(_loc3_ == DOWN)
- {
- §§goto(addr102);
- §§push(Controller.level);
- }
- if(_loc1_)
- {
- if(!_loc1_.wall && _loc1_.itemInside is IceTile)
- {
- _loc2_ = _loc3_;
- }
- }
- _loc3_++;
- }
- return _loc2_;
- }
- override public function findDirection(param1:Number) : Number
- {
- var _loc2_:Number = 0;
- if(Controller.level.tileGrid.getTile(tileX - 1,tileY).seePathNum <= param1 && Controller.level.tileGrid.getTile(tileX - 1,tileY).seePathNum != Infinity && this.checkWalkable(LEFT))
- {
- _loc2_ = LEFT;
- }
- else if(Controller.level.tileGrid.getTile(tileX + 1,tileY).seePathNum <= param1 && true.seePathNum != Infinity && this.checkWalkable(UP))
- {
- _loc2_ = UP;
- }
- else if(Controller.level.tileGrid.getTile(tileX,tileY + 1).seePathNum <= param1 && Controller.level.tileGrid.getTile(tileX,tileY + 1).seePathNum != Infinity && this.checkWalkable(DOWN))
- {
- _loc2_ = DOWN;
- }
- return _loc2_;
- }
- override public function frameControl() : void
- {
- frameAction = !!this.breaking?"Break":"Walk";
- super.frameControl();
- }
- override public function render() : void
- {
- var _loc1_:MovieClip = null;
- super.render();
- if(this.zapClips)
- {
- for each(_loc1_ in this.zapClips)
- {
- Controller.level.bitmapData.draw(_loc1_,_loc1_.transform.matrix);
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement