Commit graph

416 commits

Author SHA1 Message Date
d1671c60c1
Add @help list command for admin topic management 2026-02-15 10:29:25 -05:00
6524116e97
Add pending_input callback to Player for prompted input 2026-02-15 10:21:34 -05:00
a24e0c03c3
Migrate zones help from hardcoded to TOML 2026-02-15 10:21:34 -05:00
d7698ca830
Wire TOML help topics into help command 2026-02-15 10:21:34 -05:00
b69c2e83d9
Add HelpTopic dataclass and TOML loader 2026-02-15 10:21:34 -05:00
5eb205e7bf
Add help system plan 2026-02-14 22:47:17 -05:00
938dd613d4
Add @zones command to list registered zones 2026-02-14 22:27:44 -05:00
7f6eda4be7
Add help zones guide topic 2026-02-14 22:27:44 -05:00
9a4ceca74b
Fix prompt command to show correct active template 2026-02-14 21:17:03 -05:00
7ae82480bc
Enrich GMCP Char.Status with admin, coords, and paint state 2026-02-14 21:17:03 -05:00
115675c02e
Add mode-aware default prompts with terrain, paint, and admin support 2026-02-14 21:17:03 -05:00
f45d391e3c
Add tests for mode-aware prompts 2026-02-14 21:09:11 -05:00
dde166f89c
Import build and paint command modules at startup 2026-02-14 19:21:37 -05:00
9eaca966c8
Add tests for admin system 2026-02-14 19:21:37 -05:00
fea7430304
Hide admin commands from non-admin players in command list 2026-02-14 19:21:37 -05:00
1064af87d0
Add @promote and @demote admin commands 2026-02-14 19:21:37 -05:00
05afff9538
Add is_admin column with first-account-is-admin migration 2026-02-14 19:21:37 -05:00
a5588ca21b
Add builder manual for content creation workflow 2026-02-14 19:18:29 -05:00
708985e62a
Add decorative furniture and crafting material templates 2026-02-14 17:58:59 -05:00
11636e073a
Add craft and recipes commands
Implements craft command to create items from recipes by consuming
ingredients from player inventory. Recipes command lists available
recipes or shows details for a specific recipe. Registers commands
and loads recipes at server startup.
2026-02-14 17:58:59 -05:00
7342a70ba2
Add furnish and unfurnish commands 2026-02-14 17:58:47 -05:00
5b6c808050
Add describe command for home zone descriptions
Allows players to set custom descriptions for their home zones.
Only works in the player's own home zone. Saves to TOML file.
2026-02-14 17:58:47 -05:00
5d14011684
Add terrain editing command for home zones 2026-02-14 17:58:30 -05:00
ec43ead568
Add crafting recipe system
Implements Recipe dataclass, recipe loading from TOML files, and recipe
registry. Recipes define ingredients consumed and result produced for
item crafting.
2026-02-14 17:58:30 -05:00
9f760bc3af
Add furniture persistence to home zone TOML 2026-02-14 17:58:30 -05:00
acfff671fe
Wire character creation and housing into server login flow 2026-02-14 17:17:36 -05:00
32c570b777
Update roadmap to split furniture and crafting into phase 18 2026-02-14 17:17:36 -05:00
6229c87945
Add home command for personal zone teleportation 2026-02-14 17:17:36 -05:00
9fac18ad2b
Add player housing zone creation and persistence 2026-02-14 17:17:36 -05:00
1c22530be7
Add character creation flow with description prompt 2026-02-14 17:17:36 -05:00
0f3ae87f33
Add description and home_zone fields to player and database 2026-02-14 17:17:36 -05:00
97d5173522
Fix command registry leaking between tests 2026-02-14 16:22:45 -05:00
25339edbf5
Add weather-driven ambient messages
Rain, storm, snow, and fog now have atmospheric ambient messages.
Clear and cloudy conditions return empty list. Messages are evocative
and lowercase, ready to be mixed with zone-specific ambience.
2026-02-14 16:20:00 -05:00
4c4d947ce2
Add visibility system for time and weather effects
Night, fog, and storms now reduce viewport size. Night reduces by 6
width and 2 height (21x11 -> 15x9). Thick fog reduces by 8 width and 4
height. Storm reduces by 4 width and 2 height. Effects stack but clamp
to minimum 7x5. Dawn and dusk subtly dim by 2 width.
2026-02-14 16:20:00 -05:00
9594e23011
Add atmosphere rendering function 2026-02-14 16:20:00 -05:00
d91b180824
Add game day tracking to game time system 2026-02-14 16:18:03 -05:00
15d141b53e
Add season system with tests 2026-02-14 16:18:03 -05:00
4b0a7315c1
Add weather system with tests
Implements procedural weather transitions with:
- WeatherCondition enum (clear, cloudy, rain, storm, snow, fog)
- WeatherState dataclass (condition + intensity 0-1)
- get_weather_description() for atmospheric text varying by intensity
- advance_weather() with probabilistic transitions based on season/climate
- Climate profiles: temperate (balanced), arid (clear/rare rain),
  arctic (snow/fog/cloudy)
2026-02-14 16:18:03 -05:00
32f52ef704
Add time-of-day system with tests 2026-02-14 16:18:03 -05:00
4d44c4aadd
Add librarian NPC with integration tests
Create librarian mob template as a non-combatant NPC with:
- dialogue tree linking (npc_name field)
- time-based schedule (working 7-21, idle otherwise)
- empty moves list (cannot fight)

Wire dialogue tree loading into server startup to load from content/dialogue/.

Add npc_name field to MobTemplate and spawn_mob to preserve dialogue tree links.

Integration tests verify:
- spawning from template preserves npc_name and schedule
- full conversation flow (start, advance, end)
- converse state blocks movement
- schedule transitions change behavior state
- working state blocks movement
- patrol behavior follows waypoints
2026-02-14 14:31:39 -05:00
f0238d9e49
Integrate behavior states into mob movement
Mob movement now respects NPC behavior states:
- converse and working states block movement (NPCs stay put)
- patrol state uses waypoint navigation instead of home region
- flee state moves away from threat coordinates
- idle state uses original home region wander logic

Tests verify each behavior state influences movement correctly.
2026-02-14 14:31:39 -05:00
52f49104eb
Add NPC schedule system with game time
Implements time-based behavior transitions for NPCs:
- GameTime converts real time to game time (1 real min = 1 game hour)
- ScheduleEntry defines hour/state/location/data transitions
- NpcSchedule manages multiple entries with midnight wrapping
- process_schedules() applies transitions when game hour changes
- TOML support for schedule data in mob templates
- Integrated into game loop with hourly checks

Tests cover schedule transitions, game time calculation, TOML loading, and preventing duplicate processing.
2026-02-14 14:31:39 -05:00
67a0290ede
Add talk and reply commands with conversation system
Implements player-NPC dialogue using the dialogue tree data model.
Conversation state tracking manages active conversations and transitions
NPCs to "converse" behavior state during dialogue. Commands support
terminal node cleanup and display formatting with numbered choices.
2026-02-14 14:31:39 -05:00
5d61008dc1
Add dialogue tree data model with tests
Implements a TOML-based dialogue tree system for NPCs with:
- DialogueChoice: player response options with optional conditions
- DialogueNode: NPC text with choices and optional actions
- DialogueTree: complete tree with root node and node graph
- Validation for root_node and next_node references
- load_dialogue() for single files, load_all_dialogues() for directories

Includes librarian dialogue example with nested conversation flow.
2026-02-14 14:31:39 -05:00
369bc5efcb
Add NPC behavior state machine with tests
Adds behavior state tracking to Mob entity with five states: idle, patrol,
converse, flee, and working. Each state has specific processing logic:
- idle: no-op (existing wander logic handles movement)
- patrol: cycles through waypoints with toroidal wrapping support
- converse: stationary during player-driven dialogue
- flee: moves away from threat coordinates
- working: stationary NPC at their post

The behavior module is self-contained and testable, ready for integration
with mob_ai.py in a later step.
2026-02-14 14:31:39 -05:00
355795a991
Add bulk book import script 2026-02-14 12:39:48 -05:00
a0360f221c
Wire boundary hooks into player movement
Movement now evaluates boundary enter/exit conditions. Exit checks can
block movement based on carrying items (by name or tag). Enter and exit
messages sent when crossing boundary borders. All boundary logic lives
in move_player() before position update.
2026-02-14 12:39:48 -05:00
4205b174c9
Add item tags to Thing model
Tags enable categorizing items for boundary checks and other systems.
Added tags field to Thing and ThingTemplate, updated load and spawn
functions to handle tags from TOML definitions.
2026-02-14 12:39:48 -05:00
b5c5542792
Add boundary region data model with TOML parsing and export
Boundaries are rectangular regions within zones that can trigger effects
when players enter or exit. Added BoundaryRegion dataclass with contains()
method, TOML parsing in load_zone(), and export support. Tests verify
parsing, export, and round-trip behavior.
2026-02-14 12:39:48 -05:00
da76b6004e
Add YAML map import script with tests
Implements import_map.py script that converts YAML zone definitions to
TOML format used by the engine. YAML format supports all zone features
including terrain, portals, spawns, ambient messages, and boundaries.
2026-02-14 12:39:48 -05:00