def __init__(self): sprites = ResourceManagement.get_enemy_stone_sprites() sprite = next(iter(sprites.values()))[0] Enemy.__init__(self, sprite, EnemySettings.HeavyRock.WEIGHT, EnemySettings.HeavyRock.HEALTH_MAX, EnemySettings.HeavyRock.ATTACK_COOLDOWN_S) AnimatedSprite.__init__(self, sprites, 2, EnemyState.RUNNING_LEFT)
def __init__(self): sprites = ResourceManagement.get_enemy_fire_sprites() first_sprite = next(iter(sprites.values()))[0] Enemy.__init__(self, first_sprite, EnemySettings.Ranged.WEIGHT, EnemySettings.Ranged.HEALTH_MAX, EnemySettings.Ranged.ATTACK_COOLDOWN_S) AnimatedSprite.__init__(self, sprites, 3, EnemyState.RUNNING_LEFT) self.__cooldown_expire = 0
def __init__(self): sprites = ResourceManagement.get_enemy_ice_sprites() first_sprite = next(iter(sprites.values()))[0] Enemy.__init__(self, first_sprite, .5, EnemySettings.HandToHand.HEALTH_MAX, EnemySettings.HandToHand.ATTACK_COOLDOWN_S) AnimatedSprite.__init__(self, ResourceManagement.get_enemy_ice_sprites(), 4, EnemyState.RUNNING_RIGHT) self.__retreat_distance_sqr: float = 0
def _on_collide(self, other: GameObject, direction_of_impact: Vector2, impact_side: ImpactSide, delta_time: float): if other != self._target: Enemy._on_collide(self, other, direction_of_impact, impact_side, delta_time) else: # Collided with player, he need to suffer other: LivingEntity other.take_damage(EnemySettings.HandToHand.DAMAGE) if other.is_dead: self._target = None self.__backoff(direction_of_impact)
def _on_collide(self, other: GameObject, direction_of_impact: Vector2, impact_side: ImpactSide, delta_time: float): if other != self._target: Enemy._on_collide(self, other, direction_of_impact, impact_side, delta_time) else: if impact_side != ImpactSide.TOP: # Collided with player, he need to suffer other: GameObject if impact_side == ImpactSide.BOTTOM: i = 0 other.take_damage(1000) elif impact_side == ImpactSide.RIGHT: i = 1 elif impact_side == ImpactSide.LEFT: i = -1 other.apply_force(EnemySettings.HeavyRock.KNOCKBACK * i) other.take_damage(EnemySettings.HeavyRock.SIDE_DAMAGE) if other.is_dead: self._target = None
def update(self, delta_time: float): self._update_state() Enemy.update(self, delta_time) AnimatedSprite.update(self, delta_time)
def start(self, scene: Scene): Enemy.start(self, scene) self.__retreat_distance_sqr = (self.width / 2 + self._target.width / 2)**2
def _on_collide(self, other: GameObject, direction_of_impact: Vector2, impact_side: ImpactSide, delta_time: float): if other != self._target: Enemy._on_collide(self, other, direction_of_impact, impact_side, delta_time)
def start(self, scene: Scene): Enemy.start(self, scene) self.__cooldown_expire = 0
def start(self, scene: Scene): Enemy.start(self, scene)