# HG changeset patch # User Adrianna PiƄska # Date 1378584063 -7200 # Node ID a47100b28b7dc8cc9cc2ca6bb8e0bf3f5d888ae4 # Parent e8bdcc34bb703252d0cb2468d7d4e2578ebaa007 the black goat with a thousand young diff -r e8bdcc34bb70 -r a47100b28b7d data/levels/finale --- 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] diff -r e8bdcc34bb70 -r a47100b28b7d nagslang/enemies.py --- 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.