home *** CD-ROM | disk | FTP | other *** search
- function initGuns()
- {
- var _loc2_ = 0;
- while(_loc2_ < guns.length)
- {
- var _loc3_ = _parent._parent.g_level * 5;
- if(_loc3_ > 500)
- {
- _loc3_ = 500;
- }
- var _loc4_ = random(500) + 600 - _loc3_;
- m_maxLoadTime = _loc4_;
- guns[_loc2_].timerTarget = _loc4_;
- guns[_loc2_].dead = false;
- _loc2_ = _loc2_ + 1;
- }
- }
- function step()
- {
- if(hp_bar._alpha > 0)
- {
- hp_bar._alpha -= 5;
- }
- if(isDead())
- {
- vy += 0.08;
- _rotation = _rotation - 0.2;
- if(blade_spin_rate > 5)
- {
- blade_spin_rate -= 0.4;
- }
- if(smokeTimer-- < 0)
- {
- smokeTimer = 1;
- _parent._parent.addSmoke(_X,_Y);
- }
- }
- else
- {
- stepGuns();
- }
- updatePosition();
- if(_X < goal_xspot && !isDead())
- {
- if(vx < 0)
- {
- vx += 0.005;
- }
- else
- {
- vx = 0;
- }
- }
- if(_Y > _parent._parent.g_ground + 100)
- {
- destroy();
- }
- }
- function updatePosition()
- {
- _X = _X + vx;
- _Y = _Y + vy;
- }
- function takeDamage(amt, xp, yp)
- {
- hp -= amt;
- if(hp <= 0)
- {
- hp = 0;
- if(!dead && random(6) == 0)
- {
- var _loc3_ = _parent._parent.addObj("ammo_box_heal",_parent._parent.ammo_layer,_parent._parent.getNextAmmoLevel());
- _loc3_._x = _X;
- _loc3_._y = _Y;
- }
- if(!dead)
- {
- _parent._parent.addScore(1000,_X,_Y);
- }
- dead = true;
- }
- if(_parent._parent.g_dmg_text_on)
- {
- var _loc2_ = _parent._parent.addObj("dmg_text",_parent._parent.score_layer,_parent._parent.getNextScoreLevel());
- _loc2_._x = xp;
- _loc2_._y = yp;
- _loc2_.val = amt;
- }
- updateHPBar();
- }
- function updateHPBar()
- {
- hp_bar.bar._width = hp / max_hp * 100;
- hp_bar._alpha = 100;
- }
- function isDead()
- {
- return hp == 0;
- }
- function setHP(num)
- {
- hp = num;
- }
- function destroy()
- {
- _parent._parent.removeEnemy(this);
- }
- function stepGuns()
- {
- if(m_rotRate < m_max_rotRate)
- {
- m_rotRate += 0.01;
- }
- var _loc3_ = 0;
- while(_loc3_ < guns.length)
- {
- gun = guns[_loc3_];
- if(!gun.dead && gun.timerTarget-- < 200)
- {
- if(gun.timerTarget < 0)
- {
- var _loc4_ = _parent._parent.g_level * 5;
- if(_loc4_ > 500)
- {
- _loc4_ = 500;
- }
- var _loc2_ = random(500) + 600 - _loc4_;
- m_maxLoadTime = _loc2_;
- if(m_bossDead)
- {
- _loc2_ *= 2;
- }
- gun.timerTarget = _loc2_;
- shootAtDragon(gun);
- gun.bod.barrel._x = -10;
- }
- else
- {
- aimAtDragon(gun);
- }
- }
- if(gun.bod.barrel._x < 15.3)
- {
- gun.bod.barrel._x += 0.5;
- }
- _loc3_ = _loc3_ + 1;
- }
- }
- function shootAtDragon(gun)
- {
- var _loc7_ = undefined;
- var _loc15_ = undefined;
- var _loc14_ = undefined;
- var _loc9_ = undefined;
- var _loc8_ = undefined;
- var _loc10_ = 2;
- var _loc11_ = 10;
- var _loc5_ = "";
- var _loc2_ = undefined;
- var _loc4_ = undefined;
- _loc7_ = _parent._parent.getNextProjectileLevel();
- _loc5_ = gun.ammo;
- _loc9_ = Math.cos(gun._rotation * 3.141592653589793 / 180);
- _loc8_ = Math.sin(gun._rotation * 3.141592653589793 / 180);
- _loc15_ = _loc9_ * _loc10_;
- _loc14_ = _loc8_ * _loc10_;
- _loc2_ = _parent._parent.addObj(_loc5_,_parent._parent.bullet_layer,_loc7_);
- if(_loc5_ == "proj_enemy_steel")
- {
- _parent._parent.addEnemy(_loc2_);
- }
- var _loc12_ = _X + gun._x + _loc9_ * _loc11_;
- var _loc13_ = _Y + gun._y + _loc8_ * _loc11_;
- _loc2_.vx = _loc15_;
- _loc2_.vy = _loc14_;
- _loc2_._x = _loc12_;
- _loc2_._y = _loc13_;
- var _loc6_ = 100 + _parent._parent.g_level;
- if(_loc6_ > 200)
- {
- _loc6_ = 200;
- }
- _loc2_._xscale = _loc2_._yscale = _loc6_;
- _parent._parent.playSound("bomb_hit.wav");
- _loc7_ = _parent._parent.getNextDebrisLevel();
- _loc4_ = _parent._parent.addObj("gun_flash",_parent._parent.debris_layer,_loc7_);
- _loc4_._x = _loc12_;
- _loc4_._y = _loc13_;
- _loc4_._rotation = gun._rotation;
- }
- function aimAtDragon(gun)
- {
- var _loc2_ = _X + gun._x - _parent._parent.dragon_head._x;
- var _loc5_ = _Y + gun._y - _parent._parent.dragon_head._y;
- var _loc7_ = gun._rotation;
- var _loc3_ = 0;
- var _loc4_ = Math.atan(_loc5_ / _loc2_);
- if(_loc2_ > 0)
- {
- _loc3_ = _loc4_ * 180 / 3.141592653589793 + 180;
- if(_loc2_ > 0 && _loc5_ > 0)
- {
- _loc3_ = _loc4_ * 180 / 3.141592653589793 - 180;
- }
- }
- else
- {
- _loc3_ = _loc4_ * 180 / 3.141592653589793;
- }
- if(_loc2_ < 0.00001 && _loc2_ > -0.00001)
- {
- _loc3_ += 180;
- }
- gun._rotation = _parent._parent.smartRotation(_loc7_,_loc3_,m_rotRate);
- }
- function testHitTroops(obj)
- {
- if(archer != null && archer.hitTest(obj._x,obj._y,0))
- {
- m_archerDead = true;
- archer.unloadMovie();
- _parent._parent.addFlyingTroop("deb_ene_archer",obj._x,obj._y,archer._xscale,archer._yscale);
- _parent._parent.addScore(100,obj._x,obj._y);
- }
- else if(boss != null && boss.hitTest(obj._x,obj._y,0))
- {
- m_bossDead = true;
- _parent._parent.addFlyingTroop("deb_ene_boss",_X,_Y,archer._xscale,archer._yscale);
- boss.unloadMovie();
- _parent._parent.addScore(400,obj._x,obj._y);
- }
- else if(foot1 != null && foot1.hitTest(obj._x,obj._y,0))
- {
- m_foot1Dead = true;
- _parent._parent.addFlyingTroop("deb_ene_foot",obj._x,obj._y,archer._xscale,archer._yscale);
- foot1.unloadMovie();
- _parent._parent.addScore(200,obj._x,obj._y);
- }
- else if(foot2 != null && foot2.hitTest(obj._x,obj._y,0))
- {
- m_foot2Dead = true;
- _parent._parent.addFlyingTroop("deb_ene_foot",obj._x,obj._y,archer._xscale,archer._yscale);
- foot2.unloadMovie();
- _parent._parent.addScore(200,obj._x,obj._y);
- }
- else if(flagger != null && flagger.hitTest(obj._x,obj._y,0))
- {
- m_flaggerDead = true;
- _parent._parent.addFlyingTroop("deb_ene_cat",obj._x,obj._y,archer._xscale,archer._yscale);
- flagger.unloadMovie();
- _parent._parent.addScore(100,obj._x,obj._y);
- }
- updateGunState();
- }
- function updateGunState()
- {
- gun1.dead = m_flaggerDead && m_foot2Dead;
- gun2.dead = m_bossDead;
- gun3.dead = m_archerDead && m_foot1Dead;
- if(m_archerDead && m_flaggerDead && m_foot2Dead && m_foot1Dead && m_bossDead)
- {
- hp = 0;
- }
- }
- function updateStickies(sticky)
- {
- if(++m_stickyNdx >= m_maxStickies)
- {
- m_stickyNdx = 0;
- }
- var _loc1_ = m_stickies[m_stickyNdx];
- _loc1_.unloadMovie();
- m_stickies[m_stickyNdx] = sticky;
- }
- function slowShooting(amt)
- {
- var _loc2_ = 0;
- while(_loc2_ < guns.length)
- {
- var _loc1_ = guns[_loc2_].timerTarget;
- _loc1_.timerTarget += amt;
- if(_loc1_.timerTarget > m_maxLoadTime)
- {
- _loc1_.timerTarget = m_maxLoadTime;
- }
- _loc2_ = _loc2_ + 1;
- }
- if((m_rotRate -= 0.05) < 0.5)
- {
- m_rotRate = 0.5;
- }
- }
- vx = -0.5;
- vy = 0;
- max_hp = Math.floor(100 * (1 + _parent._parent.g_level / 50));
- hp = max_hp;
- smokeTimer = 0;
- goal_xspot = 100 + random(_parent._parent.g_width - 200);
- blade_spin_rate = 23;
- etype = "air_ship";
- m_archerDead = false;
- m_foot1Dead = false;
- m_foot2Dead = false;
- m_bossDead = false;
- m_flaggerDead = false;
- dead = false;
- var guns = new Array(gun1,gun2,gun3);
- initGuns();
- var m_maxStickies = 3;
- var m_stickies = new Array(m_maxStickies);
- var m_stickyNdx = 0;
- var m_maxLoadTime;
- var m_max_rotRate = 1 + _parent._parent.g_level / 50;
- var m_rotRate = m_max_rotRate;
-