def fade(self): if not self.can_fade: return self._speed_modifier = 10 self.fading = True self.invulnerable = True self.set_timer('fade', 15, end_event=self._end_fade) am.play_sound('fade.ogg')
def hurt(self, damage): if self.invulnerable: return if self.health - damage > 0: am.play_sound('damage.ogg') self.health -= damage else: self.health = 0
def swing(self): if self.swinging: return am.play_sound('sword_swing_%s.ogg' % randint(1, 2)) self.animation_state = self.PlayerStates.SWINGING self.swinging = True self.set_timer('swing', 10, self._reset_swing) if not self.flip_horizontal: self.position.x -= 25
def shoot(self): if self.can_shoot: self.children.append( Arrow(self.position.x + 6.5, self.position.y + 20, self.flip_horizontal, self)) self.can_shoot = False self.set_timer('reset-shoot', 10, self._reset_shoot) am.play_sound('arrow.ogg', volume=0.5) self.animation_state = self.PlayerStates.SHOOTING
def animate(self): if self.health == 0: am.play_sound('death.ogg', volume=0.2) self._change_sprite(Sprite('player_dead.png', Point2D(44, 13))) elif self.animation_state == self.PlayerStates.SWINGING: self._change_sprite( AnimatedSprite('player_swing.png', Point2D(50, 43), 5, speed=0.5)) elif self.animation_state == self.PlayerStates.SWING_RUNNING: self._change_sprite( AnimatedSprite('player_swing_running.png', Point2D(50, 44), 5, speed=0.5)) elif self.animation_state == self.PlayerStates.SHOOTING: self._change_sprite( AnimatedSprite('player_shoot.png', Point2D(25, 44), 5, speed=0.5)) elif self.force.y_mag != 0: self._change_sprite(Sprite('player_midair.png', Point2D(25, 44))) am.stop_sound('running_on_grass.ogg') elif self.animation_state == self.PlayerStates.RUNNING: self._change_sprite( AnimatedSprite('player_running.png', Point2D(25, 44), 7)) am.play_sound('running_on_grass.ogg') self.animation_state = self.PlayerStates.IDLE else: self._change_sprite( AnimatedSprite('player_idle.png', Point2D(25, 44), 3, speed=0.25)) am.stop_sound('running_on_grass.ogg')
def _teleport(self, player_pos): am.play_sound('death_field.ogg', volume=0.2) self._can_teleport = False self.children.append(DeathField(self.position.x)) self._teleported += 1 self.set_timer('set-respawn', 50, lambda: self._move(player_pos))
def jump(self): if self.force.y_mag == 0: self.force.effect(self.force.x_mag, 10 + self._speed_modifier) am.play_sound('jump_%d.ogg' % randint(1, 2))