Ejemplo n.º 1
0
def tick(entity):
	entity['recoil_time'] -= 1
	
	if not entity['owner_id'] in entities.ENTITIES:
		entities.unregister_event(entity, 'tick', tick)
		
		return False
	
	if entity['recoil_time']>0:
		return False
	elif not entity['rounds']:
		if entity['reload_time']:
			if entity['owner_id'] in entities.ENTITIES and 'player' in entities.get_entity(entity['owner_id']) and entity['reload_time'] == entity['reload_time_max']:
				display.print_text(0, 0, 'RELOADING', show_for=(entity['reload_time']/display.get_tps())*2, fade_out_speed=255)
				
			entity['reload_time'] -= 1
		else:
			entity['reload_time'] = entity['reload_time_max']
			entity['recoil_time'] = 1
			entity['rounds'] = entity['max_rounds']
			entity['firing'] = False
			entities.unregister_event(entity, 'tick', tick)
		
		return False
	
	_owner = entities.get_entity(entity['owner_id'])
	
	if 'shoot_direction' in entity:
		_direction = entity['shoot_direction']
	elif 'shoot_direction' in _owner:
		_direction = _owner['shoot_direction']
	else:
		_direction = _owner['direction']
	
	if entity['kickback']:
		entities.trigger_event(entities.get_entity(entity['owner_id']), 'push', velocity=numbers.velocity(_direction+180, entity['kickback']))
	
	if entity['missile']:
		bullet.create_missile(_owner['position'][0],
		                      _owner['position'][1],
		                      _direction,
		                      entity['speed'],
		                      'bullet.png',
		                      entity['owner_id'],
		                      turn_rate=entity['turn_rate'],
		                      tracking=entity['tracking'],
		                      radius=entity['damage_radius'])
	
	if entity['bullet']:
		bullet.create_bullet(_owner['position'][0],
		                     _owner['position'][1],
		                     _direction+random.randint(-entity['spray'], entity['spray']),
		                     entity['speed'],
		                     'bullet.png',
		                     entity['owner_id'],
		                     scale=.6,
		                     radius=entity['damage_radius'])
	
	entity['recoil_time'] = entity['recoil_time_max']
	entity['rounds'] -= 1
Ejemplo n.º 2
0
    def create_bullet(self, spawner, time_since_shot, tracer):
        self.log.debug(self.M("gun_firing"))

        new_flash = spawner.scene.addObject(self.config['MUZZLE_FLASH_OBJECT'],
                                            spawner, 5)
        new_flash.worldTransform = spawner.worldTransform

        sounds.play_effect_single(self.config["GUNSHOT_SOUND"],
                                  spawner.worldPosition, time_since_shot, 0.1,
                                  0.3)

        bullet.create_bullet(self, spawner, time_since_shot,
                             self.config['PROJECTILE_CONFIG'], tracer)
Ejemplo n.º 3
0
    def test_create_bullet_with_TELEPORTATION_BULLET(self):
        start = (0, 0)
        destination = (10, 10)
        pop_power = 1

        s = bullet.create_bullet(bullet.TELEPORTATION_BULLET, start, destination, pop_power)

        self.assertIsInstance(s, bullet.TeleportationBullet)
Ejemplo n.º 4
0
    def test_create_bullet_with_EXPLOSION_BULLET(self):
        start = (0, 0)
        destination = (10, 10)
        pop_power = 1

        s = bullet.create_bullet(bullet.EXPLOSION_BULLET, start, destination, pop_power)

        self.assertIsInstance(s, bullet.ExplosionBullet)
Ejemplo n.º 5
0
    def test_create_bullet_with_STANDARD_BULLET(self):
        start = (0, 0)
        destination = (10, 10)
        pop_power = 1

        s = bullet.create_bullet(bullet.STANDARD_BULLET, start, destination, pop_power)

        self.assertIsInstance(s, bullet.StandardBullet)
Ejemplo n.º 6
0
    def test_create_bullet_with_TELEPORTATION_BULLET(self):
        start = (0, 0)
        destination = (10, 10)
        pop_power = 1

        s = bullet.create_bullet(bullet.TELEPORTATION_BULLET, start,
                                 destination, pop_power)

        self.assertIsInstance(s, bullet.TeleportationBullet)
Ejemplo n.º 7
0
    def test_create_bullet_with_EXPLOSION_BULLET(self):
        start = (0, 0)
        destination = (10, 10)
        pop_power = 1

        s = bullet.create_bullet(bullet.EXPLOSION_BULLET, start, destination,
                                 pop_power)

        self.assertIsInstance(s, bullet.ExplosionBullet)
Ejemplo n.º 8
0
    def test_create_bullet_with_STANDARD_BULLET(self):
        start = (0, 0)
        destination = (10, 10)
        pop_power = 1

        s = bullet.create_bullet(bullet.STANDARD_BULLET, start, destination,
                                 pop_power)

        self.assertIsInstance(s, bullet.StandardBullet)
Ejemplo n.º 9
0
 def create_bullets(self, balloon):
     """
     :param balloon:
     :return: bullet
     Creates a bullet directed towards the given balloon
     """
     return bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                 start=(self.rect.centerx, self.rect.centery),
                                 destination=(balloon.get_centerX(), balloon.get_centerY()),
                                 pop_power=self._attack_values.pop_power,
                                 tower_increment_pop_method=self.increment_pop_count)
Ejemplo n.º 10
0
    def create_bullets(self, balloons):
        return [bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx, self.rect.centery - 100),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx + 100, self.rect.centery - 100),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx + 100, self.rect.centery),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx + 100, self.rect.centery + 100),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx, self.rect.centery + 100),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx - 100, self.rect.centery + 100),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx - 100, self.rect.centery),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count),

                bullet.create_bullet(bullet_type=bullet.STANDARD_BULLET,
                                     start=(self.rect.centerx, self.rect.centery),
                                     destination=(self.rect.centerx - 100, self.rect.centery - 100),
                                     pop_power=self._attack_values.pop_power,
                                     tower_increment_pop_method=self.increment_pop_count)
                ]
Ejemplo n.º 11
0
def ivan_cycles(entity):
	if entity['warmup_cycles']:
		entity['warmup_cycles'] -= 1
		
		return False
	
	if entity['cycle'] == 'shoot':
		#if entity['shoot_cycle'] == entity['shoot_cycle_max']:
		#	for i in range(8):
		#		bullet.create_laser(entity['position'][0], entity['position'][0], 45*(i+1), entity['_id'], damage=30, length=90)
		
		entity['shoot_cycle'] -= 1
		
		if not entity['shoot_cycle']:
			entity['shoot_cycle'] = entity['shoot_cycle_max']
			entity['cycle'] = 'spawn'
		
		for direction in range(0, 360, 15):
			for i in range(4):
				bullet.create_bullet(entity['position'][0],
					                entity['position'][1],
					                direction+4*i,
					                60+(i*10),
					                'boss3_core.png',
					                entity['_id'],
					                damage=15)
	else:
		entity['spawn_cycle'] -= 1
		
		if not entity['spawn_cycle']:
			entity['spawn_cycle'] = entity['shoot_cycle_max']
			entity['cycle'] = 'shoot'
		
		for i in range(5):
			_mine = create_eyemine(x=entity['position'][0], y=entity['position'][1], max_explode_velocity=90)
			entities.trigger_event(_mine, 'push', velocity=numbers.velocity(random.randint(0, 359), 65))
Ejemplo n.º 12
0
 def create_bullets(self, balloon):
     return bullet.create_bullet(bullet_type=bullet.TELEPORTATION_BULLET,
                                 start=(self.rect.centerx, self.rect.centery),
                                 destination=(balloon.get_centerX(), balloon.get_centerY()),
                                 pop_power=self._attack_values.pop_power,
                                 tower_increment_pop_method=self.increment_pop_count)