Source code for tuxemon.item.conditions.facing_sprite

# SPDX-License-Identifier: GPL-3.0
# Copyright (c) 2014-2023 William Edwards <shadowapex@gmail.com>, Benjamin Bean <superman2k5@gmail.com>
from __future__ import annotations

from dataclasses import dataclass
from typing import TYPE_CHECKING, Tuple

from tuxemon.event import get_npc_pos
from tuxemon.item.itemcondition import ItemCondition

if TYPE_CHECKING:
    from tuxemon.monster import Monster


[docs]@dataclass class FacingSpriteCondition(ItemCondition): """ Checks if the player is facing a specific sprite. (eg. maniac, swimmer, log) """ name = "facing_sprite" sprite: str
[docs] def test(self, target: Monster) -> bool: coords: Tuple[int, int] = (0, 0) player = self.session.player facing = player.facing player_x = player.tile_pos[0] player_y = player.tile_pos[1] if facing == "down": y = player_y - 1 coords = player_x, y elif facing == "up": y = player_y + 1 coords = player_x, y elif facing == "right": x = player_x + 1 coords = x, player_y elif facing == "left": x = player_x - 1 coords = x, player_y npc = get_npc_pos(self.session, coords) if npc: if npc.sprite_name == self.sprite: return True else: return False else: return False