rom24-quickmud-python 1.2.2__tar.gz → 2.0.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/CHANGELOG.md +52 -10
- {rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.0.0}/PKG-INFO +113 -6
- rom24_quickmud_python-2.0.0/README.md +290 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/midgaard.are +2 -2
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/help.json +46 -1
- rom24_quickmud_python-2.0.0/data/players/sleeper.json +260 -0
- rom24_quickmud_python-2.0.0/data/players/trouble.json +260 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/time.json +1 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/__main__.py +19 -1
- rom24_quickmud_python-2.0.0/mud/account/__init__.py +60 -0
- rom24_quickmud_python-2.0.0/mud/account/account_manager.py +92 -0
- rom24_quickmud_python-2.0.0/mud/account/account_service.py +1009 -0
- rom24_quickmud_python-2.0.0/mud/admin_logging/admin.py +167 -0
- {rom24_quickmud_python-1.2.2/mud/logging → rom24_quickmud_python-2.0.0/mud/admin_logging}/agent_trace.py +3 -3
- rom24_quickmud_python-2.0.0/mud/advancement.py +202 -0
- rom24_quickmud_python-2.0.0/mud/affects/engine.py +32 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/affects/saves.py +46 -5
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/agent/agent_protocol.py +3 -4
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/agent/character_agent.py +16 -9
- rom24_quickmud_python-2.0.0/mud/ai/__init__.py +374 -0
- rom24_quickmud_python-2.0.0/mud/ai/aggressive.py +119 -0
- rom24_quickmud_python-2.0.0/mud/characters/__init__.py +56 -0
- rom24_quickmud_python-2.0.0/mud/characters/conditions.py +58 -0
- rom24_quickmud_python-2.0.0/mud/characters/follow.py +70 -0
- rom24_quickmud_python-2.0.0/mud/combat/__init__.py +6 -0
- rom24_quickmud_python-2.0.0/mud/combat/death.py +593 -0
- rom24_quickmud_python-2.0.0/mud/combat/engine.py +1489 -0
- rom24_quickmud_python-2.0.0/mud/combat/kill_table.py +48 -0
- rom24_quickmud_python-2.0.0/mud/combat/messages.py +182 -0
- rom24_quickmud_python-2.0.0/mud/commands/admin_commands.py +497 -0
- rom24_quickmud_python-2.0.0/mud/commands/advancement.py +216 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/alias_cmds.py +23 -3
- rom24_quickmud_python-2.0.0/mud/commands/build.py +1117 -0
- rom24_quickmud_python-2.0.0/mud/commands/combat.py +544 -0
- rom24_quickmud_python-2.0.0/mud/commands/communication.py +513 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/decorators.py +2 -0
- rom24_quickmud_python-2.0.0/mud/commands/dispatcher.py +496 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/healer.py +1 -4
- rom24_quickmud_python-2.0.0/mud/commands/help.py +333 -0
- rom24_quickmud_python-2.0.0/mud/commands/imc.py +397 -0
- rom24_quickmud_python-2.0.0/mud/commands/info.py +75 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/inspection.py +6 -3
- rom24_quickmud_python-2.0.0/mud/commands/inventory.py +132 -0
- rom24_quickmud_python-2.0.0/mud/commands/mobprog_tools.py +124 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/movement.py +37 -21
- rom24_quickmud_python-2.0.0/mud/commands/notes.py +469 -0
- rom24_quickmud_python-2.0.0/mud/commands/shop.py +990 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/socials.py +1 -1
- rom24_quickmud_python-2.0.0/mud/config.py +223 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/init.py +8 -7
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/migrate_from_files.py +4 -3
- rom24_quickmud_python-2.0.0/mud/db/migrations.py +29 -0
- rom24_quickmud_python-2.0.0/mud/db/models.py +139 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/seed.py +1 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/session.py +1 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/devtools/agent_demo.py +2 -2
- rom24_quickmud_python-2.0.0/mud/game_loop.py +1009 -0
- rom24_quickmud_python-2.0.0/mud/game_tick_scheduler.py +51 -0
- rom24_quickmud_python-2.0.0/mud/groups/__init__.py +5 -0
- rom24_quickmud_python-2.0.0/mud/groups/xp.py +258 -0
- rom24_quickmud_python-2.0.0/mud/imc/__init__.py +1161 -0
- rom24_quickmud_python-2.0.0/mud/imc/commands.py +149 -0
- rom24_quickmud_python-2.0.0/mud/imc/network.py +98 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/imc/protocol.py +3 -2
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/__init__.py +9 -6
- rom24_quickmud_python-2.0.0/mud/loaders/area_loader.py +185 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/base_loader.py +6 -5
- rom24_quickmud_python-2.0.0/mud/loaders/help_loader.py +74 -0
- rom24_quickmud_python-2.0.0/mud/loaders/json_area_loader.py +244 -0
- rom24_quickmud_python-2.0.0/mud/loaders/json_loader.py +537 -0
- rom24_quickmud_python-2.0.0/mud/loaders/mob_loader.py +187 -0
- rom24_quickmud_python-2.0.0/mud/loaders/mobprog_loader.py +26 -0
- rom24_quickmud_python-2.0.0/mud/loaders/obj_loader.py +479 -0
- rom24_quickmud_python-2.0.0/mud/loaders/reset_loader.py +157 -0
- rom24_quickmud_python-2.0.0/mud/loaders/room_loader.py +120 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/shop_loader.py +4 -2
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/social_loader.py +1 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/specials_loader.py +22 -11
- rom24_quickmud_python-2.0.0/mud/logging.py +20 -0
- rom24_quickmud_python-2.0.0/mud/magic/__init__.py +19 -0
- rom24_quickmud_python-2.0.0/mud/magic/effects.py +86 -0
- rom24_quickmud_python-2.0.0/mud/mob_cmds.py +1101 -0
- rom24_quickmud_python-2.0.0/mud/mobprog.py +1554 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/__init__.py +43 -34
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/area.py +10 -8
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/area_json.py +8 -7
- rom24_quickmud_python-2.0.0/mud/models/board.py +156 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/board_json.py +6 -2
- rom24_quickmud_python-2.0.0/mud/models/character.py +982 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/character_json.py +9 -7
- rom24_quickmud_python-2.0.0/mud/models/clans.py +83 -0
- rom24_quickmud_python-2.0.0/mud/models/classes.py +112 -0
- rom24_quickmud_python-2.0.0/mud/models/constants.py +997 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/conversion.py +5 -6
- rom24_quickmud_python-2.0.0/mud/models/help.py +44 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/json_io.py +4 -4
- rom24_quickmud_python-2.0.0/mud/models/mob.py +110 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/note.py +3 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/note_json.py +1 -0
- rom24_quickmud_python-2.0.0/mud/models/obj.py +94 -0
- rom24_quickmud_python-2.0.0/mud/models/object.py +59 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/object_json.py +9 -7
- rom24_quickmud_python-2.0.0/mud/models/player_json.py +52 -0
- rom24_quickmud_python-2.0.0/mud/models/races.py +534 -0
- rom24_quickmud_python-2.0.0/mud/models/room.py +106 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/room_json.py +15 -12
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/shop.py +1 -1
- rom24_quickmud_python-2.0.0/mud/models/skill.py +54 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/skill_json.py +7 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/social.py +26 -5
- rom24_quickmud_python-2.0.0/mud/music/__init__.py +161 -0
- rom24_quickmud_python-2.0.0/mud/net/__init__.py +9 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/net/ansi.py +13 -0
- rom24_quickmud_python-2.0.0/mud/net/connection.py +1846 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/net/protocol.py +39 -5
- rom24_quickmud_python-2.0.0/mud/net/session.py +165 -0
- rom24_quickmud_python-2.0.0/mud/net/ssh_server.py +327 -0
- rom24_quickmud_python-2.0.0/mud/net/telnet_server.py +45 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/network/websocket_server.py +20 -14
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/network/websocket_session.py +6 -3
- rom24_quickmud_python-2.0.0/mud/notes.py +97 -0
- rom24_quickmud_python-2.0.0/mud/persistence.py +812 -0
- rom24_quickmud_python-2.0.0/mud/registry.py +12 -0
- rom24_quickmud_python-2.0.0/mud/scripts/convert_are_to_json.py +217 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_help_are_to_json.py +7 -6
- rom24_quickmud_python-2.0.0/mud/scripts/convert_player_to_json.py +258 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_shops_to_json.py +3 -5
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_skills_to_json.py +44 -53
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_social_are_to_json.py +6 -7
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/load_test_data.py +1 -2
- rom24_quickmud_python-2.0.0/mud/security/bans.py +309 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/server.py +3 -2
- rom24_quickmud_python-2.0.0/mud/skills/__init__.py +15 -0
- rom24_quickmud_python-2.0.0/mud/skills/groups.py +337 -0
- rom24_quickmud_python-2.0.0/mud/skills/handlers.py +6857 -0
- rom24_quickmud_python-2.0.0/mud/skills/metadata.py +160 -0
- rom24_quickmud_python-2.0.0/mud/skills/registry.py +381 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/spawning/mob_spawner.py +2 -2
- rom24_quickmud_python-2.0.0/mud/spawning/obj_spawner.py +73 -0
- rom24_quickmud_python-2.0.0/mud/spawning/reset_handler.py +822 -0
- rom24_quickmud_python-2.0.0/mud/spawning/templates.py +462 -0
- rom24_quickmud_python-2.0.0/mud/spec_funs.py +1451 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/time.py +5 -3
- rom24_quickmud_python-2.0.0/mud/utils/act.py +168 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/utils/rng_mm.py +30 -13
- rom24_quickmud_python-2.0.0/mud/utils/text.py +115 -0
- rom24_quickmud_python-2.0.0/mud/wiznet.py +267 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/__init__.py +2 -2
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/linking.py +3 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/look.py +15 -5
- rom24_quickmud_python-2.0.0/mud/world/movement.py +580 -0
- rom24_quickmud_python-2.0.0/mud/world/vision.py +332 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/world_state.py +92 -27
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/pyproject.toml +66 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0/rom24_quickmud_python.egg-info}/PKG-INFO +113 -6
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/SOURCES.txt +81 -4
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/requires.txt +1 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/conftest.py +24 -10
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/helpers.py +6 -7
- rom24_quickmud_python-2.0.0/tests/integration/test_pilot_integration.py +140 -0
- rom24_quickmud_python-2.0.0/tests/test_account_auth.py +2669 -0
- rom24_quickmud_python-2.0.0/tests/test_admin_commands.py +610 -0
- rom24_quickmud_python-2.0.0/tests/test_advancement.py +397 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_affects.py +225 -16
- rom24_quickmud_python-2.0.0/tests/test_agent_interface.py +27 -0
- rom24_quickmud_python-2.0.0/tests/test_alias_parity.py +227 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_are_conversion.py +6 -5
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_area_counts.py +1 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_area_exits.py +2 -3
- rom24_quickmud_python-2.0.0/tests/test_area_loader.py +1140 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_area_specials.py +18 -12
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_bans.py +14 -2
- rom24_quickmud_python-2.0.0/tests/test_boards.py +813 -0
- rom24_quickmud_python-2.0.0/tests/test_building.py +569 -0
- rom24_quickmud_python-2.0.0/tests/test_combat.py +738 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_death.py +723 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_defenses_prob.py +57 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_messages.py +30 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_rom_parity.py +239 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_skills.py +102 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_state.py +100 -0
- rom24_quickmud_python-2.0.0/tests/test_combat_thac0_engine.py +107 -0
- rom24_quickmud_python-2.0.0/tests/test_command_abbrev.py +22 -0
- rom24_quickmud_python-2.0.0/tests/test_commands.py +412 -0
- rom24_quickmud_python-2.0.0/tests/test_communication.py +489 -0
- rom24_quickmud_python-2.0.0/tests/test_connection_motd.py +110 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_convert_are_to_json_cli.py +0 -2
- rom24_quickmud_python-2.0.0/tests/test_damage_reduction.py +208 -0
- rom24_quickmud_python-2.0.0/tests/test_damage_reduction_integration.py +166 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_db_seed.py +3 -8
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_defense_flags.py +0 -1
- rom24_quickmud_python-2.0.0/tests/test_encumbrance.py +155 -0
- rom24_quickmud_python-2.0.0/tests/test_enter_portal.py +20 -0
- rom24_quickmud_python-2.0.0/tests/test_fighting_state.py +243 -0
- rom24_quickmud_python-2.0.0/tests/test_game_loop.py +598 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_game_loop_order.py +10 -7
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_game_loop_wait_daze.py +11 -5
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_healer.py +18 -19
- rom24_quickmud_python-2.0.0/tests/test_healer_parity.py +197 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_help_conversion.py +0 -1
- rom24_quickmud_python-2.0.0/tests/test_help_system.py +358 -0
- rom24_quickmud_python-2.0.0/tests/test_imc.py +1311 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_inventory_persistence.py +9 -10
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_json_io.py +1 -1
- rom24_quickmud_python-2.0.0/tests/test_json_room_fields.py +69 -0
- rom24_quickmud_python-2.0.0/tests/test_load_midgaard.py +18 -0
- rom24_quickmud_python-2.0.0/tests/test_logging_admin.py +317 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_logging_rotation.py +25 -21
- rom24_quickmud_python-2.0.0/tests/test_mobprog.py +78 -0
- rom24_quickmud_python-2.0.0/tests/test_mobprog_commands.py +631 -0
- rom24_quickmud_python-2.0.0/tests/test_mobprog_triggers.py +471 -0
- rom24_quickmud_python-2.0.0/tests/test_movement.py +51 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_charm.py +43 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_movement_costs.py +39 -6
- rom24_quickmud_python-2.0.0/tests/test_movement_doors.py +68 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_followers.py +132 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_mobprog.py +42 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_npc.py +20 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_portals.py +139 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_privacy.py +86 -0
- rom24_quickmud_python-2.0.0/tests/test_movement_visibility.py +129 -0
- rom24_quickmud_python-2.0.0/tests/test_music.py +93 -0
- rom24_quickmud_python-2.0.0/tests/test_networking_telnet.py +284 -0
- rom24_quickmud_python-2.0.0/tests/test_persistence.py +227 -0
- rom24_quickmud_python-2.0.0/tests/test_player_save_format.py +755 -0
- rom24_quickmud_python-2.0.0/tests/test_practice.py +55 -0
- rom24_quickmud_python-2.0.0/tests/test_reset_levels.py +48 -0
- rom24_quickmud_python-2.0.0/tests/test_resets.py +26 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_rng_dice.py +0 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_runtime_models.py +10 -10
- rom24_quickmud_python-2.0.0/tests/test_scan_parity.py +187 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_schema_validation.py +5 -1
- rom24_quickmud_python-2.0.0/tests/test_shops.py +1363 -0
- rom24_quickmud_python-2.0.0/tests/test_skills.py +934 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_buffs.py +717 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_combat.py +252 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_conjuration.py +259 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_damage.py +748 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_debuffs.py +458 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_detection.py +367 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_healing.py +154 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_identify.py +113 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_skills_learned.py +18 -9
- rom24_quickmud_python-2.0.0/tests/test_skills_mass.py +364 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_misc.py +113 -0
- rom24_quickmud_python-2.0.0/tests/test_skills_transport.py +377 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_social_conversion.py +1 -2
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_social_placeholders.py +1 -2
- rom24_quickmud_python-2.0.0/tests/test_spawning.py +1885 -0
- rom24_quickmud_python-2.0.0/tests/test_spec_funs.py +1494 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_spec_funs_extra.py +2 -3
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_specials_loader_ext.py +2 -3
- rom24_quickmud_python-2.0.0/tests/test_spells_basic.py +69 -0
- rom24_quickmud_python-2.0.0/tests/test_spells_damage.py +129 -0
- rom24_quickmud_python-2.0.0/tests/test_telnet_server.py +626 -0
- rom24_quickmud_python-2.0.0/tests/test_time_daynight.py +125 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_time_persistence.py +2 -2
- rom24_quickmud_python-2.0.0/tests/test_weapon_damage.py +135 -0
- rom24_quickmud_python-2.0.0/tests/test_weapon_special_attacks.py +270 -0
- rom24_quickmud_python-2.0.0/tests/test_wiznet.py +945 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_world.py +13 -12
- rom24_quickmud_python-1.2.2/README.md +0 -184
- rom24_quickmud_python-1.2.2/mud/account/__init__.py +0 -20
- rom24_quickmud_python-1.2.2/mud/account/account_manager.py +0 -62
- rom24_quickmud_python-1.2.2/mud/account/account_service.py +0 -80
- rom24_quickmud_python-1.2.2/mud/advancement.py +0 -62
- rom24_quickmud_python-1.2.2/mud/combat/__init__.py +0 -3
- rom24_quickmud_python-1.2.2/mud/combat/engine.py +0 -189
- rom24_quickmud_python-1.2.2/mud/commands/admin_commands.py +0 -77
- rom24_quickmud_python-1.2.2/mud/commands/advancement.py +0 -36
- rom24_quickmud_python-1.2.2/mud/commands/build.py +0 -18
- rom24_quickmud_python-1.2.2/mud/commands/combat.py +0 -16
- rom24_quickmud_python-1.2.2/mud/commands/communication.py +0 -55
- rom24_quickmud_python-1.2.2/mud/commands/dispatcher.py +0 -206
- rom24_quickmud_python-1.2.2/mud/commands/help.py +0 -14
- rom24_quickmud_python-1.2.2/mud/commands/imc.py +0 -19
- rom24_quickmud_python-1.2.2/mud/commands/inventory.py +0 -42
- rom24_quickmud_python-1.2.2/mud/commands/notes.py +0 -44
- rom24_quickmud_python-1.2.2/mud/commands/shop.py +0 -138
- rom24_quickmud_python-1.2.2/mud/config.py +0 -59
- rom24_quickmud_python-1.2.2/mud/db/migrations.py +0 -7
- rom24_quickmud_python-1.2.2/mud/db/models.py +0 -98
- rom24_quickmud_python-1.2.2/mud/game_loop.py +0 -117
- rom24_quickmud_python-1.2.2/mud/imc/__init__.py +0 -17
- rom24_quickmud_python-1.2.2/mud/loaders/area_loader.py +0 -73
- rom24_quickmud_python-1.2.2/mud/loaders/help_loader.py +0 -17
- rom24_quickmud_python-1.2.2/mud/loaders/json_area_loader.py +0 -203
- rom24_quickmud_python-1.2.2/mud/loaders/json_loader.py +0 -285
- rom24_quickmud_python-1.2.2/mud/loaders/mob_loader.py +0 -104
- rom24_quickmud_python-1.2.2/mud/loaders/obj_loader.py +0 -76
- rom24_quickmud_python-1.2.2/mud/loaders/reset_loader.py +0 -29
- rom24_quickmud_python-1.2.2/mud/loaders/room_loader.py +0 -63
- rom24_quickmud_python-1.2.2/mud/logging/admin.py +0 -40
- rom24_quickmud_python-1.2.2/mud/mobprog.py +0 -72
- rom24_quickmud_python-1.2.2/mud/models/board.py +0 -49
- rom24_quickmud_python-1.2.2/mud/models/character.py +0 -195
- rom24_quickmud_python-1.2.2/mud/models/constants.py +0 -423
- rom24_quickmud_python-1.2.2/mud/models/help.py +0 -28
- rom24_quickmud_python-1.2.2/mud/models/mob.py +0 -82
- rom24_quickmud_python-1.2.2/mud/models/obj.py +0 -82
- rom24_quickmud_python-1.2.2/mud/models/object.py +0 -28
- rom24_quickmud_python-1.2.2/mud/models/player_json.py +0 -29
- rom24_quickmud_python-1.2.2/mud/models/room.py +0 -86
- rom24_quickmud_python-1.2.2/mud/models/skill.py +0 -25
- rom24_quickmud_python-1.2.2/mud/net/__init__.py +0 -9
- rom24_quickmud_python-1.2.2/mud/net/connection.py +0 -174
- rom24_quickmud_python-1.2.2/mud/net/session.py +0 -21
- rom24_quickmud_python-1.2.2/mud/net/telnet_server.py +0 -31
- rom24_quickmud_python-1.2.2/mud/notes.py +0 -45
- rom24_quickmud_python-1.2.2/mud/persistence.py +0 -185
- rom24_quickmud_python-1.2.2/mud/registry.py +0 -5
- rom24_quickmud_python-1.2.2/mud/scripts/convert_are_to_json.py +0 -162
- rom24_quickmud_python-1.2.2/mud/scripts/convert_player_to_json.py +0 -112
- rom24_quickmud_python-1.2.2/mud/security/bans.py +0 -112
- rom24_quickmud_python-1.2.2/mud/skills/__init__.py +0 -3
- rom24_quickmud_python-1.2.2/mud/skills/handlers.py +0 -795
- rom24_quickmud_python-1.2.2/mud/skills/registry.py +0 -97
- rom24_quickmud_python-1.2.2/mud/spawning/obj_spawner.py +0 -18
- rom24_quickmud_python-1.2.2/mud/spawning/reset_handler.py +0 -222
- rom24_quickmud_python-1.2.2/mud/spawning/templates.py +0 -63
- rom24_quickmud_python-1.2.2/mud/spec_funs.py +0 -57
- rom24_quickmud_python-1.2.2/mud/wiznet.py +0 -74
- rom24_quickmud_python-1.2.2/mud/world/movement.py +0 -135
- rom24_quickmud_python-1.2.2/tests/test_account_auth.py +0 -79
- rom24_quickmud_python-1.2.2/tests/test_admin_commands.py +0 -64
- rom24_quickmud_python-1.2.2/tests/test_advancement.py +0 -45
- rom24_quickmud_python-1.2.2/tests/test_agent_interface.py +0 -28
- rom24_quickmud_python-1.2.2/tests/test_area_loader.py +0 -41
- rom24_quickmud_python-1.2.2/tests/test_boards.py +0 -18
- rom24_quickmud_python-1.2.2/tests/test_building.py +0 -19
- rom24_quickmud_python-1.2.2/tests/test_combat.py +0 -197
- rom24_quickmud_python-1.2.2/tests/test_combat_defenses_prob.py +0 -49
- rom24_quickmud_python-1.2.2/tests/test_combat_thac0_engine.py +0 -49
- rom24_quickmud_python-1.2.2/tests/test_command_abbrev.py +0 -22
- rom24_quickmud_python-1.2.2/tests/test_commands.py +0 -143
- rom24_quickmud_python-1.2.2/tests/test_communication.py +0 -53
- rom24_quickmud_python-1.2.2/tests/test_encumbrance.py +0 -36
- rom24_quickmud_python-1.2.2/tests/test_enter_portal.py +0 -20
- rom24_quickmud_python-1.2.2/tests/test_game_loop.py +0 -44
- rom24_quickmud_python-1.2.2/tests/test_help_system.py +0 -20
- rom24_quickmud_python-1.2.2/tests/test_imc.py +0 -49
- rom24_quickmud_python-1.2.2/tests/test_load_midgaard.py +0 -10
- rom24_quickmud_python-1.2.2/tests/test_logging_admin.py +0 -24
- rom24_quickmud_python-1.2.2/tests/test_mobprog.py +0 -29
- rom24_quickmud_python-1.2.2/tests/test_persistence.py +0 -49
- rom24_quickmud_python-1.2.2/tests/test_player_save_format.py +0 -107
- rom24_quickmud_python-1.2.2/tests/test_reset_levels.py +0 -35
- rom24_quickmud_python-1.2.2/tests/test_shops.py +0 -112
- rom24_quickmud_python-1.2.2/tests/test_skills.py +0 -51
- rom24_quickmud_python-1.2.2/tests/test_spawning.py +0 -150
- rom24_quickmud_python-1.2.2/tests/test_spec_funs.py +0 -103
- rom24_quickmud_python-1.2.2/tests/test_telnet_server.py +0 -115
- rom24_quickmud_python-1.2.2/tests/test_time_daynight.py +0 -74
- rom24_quickmud_python-1.2.2/tests/test_wiznet.py +0 -100
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/LICENSE +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/MANIFEST.in +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/air.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/arachnos.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/area.lst +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/astral.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/canyon.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/catacomb.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/chapel.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/daycare.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/draconia.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/dream.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/drow.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/dwarven.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/dylan.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/eastern.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/galaxy.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/gnome.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/grave.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/group.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/grove.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/haon.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/help.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/hitower.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/hood.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/immort.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/limbo.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mahntor.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/marsh.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mega1.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/midennir.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mirror.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mobfact.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/moria.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/newthalos.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/nirvana.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/ofcol.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/ofcol2.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/olympus.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/plains.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/proto.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/pyramid.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/quifael.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/redferne.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/rom.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/school.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/sewer.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/shire.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/smurf.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/social.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/thalos.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/tohell.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/trollden.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/valley.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/wyvern.are +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/air.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/arachnos.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/area.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/area_0.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/astral.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/astral_plane.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/canyon.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/catacomb.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/catacombs.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/chapel.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/day_care.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/daycare.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/draconia.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dragon_tower.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dream.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/drow.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/drow_city.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dwarven.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dwarven_kingdom.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dylan's_area.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dylan.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/eastern.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/elemental_canyon.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/galaxy.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/gangland.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/gnome.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/gnome_village.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/grave.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/graveyard.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/group.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/grove.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/haon.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/haon_dor.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/hell.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/help.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/high_tower.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/hitower.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/holy_grove.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/hood.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/immort.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/in_the_air.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/limbo.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/machine_dreams.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mahn-tor.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mahntor.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/marsh.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mega1.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mega_city_one.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/miden'nir.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/midennir.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/midgaard.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mirror.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mob_factory.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mobfact.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/moria.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mud_school.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/new_ofcol.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/new_thalos.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/newthalos.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/nirvana.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/ofcol.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/ofcol2.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/old_thalos.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/olympus.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/plains.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/pyramid.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/quifael's.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/quifael.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/redferne's.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/redferne.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/rom.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/sands_of_sorrow.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/school.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/sewer.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/sewers.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/shire.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/smurf.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/smurfville.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/social.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/thalos.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/tohell.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/troll_den.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/trollden.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/valhalla.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/valley.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/valley_of_the_elves.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/wyvern's_tower.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/wyvern.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/shops.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/skills.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/socials.json +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/examples.doc +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/hacker.doc +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/mobprog.doc +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/new_readme.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/QuickMUD.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/Rom2.4.doc +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/act.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/area.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/c_module_inventory.md +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/c_python_cross_reference.md +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/c_to_python_file_coverage.md +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/class.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/command.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/contrib.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/drool.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/hacker.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/license.doc +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/license.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/memory.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/new.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/pfile.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/port.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/pr_queue.md +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/python_architecture.md +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/python_module_inventory.md +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/security.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/sites.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/skill.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/sky.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/trad.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/vnum.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/~$Rom2.4.doc +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2/mud/agent → rom24_quickmud_python-2.0.0/mud/admin_logging}/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2/mud/db → rom24_quickmud_python-2.0.0/mud/agent}/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2/mud/devtools → rom24_quickmud_python-2.0.0/mud/db}/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2/mud/logging → rom24_quickmud_python-2.0.0/mud/devtools}/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/entrypoint.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/math/c_compat.py +1 -1
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/help_json.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/shop_json.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/social_json.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/network/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/security/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/security/hash_utils.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/spawning/__init__.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/setup.cfg +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/setup.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_ansi.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_combat_thac0.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_hash_utils.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_json_model_instantiation.py +7 -7
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_rng_and_ccompat.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_scripted_session.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_shop_conversion.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_skill_conversion.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_skill_registry.py +0 -0
- {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_socials.py +2 -2
|
@@ -5,6 +5,45 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [Unreleased]
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Complete weapon special attacks system with ROM 2.4 parity (WEAPON_VAMPIRIC, WEAPON_POISON, WEAPON_FLAMING, WEAPON_FROST, WEAPON_SHOCKING)
|
|
13
|
+
|
|
14
|
+
### Changed
|
|
15
|
+
|
|
16
|
+
### Deprecated
|
|
17
|
+
|
|
18
|
+
### Removed
|
|
19
|
+
|
|
20
|
+
### Fixed
|
|
21
|
+
|
|
22
|
+
### Security
|
|
23
|
+
|
|
24
|
+
## [1.3.0] - 2025-09-15
|
|
25
|
+
|
|
26
|
+
### Added
|
|
27
|
+
|
|
28
|
+
- Complete fighting state management with ROM 2.4 parity
|
|
29
|
+
- Character immortality protection following IS_IMMORTAL macro
|
|
30
|
+
- Level constants (MAX_LEVEL, LEVEL_IMMORTAL) matching ROM source
|
|
31
|
+
|
|
32
|
+
### Changed
|
|
33
|
+
|
|
34
|
+
### Deprecated
|
|
35
|
+
|
|
36
|
+
### Removed
|
|
37
|
+
|
|
38
|
+
### Fixed
|
|
39
|
+
|
|
40
|
+
- Character position initialization defaults to STANDING instead of DEAD
|
|
41
|
+
- Fighting state damage application and position updates
|
|
42
|
+
- Immortal character survival logic in combat system
|
|
43
|
+
- Combat defense order to match ROM 2.4 C source (shield_block → parry → dodge)
|
|
44
|
+
|
|
45
|
+
### Security
|
|
46
|
+
|
|
8
47
|
## [1.2.0] - 2025-09-15
|
|
9
48
|
|
|
10
49
|
### Added
|
|
@@ -18,27 +57,24 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
18
57
|
- OLC building system for room editing
|
|
19
58
|
- pytest-timeout plugin for proper test timeouts
|
|
20
59
|
|
|
21
|
-
### Fixed
|
|
22
|
-
|
|
23
|
-
- Character position initialization (STANDING vs DEAD)
|
|
24
|
-
- Hanging telnet tests resolved
|
|
25
|
-
- Enhanced error handling and null room safety
|
|
26
|
-
- Character creation now allows immediate command execution
|
|
27
|
-
|
|
28
60
|
### Changed
|
|
29
61
|
|
|
30
62
|
- Achieved 100% test success rate (200/200 tests)
|
|
31
63
|
- Full test suite completes in ~16 seconds
|
|
32
64
|
- Modern async/await telnet server architecture
|
|
33
65
|
- SQLAlchemy ORM with migrations
|
|
34
|
-
|
|
35
|
-
### Technical Improvements
|
|
36
|
-
|
|
37
66
|
- Comprehensive test coverage across all subsystems
|
|
38
67
|
- Memory efficient JSON area loading
|
|
39
68
|
- Optimized command processing pipeline
|
|
40
69
|
- Robust error handling throughout
|
|
41
70
|
|
|
71
|
+
### Fixed
|
|
72
|
+
|
|
73
|
+
- Character position initialization (STANDING vs DEAD)
|
|
74
|
+
- Hanging telnet tests resolved
|
|
75
|
+
- Enhanced error handling and null room safety
|
|
76
|
+
- Character creation now allows immediate command execution
|
|
77
|
+
|
|
42
78
|
## [0.1.1] - 2025-09-14
|
|
43
79
|
|
|
44
80
|
### Added
|
|
@@ -62,3 +98,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
62
98
|
- Basic MUD framework
|
|
63
99
|
- ROM compatibility layer
|
|
64
100
|
- Core game loop implementation
|
|
101
|
+
|
|
102
|
+
[Unreleased]: https://github.com/Nostoi/rom24-quickmud-python/compare/v1.3.0...HEAD
|
|
103
|
+
[1.3.0]: https://github.com/Nostoi/rom24-quickmud-python/compare/v1.2.0...v1.3.0
|
|
104
|
+
[1.2.0]: https://github.com/Nostoi/rom24-quickmud-python/compare/v0.1.1...v1.2.0
|
|
105
|
+
[0.1.1]: https://github.com/Nostoi/rom24-quickmud-python/compare/v0.1.0...v0.1.1
|
|
106
|
+
[0.1.0]: https://github.com/Nostoi/rom24-quickmud-python/releases/tag/v0.1.0
|
{rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.0.0}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version:
|
|
3
|
+
Version: 2.0.0
|
|
4
4
|
Summary: A modern Python port of the ROM 2.4b6 MUD engine with full telnet server and JSON world loading
|
|
5
5
|
Author-email: Mark Jedrzejczyk <mark.jedrzejczyk@gmail.com>
|
|
6
6
|
Maintainer-email: Mark Jedrzejczyk <mark.jedrzejczyk@gmail.com>
|
|
@@ -34,6 +34,7 @@ Requires-Dist: python-dotenv>=1.0
|
|
|
34
34
|
Requires-Dist: fastapi>=0.68.0
|
|
35
35
|
Requires-Dist: uvicorn>=0.15.0
|
|
36
36
|
Requires-Dist: pytest-timeout>=2.1.0
|
|
37
|
+
Requires-Dist: asyncssh>=2.0
|
|
37
38
|
Provides-Extra: dev
|
|
38
39
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
39
40
|
Requires-Dist: pytest-cov>=6.0; extra == "dev"
|
|
@@ -66,7 +67,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
|
|
|
66
67
|
## ✨ Key Features
|
|
67
68
|
|
|
68
69
|
- **🚀 Modern Python Architecture**: Fully async/await networking with SQLAlchemy ORM
|
|
69
|
-
- **📡
|
|
70
|
+
- **📡 Multiple Connection Options**: Telnet, WebSocket, and SSH server support
|
|
70
71
|
- **🗺️ JSON World Loading**: Easy-to-edit world data with 352+ room resets
|
|
71
72
|
- **🏪 Complete Shop System**: Buy, sell, and list items with working economy
|
|
72
73
|
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
@@ -86,14 +87,43 @@ pip install quickmud
|
|
|
86
87
|
|
|
87
88
|
Run a QuickMUD server:
|
|
88
89
|
|
|
90
|
+
**Telnet Server (port 5000):**
|
|
89
91
|
```bash
|
|
90
|
-
mud
|
|
92
|
+
python3 -m mud socketserver
|
|
93
|
+
# or
|
|
94
|
+
mud socketserver
|
|
91
95
|
```
|
|
92
96
|
|
|
93
|
-
|
|
97
|
+
**WebSocket Server (port 8000):**
|
|
98
|
+
```bash
|
|
99
|
+
python3 -m mud websocketserver
|
|
100
|
+
# or
|
|
101
|
+
mud websocketserver
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
**SSH Server (port 2222):**
|
|
105
|
+
```bash
|
|
106
|
+
python3 -m mud sshserver
|
|
107
|
+
# or
|
|
108
|
+
mud sshserver
|
|
109
|
+
```
|
|
94
110
|
|
|
111
|
+
All servers provide:
|
|
112
|
+
- ✓ Game tick running at 4 Hz
|
|
113
|
+
- ✓ Time advancement
|
|
114
|
+
- ✓ Mob AI active
|
|
115
|
+
|
|
116
|
+
Connect to the server:
|
|
117
|
+
|
|
118
|
+
**Via Telnet:**
|
|
95
119
|
```bash
|
|
96
|
-
telnet localhost
|
|
120
|
+
telnet localhost 5000
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**Via SSH:**
|
|
124
|
+
```bash
|
|
125
|
+
ssh -p 2222 player@localhost
|
|
126
|
+
# Note: SSH username/password are ignored; MUD authentication happens after connection
|
|
97
127
|
```
|
|
98
128
|
|
|
99
129
|
## 🏗️ For Developers
|
|
@@ -131,7 +161,7 @@ python -m mud # Start development server
|
|
|
131
161
|
|
|
132
162
|
## 🏛️ Architecture
|
|
133
163
|
|
|
134
|
-
- **Async Networking**: Modern async/await
|
|
164
|
+
- **Async Networking**: Modern async/await with Telnet, WebSocket, and SSH servers
|
|
135
165
|
- **SQLAlchemy ORM**: Robust database layer with migrations
|
|
136
166
|
- **JSON World Data**: Human-readable area files with full ROM compatibility
|
|
137
167
|
- **Modular Design**: Clean separation of concerns (commands, world, networking)
|
|
@@ -234,3 +264,80 @@ telnet localhost 5000
|
|
|
234
264
|
The `mud/models` package defines dataclasses used by the game engine.
|
|
235
265
|
They mirror the JSON schemas in `schemas/` and supply enums and registries
|
|
236
266
|
for loading and manipulating area, room, object, and character data.
|
|
267
|
+
|
|
268
|
+
## Enhancement Opportunities
|
|
269
|
+
|
|
270
|
+
While the ROM 2.4 Python port provides a fully functional MUD with all major subsystems implemented, several areas offer opportunities for enhanced ROM parity and improved gameplay features. These partially implemented or simplified systems can be extended by future developers:
|
|
271
|
+
|
|
272
|
+
### Combat System Enhancements
|
|
273
|
+
|
|
274
|
+
- **Defense Stubs**: Basic defense calculations are implemented, but advanced ROM defense mechanics (dodge, parry, shield block) use simplified formulas that could be enhanced for full ROM parity
|
|
275
|
+
- **Special Attacks**: Core combat works, but special weapon attacks and combat maneuvers could be expanded
|
|
276
|
+
- **Damage Types**: Basic damage handling exists, but ROM's complex damage type interactions are simplified
|
|
277
|
+
|
|
278
|
+
### Skills and Spells System
|
|
279
|
+
|
|
280
|
+
- **Learning Percentages**: Skills can be learned and used, but the ROM skill improvement system with practice-based learning is partially implemented
|
|
281
|
+
- **Spell Components**: Basic spell casting works, but material component requirements and consumption are simplified
|
|
282
|
+
- **Skill Prerequisites**: Some skill dependencies and class restrictions could be more comprehensive
|
|
283
|
+
|
|
284
|
+
### Movement and Encumbrance
|
|
285
|
+
|
|
286
|
+
- **Weight Limits**: Basic encumbrance exists, but ROM's detailed weight penalties on movement and combat are simplified
|
|
287
|
+
- **Movement Lag**: Character movement works, but lag/wait state handling for movement restrictions could be enhanced
|
|
288
|
+
- **Terrain Effects**: Room sector types affect movement, but detailed terrain penalties are basic
|
|
289
|
+
|
|
290
|
+
### World Reset System
|
|
291
|
+
|
|
292
|
+
- **Reset Semantics**: Areas reset properly, but complex ROM reset conditions and dependencies are simplified
|
|
293
|
+
- **Population Limits**: Basic mob/object limits work, but advanced population control algorithms could be improved
|
|
294
|
+
- **Reset Timing**: Reset schedules function, but fine-grained timing controls are basic
|
|
295
|
+
|
|
296
|
+
### Economy and Shops
|
|
297
|
+
|
|
298
|
+
- **Shop Inventory**: Basic buying/selling works, but advanced shop inventory management and restocking is simplified
|
|
299
|
+
- **Economic Balance**: Price calculations exist, but ROM's complex economic balancing factors are basic
|
|
300
|
+
- **Barter System**: Simple transactions work, but advanced bartering mechanics could be enhanced
|
|
301
|
+
|
|
302
|
+
### Security and Authentication
|
|
303
|
+
|
|
304
|
+
- **Ban System**: Basic IP banning exists, but comprehensive ban management (subnet, time-based, etc.) is partial
|
|
305
|
+
- **Account Security**: Basic login security works, but advanced password policies and account protection could be enhanced
|
|
306
|
+
- **Admin Controls**: Core admin commands exist, but comprehensive administrative tools are basic
|
|
307
|
+
|
|
308
|
+
### Persistence and Data Integrity
|
|
309
|
+
|
|
310
|
+
- **Save Validation**: Character saving works, but comprehensive data validation and corruption detection is basic
|
|
311
|
+
- **Backup Systems**: Basic persistence exists, but automated backup and recovery systems could be enhanced
|
|
312
|
+
- **Data Migration**: Save/load works, but tools for data format migration and upgrades are minimal
|
|
313
|
+
|
|
314
|
+
### Communication Systems
|
|
315
|
+
|
|
316
|
+
- **Channel Management**: Basic channels work, but advanced channel administration and moderation tools are simplified
|
|
317
|
+
- **Tell System**: Private messaging works, but features like message history and blocking are basic
|
|
318
|
+
- **Emote System**: Basic emotes exist, but custom emote creation and management could be enhanced
|
|
319
|
+
|
|
320
|
+
### Builder Tools (OLC)
|
|
321
|
+
|
|
322
|
+
- **Online Creation**: Basic OLC exists, but comprehensive online building tools with validation are partial
|
|
323
|
+
- **Area Management**: Area editing works, but advanced area management and version control is basic
|
|
324
|
+
- **Builder Security**: Basic builder permissions exist, but comprehensive security and audit trails are simplified
|
|
325
|
+
|
|
326
|
+
### Performance and Monitoring
|
|
327
|
+
|
|
328
|
+
- **Metrics Collection**: Basic logging exists, but comprehensive performance monitoring and metrics are minimal
|
|
329
|
+
- **Resource Management**: Basic resource handling works, but advanced memory and CPU optimization could be enhanced
|
|
330
|
+
- **Diagnostics**: Error handling exists, but comprehensive diagnostic and debugging tools are basic
|
|
331
|
+
|
|
332
|
+
### Development Guidelines for Contributors
|
|
333
|
+
|
|
334
|
+
When enhancing these systems:
|
|
335
|
+
|
|
336
|
+
1. **ROM Parity First**: Always reference the original ROM 2.4 C sources in `src/` for canonical behavior
|
|
337
|
+
2. **Test Coverage**: Add comprehensive tests in `tests/` with golden files derived from ROM behavior
|
|
338
|
+
3. **Backward Compatibility**: Ensure changes don't break existing save files or area data
|
|
339
|
+
4. **Documentation**: Update relevant docs in `doc/` and inline code documentation
|
|
340
|
+
5. **Performance**: Consider the impact on the main game loop and player experience
|
|
341
|
+
6. **Configuration**: Make enhancements configurable where possible to support different playstyles
|
|
342
|
+
|
|
343
|
+
Each enhancement should maintain the MUD's core functionality while adding the specific ROM behaviors that make the game authentic to the original experience.
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/quickmud)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
7
|
+
|
|
8
|
+
**QuickMUD is a modern Python port of the legendary ROM 2.4b6 MUD engine**, derived from ROM 2.4b6, Merc 2.1 and DikuMUD. This is a complete rewrite that brings the classic text-based MMORPG experience to modern Python with async networking, JSON world data, and comprehensive testing.
|
|
9
|
+
|
|
10
|
+
## 🎮 What is a MUD?
|
|
11
|
+
|
|
12
|
+
A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-based MMORPG that runs over telnet. ROM is renowned for its fast-paced combat system and rich player interaction. ROM was also the foundation for [Carrion Fields](http://www.carrionfields.net/), one of the most acclaimed MUDs ever created.
|
|
13
|
+
|
|
14
|
+
## ✨ Key Features
|
|
15
|
+
|
|
16
|
+
- **🚀 Modern Python Architecture**: Fully async/await networking with SQLAlchemy ORM
|
|
17
|
+
- **📡 Multiple Connection Options**: Telnet, WebSocket, and SSH server support
|
|
18
|
+
- **🗺️ JSON World Loading**: Easy-to-edit world data with 352+ room resets
|
|
19
|
+
- **🏪 Complete Shop System**: Buy, sell, and list items with working economy
|
|
20
|
+
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
21
|
+
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
22
|
+
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
23
|
+
- **📊 100% Test Coverage**: 200+ tests ensure reliability and stability
|
|
24
|
+
|
|
25
|
+
## 📦 Installation
|
|
26
|
+
|
|
27
|
+
### For Players & Server Operators
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install quickmud
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Quick Start
|
|
34
|
+
|
|
35
|
+
Run a QuickMUD server:
|
|
36
|
+
|
|
37
|
+
**Telnet Server (port 5000):**
|
|
38
|
+
```bash
|
|
39
|
+
python3 -m mud socketserver
|
|
40
|
+
# or
|
|
41
|
+
mud socketserver
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
**WebSocket Server (port 8000):**
|
|
45
|
+
```bash
|
|
46
|
+
python3 -m mud websocketserver
|
|
47
|
+
# or
|
|
48
|
+
mud websocketserver
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
**SSH Server (port 2222):**
|
|
52
|
+
```bash
|
|
53
|
+
python3 -m mud sshserver
|
|
54
|
+
# or
|
|
55
|
+
mud sshserver
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
All servers provide:
|
|
59
|
+
- ✓ Game tick running at 4 Hz
|
|
60
|
+
- ✓ Time advancement
|
|
61
|
+
- ✓ Mob AI active
|
|
62
|
+
|
|
63
|
+
Connect to the server:
|
|
64
|
+
|
|
65
|
+
**Via Telnet:**
|
|
66
|
+
```bash
|
|
67
|
+
telnet localhost 5000
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
**Via SSH:**
|
|
71
|
+
```bash
|
|
72
|
+
ssh -p 2222 player@localhost
|
|
73
|
+
# Note: SSH username/password are ignored; MUD authentication happens after connection
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
## 🏗️ For Developers
|
|
77
|
+
|
|
78
|
+
## 🏗️ For Developers
|
|
79
|
+
|
|
80
|
+
### Development Installation
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
git clone https://github.com/Nostoi/rom24-quickmud-python.git
|
|
84
|
+
cd rom24-quickmud-python
|
|
85
|
+
python -m venv venv
|
|
86
|
+
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
87
|
+
pip install -e .[dev]
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### Running Tests
|
|
91
|
+
|
|
92
|
+
```bash
|
|
93
|
+
pytest # Run all 200 tests (should complete in ~16 seconds)
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
### Development Server
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
python -m mud # Start development server
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
## 🎯 Project Status
|
|
103
|
+
|
|
104
|
+
- **Version**: 1.2.0 (Production Ready)
|
|
105
|
+
- **Test Coverage**: 200/200 tests passing (100% success rate)
|
|
106
|
+
- **Performance**: Full test suite completes in ~16 seconds
|
|
107
|
+
- **Compatibility**: Python 3.10+, cross-platform
|
|
108
|
+
|
|
109
|
+
## 🏛️ Architecture
|
|
110
|
+
|
|
111
|
+
- **Async Networking**: Modern async/await with Telnet, WebSocket, and SSH servers
|
|
112
|
+
- **SQLAlchemy ORM**: Robust database layer with migrations
|
|
113
|
+
- **JSON World Data**: Human-readable area files with full ROM compatibility
|
|
114
|
+
- **Modular Design**: Clean separation of concerns (commands, world, networking)
|
|
115
|
+
- **Type Safety**: Comprehensive type hints throughout codebase
|
|
116
|
+
|
|
117
|
+
## 📜 License
|
|
118
|
+
|
|
119
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
120
|
+
|
|
121
|
+
## 🤝 Contributing
|
|
122
|
+
|
|
123
|
+
Contributions are welcome! Please read our [Contributing Guidelines](CONTRIBUTING.md) and feel free to submit pull requests.
|
|
124
|
+
|
|
125
|
+
## 📚 Documentation
|
|
126
|
+
|
|
127
|
+
- [Installation Guide](docs/installation.md)
|
|
128
|
+
- [Configuration](docs/configuration.md)
|
|
129
|
+
- [World Building](docs/world-building.md)
|
|
130
|
+
- [API Reference](docs/api.md)
|
|
131
|
+
|
|
132
|
+
---
|
|
133
|
+
|
|
134
|
+
**Experience the classic MUD gameplay with modern Python reliability!** 🐍✨
|
|
135
|
+
|
|
136
|
+
For a fully reproducible environment, use the pinned requirements files generated with [pip-tools](https://github.com/jazzband/pip-tools):
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
pip install -r requirements-dev.txt
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
To update the pinned dependencies:
|
|
143
|
+
|
|
144
|
+
```bash
|
|
145
|
+
pip-compile requirements.in
|
|
146
|
+
pip-compile requirements-dev.in
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Tools like [Poetry](https://python-poetry.org/) provide a similar workflow if you prefer that approach.
|
|
150
|
+
|
|
151
|
+
Run tests with:
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
pytest
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
### Publishing
|
|
158
|
+
|
|
159
|
+
To release a new version to PyPI:
|
|
160
|
+
|
|
161
|
+
1. Update the version in `pyproject.toml`.
|
|
162
|
+
2. Commit and tag:
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
git commit -am "release: v1.2.3"
|
|
166
|
+
git tag v1.2.3
|
|
167
|
+
git push origin main --tags
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
The GitHub Actions workflow will build and publish the package when the tag is pushed.
|
|
171
|
+
|
|
172
|
+
## Python Architecture
|
|
173
|
+
|
|
174
|
+
Game systems are implemented in Python modules:
|
|
175
|
+
|
|
176
|
+
- `mud/net` provides asynchronous telnet and websocket servers.
|
|
177
|
+
- `mud/game_loop.py` drives the tick-based update loop.
|
|
178
|
+
- `mud/commands` contains the command dispatcher and handlers.
|
|
179
|
+
- `mud/combat` and `mud/skills` implement combat and abilities.
|
|
180
|
+
- `mud/persistence.py` handles saving characters and world state.
|
|
181
|
+
|
|
182
|
+
Start the server with:
|
|
183
|
+
|
|
184
|
+
```sh
|
|
185
|
+
python -m mud runserver
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Docker Image
|
|
189
|
+
|
|
190
|
+
Build and run the Python server with Docker:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
docker build -t quickmud .
|
|
194
|
+
docker run -p 5000:5000 quickmud
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
Or use docker-compose to rebuild on changes and mount the repository:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
docker-compose up
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
Connect via:
|
|
204
|
+
|
|
205
|
+
```bash
|
|
206
|
+
telnet localhost 5000
|
|
207
|
+
```
|
|
208
|
+
|
|
209
|
+
## Data Models
|
|
210
|
+
|
|
211
|
+
The `mud/models` package defines dataclasses used by the game engine.
|
|
212
|
+
They mirror the JSON schemas in `schemas/` and supply enums and registries
|
|
213
|
+
for loading and manipulating area, room, object, and character data.
|
|
214
|
+
|
|
215
|
+
## Enhancement Opportunities
|
|
216
|
+
|
|
217
|
+
While the ROM 2.4 Python port provides a fully functional MUD with all major subsystems implemented, several areas offer opportunities for enhanced ROM parity and improved gameplay features. These partially implemented or simplified systems can be extended by future developers:
|
|
218
|
+
|
|
219
|
+
### Combat System Enhancements
|
|
220
|
+
|
|
221
|
+
- **Defense Stubs**: Basic defense calculations are implemented, but advanced ROM defense mechanics (dodge, parry, shield block) use simplified formulas that could be enhanced for full ROM parity
|
|
222
|
+
- **Special Attacks**: Core combat works, but special weapon attacks and combat maneuvers could be expanded
|
|
223
|
+
- **Damage Types**: Basic damage handling exists, but ROM's complex damage type interactions are simplified
|
|
224
|
+
|
|
225
|
+
### Skills and Spells System
|
|
226
|
+
|
|
227
|
+
- **Learning Percentages**: Skills can be learned and used, but the ROM skill improvement system with practice-based learning is partially implemented
|
|
228
|
+
- **Spell Components**: Basic spell casting works, but material component requirements and consumption are simplified
|
|
229
|
+
- **Skill Prerequisites**: Some skill dependencies and class restrictions could be more comprehensive
|
|
230
|
+
|
|
231
|
+
### Movement and Encumbrance
|
|
232
|
+
|
|
233
|
+
- **Weight Limits**: Basic encumbrance exists, but ROM's detailed weight penalties on movement and combat are simplified
|
|
234
|
+
- **Movement Lag**: Character movement works, but lag/wait state handling for movement restrictions could be enhanced
|
|
235
|
+
- **Terrain Effects**: Room sector types affect movement, but detailed terrain penalties are basic
|
|
236
|
+
|
|
237
|
+
### World Reset System
|
|
238
|
+
|
|
239
|
+
- **Reset Semantics**: Areas reset properly, but complex ROM reset conditions and dependencies are simplified
|
|
240
|
+
- **Population Limits**: Basic mob/object limits work, but advanced population control algorithms could be improved
|
|
241
|
+
- **Reset Timing**: Reset schedules function, but fine-grained timing controls are basic
|
|
242
|
+
|
|
243
|
+
### Economy and Shops
|
|
244
|
+
|
|
245
|
+
- **Shop Inventory**: Basic buying/selling works, but advanced shop inventory management and restocking is simplified
|
|
246
|
+
- **Economic Balance**: Price calculations exist, but ROM's complex economic balancing factors are basic
|
|
247
|
+
- **Barter System**: Simple transactions work, but advanced bartering mechanics could be enhanced
|
|
248
|
+
|
|
249
|
+
### Security and Authentication
|
|
250
|
+
|
|
251
|
+
- **Ban System**: Basic IP banning exists, but comprehensive ban management (subnet, time-based, etc.) is partial
|
|
252
|
+
- **Account Security**: Basic login security works, but advanced password policies and account protection could be enhanced
|
|
253
|
+
- **Admin Controls**: Core admin commands exist, but comprehensive administrative tools are basic
|
|
254
|
+
|
|
255
|
+
### Persistence and Data Integrity
|
|
256
|
+
|
|
257
|
+
- **Save Validation**: Character saving works, but comprehensive data validation and corruption detection is basic
|
|
258
|
+
- **Backup Systems**: Basic persistence exists, but automated backup and recovery systems could be enhanced
|
|
259
|
+
- **Data Migration**: Save/load works, but tools for data format migration and upgrades are minimal
|
|
260
|
+
|
|
261
|
+
### Communication Systems
|
|
262
|
+
|
|
263
|
+
- **Channel Management**: Basic channels work, but advanced channel administration and moderation tools are simplified
|
|
264
|
+
- **Tell System**: Private messaging works, but features like message history and blocking are basic
|
|
265
|
+
- **Emote System**: Basic emotes exist, but custom emote creation and management could be enhanced
|
|
266
|
+
|
|
267
|
+
### Builder Tools (OLC)
|
|
268
|
+
|
|
269
|
+
- **Online Creation**: Basic OLC exists, but comprehensive online building tools with validation are partial
|
|
270
|
+
- **Area Management**: Area editing works, but advanced area management and version control is basic
|
|
271
|
+
- **Builder Security**: Basic builder permissions exist, but comprehensive security and audit trails are simplified
|
|
272
|
+
|
|
273
|
+
### Performance and Monitoring
|
|
274
|
+
|
|
275
|
+
- **Metrics Collection**: Basic logging exists, but comprehensive performance monitoring and metrics are minimal
|
|
276
|
+
- **Resource Management**: Basic resource handling works, but advanced memory and CPU optimization could be enhanced
|
|
277
|
+
- **Diagnostics**: Error handling exists, but comprehensive diagnostic and debugging tools are basic
|
|
278
|
+
|
|
279
|
+
### Development Guidelines for Contributors
|
|
280
|
+
|
|
281
|
+
When enhancing these systems:
|
|
282
|
+
|
|
283
|
+
1. **ROM Parity First**: Always reference the original ROM 2.4 C sources in `src/` for canonical behavior
|
|
284
|
+
2. **Test Coverage**: Add comprehensive tests in `tests/` with golden files derived from ROM behavior
|
|
285
|
+
3. **Backward Compatibility**: Ensure changes don't break existing save files or area data
|
|
286
|
+
4. **Documentation**: Update relevant docs in `doc/` and inline code documentation
|
|
287
|
+
5. **Performance**: Consider the impact on the main game loop and player experience
|
|
288
|
+
6. **Configuration**: Make enhancements configurable where possible to support different playstyles
|
|
289
|
+
|
|
290
|
+
Each enhancement should maintain the MUD's core functionality while adding the specific ROM behaviors that make the game authentic to the original experience.
|
|
@@ -2854,7 +2854,7 @@ gem W AO
|
|
|
2854
2854
|
0 1 2000 P
|
|
2855
2855
|
#0
|
|
2856
2856
|
|
|
2857
|
-
#
|
|
2857
|
+
#
|
|
2858
2858
|
#3001
|
|
2859
2859
|
The Temple Of Mota~
|
|
2860
2860
|
You are in the southern end of the temple hall in the Temple of Mota.
|
|
@@ -2865,7 +2865,7 @@ picturing gods, giants and peasants.
|
|
|
2865
2865
|
mound upon which the temple is built and ends on the temple square below.
|
|
2866
2866
|
Equally large steps lead UP through a small door into the ENTRANCE to MUD
|
|
2867
2867
|
SCHOOL. (type 'up' to go to MUD SCHOOL.) A small plaque is on this wall.
|
|
2868
|
-
~
|
|
2868
|
+
~ROOMS
|
|
2869
2869
|
0 CDS 0
|
|
2870
2870
|
D0
|
|
2871
2871
|
At the northern end of the temple hall is a statue and a huge altar.
|
|
@@ -1,4 +1,33 @@
|
|
|
1
|
-
[
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"level": -1,
|
|
4
|
+
"keywords": [
|
|
5
|
+
"GREETING"
|
|
6
|
+
],
|
|
7
|
+
"text": ".{WTHIS IS A MUD BASED ON.....{x\n\n{C ROM Version 2.4 beta{x\n\n Original DikuMUD by Hans Staerfeldt, Katja Nyboe,\n Tom Madsen, Michael Seifert, and Sebastian Hammer\n Based on MERC 2.1 code by Hatchet, Furey, and Kahn\n ROM 2.4 copyright (c) 1993-1998 Russ Taylor\n\nBy what name do you wish to be known?"
|
|
8
|
+
},
|
|
9
|
+
{
|
|
10
|
+
"level": -1,
|
|
11
|
+
"keywords": [
|
|
12
|
+
"MOTD"
|
|
13
|
+
],
|
|
14
|
+
"text": "You are responsible for knowing the rules (type 'rules'). Ignorance of\n the rules is no excuse.\n* Important commands: help, commands, news, notes\n* Use the delete command to erase unwanted characters"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"level": 52,
|
|
18
|
+
"keywords": [
|
|
19
|
+
"IMOTD"
|
|
20
|
+
],
|
|
21
|
+
"text": "Welcome Immortal!\n\nYou are responsible for following the laws of immortal behavior. These can\nbe found by typing 'help laws' or 'help commandments'.\n\n* Excessive loading is not allowed, and is grounds for deletion.\n* Asking for promotion is grounds for instant deletion.\n* Type 'help jobs' to get some idea of what you should be doing."
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
"level": 0,
|
|
25
|
+
"keywords": [
|
|
26
|
+
"NEWBIE INFO",
|
|
27
|
+
"NEWBIE"
|
|
28
|
+
],
|
|
29
|
+
"text": "Ah! Another mortal, seeking adventure. You should go through mudschool first,\nto gain experience to face the trials outside. Be sure to practice a weapon\nin the guild room, or your stay with us shall be very short indeed. Type\n'equipment' to see what your are wielding, 'spells' to see your spells,\n'skills' to see your skills, and 'commands' for a list of commands. Help is\navailable on most commands and abilities.\n\nPlease type 'help rules' to see the Rules of ROM."
|
|
30
|
+
},
|
|
2
31
|
{
|
|
3
32
|
"level": 0,
|
|
4
33
|
"keywords": [
|
|
@@ -407,6 +436,22 @@
|
|
|
407
436
|
],
|
|
408
437
|
"text": "Syntax: consider <character>\n\nCONSIDER tells you what your chances are of killing a character.\nOf course, it's only a rough estimate."
|
|
409
438
|
},
|
|
439
|
+
{
|
|
440
|
+
"level": -1,
|
|
441
|
+
"keywords": [
|
|
442
|
+
"GROUP HEADER"
|
|
443
|
+
],
|
|
444
|
+
"text": "The following skills and groups are available to your chacter:\n(this list may be seen again by typing list)"
|
|
445
|
+
},
|
|
446
|
+
|
|
447
|
+
{
|
|
448
|
+
"level": -1,
|
|
449
|
+
"keywords": [
|
|
450
|
+
"MENU CHOICE"
|
|
451
|
+
],
|
|
452
|
+
"text": "Choice (add,drop,list,help)?"
|
|
453
|
+
},
|
|
454
|
+
|
|
410
455
|
{
|
|
411
456
|
"level": 0,
|
|
412
457
|
"keywords": [
|