30 lines
848 B
Python
30 lines
848 B
Python
"""Base entity class for characters in the world."""
|
|
|
|
from dataclasses import dataclass
|
|
|
|
|
|
@dataclass
|
|
class Entity:
|
|
"""Base class for anything with position and identity in the world."""
|
|
|
|
name: str
|
|
x: int
|
|
y: int
|
|
# Combat stats
|
|
pl: float = 100.0 # power level (health and damage multiplier)
|
|
stamina: float = 100.0 # current stamina
|
|
max_stamina: float = 100.0 # stamina ceiling
|
|
defense_locked_until: float = 0.0 # monotonic time when defense recovery ends
|
|
resting: bool = False # whether this entity is currently resting
|
|
|
|
async def send(self, message: str) -> None:
|
|
"""Send a message to this entity. Base implementation is a no-op."""
|
|
pass
|
|
|
|
|
|
@dataclass
|
|
class Mob(Entity):
|
|
"""Represents a non-player character (NPC) in the world."""
|
|
|
|
description: str = ""
|
|
alive: bool = True
|