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.
Files changed (562) hide show
  1. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/CHANGELOG.md +52 -10
  2. {rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.0.0}/PKG-INFO +113 -6
  3. rom24_quickmud_python-2.0.0/README.md +290 -0
  4. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/midgaard.are +2 -2
  5. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/help.json +46 -1
  6. rom24_quickmud_python-2.0.0/data/players/sleeper.json +260 -0
  7. rom24_quickmud_python-2.0.0/data/players/trouble.json +260 -0
  8. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/time.json +1 -1
  9. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/__main__.py +19 -1
  10. rom24_quickmud_python-2.0.0/mud/account/__init__.py +60 -0
  11. rom24_quickmud_python-2.0.0/mud/account/account_manager.py +92 -0
  12. rom24_quickmud_python-2.0.0/mud/account/account_service.py +1009 -0
  13. rom24_quickmud_python-2.0.0/mud/admin_logging/admin.py +167 -0
  14. {rom24_quickmud_python-1.2.2/mud/logging → rom24_quickmud_python-2.0.0/mud/admin_logging}/agent_trace.py +3 -3
  15. rom24_quickmud_python-2.0.0/mud/advancement.py +202 -0
  16. rom24_quickmud_python-2.0.0/mud/affects/engine.py +32 -0
  17. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/affects/saves.py +46 -5
  18. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/agent/agent_protocol.py +3 -4
  19. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/agent/character_agent.py +16 -9
  20. rom24_quickmud_python-2.0.0/mud/ai/__init__.py +374 -0
  21. rom24_quickmud_python-2.0.0/mud/ai/aggressive.py +119 -0
  22. rom24_quickmud_python-2.0.0/mud/characters/__init__.py +56 -0
  23. rom24_quickmud_python-2.0.0/mud/characters/conditions.py +58 -0
  24. rom24_quickmud_python-2.0.0/mud/characters/follow.py +70 -0
  25. rom24_quickmud_python-2.0.0/mud/combat/__init__.py +6 -0
  26. rom24_quickmud_python-2.0.0/mud/combat/death.py +593 -0
  27. rom24_quickmud_python-2.0.0/mud/combat/engine.py +1489 -0
  28. rom24_quickmud_python-2.0.0/mud/combat/kill_table.py +48 -0
  29. rom24_quickmud_python-2.0.0/mud/combat/messages.py +182 -0
  30. rom24_quickmud_python-2.0.0/mud/commands/admin_commands.py +497 -0
  31. rom24_quickmud_python-2.0.0/mud/commands/advancement.py +216 -0
  32. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/alias_cmds.py +23 -3
  33. rom24_quickmud_python-2.0.0/mud/commands/build.py +1117 -0
  34. rom24_quickmud_python-2.0.0/mud/commands/combat.py +544 -0
  35. rom24_quickmud_python-2.0.0/mud/commands/communication.py +513 -0
  36. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/decorators.py +2 -0
  37. rom24_quickmud_python-2.0.0/mud/commands/dispatcher.py +496 -0
  38. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/healer.py +1 -4
  39. rom24_quickmud_python-2.0.0/mud/commands/help.py +333 -0
  40. rom24_quickmud_python-2.0.0/mud/commands/imc.py +397 -0
  41. rom24_quickmud_python-2.0.0/mud/commands/info.py +75 -0
  42. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/inspection.py +6 -3
  43. rom24_quickmud_python-2.0.0/mud/commands/inventory.py +132 -0
  44. rom24_quickmud_python-2.0.0/mud/commands/mobprog_tools.py +124 -0
  45. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/movement.py +37 -21
  46. rom24_quickmud_python-2.0.0/mud/commands/notes.py +469 -0
  47. rom24_quickmud_python-2.0.0/mud/commands/shop.py +990 -0
  48. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/socials.py +1 -1
  49. rom24_quickmud_python-2.0.0/mud/config.py +223 -0
  50. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/init.py +8 -7
  51. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/migrate_from_files.py +4 -3
  52. rom24_quickmud_python-2.0.0/mud/db/migrations.py +29 -0
  53. rom24_quickmud_python-2.0.0/mud/db/models.py +139 -0
  54. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/seed.py +1 -1
  55. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/db/session.py +1 -0
  56. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/devtools/agent_demo.py +2 -2
  57. rom24_quickmud_python-2.0.0/mud/game_loop.py +1009 -0
  58. rom24_quickmud_python-2.0.0/mud/game_tick_scheduler.py +51 -0
  59. rom24_quickmud_python-2.0.0/mud/groups/__init__.py +5 -0
  60. rom24_quickmud_python-2.0.0/mud/groups/xp.py +258 -0
  61. rom24_quickmud_python-2.0.0/mud/imc/__init__.py +1161 -0
  62. rom24_quickmud_python-2.0.0/mud/imc/commands.py +149 -0
  63. rom24_quickmud_python-2.0.0/mud/imc/network.py +98 -0
  64. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/imc/protocol.py +3 -2
  65. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/__init__.py +9 -6
  66. rom24_quickmud_python-2.0.0/mud/loaders/area_loader.py +185 -0
  67. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/base_loader.py +6 -5
  68. rom24_quickmud_python-2.0.0/mud/loaders/help_loader.py +74 -0
  69. rom24_quickmud_python-2.0.0/mud/loaders/json_area_loader.py +244 -0
  70. rom24_quickmud_python-2.0.0/mud/loaders/json_loader.py +537 -0
  71. rom24_quickmud_python-2.0.0/mud/loaders/mob_loader.py +187 -0
  72. rom24_quickmud_python-2.0.0/mud/loaders/mobprog_loader.py +26 -0
  73. rom24_quickmud_python-2.0.0/mud/loaders/obj_loader.py +479 -0
  74. rom24_quickmud_python-2.0.0/mud/loaders/reset_loader.py +157 -0
  75. rom24_quickmud_python-2.0.0/mud/loaders/room_loader.py +120 -0
  76. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/shop_loader.py +4 -2
  77. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/social_loader.py +1 -1
  78. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/loaders/specials_loader.py +22 -11
  79. rom24_quickmud_python-2.0.0/mud/logging.py +20 -0
  80. rom24_quickmud_python-2.0.0/mud/magic/__init__.py +19 -0
  81. rom24_quickmud_python-2.0.0/mud/magic/effects.py +86 -0
  82. rom24_quickmud_python-2.0.0/mud/mob_cmds.py +1101 -0
  83. rom24_quickmud_python-2.0.0/mud/mobprog.py +1554 -0
  84. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/__init__.py +43 -34
  85. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/area.py +10 -8
  86. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/area_json.py +8 -7
  87. rom24_quickmud_python-2.0.0/mud/models/board.py +156 -0
  88. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/board_json.py +6 -2
  89. rom24_quickmud_python-2.0.0/mud/models/character.py +982 -0
  90. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/character_json.py +9 -7
  91. rom24_quickmud_python-2.0.0/mud/models/clans.py +83 -0
  92. rom24_quickmud_python-2.0.0/mud/models/classes.py +112 -0
  93. rom24_quickmud_python-2.0.0/mud/models/constants.py +997 -0
  94. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/conversion.py +5 -6
  95. rom24_quickmud_python-2.0.0/mud/models/help.py +44 -0
  96. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/json_io.py +4 -4
  97. rom24_quickmud_python-2.0.0/mud/models/mob.py +110 -0
  98. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/note.py +3 -1
  99. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/note_json.py +1 -0
  100. rom24_quickmud_python-2.0.0/mud/models/obj.py +94 -0
  101. rom24_quickmud_python-2.0.0/mud/models/object.py +59 -0
  102. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/object_json.py +9 -7
  103. rom24_quickmud_python-2.0.0/mud/models/player_json.py +52 -0
  104. rom24_quickmud_python-2.0.0/mud/models/races.py +534 -0
  105. rom24_quickmud_python-2.0.0/mud/models/room.py +106 -0
  106. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/room_json.py +15 -12
  107. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/shop.py +1 -1
  108. rom24_quickmud_python-2.0.0/mud/models/skill.py +54 -0
  109. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/skill_json.py +7 -1
  110. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/social.py +26 -5
  111. rom24_quickmud_python-2.0.0/mud/music/__init__.py +161 -0
  112. rom24_quickmud_python-2.0.0/mud/net/__init__.py +9 -0
  113. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/net/ansi.py +13 -0
  114. rom24_quickmud_python-2.0.0/mud/net/connection.py +1846 -0
  115. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/net/protocol.py +39 -5
  116. rom24_quickmud_python-2.0.0/mud/net/session.py +165 -0
  117. rom24_quickmud_python-2.0.0/mud/net/ssh_server.py +327 -0
  118. rom24_quickmud_python-2.0.0/mud/net/telnet_server.py +45 -0
  119. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/network/websocket_server.py +20 -14
  120. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/network/websocket_session.py +6 -3
  121. rom24_quickmud_python-2.0.0/mud/notes.py +97 -0
  122. rom24_quickmud_python-2.0.0/mud/persistence.py +812 -0
  123. rom24_quickmud_python-2.0.0/mud/registry.py +12 -0
  124. rom24_quickmud_python-2.0.0/mud/scripts/convert_are_to_json.py +217 -0
  125. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_help_are_to_json.py +7 -6
  126. rom24_quickmud_python-2.0.0/mud/scripts/convert_player_to_json.py +258 -0
  127. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_shops_to_json.py +3 -5
  128. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_skills_to_json.py +44 -53
  129. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/convert_social_are_to_json.py +6 -7
  130. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/scripts/load_test_data.py +1 -2
  131. rom24_quickmud_python-2.0.0/mud/security/bans.py +309 -0
  132. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/server.py +3 -2
  133. rom24_quickmud_python-2.0.0/mud/skills/__init__.py +15 -0
  134. rom24_quickmud_python-2.0.0/mud/skills/groups.py +337 -0
  135. rom24_quickmud_python-2.0.0/mud/skills/handlers.py +6857 -0
  136. rom24_quickmud_python-2.0.0/mud/skills/metadata.py +160 -0
  137. rom24_quickmud_python-2.0.0/mud/skills/registry.py +381 -0
  138. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/spawning/mob_spawner.py +2 -2
  139. rom24_quickmud_python-2.0.0/mud/spawning/obj_spawner.py +73 -0
  140. rom24_quickmud_python-2.0.0/mud/spawning/reset_handler.py +822 -0
  141. rom24_quickmud_python-2.0.0/mud/spawning/templates.py +462 -0
  142. rom24_quickmud_python-2.0.0/mud/spec_funs.py +1451 -0
  143. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/time.py +5 -3
  144. rom24_quickmud_python-2.0.0/mud/utils/act.py +168 -0
  145. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/utils/rng_mm.py +30 -13
  146. rom24_quickmud_python-2.0.0/mud/utils/text.py +115 -0
  147. rom24_quickmud_python-2.0.0/mud/wiznet.py +267 -0
  148. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/__init__.py +2 -2
  149. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/linking.py +3 -1
  150. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/look.py +15 -5
  151. rom24_quickmud_python-2.0.0/mud/world/movement.py +580 -0
  152. rom24_quickmud_python-2.0.0/mud/world/vision.py +332 -0
  153. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/world/world_state.py +92 -27
  154. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/pyproject.toml +66 -1
  155. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0/rom24_quickmud_python.egg-info}/PKG-INFO +113 -6
  156. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/SOURCES.txt +81 -4
  157. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/requires.txt +1 -0
  158. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/conftest.py +24 -10
  159. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/helpers.py +6 -7
  160. rom24_quickmud_python-2.0.0/tests/integration/test_pilot_integration.py +140 -0
  161. rom24_quickmud_python-2.0.0/tests/test_account_auth.py +2669 -0
  162. rom24_quickmud_python-2.0.0/tests/test_admin_commands.py +610 -0
  163. rom24_quickmud_python-2.0.0/tests/test_advancement.py +397 -0
  164. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_affects.py +225 -16
  165. rom24_quickmud_python-2.0.0/tests/test_agent_interface.py +27 -0
  166. rom24_quickmud_python-2.0.0/tests/test_alias_parity.py +227 -0
  167. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_are_conversion.py +6 -5
  168. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_area_counts.py +1 -1
  169. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_area_exits.py +2 -3
  170. rom24_quickmud_python-2.0.0/tests/test_area_loader.py +1140 -0
  171. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_area_specials.py +18 -12
  172. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_bans.py +14 -2
  173. rom24_quickmud_python-2.0.0/tests/test_boards.py +813 -0
  174. rom24_quickmud_python-2.0.0/tests/test_building.py +569 -0
  175. rom24_quickmud_python-2.0.0/tests/test_combat.py +738 -0
  176. rom24_quickmud_python-2.0.0/tests/test_combat_death.py +723 -0
  177. rom24_quickmud_python-2.0.0/tests/test_combat_defenses_prob.py +57 -0
  178. rom24_quickmud_python-2.0.0/tests/test_combat_messages.py +30 -0
  179. rom24_quickmud_python-2.0.0/tests/test_combat_rom_parity.py +239 -0
  180. rom24_quickmud_python-2.0.0/tests/test_combat_skills.py +102 -0
  181. rom24_quickmud_python-2.0.0/tests/test_combat_state.py +100 -0
  182. rom24_quickmud_python-2.0.0/tests/test_combat_thac0_engine.py +107 -0
  183. rom24_quickmud_python-2.0.0/tests/test_command_abbrev.py +22 -0
  184. rom24_quickmud_python-2.0.0/tests/test_commands.py +412 -0
  185. rom24_quickmud_python-2.0.0/tests/test_communication.py +489 -0
  186. rom24_quickmud_python-2.0.0/tests/test_connection_motd.py +110 -0
  187. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_convert_are_to_json_cli.py +0 -2
  188. rom24_quickmud_python-2.0.0/tests/test_damage_reduction.py +208 -0
  189. rom24_quickmud_python-2.0.0/tests/test_damage_reduction_integration.py +166 -0
  190. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_db_seed.py +3 -8
  191. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_defense_flags.py +0 -1
  192. rom24_quickmud_python-2.0.0/tests/test_encumbrance.py +155 -0
  193. rom24_quickmud_python-2.0.0/tests/test_enter_portal.py +20 -0
  194. rom24_quickmud_python-2.0.0/tests/test_fighting_state.py +243 -0
  195. rom24_quickmud_python-2.0.0/tests/test_game_loop.py +598 -0
  196. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_game_loop_order.py +10 -7
  197. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_game_loop_wait_daze.py +11 -5
  198. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_healer.py +18 -19
  199. rom24_quickmud_python-2.0.0/tests/test_healer_parity.py +197 -0
  200. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_help_conversion.py +0 -1
  201. rom24_quickmud_python-2.0.0/tests/test_help_system.py +358 -0
  202. rom24_quickmud_python-2.0.0/tests/test_imc.py +1311 -0
  203. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_inventory_persistence.py +9 -10
  204. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_json_io.py +1 -1
  205. rom24_quickmud_python-2.0.0/tests/test_json_room_fields.py +69 -0
  206. rom24_quickmud_python-2.0.0/tests/test_load_midgaard.py +18 -0
  207. rom24_quickmud_python-2.0.0/tests/test_logging_admin.py +317 -0
  208. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_logging_rotation.py +25 -21
  209. rom24_quickmud_python-2.0.0/tests/test_mobprog.py +78 -0
  210. rom24_quickmud_python-2.0.0/tests/test_mobprog_commands.py +631 -0
  211. rom24_quickmud_python-2.0.0/tests/test_mobprog_triggers.py +471 -0
  212. rom24_quickmud_python-2.0.0/tests/test_movement.py +51 -0
  213. rom24_quickmud_python-2.0.0/tests/test_movement_charm.py +43 -0
  214. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_movement_costs.py +39 -6
  215. rom24_quickmud_python-2.0.0/tests/test_movement_doors.py +68 -0
  216. rom24_quickmud_python-2.0.0/tests/test_movement_followers.py +132 -0
  217. rom24_quickmud_python-2.0.0/tests/test_movement_mobprog.py +42 -0
  218. rom24_quickmud_python-2.0.0/tests/test_movement_npc.py +20 -0
  219. rom24_quickmud_python-2.0.0/tests/test_movement_portals.py +139 -0
  220. rom24_quickmud_python-2.0.0/tests/test_movement_privacy.py +86 -0
  221. rom24_quickmud_python-2.0.0/tests/test_movement_visibility.py +129 -0
  222. rom24_quickmud_python-2.0.0/tests/test_music.py +93 -0
  223. rom24_quickmud_python-2.0.0/tests/test_networking_telnet.py +284 -0
  224. rom24_quickmud_python-2.0.0/tests/test_persistence.py +227 -0
  225. rom24_quickmud_python-2.0.0/tests/test_player_save_format.py +755 -0
  226. rom24_quickmud_python-2.0.0/tests/test_practice.py +55 -0
  227. rom24_quickmud_python-2.0.0/tests/test_reset_levels.py +48 -0
  228. rom24_quickmud_python-2.0.0/tests/test_resets.py +26 -0
  229. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_rng_dice.py +0 -1
  230. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_runtime_models.py +10 -10
  231. rom24_quickmud_python-2.0.0/tests/test_scan_parity.py +187 -0
  232. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_schema_validation.py +5 -1
  233. rom24_quickmud_python-2.0.0/tests/test_shops.py +1363 -0
  234. rom24_quickmud_python-2.0.0/tests/test_skills.py +934 -0
  235. rom24_quickmud_python-2.0.0/tests/test_skills_buffs.py +717 -0
  236. rom24_quickmud_python-2.0.0/tests/test_skills_combat.py +252 -0
  237. rom24_quickmud_python-2.0.0/tests/test_skills_conjuration.py +259 -0
  238. rom24_quickmud_python-2.0.0/tests/test_skills_damage.py +748 -0
  239. rom24_quickmud_python-2.0.0/tests/test_skills_debuffs.py +458 -0
  240. rom24_quickmud_python-2.0.0/tests/test_skills_detection.py +367 -0
  241. rom24_quickmud_python-2.0.0/tests/test_skills_healing.py +154 -0
  242. rom24_quickmud_python-2.0.0/tests/test_skills_identify.py +113 -0
  243. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_skills_learned.py +18 -9
  244. rom24_quickmud_python-2.0.0/tests/test_skills_mass.py +364 -0
  245. rom24_quickmud_python-2.0.0/tests/test_skills_misc.py +113 -0
  246. rom24_quickmud_python-2.0.0/tests/test_skills_transport.py +377 -0
  247. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_social_conversion.py +1 -2
  248. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_social_placeholders.py +1 -2
  249. rom24_quickmud_python-2.0.0/tests/test_spawning.py +1885 -0
  250. rom24_quickmud_python-2.0.0/tests/test_spec_funs.py +1494 -0
  251. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_spec_funs_extra.py +2 -3
  252. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_specials_loader_ext.py +2 -3
  253. rom24_quickmud_python-2.0.0/tests/test_spells_basic.py +69 -0
  254. rom24_quickmud_python-2.0.0/tests/test_spells_damage.py +129 -0
  255. rom24_quickmud_python-2.0.0/tests/test_telnet_server.py +626 -0
  256. rom24_quickmud_python-2.0.0/tests/test_time_daynight.py +125 -0
  257. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_time_persistence.py +2 -2
  258. rom24_quickmud_python-2.0.0/tests/test_weapon_damage.py +135 -0
  259. rom24_quickmud_python-2.0.0/tests/test_weapon_special_attacks.py +270 -0
  260. rom24_quickmud_python-2.0.0/tests/test_wiznet.py +945 -0
  261. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_world.py +13 -12
  262. rom24_quickmud_python-1.2.2/README.md +0 -184
  263. rom24_quickmud_python-1.2.2/mud/account/__init__.py +0 -20
  264. rom24_quickmud_python-1.2.2/mud/account/account_manager.py +0 -62
  265. rom24_quickmud_python-1.2.2/mud/account/account_service.py +0 -80
  266. rom24_quickmud_python-1.2.2/mud/advancement.py +0 -62
  267. rom24_quickmud_python-1.2.2/mud/combat/__init__.py +0 -3
  268. rom24_quickmud_python-1.2.2/mud/combat/engine.py +0 -189
  269. rom24_quickmud_python-1.2.2/mud/commands/admin_commands.py +0 -77
  270. rom24_quickmud_python-1.2.2/mud/commands/advancement.py +0 -36
  271. rom24_quickmud_python-1.2.2/mud/commands/build.py +0 -18
  272. rom24_quickmud_python-1.2.2/mud/commands/combat.py +0 -16
  273. rom24_quickmud_python-1.2.2/mud/commands/communication.py +0 -55
  274. rom24_quickmud_python-1.2.2/mud/commands/dispatcher.py +0 -206
  275. rom24_quickmud_python-1.2.2/mud/commands/help.py +0 -14
  276. rom24_quickmud_python-1.2.2/mud/commands/imc.py +0 -19
  277. rom24_quickmud_python-1.2.2/mud/commands/inventory.py +0 -42
  278. rom24_quickmud_python-1.2.2/mud/commands/notes.py +0 -44
  279. rom24_quickmud_python-1.2.2/mud/commands/shop.py +0 -138
  280. rom24_quickmud_python-1.2.2/mud/config.py +0 -59
  281. rom24_quickmud_python-1.2.2/mud/db/migrations.py +0 -7
  282. rom24_quickmud_python-1.2.2/mud/db/models.py +0 -98
  283. rom24_quickmud_python-1.2.2/mud/game_loop.py +0 -117
  284. rom24_quickmud_python-1.2.2/mud/imc/__init__.py +0 -17
  285. rom24_quickmud_python-1.2.2/mud/loaders/area_loader.py +0 -73
  286. rom24_quickmud_python-1.2.2/mud/loaders/help_loader.py +0 -17
  287. rom24_quickmud_python-1.2.2/mud/loaders/json_area_loader.py +0 -203
  288. rom24_quickmud_python-1.2.2/mud/loaders/json_loader.py +0 -285
  289. rom24_quickmud_python-1.2.2/mud/loaders/mob_loader.py +0 -104
  290. rom24_quickmud_python-1.2.2/mud/loaders/obj_loader.py +0 -76
  291. rom24_quickmud_python-1.2.2/mud/loaders/reset_loader.py +0 -29
  292. rom24_quickmud_python-1.2.2/mud/loaders/room_loader.py +0 -63
  293. rom24_quickmud_python-1.2.2/mud/logging/admin.py +0 -40
  294. rom24_quickmud_python-1.2.2/mud/mobprog.py +0 -72
  295. rom24_quickmud_python-1.2.2/mud/models/board.py +0 -49
  296. rom24_quickmud_python-1.2.2/mud/models/character.py +0 -195
  297. rom24_quickmud_python-1.2.2/mud/models/constants.py +0 -423
  298. rom24_quickmud_python-1.2.2/mud/models/help.py +0 -28
  299. rom24_quickmud_python-1.2.2/mud/models/mob.py +0 -82
  300. rom24_quickmud_python-1.2.2/mud/models/obj.py +0 -82
  301. rom24_quickmud_python-1.2.2/mud/models/object.py +0 -28
  302. rom24_quickmud_python-1.2.2/mud/models/player_json.py +0 -29
  303. rom24_quickmud_python-1.2.2/mud/models/room.py +0 -86
  304. rom24_quickmud_python-1.2.2/mud/models/skill.py +0 -25
  305. rom24_quickmud_python-1.2.2/mud/net/__init__.py +0 -9
  306. rom24_quickmud_python-1.2.2/mud/net/connection.py +0 -174
  307. rom24_quickmud_python-1.2.2/mud/net/session.py +0 -21
  308. rom24_quickmud_python-1.2.2/mud/net/telnet_server.py +0 -31
  309. rom24_quickmud_python-1.2.2/mud/notes.py +0 -45
  310. rom24_quickmud_python-1.2.2/mud/persistence.py +0 -185
  311. rom24_quickmud_python-1.2.2/mud/registry.py +0 -5
  312. rom24_quickmud_python-1.2.2/mud/scripts/convert_are_to_json.py +0 -162
  313. rom24_quickmud_python-1.2.2/mud/scripts/convert_player_to_json.py +0 -112
  314. rom24_quickmud_python-1.2.2/mud/security/bans.py +0 -112
  315. rom24_quickmud_python-1.2.2/mud/skills/__init__.py +0 -3
  316. rom24_quickmud_python-1.2.2/mud/skills/handlers.py +0 -795
  317. rom24_quickmud_python-1.2.2/mud/skills/registry.py +0 -97
  318. rom24_quickmud_python-1.2.2/mud/spawning/obj_spawner.py +0 -18
  319. rom24_quickmud_python-1.2.2/mud/spawning/reset_handler.py +0 -222
  320. rom24_quickmud_python-1.2.2/mud/spawning/templates.py +0 -63
  321. rom24_quickmud_python-1.2.2/mud/spec_funs.py +0 -57
  322. rom24_quickmud_python-1.2.2/mud/wiznet.py +0 -74
  323. rom24_quickmud_python-1.2.2/mud/world/movement.py +0 -135
  324. rom24_quickmud_python-1.2.2/tests/test_account_auth.py +0 -79
  325. rom24_quickmud_python-1.2.2/tests/test_admin_commands.py +0 -64
  326. rom24_quickmud_python-1.2.2/tests/test_advancement.py +0 -45
  327. rom24_quickmud_python-1.2.2/tests/test_agent_interface.py +0 -28
  328. rom24_quickmud_python-1.2.2/tests/test_area_loader.py +0 -41
  329. rom24_quickmud_python-1.2.2/tests/test_boards.py +0 -18
  330. rom24_quickmud_python-1.2.2/tests/test_building.py +0 -19
  331. rom24_quickmud_python-1.2.2/tests/test_combat.py +0 -197
  332. rom24_quickmud_python-1.2.2/tests/test_combat_defenses_prob.py +0 -49
  333. rom24_quickmud_python-1.2.2/tests/test_combat_thac0_engine.py +0 -49
  334. rom24_quickmud_python-1.2.2/tests/test_command_abbrev.py +0 -22
  335. rom24_quickmud_python-1.2.2/tests/test_commands.py +0 -143
  336. rom24_quickmud_python-1.2.2/tests/test_communication.py +0 -53
  337. rom24_quickmud_python-1.2.2/tests/test_encumbrance.py +0 -36
  338. rom24_quickmud_python-1.2.2/tests/test_enter_portal.py +0 -20
  339. rom24_quickmud_python-1.2.2/tests/test_game_loop.py +0 -44
  340. rom24_quickmud_python-1.2.2/tests/test_help_system.py +0 -20
  341. rom24_quickmud_python-1.2.2/tests/test_imc.py +0 -49
  342. rom24_quickmud_python-1.2.2/tests/test_load_midgaard.py +0 -10
  343. rom24_quickmud_python-1.2.2/tests/test_logging_admin.py +0 -24
  344. rom24_quickmud_python-1.2.2/tests/test_mobprog.py +0 -29
  345. rom24_quickmud_python-1.2.2/tests/test_persistence.py +0 -49
  346. rom24_quickmud_python-1.2.2/tests/test_player_save_format.py +0 -107
  347. rom24_quickmud_python-1.2.2/tests/test_reset_levels.py +0 -35
  348. rom24_quickmud_python-1.2.2/tests/test_shops.py +0 -112
  349. rom24_quickmud_python-1.2.2/tests/test_skills.py +0 -51
  350. rom24_quickmud_python-1.2.2/tests/test_spawning.py +0 -150
  351. rom24_quickmud_python-1.2.2/tests/test_spec_funs.py +0 -103
  352. rom24_quickmud_python-1.2.2/tests/test_telnet_server.py +0 -115
  353. rom24_quickmud_python-1.2.2/tests/test_time_daynight.py +0 -74
  354. rom24_quickmud_python-1.2.2/tests/test_wiznet.py +0 -100
  355. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/LICENSE +0 -0
  356. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/MANIFEST.in +0 -0
  357. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/air.are +0 -0
  358. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/arachnos.are +0 -0
  359. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/area.lst +0 -0
  360. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/astral.are +0 -0
  361. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/canyon.are +0 -0
  362. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/catacomb.are +0 -0
  363. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/chapel.are +0 -0
  364. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/daycare.are +0 -0
  365. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/draconia.are +0 -0
  366. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/dream.are +0 -0
  367. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/drow.are +0 -0
  368. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/dwarven.are +0 -0
  369. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/dylan.are +0 -0
  370. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/eastern.are +0 -0
  371. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/galaxy.are +0 -0
  372. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/gnome.are +0 -0
  373. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/grave.are +0 -0
  374. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/group.are +0 -0
  375. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/grove.are +0 -0
  376. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/haon.are +0 -0
  377. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/help.are +0 -0
  378. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/hitower.are +0 -0
  379. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/hood.are +0 -0
  380. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/immort.are +0 -0
  381. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/limbo.are +0 -0
  382. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mahntor.are +0 -0
  383. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/marsh.are +0 -0
  384. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mega1.are +0 -0
  385. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/midennir.are +0 -0
  386. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mirror.are +0 -0
  387. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/mobfact.are +0 -0
  388. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/moria.are +0 -0
  389. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/newthalos.are +0 -0
  390. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/nirvana.are +0 -0
  391. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/ofcol.are +0 -0
  392. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/ofcol2.are +0 -0
  393. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/olympus.are +0 -0
  394. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/plains.are +0 -0
  395. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/proto.are +0 -0
  396. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/pyramid.are +0 -0
  397. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/quifael.are +0 -0
  398. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/redferne.are +0 -0
  399. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/rom.are +0 -0
  400. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/school.are +0 -0
  401. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/sewer.are +0 -0
  402. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/shire.are +0 -0
  403. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/smurf.are +0 -0
  404. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/social.are +0 -0
  405. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/thalos.are +0 -0
  406. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/tohell.are +0 -0
  407. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/trollden.are +0 -0
  408. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/valley.are +0 -0
  409. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/area/wyvern.are +0 -0
  410. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/air.json +0 -0
  411. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/arachnos.json +0 -0
  412. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/area.json +0 -0
  413. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/area_0.json +0 -0
  414. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/astral.json +0 -0
  415. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/astral_plane.json +0 -0
  416. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/canyon.json +0 -0
  417. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/catacomb.json +0 -0
  418. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/catacombs.json +0 -0
  419. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/chapel.json +0 -0
  420. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/day_care.json +0 -0
  421. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/daycare.json +0 -0
  422. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/draconia.json +0 -0
  423. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dragon_tower.json +0 -0
  424. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dream.json +0 -0
  425. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/drow.json +0 -0
  426. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/drow_city.json +0 -0
  427. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dwarven.json +0 -0
  428. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dwarven_kingdom.json +0 -0
  429. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dylan's_area.json +0 -0
  430. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/dylan.json +0 -0
  431. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/eastern.json +0 -0
  432. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/elemental_canyon.json +0 -0
  433. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/galaxy.json +0 -0
  434. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/gangland.json +0 -0
  435. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/gnome.json +0 -0
  436. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/gnome_village.json +0 -0
  437. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/grave.json +0 -0
  438. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/graveyard.json +0 -0
  439. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/group.json +0 -0
  440. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/grove.json +0 -0
  441. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/haon.json +0 -0
  442. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/haon_dor.json +0 -0
  443. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/hell.json +0 -0
  444. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/help.json +0 -0
  445. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/high_tower.json +0 -0
  446. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/hitower.json +0 -0
  447. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/holy_grove.json +0 -0
  448. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/hood.json +0 -0
  449. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/immort.json +0 -0
  450. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/in_the_air.json +0 -0
  451. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/limbo.json +0 -0
  452. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/machine_dreams.json +0 -0
  453. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mahn-tor.json +0 -0
  454. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mahntor.json +0 -0
  455. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/marsh.json +0 -0
  456. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mega1.json +0 -0
  457. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mega_city_one.json +0 -0
  458. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/miden'nir.json +0 -0
  459. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/midennir.json +0 -0
  460. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/midgaard.json +0 -0
  461. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mirror.json +0 -0
  462. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mob_factory.json +0 -0
  463. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mobfact.json +0 -0
  464. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/moria.json +0 -0
  465. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/mud_school.json +0 -0
  466. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/new_ofcol.json +0 -0
  467. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/new_thalos.json +0 -0
  468. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/newthalos.json +0 -0
  469. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/nirvana.json +0 -0
  470. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/ofcol.json +0 -0
  471. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/ofcol2.json +0 -0
  472. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/old_thalos.json +0 -0
  473. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/olympus.json +0 -0
  474. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/plains.json +0 -0
  475. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/pyramid.json +0 -0
  476. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/quifael's.json +0 -0
  477. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/quifael.json +0 -0
  478. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/redferne's.json +0 -0
  479. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/redferne.json +0 -0
  480. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/rom.json +0 -0
  481. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/sands_of_sorrow.json +0 -0
  482. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/school.json +0 -0
  483. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/sewer.json +0 -0
  484. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/sewers.json +0 -0
  485. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/shire.json +0 -0
  486. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/smurf.json +0 -0
  487. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/smurfville.json +0 -0
  488. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/social.json +0 -0
  489. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/thalos.json +0 -0
  490. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/tohell.json +0 -0
  491. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/troll_den.json +0 -0
  492. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/trollden.json +0 -0
  493. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/valhalla.json +0 -0
  494. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/valley.json +0 -0
  495. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/valley_of_the_elves.json +0 -0
  496. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/wyvern's_tower.json +0 -0
  497. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/areas/wyvern.json +0 -0
  498. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/shops.json +0 -0
  499. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/skills.json +0 -0
  500. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/data/socials.json +0 -0
  501. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/examples.doc +0 -0
  502. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/hacker.doc +0 -0
  503. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/mobprog.doc +0 -0
  504. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/MPDocs/new_readme.txt +0 -0
  505. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/QuickMUD.txt +0 -0
  506. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/Rom2.4.doc +0 -0
  507. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/act.txt +0 -0
  508. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/area.txt +0 -0
  509. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/c_module_inventory.md +0 -0
  510. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/c_python_cross_reference.md +0 -0
  511. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/c_to_python_file_coverage.md +0 -0
  512. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/class.txt +0 -0
  513. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/command.txt +0 -0
  514. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/contrib.txt +0 -0
  515. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/drool.txt +0 -0
  516. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/hacker.txt +0 -0
  517. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/license.doc +0 -0
  518. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/license.txt +0 -0
  519. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/memory.txt +0 -0
  520. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/new.txt +0 -0
  521. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/pfile.txt +0 -0
  522. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/port.txt +0 -0
  523. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/pr_queue.md +0 -0
  524. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/python_architecture.md +0 -0
  525. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/python_module_inventory.md +0 -0
  526. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/security.txt +0 -0
  527. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/sites.txt +0 -0
  528. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/skill.txt +0 -0
  529. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/sky.txt +0 -0
  530. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/trad.txt +0 -0
  531. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/vnum.txt +0 -0
  532. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/doc/~$Rom2.4.doc +0 -0
  533. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/__init__.py +0 -0
  534. {rom24_quickmud_python-1.2.2/mud/agent → rom24_quickmud_python-2.0.0/mud/admin_logging}/__init__.py +0 -0
  535. {rom24_quickmud_python-1.2.2/mud/db → rom24_quickmud_python-2.0.0/mud/agent}/__init__.py +0 -0
  536. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/commands/__init__.py +0 -0
  537. {rom24_quickmud_python-1.2.2/mud/devtools → rom24_quickmud_python-2.0.0/mud/db}/__init__.py +0 -0
  538. {rom24_quickmud_python-1.2.2/mud/logging → rom24_quickmud_python-2.0.0/mud/devtools}/__init__.py +0 -0
  539. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/entrypoint.py +0 -0
  540. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/math/c_compat.py +1 -1
  541. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/help_json.py +0 -0
  542. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/shop_json.py +0 -0
  543. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/models/social_json.py +0 -0
  544. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/network/__init__.py +0 -0
  545. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/security/__init__.py +0 -0
  546. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/security/hash_utils.py +0 -0
  547. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/mud/spawning/__init__.py +0 -0
  548. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
  549. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
  550. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
  551. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/setup.cfg +0 -0
  552. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/setup.py +0 -0
  553. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_ansi.py +0 -0
  554. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_combat_thac0.py +0 -0
  555. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_hash_utils.py +0 -0
  556. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_json_model_instantiation.py +7 -7
  557. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_rng_and_ccompat.py +0 -0
  558. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_scripted_session.py +0 -0
  559. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_shop_conversion.py +0 -0
  560. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_skill_conversion.py +0 -0
  561. {rom24_quickmud_python-1.2.2 → rom24_quickmud_python-2.0.0}/tests/test_skill_registry.py +0 -0
  562. {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
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom24-quickmud-python
3
- Version: 1.2.2
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
- - **📡 Multi-User Telnet Server**: Handle hundreds of concurrent players
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 runserver
92
+ python3 -m mud socketserver
93
+ # or
94
+ mud socketserver
91
95
  ```
92
96
 
93
- The server will start on `localhost:4000`. Connect with any telnet client:
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 4000
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 telnet server
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
+ [![PyPI version](https://badge.fury.io/py/quickmud.svg)](https://badge.fury.io/py/quickmud)
4
+ [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
5
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ [![Tests](https://img.shields.io/badge/tests-200%2F200%20passing-brightgreen.svg)](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
- #ROOMS
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": [