changeset 553:a47100b28b7d

the black goat with a thousand young
author Adrianna Pińska <adrianna.pinska@gmail.com>
date Sat, 07 Sep 2013 22:01:03 +0200
parents e8bdcc34bb70
children 400f52d4279d
files data/levels/finale nagslang/enemies.py
diffstat 2 files changed, 43 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/data/levels/finale	Sat Sep 07 21:55:38 2013 +0200
+++ b/data/levels/finale	Sat Sep 07 22:01:03 2013 +0200
@@ -1,5 +1,10 @@
 base_tile: tiles/alien_tile.png
-enemies: []
+enemies:
+- args:
+  - [1400, 1400]
+  - 500
+  classname: Queen
+  name: queen
 game_objects:
 - args:
   - [2100, 700]
--- a/nagslang/enemies.py	Sat Sep 07 21:55:38 2013 +0200
+++ b/nagslang/enemies.py	Sat Sep 07 22:01:03 2013 +0200
@@ -303,6 +303,43 @@
     def requires(cls):
         return [("name", "string"), ("position", "coordinates"),
                 ("attack_range", "distance")]
+                
+
+class Queen(RunAndGunAlien):
+    enemy_type = "queen"
+    impulse_factor = 180
+    health = 500
+    enemy_damage = 50
+    is_moving = True
+    spawn_time = 10
+    spawn_size = 5
+    spawn_class = ChargingAlien
+    spawn_class_args = (200,)
+    
+    def __init__(self, space, world, position, attack_range=100):
+        super(Queen, self).__init__(space, world, position, attack_range)
+        self.add_timer('spawn', self.spawn_time)
+        
+    def spawn(self, result):
+        if not self.check_timer('spawn'):
+            self.start_timer('spawn', self.spawn_time)
+            for i in range(self.spawn_size):
+                result.add += (self.spawn_class(self.get_space(), 
+                self.world, self.physicser.position, 
+                *self.spawn_class_args),)
+                
+    def attack(self, result):
+        self.ranged_attack(300, ACID_SPEED, ACID_DAMAGE, 'acid', 1, result)
+
+    def update(self, dt):
+        result = super(Queen, self).update(dt)
+        self.spawn(result)
+        return result
+
+    @classmethod
+    def requires(cls):
+        return [("name", "string"), ("position", "coordinates"),
+                ("attack_range", "distance")]
 
 
 class Sheep(Enemy):  # Only because we don't have a DeliciousCreature class.