diff --git a/docs/plans/experience-roadmap.rst b/docs/plans/experience-roadmap.rst index b2a7e2f..8db46e8 100644 --- a/docs/plans/experience-roadmap.rst +++ b/docs/plans/experience-roadmap.rst @@ -299,9 +299,15 @@ The engine roadmap's later phases, renumbered: - **Phase 15: NPC evolution** -- dialogue trees, behavior, schedules. Grimm's Library librarians may pull some dialogue work into phase 14. - **Phase 16: World systems** -- time of day, weather, seasons -- **Phase 17: Player creation + housing** -- player-owned zones, crafting -- **Phase 18: The DSL** -- in-world scripting language -- **Phase 19: Horizons** -- web client, compression, inter-MUD, AI NPCs +- **Phase 17: Player creation + housing** -- character creation flow + (description prompt for new players), personal home zones with + persistence (TOML in ``data/player_zones/``), home command for + teleportation to/from personal zone +- **Phase 18: Housing expansion + crafting** -- furniture placement, + home zone customization (terrain editing, descriptions), crafting + system, decorative objects +- **Phase 19: The DSL** -- in-world scripting language +- **Phase 20: Horizons** -- web client, compression, inter-MUD, AI NPCs Key references diff --git a/src/mudlib/server.py b/src/mudlib/server.py index 38df4d0..35d72fb 100644 --- a/src/mudlib/server.py +++ b/src/mudlib/server.py @@ -20,6 +20,7 @@ import mudlib.commands.edit import mudlib.commands.examine import mudlib.commands.fly import mudlib.commands.help +import mudlib.commands.home import mudlib.commands.look import mudlib.commands.movement import mudlib.commands.play @@ -37,9 +38,11 @@ from mudlib.combat.commands import register_combat_commands from mudlib.combat.engine import process_combat from mudlib.content import load_commands from mudlib.corpse import process_decomposing +from mudlib.creation import character_creation from mudlib.dialogue import load_all_dialogues from mudlib.effects import clear_expired from mudlib.gametime import get_game_hour, init_game_time +from mudlib.housing import init_housing, load_home_zone from mudlib.gmcp import ( send_char_status, send_char_vitals, @@ -64,6 +67,7 @@ from mudlib.store import ( load_player_data, load_player_stats, save_player, + save_player_description, update_last_login, ) from mudlib.thing import Thing @@ -198,7 +202,7 @@ async def handle_login( if authenticate(name, password.strip()): # Success - load player data player_data = load_player_data(name) - return {"success": True, "player_data": player_data} + return {"success": True, "player_data": player_data, "is_new": False} remaining = max_attempts - attempt - 1 if remaining > 0: @@ -236,7 +240,7 @@ async def handle_login( await write_func("Account created successfully!\r\n") # Return default data for new account player_data = load_player_data(name) - return {"success": True, "player_data": player_data} + return {"success": True, "player_data": player_data, "is_new": True} await write_func("Failed to create account.\r\n") return {"success": False, "player_data": None}