def apply_player_collision(self, game_state: GameState, projectile: Projectile): deal_damage_to_player(game_state, 1, DamageType.MAGIC, None) game_state.player_state.gain_buff_effect(get_buff_effect(BuffType.ENEMY_GOBLIN_WARLOCK_BURNT), Millis(5000)) game_state.game_world.visual_effects.append( VisualCircle((180, 50, 50), game_state.game_world.player_entity.get_center_position(), 25, 50, Millis(100), 0)) projectile.has_collided_and_should_be_removed = True
def apply_wall_collision(self, game_state: GameState, projectile: Projectile): game_state.game_world.visual_effects.append( VisualCircle(self._color, projectile.world_entity.get_center_position(), 13, 26, Millis(100), 0)) projectile.has_collided_and_should_be_removed = True
def apply_player_collision(self, game_state: GameState, projectile: Projectile): damage = random.randint(self._min_damage, self._max_damage) deal_damage_to_player(game_state, damage, DamageType.MAGIC, None) game_state.game_world.visual_effects.append( VisualCircle(self._color, game_state.game_world.player_entity.get_center_position(), 25, 35, Millis(100), 0)) projectile.has_collided_and_should_be_removed = True
def apply_player_summon_collision(self, npc: NonPlayerCharacter, game_state: GameState, projectile: Projectile): damage = random.randint(self._min_damage, self._max_damage) deal_npc_damage_to_npc(game_state, npc, damage) game_state.game_world.visual_effects.append( VisualCircle(self._color, npc.world_entity.get_center_position(), 25, 35, Millis(100), 0)) projectile.has_collided_and_should_be_removed = True
def apply_player_summon_collision(self, npc: NonPlayerCharacter, game_state: GameState, projectile: Projectile): deal_npc_damage_to_npc(game_state, npc, 1) npc.gain_buff_effect( get_buff_effect(BuffType.ENEMY_GOBLIN_WARLOCK_BURNT), Millis(5000)) game_state.visual_effects.append( VisualCircle((180, 50, 50), npc.world_entity.get_center_position(), 25, 50, Millis(100), 0)) projectile.has_collided_and_should_be_removed = True
def apply_enemy_collision(self, npc: NonPlayerCharacter, game_state: GameState, projectile: Projectile): damage_was_dealt = deal_player_damage_to_enemy(game_state, npc, 1, DamageType.MAGIC) if damage_was_dealt: npc.gain_buff_effect(get_buff_effect(BUFF_TYPE), DEBUFF_DURATION) victim_center_pos = npc.world_entity.get_center_position() visual_effect_pos = (victim_center_pos[0] - ENTANGLING_ROOTS_SIZE[0] // 2, victim_center_pos[1] - ENTANGLING_ROOTS_SIZE[1] // 2) debuff_visual_effect = VisualSprite(Sprite.DECORATION_ENTANGLING_ROOTS_EFFECT, visual_effect_pos, DEBUFF_DURATION, npc.world_entity) game_state.game_world.visual_effects.append(debuff_visual_effect) play_sound(SoundId.ABILITY_ENTANGLING_ROOTS_HIT) projectile.has_collided_and_should_be_removed = True
def apply_enemy_collision(self, npc: NonPlayerCharacter, game_state: GameState, projectile: Projectile): damage_amount: float = MIN_DMG + random.random() * (MAX_DMG - MIN_DMG) deal_player_damage_to_enemy(game_state, npc, damage_amount, DamageType.MAGIC) _create_visual_splash(npc.world_entity.get_center_position(), game_state) has_burn_upgrade = game_state.player_state.has_upgrade( HeroUpgradeId.ABILITY_FIREBALL_BURN) if has_burn_upgrade: npc.gain_buff_effect(get_buff_effect(BUFF_TYPE), FIREBALL_TALENT_BURN_DURATION) play_sound(SoundId.ABILITY_FIREBALL_HIT) projectile.has_collided_and_should_be_removed = True
def apply_wall_collision(self, game_state: GameState, projectile: Projectile): _create_visual_splash(projectile.world_entity.get_center_position(), game_state) play_sound(SoundId.ABILITY_FIREBALL_HIT) projectile.has_collided_and_should_be_removed = True