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