Implement the monocle of truth, closes #62
This commit is contained in:
@ -3,10 +3,10 @@
|
||||
|
||||
import curses
|
||||
|
||||
from ..entities.items import Monocle
|
||||
from ..entities.player import Player
|
||||
from ..game import Game
|
||||
from ..interfaces import FriendlyEntity
|
||||
from ..settings import Settings
|
||||
from ..interfaces import FightingEntity
|
||||
from ..translations import gettext as _
|
||||
from .display import Display
|
||||
|
||||
@ -87,16 +87,40 @@ class StatsDisplay(Display):
|
||||
self.addstr(self.pad, self.height - 2, 0, msg,
|
||||
italic=True, reverse=True)
|
||||
|
||||
self.update_entities_stats()
|
||||
|
||||
def update_entities_stats(self) -> None:
|
||||
"""
|
||||
Display information about a near entity if we have a monocle.
|
||||
"""
|
||||
for dy, dx in [(-1, 0), (0, -1), (0, 1), (1, 0)]:
|
||||
for entity in self.player.map.find_entities(FriendlyEntity):
|
||||
for entity in self.player.map.find_entities(FightingEntity):
|
||||
if entity == self.player:
|
||||
continue
|
||||
|
||||
if entity.y == self.player.y + dy \
|
||||
and entity.x == self.player.x + dx:
|
||||
msg = _("Move to the friendly entity to talk to it") \
|
||||
if self.game.waiting_for_friendly_key else \
|
||||
_("Use {key} then move to talk to the entity") \
|
||||
.format(key=self.game.settings.KEY_CHAT.upper())
|
||||
self.addstr(self.pad, self.height - 1, 0, msg,
|
||||
italic=True, reverse=True)
|
||||
if entity.is_friendly():
|
||||
msg = _("Move to the friendly entity to talk to it") \
|
||||
if self.game.waiting_for_friendly_key else \
|
||||
_("Use {key} then move to talk to the entity") \
|
||||
.format(key=self.game.settings.KEY_CHAT.upper())
|
||||
self.addstr(self.pad, self.height - 1, 0, msg,
|
||||
italic=True, reverse=True)
|
||||
|
||||
if isinstance(self.player.equipped_secondary, Monocle):
|
||||
# Truth monocle
|
||||
message = f"{entity.translated_name.capitalize()} " \
|
||||
f"{self.pack[entity.name.upper()]}\n" \
|
||||
f"STR {entity.strength}\n" \
|
||||
f"INT {entity.intelligence}\n" \
|
||||
f"CHR {entity.charisma}\n" \
|
||||
f"DEX {entity.dexterity}\n" \
|
||||
f"CON {entity.constitution}\n" \
|
||||
f"CRI {entity.critical}%"
|
||||
self.addstr(self.pad, 17, 0, message)
|
||||
# Only display one entity
|
||||
break
|
||||
|
||||
def display(self) -> None:
|
||||
self.pad.erase()
|
||||
|
Reference in New Issue
Block a user