Mercurial > fife-parpg
diff demos/shooter/scripts/ships/enemies.py @ 470:3b04e921c93d
Added the fireball projectile.
Added a new ship images for the boss.
Some enemies now shoot directly at the player.
author | prock@33b003aa-7bff-0310-803a-e67f0ece8222 |
---|---|
date | Wed, 14 Apr 2010 19:15:27 +0000 |
parents | 4d0aa75a82f1 |
children | 7a79dc2a0592 |
line wrap: on
line diff
--- a/demos/shooter/scripts/ships/enemies.py Wed Apr 14 17:42:24 2010 +0000 +++ b/demos/shooter/scripts/ships/enemies.py Wed Apr 14 19:15:27 2010 +0000 @@ -43,7 +43,13 @@ if action.getId() == 'explode': self._ship.removeFromScene() self._ship.endLevel() - + elif action.getId() == 'flash': + if self._ship._flashnumber > 0: + self._ship.instance.act('flash', self._ship.instance.getFacingLocation()) + self._ship._flashnumber -= 1 + else: + self._ship._flashing = False + class Saucer1(Ship): def __init__(self, scene, name, instance, findInstance=True): super(Saucer1, self).__init__(scene, name, findInstance) @@ -79,6 +85,9 @@ self._time += self._scene.timedelta super(Saucer1, self).update() + + self.fire(fife.DoublePoint(-1,0)) + class Saucer2(Ship): def __init__(self, scene, name, instance, findInstance=True): @@ -117,6 +126,8 @@ super(Saucer2, self).update() + self.fire(fife.DoublePoint(-1,0)) + class DiagSaucer(Ship): def __init__(self, scene, name, direction, instance, findInstance=True): super(DiagSaucer, self).__init__(scene, name, findInstance) @@ -140,6 +151,9 @@ def update(self): self.applyThrust(fife.DoublePoint(-0.25,self._ythrust)) super(DiagSaucer, self).update() + + self.fire(fife.DoublePoint(-1,0)) + class Streaker(Ship): def __init__(self, scene, name, instance, findInstance=True): @@ -150,8 +164,8 @@ self._maxvelocity = 2.0 - self.weapon = Cannon(self._scene, self, 2000) - self.weapon.projectilevelocity = 1.0 + self.weapon = FireBall(self._scene, self, 2000) + self.weapon.projectilevelocity = 0.25 self._actionlistener = EnemyActionListener(self) @@ -161,17 +175,26 @@ def update(self): self.applyThrust(fife.DoublePoint(-0.40,0)) super(Streaker, self).update() + + playerloc = self._scene.player.location.getExactLayerCoordinates() + enemyloc = self.location.getExactLayerCoordinates() + + playerloc.x -= enemyloc.x + playerloc.y -= enemyloc.y + + self.fire(fife.DoublePoint(playerloc.x,playerloc.y)) + class Boss(Ship): def __init__(self, scene, name, instance, findInstance=True): super(Boss, self).__init__(scene, name, findInstance) self._instance = instance - self.width = 0.2 - self.height = 0.2 + self.width = 0.85 + self.height = 0.25 self._maxvelocity = 2.0 - self.weapon = Cannon(self._scene, self, 1000) + self.weapon = FireBall(self._scene, self, 1000) self.weapon.projectilevelocity = 0.5 self._actionlistener = BossActionListener(self) @@ -183,4 +206,17 @@ self._scene.endLevel() def update(self): - super(Boss, self).update() \ No newline at end of file + super(Boss, self).update() + + playerloc = self._scene.player.location.getExactLayerCoordinates() + bossloc = self.location.getExactLayerCoordinates() + + playerloc.x -= bossloc.x + playerloc.y -= bossloc.y + + self.fire(fife.DoublePoint(playerloc.x,playerloc.y)) + + + def applyHit(self, hp): + self.flash(2) + super(Boss, self).applyHit(hp) \ No newline at end of file