rom24-quickmud-python 2.5.1__tar.gz → 2.5.3__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 (673) hide show
  1. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/CHANGELOG.md +41 -0
  2. {rom24_quickmud_python-2.5.1/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.5.3}/PKG-INFO +7 -7
  3. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/README.md +6 -6
  4. rom24_quickmud_python-2.5.3/data/time.json +7 -0
  5. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/ai/__init__.py +14 -8
  6. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/characters/follow.py +15 -1
  7. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/death.py +22 -26
  8. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/engine.py +57 -37
  9. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/admin_commands.py +2 -0
  10. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/advancement.py +10 -2
  11. rom24_quickmud_python-2.5.3/mud/commands/affects.py +149 -0
  12. rom24_quickmud_python-2.5.3/mud/commands/character.py +207 -0
  13. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/combat.py +10 -0
  14. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/communication.py +15 -4
  15. rom24_quickmud_python-2.5.3/mud/commands/compare.py +111 -0
  16. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/equipment.py +153 -30
  17. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_commands.py +92 -86
  18. rom24_quickmud_python-2.5.3/mud/commands/info.py +591 -0
  19. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/info_extended.py +127 -67
  20. rom24_quickmud_python-2.5.3/mud/commands/inspection.py +279 -0
  21. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/inventory.py +169 -9
  22. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/obj_manipulation.py +39 -3
  23. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/player_info.py +42 -40
  24. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/session.py +166 -24
  25. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/shop.py +3 -24
  26. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/config.py +18 -0
  27. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/game_loop.py +183 -11
  28. rom24_quickmud_python-2.5.3/mud/handler.py +1424 -0
  29. rom24_quickmud_python-2.5.3/mud/magic/effects.py +775 -0
  30. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/mob_cmds.py +54 -10
  31. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/character.py +178 -2
  32. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/constants.py +8 -0
  33. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/room.py +77 -7
  34. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/persistence.py +327 -1
  35. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/handlers.py +0 -8
  36. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/templates.py +73 -4
  37. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/utils/rng_mm.py +15 -0
  38. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/utils/text.py +50 -12
  39. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/char_find.py +33 -35
  40. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/look.py +156 -49
  41. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/obj_find.py +60 -40
  42. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/vision.py +17 -7
  43. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/world_state.py +13 -2
  44. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/pyproject.toml +1 -1
  45. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3/rom24_quickmud_python.egg-info}/PKG-INFO +7 -7
  46. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/SOURCES.txt +48 -3
  47. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/conftest.py +10 -8
  48. rom24_quickmud_python-2.5.3/tests/integration/test_admin_commands.py +458 -0
  49. rom24_quickmud_python-2.5.3/tests/integration/test_auto_flags.py +487 -0
  50. rom24_quickmud_python-2.5.3/tests/integration/test_channels.py +209 -0
  51. rom24_quickmud_python-2.5.3/tests/integration/test_character_advancement.py +475 -0
  52. rom24_quickmud_python-2.5.3/tests/integration/test_character_commands.py +276 -0
  53. rom24_quickmud_python-2.5.3/tests/integration/test_character_creation_runtime.py +258 -0
  54. rom24_quickmud_python-2.5.3/tests/integration/test_communication_enhancement.py +243 -0
  55. rom24_quickmud_python-2.5.3/tests/integration/test_compare_critical_gaps.py +325 -0
  56. rom24_quickmud_python-2.5.3/tests/integration/test_config_commands.py +315 -0
  57. rom24_quickmud_python-2.5.3/tests/integration/test_death_and_corpses.py +443 -0
  58. rom24_quickmud_python-2.5.3/tests/integration/test_do_affects.py +186 -0
  59. rom24_quickmud_python-2.5.3/tests/integration/test_do_consider_command.py +261 -0
  60. rom24_quickmud_python-2.5.3/tests/integration/test_do_equipment.py +281 -0
  61. rom24_quickmud_python-2.5.3/tests/integration/test_do_examine_command.py +362 -0
  62. rom24_quickmud_python-2.5.3/tests/integration/test_do_exits_command.py +413 -0
  63. rom24_quickmud_python-2.5.3/tests/integration/test_do_help_command.py +362 -0
  64. rom24_quickmud_python-2.5.3/tests/integration/test_do_inventory.py +352 -0
  65. rom24_quickmud_python-2.5.3/tests/integration/test_do_password_command.py +262 -0
  66. rom24_quickmud_python-2.5.3/tests/integration/test_do_practice_command.py +312 -0
  67. rom24_quickmud_python-2.5.3/tests/integration/test_do_time_command.py +220 -0
  68. rom24_quickmud_python-2.5.3/tests/integration/test_do_weather_command.py +153 -0
  69. rom24_quickmud_python-2.5.3/tests/integration/test_do_where_command.py +329 -0
  70. rom24_quickmud_python-2.5.3/tests/integration/test_do_who_command.py +366 -0
  71. rom24_quickmud_python-2.5.3/tests/integration/test_do_worth.py +137 -0
  72. rom24_quickmud_python-2.5.3/tests/integration/test_environmental_effects.py +467 -0
  73. rom24_quickmud_python-2.5.3/tests/integration/test_equipment_ac_calculations.py +400 -0
  74. rom24_quickmud_python-2.5.3/tests/integration/test_equipment_system.py +657 -0
  75. rom24_quickmud_python-2.5.3/tests/integration/test_group_combat.py +676 -0
  76. rom24_quickmud_python-2.5.3/tests/integration/test_info_display.py +328 -0
  77. rom24_quickmud_python-2.5.3/tests/integration/test_invisibility_combat.py +186 -0
  78. rom24_quickmud_python-2.5.3/tests/integration/test_mob_ai.py +545 -0
  79. rom24_quickmud_python-2.5.3/tests/integration/test_money_objects.py +415 -0
  80. rom24_quickmud_python-2.5.3/tests/integration/test_olc_builders.py +366 -0
  81. rom24_quickmud_python-2.5.3/tests/integration/test_pet_persistence.py +515 -0
  82. rom24_quickmud_python-2.5.3/tests/integration/test_player_config.py +265 -0
  83. rom24_quickmud_python-2.5.3/tests/integration/test_room_light_tracking.py +262 -0
  84. rom24_quickmud_python-2.5.3/tests/integration/test_room_safety_features.py +261 -0
  85. rom24_quickmud_python-2.5.3/tests/integration/test_save_load_parity.py +508 -0
  86. rom24_quickmud_python-2.5.3/tests/integration/test_skills_integration.py +449 -0
  87. rom24_quickmud_python-2.5.3/tests/integration/test_skills_integration_combat_specials.py +317 -0
  88. rom24_quickmud_python-2.5.3/tests/integration/test_socials.py +262 -0
  89. rom24_quickmud_python-2.5.3/tests/integration/test_spell_affects_persistence.py +717 -0
  90. rom24_quickmud_python-2.5.3/tests/integration/test_weather_time.py +525 -0
  91. rom24_quickmud_python-2.5.3/tests/test_act_comm_rom_parity.py +172 -0
  92. rom24_quickmud_python-2.5.3/tests/test_act_enter_rom_parity.py +154 -0
  93. rom24_quickmud_python-2.5.3/tests/test_act_wiz_rom_parity.py +193 -0
  94. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_agent_interface.py +20 -0
  95. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_death.py +8 -4
  96. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_encumbrance.py +192 -0
  97. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_costs.py +5 -1
  98. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills.py +5 -8
  99. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_world.py +9 -0
  100. rom24_quickmud_python-2.5.1/data/time.json +0 -7
  101. rom24_quickmud_python-2.5.1/mud/commands/affects.py +0 -98
  102. rom24_quickmud_python-2.5.1/mud/commands/character.py +0 -161
  103. rom24_quickmud_python-2.5.1/mud/commands/compare.py +0 -144
  104. rom24_quickmud_python-2.5.1/mud/commands/info.py +0 -352
  105. rom24_quickmud_python-2.5.1/mud/commands/inspection.py +0 -141
  106. rom24_quickmud_python-2.5.1/mud/magic/effects.py +0 -86
  107. rom24_quickmud_python-2.5.1/tests/test_admin_commands.py +0 -610
  108. rom24_quickmud_python-2.5.1/tests/test_socials.py +0 -47
  109. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/LICENSE +0 -0
  110. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/MANIFEST.in +0 -0
  111. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/air.are +0 -0
  112. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/arachnos.are +0 -0
  113. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/area.lst +0 -0
  114. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/astral.are +0 -0
  115. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/canyon.are +0 -0
  116. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/catacomb.are +0 -0
  117. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/chapel.are +0 -0
  118. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/daycare.are +0 -0
  119. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/draconia.are +0 -0
  120. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/dream.are +0 -0
  121. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/drow.are +0 -0
  122. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/dwarven.are +0 -0
  123. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/dylan.are +0 -0
  124. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/eastern.are +0 -0
  125. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/galaxy.are +0 -0
  126. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/gnome.are +0 -0
  127. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/grave.are +0 -0
  128. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/group.are +0 -0
  129. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/grove.are +0 -0
  130. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/haon.are +0 -0
  131. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/help.are +0 -0
  132. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/hitower.are +0 -0
  133. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/hood.are +0 -0
  134. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/immort.are +0 -0
  135. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/limbo.are +0 -0
  136. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mahntor.are +0 -0
  137. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/marsh.are +0 -0
  138. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mega1.are +0 -0
  139. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/midennir.are +0 -0
  140. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/midgaard.are +0 -0
  141. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mirror.are +0 -0
  142. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mobfact.are +0 -0
  143. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/moria.are +0 -0
  144. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/newthalos.are +0 -0
  145. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/nirvana.are +0 -0
  146. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/ofcol.are +0 -0
  147. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/ofcol2.are +0 -0
  148. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/olympus.are +0 -0
  149. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/plains.are +0 -0
  150. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/proto.are +0 -0
  151. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/pyramid.are +0 -0
  152. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/quifael.are +0 -0
  153. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/redferne.are +0 -0
  154. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/rom.are +0 -0
  155. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/school.are +0 -0
  156. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/sewer.are +0 -0
  157. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/shire.are +0 -0
  158. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/smurf.are +0 -0
  159. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/social.are +0 -0
  160. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/thalos.are +0 -0
  161. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/tohell.are +0 -0
  162. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/trollden.are +0 -0
  163. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/valley.are +0 -0
  164. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/wyvern.are +0 -0
  165. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/air.json +0 -0
  166. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/arachnos.json +0 -0
  167. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/area.json +0 -0
  168. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/area_0.json +0 -0
  169. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/astral.json +0 -0
  170. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/canyon.json +0 -0
  171. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/catacomb.json +0 -0
  172. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/chapel.json +0 -0
  173. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/daycare.json +0 -0
  174. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/draconia.json +0 -0
  175. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/dream.json +0 -0
  176. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/drow.json +0 -0
  177. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/dwarven.json +0 -0
  178. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/eastern.json +0 -0
  179. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/galaxy.json +0 -0
  180. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/gnome.json +0 -0
  181. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/group.json +0 -0
  182. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/grove.json +0 -0
  183. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/haon.json +0 -0
  184. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/help.json +0 -0
  185. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/hitower.json +0 -0
  186. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/hood.json +0 -0
  187. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/immort.json +0 -0
  188. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/limbo.json +0 -0
  189. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mahntor.json +0 -0
  190. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/marsh.json +0 -0
  191. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mega1.json +0 -0
  192. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/midennir.json +0 -0
  193. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/midgaard.json +0 -0
  194. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mirror.json +0 -0
  195. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mobfact.json +0 -0
  196. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/moria.json +0 -0
  197. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/newthalos.json +0 -0
  198. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/nirvana.json +0 -0
  199. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/ofcol.json +0 -0
  200. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/ofcol2.json +0 -0
  201. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/olympus.json +0 -0
  202. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/plains.json +0 -0
  203. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/pyramid.json +0 -0
  204. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/quifael.json +0 -0
  205. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/redferne.json +0 -0
  206. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/rom.json +0 -0
  207. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/school.json +0 -0
  208. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/sewer.json +0 -0
  209. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/shire.json +0 -0
  210. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/smurf.json +0 -0
  211. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/social.json +0 -0
  212. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/thalos.json +0 -0
  213. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/tohell.json +0 -0
  214. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/trollden.json +0 -0
  215. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/valley.json +0 -0
  216. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/wyvern.json +0 -0
  217. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/arachnos.json +0 -0
  218. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/area.json +0 -0
  219. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/area_0.json +0 -0
  220. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/astral_plane.json +0 -0
  221. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/catacombs.json +0 -0
  222. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/chapel.json +0 -0
  223. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/day_care.json +0 -0
  224. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/dragon_tower.json +0 -0
  225. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/drow_city.json +0 -0
  226. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/dwarven_kingdom.json +0 -0
  227. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/dylan's_area.json +0 -0
  228. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/elemental_canyon.json +0 -0
  229. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/galaxy.json +0 -0
  230. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/gangland.json +0 -0
  231. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/gnome_village.json +0 -0
  232. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/graveyard.json +0 -0
  233. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/group.json +0 -0
  234. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/haon_dor.json +0 -0
  235. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/help.json +0 -0
  236. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/high_tower.json +0 -0
  237. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/holy_grove.json +0 -0
  238. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/in_the_air.json +0 -0
  239. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/limbo.json +0 -0
  240. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/machine_dreams.json +0 -0
  241. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mahn-tor.json +0 -0
  242. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/marsh.json +0 -0
  243. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mega_city_one.json +0 -0
  244. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/miden'nir.json +0 -0
  245. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/midgaard.json +0 -0
  246. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mob_factory.json +0 -0
  247. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/moria.json +0 -0
  248. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mud_school.json +0 -0
  249. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/new_ofcol.json +0 -0
  250. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/new_thalos.json +0 -0
  251. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/nirvana.json +0 -0
  252. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/ofcol.json +0 -0
  253. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/old_thalos.json +0 -0
  254. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/olympus.json +0 -0
  255. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/plains.json +0 -0
  256. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/pyramid.json +0 -0
  257. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/quifael's.json +0 -0
  258. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/redferne's.json +0 -0
  259. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/rom.json +0 -0
  260. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/sands_of_sorrow.json +0 -0
  261. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/sewers.json +0 -0
  262. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/shire.json +0 -0
  263. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/smurfville.json +0 -0
  264. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/social.json +0 -0
  265. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/thalos.json +0 -0
  266. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/tohell.json +0 -0
  267. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/troll_den.json +0 -0
  268. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/valhalla.json +0 -0
  269. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/valley_of_the_elves.json +0 -0
  270. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/wyvern's_tower.json +0 -0
  271. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/help.json +0 -0
  272. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/.json +0 -0
  273. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/attacker.json +0 -0
  274. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/eddol.json +0 -0
  275. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/hero.json +0 -0
  276. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/sleeper.json +0 -0
  277. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/trouble.json +0 -0
  278. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/shops.json +0 -0
  279. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/skills.json +0 -0
  280. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/socials.json +0 -0
  281. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/examples.doc +0 -0
  282. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/hacker.doc +0 -0
  283. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/mobprog.doc +0 -0
  284. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/new_readme.txt +0 -0
  285. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/QuickMUD.txt +0 -0
  286. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/Rom2.4.doc +0 -0
  287. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/act.txt +0 -0
  288. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/area.txt +0 -0
  289. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/c_module_inventory.md +0 -0
  290. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/c_python_cross_reference.md +0 -0
  291. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/c_to_python_file_coverage.md +0 -0
  292. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/class.txt +0 -0
  293. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/command.txt +0 -0
  294. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/contrib.txt +0 -0
  295. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/drool.txt +0 -0
  296. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/hacker.txt +0 -0
  297. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/license.doc +0 -0
  298. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/license.txt +0 -0
  299. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/memory.txt +0 -0
  300. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/new.txt +0 -0
  301. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/pfile.txt +0 -0
  302. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/port.txt +0 -0
  303. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/pr_queue.md +0 -0
  304. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/python_architecture.md +0 -0
  305. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/python_module_inventory.md +0 -0
  306. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/security.txt +0 -0
  307. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/sites.txt +0 -0
  308. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/skill.txt +0 -0
  309. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/sky.txt +0 -0
  310. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/trad.txt +0 -0
  311. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/vnum.txt +0 -0
  312. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/~$Rom2.4.doc +0 -0
  313. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/__init__.py +0 -0
  314. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/__main__.py +0 -0
  315. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/account/__init__.py +0 -0
  316. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/account/account_manager.py +0 -0
  317. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/account/account_service.py +0 -0
  318. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/admin_logging/__init__.py +0 -0
  319. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/admin_logging/admin.py +0 -0
  320. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/admin_logging/agent_trace.py +0 -0
  321. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/advancement.py +0 -0
  322. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/affects/engine.py +0 -0
  323. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/affects/saves.py +0 -0
  324. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/agent/__init__.py +0 -0
  325. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/agent/agent_protocol.py +0 -0
  326. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/agent/character_agent.py +0 -0
  327. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/ai/aggressive.py +0 -0
  328. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/characters/__init__.py +0 -0
  329. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/characters/conditions.py +0 -0
  330. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/__init__.py +0 -0
  331. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/assist.py +0 -0
  332. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/kill_table.py +0 -0
  333. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/messages.py +0 -0
  334. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/safety.py +0 -0
  335. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/__init__.py +0 -0
  336. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/alias_cmds.py +0 -0
  337. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/auto_settings.py +0 -0
  338. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/build.py +0 -0
  339. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/channels.py +0 -0
  340. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/consider.py +0 -0
  341. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/consumption.py +0 -0
  342. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/decorators.py +0 -0
  343. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/dispatcher.py +0 -0
  344. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/doors.py +0 -0
  345. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/feedback.py +0 -0
  346. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/give.py +0 -0
  347. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/group_commands.py +0 -0
  348. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/healer.py +0 -0
  349. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/help.py +0 -0
  350. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imc.py +0 -0
  351. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_admin.py +0 -0
  352. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_display.py +0 -0
  353. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_emote.py +0 -0
  354. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_load.py +0 -0
  355. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_olc.py +0 -0
  356. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_punish.py +0 -0
  357. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_search.py +0 -0
  358. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_server.py +0 -0
  359. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_set.py +0 -0
  360. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/liquids.py +0 -0
  361. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/magic_items.py +0 -0
  362. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/misc_info.py +0 -0
  363. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/misc_player.py +0 -0
  364. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/mobprog_tools.py +0 -0
  365. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/movement.py +0 -0
  366. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/murder.py +0 -0
  367. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/notes.py +0 -0
  368. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/player_config.py +0 -0
  369. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/position.py +0 -0
  370. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/remaining_rom.py +0 -0
  371. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/socials.py +0 -0
  372. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/thief_skills.py +0 -0
  373. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/typo_guards.py +0 -0
  374. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/__init__.py +0 -0
  375. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/init.py +0 -0
  376. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/migrate_from_files.py +0 -0
  377. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/migrations.py +0 -0
  378. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/models.py +0 -0
  379. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/seed.py +0 -0
  380. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/session.py +0 -0
  381. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/devtools/__init__.py +0 -0
  382. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/devtools/agent_demo.py +0 -0
  383. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/entrypoint.py +0 -0
  384. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/game_tick_scheduler.py +0 -0
  385. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/groups/__init__.py +0 -0
  386. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/groups/xp.py +0 -0
  387. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/__init__.py +0 -0
  388. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/commands.py +0 -0
  389. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/network.py +0 -0
  390. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/protocol.py +0 -0
  391. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/__init__.py +0 -0
  392. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/area_loader.py +0 -0
  393. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/base_loader.py +0 -0
  394. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/help_loader.py +0 -0
  395. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/json_area_loader.py +0 -0
  396. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/json_loader.py +0 -0
  397. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/mob_loader.py +0 -0
  398. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/mobprog_loader.py +0 -0
  399. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/obj_loader.py +0 -0
  400. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/reset_loader.py +0 -0
  401. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/room_loader.py +0 -0
  402. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/shop_loader.py +0 -0
  403. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/social_loader.py +0 -0
  404. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/specials_loader.py +0 -0
  405. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/logging.py +0 -0
  406. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/magic/__init__.py +0 -0
  407. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/math/c_compat.py +0 -0
  408. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/mobprog.py +0 -0
  409. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/__init__.py +0 -0
  410. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/area.py +0 -0
  411. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/area_json.py +0 -0
  412. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/board.py +0 -0
  413. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/board_json.py +0 -0
  414. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/character_json.py +0 -0
  415. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/clans.py +0 -0
  416. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/classes.py +0 -0
  417. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/conversion.py +0 -0
  418. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/help.py +0 -0
  419. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/help_json.py +0 -0
  420. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/json_io.py +0 -0
  421. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/mob.py +0 -0
  422. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/note.py +0 -0
  423. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/note_json.py +0 -0
  424. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/obj.py +0 -0
  425. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/object.py +0 -0
  426. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/object_json.py +0 -0
  427. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/player_json.py +0 -0
  428. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/races.py +0 -0
  429. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/room_json.py +0 -0
  430. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/shop.py +0 -0
  431. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/shop_json.py +0 -0
  432. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/skill.py +0 -0
  433. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/skill_json.py +0 -0
  434. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/social.py +0 -0
  435. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/social_json.py +0 -0
  436. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/music/__init__.py +0 -0
  437. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/__init__.py +0 -0
  438. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/ansi.py +0 -0
  439. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/connection.py +0 -0
  440. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/protocol.py +0 -0
  441. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/session.py +0 -0
  442. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/ssh_server.py +0 -0
  443. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/telnet_server.py +0 -0
  444. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/network/__init__.py +0 -0
  445. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/network/websocket_server.py +0 -0
  446. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/network/websocket_session.py +0 -0
  447. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/notes.py +0 -0
  448. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/olc/__init__.py +0 -0
  449. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/olc/save.py +0 -0
  450. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/registry.py +0 -0
  451. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/rom_api.py +0 -0
  452. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_are_to_json.py +0 -0
  453. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_help_are_to_json.py +0 -0
  454. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_player_to_json.py +0 -0
  455. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_shops_to_json.py +0 -0
  456. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_skills_to_json.py +0 -0
  457. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_social_are_to_json.py +0 -0
  458. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/load_test_data.py +0 -0
  459. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/security/__init__.py +0 -0
  460. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/security/bans.py +0 -0
  461. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/security/hash_utils.py +0 -0
  462. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/server.py +0 -0
  463. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/__init__.py +0 -0
  464. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/groups.py +0 -0
  465. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/metadata.py +0 -0
  466. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/registry.py +0 -0
  467. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/say_spell.py +0 -0
  468. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/__init__.py +0 -0
  469. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/mob_spawner.py +0 -0
  470. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/obj_spawner.py +0 -0
  471. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/reset_handler.py +0 -0
  472. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spec_funs.py +0 -0
  473. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/time.py +0 -0
  474. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/utils/act.py +0 -0
  475. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/wiznet.py +0 -0
  476. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/__init__.py +0 -0
  477. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/linking.py +0 -0
  478. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/movement.py +0 -0
  479. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
  480. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
  481. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/requires.txt +0 -0
  482. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
  483. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/setup.cfg +0 -0
  484. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/setup.py +0 -0
  485. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/conftest.py +0 -0
  486. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/helpers.py +0 -0
  487. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/helpers_player.py +0 -0
  488. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_architectural_parity.py +0 -0
  489. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_auto_sequences.py +0 -0
  490. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_mobprog_scenarios.py +0 -0
  491. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_new_player_workflow.py +0 -0
  492. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_pilot_integration.py +0 -0
  493. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_player_npc_interaction.py +0 -0
  494. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_spell_casting.py +0 -0
  495. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_account_auth.py +0 -0
  496. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_act_info_rom_parity.py +0 -0
  497. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_act_obj_rom_parity.py +0 -0
  498. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_advancement.py +0 -0
  499. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_affects.py +0 -0
  500. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_alias_parity.py +0 -0
  501. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_ansi.py +0 -0
  502. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_are_conversion.py +0 -0
  503. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_counts.py +0 -0
  504. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_exits.py +0 -0
  505. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_loader.py +0 -0
  506. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_specials.py +0 -0
  507. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_bans.py +0 -0
  508. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_boards.py +0 -0
  509. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_builder_hedit.py +0 -0
  510. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_builder_stat_commands.py +0 -0
  511. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_building.py +0 -0
  512. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_char_update_rom_parity.py +0 -0
  513. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat.py +0 -0
  514. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_assist.py +0 -0
  515. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_damage_types.py +0 -0
  516. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_defenses_prob.py +0 -0
  517. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_messages.py +0 -0
  518. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_position_damage.py +0 -0
  519. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_rom_parity.py +0 -0
  520. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_skills.py +0 -0
  521. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_state.py +0 -0
  522. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_surrender.py +0 -0
  523. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_thac0.py +0 -0
  524. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_thac0_engine.py +0 -0
  525. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_command_abbrev.py +0 -0
  526. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_command_parity.py +0 -0
  527. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_commands.py +0 -0
  528. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_communication.py +0 -0
  529. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_connection_motd.py +0 -0
  530. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_convert_are_to_json_cli.py +0 -0
  531. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_critical_function_parity.py +0 -0
  532. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_damage_reduction.py +0 -0
  533. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_damage_reduction_integration.py +0 -0
  534. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_db_resets_rom_parity.py +0 -0
  535. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_db_seed.py +0 -0
  536. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_defense_flags.py +0 -0
  537. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_enter_portal.py +0 -0
  538. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_fighting_state.py +0 -0
  539. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_game_loop.py +0 -0
  540. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_game_loop_order.py +0 -0
  541. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_game_loop_wait_daze.py +0 -0
  542. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_golden_reference.py +0 -0
  543. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_handler_affects_rom_parity.py +0 -0
  544. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_hash_utils.py +0 -0
  545. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_healer.py +0 -0
  546. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_healer_parity.py +0 -0
  547. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_healer_rom_parity.py +0 -0
  548. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_help_conversion.py +0 -0
  549. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_help_system.py +0 -0
  550. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_imc.py +0 -0
  551. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_inventory_persistence.py +0 -0
  552. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_json_io.py +0 -0
  553. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_json_model_instantiation.py +0 -0
  554. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_json_room_fields.py +0 -0
  555. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_load_midgaard.py +0 -0
  556. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_logging_admin.py +0 -0
  557. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_logging_rotation.py +0 -0
  558. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mob_act_flags.py +0 -0
  559. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mob_damage_modifiers.py +0 -0
  560. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog.py +0 -0
  561. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog_commands.py +0 -0
  562. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog_helpers.py +0 -0
  563. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog_triggers.py +0 -0
  564. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement.py +0 -0
  565. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_charm.py +0 -0
  566. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_doors.py +0 -0
  567. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_followers.py +0 -0
  568. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_mobprog.py +0 -0
  569. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_npc.py +0 -0
  570. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_portals.py +0 -0
  571. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_privacy.py +0 -0
  572. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_visibility.py +0 -0
  573. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_music.py +0 -0
  574. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_nanny_rom_parity.py +0 -0
  575. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_networking_telnet.py +0 -0
  576. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_obj_update_rom_parity.py +0 -0
  577. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_aedit.py +0 -0
  578. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_medit.py +0 -0
  579. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_oedit.py +0 -0
  580. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_save.py +0 -0
  581. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_passive_skills_rom_parity.py +0 -0
  582. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_persistence.py +0 -0
  583. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_affect_flags.py +0 -0
  584. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_auto_settings.py +0 -0
  585. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_combat_attributes.py +0 -0
  586. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_conditions.py +0 -0
  587. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_creation.py +0 -0
  588. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_equipment.py +0 -0
  589. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_flags.py +0 -0
  590. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_info_commands.py +0 -0
  591. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_mechanics.py +0 -0
  592. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_prompt.py +0 -0
  593. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_resistance_flags.py +0 -0
  594. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_save_format.py +0 -0
  595. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_skills_spells.py +0 -0
  596. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_stats.py +0 -0
  597. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_title_description.py +0 -0
  598. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_wimpy.py +0 -0
  599. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_practice.py +0 -0
  600. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_reset_levels.py +0 -0
  601. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_resets.py +0 -0
  602. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_rng_and_ccompat.py +0 -0
  603. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_rng_dice.py +0 -0
  604. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_rom_api.py +0 -0
  605. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_runtime_models.py +0 -0
  606. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_saves_rom_parity.py +0 -0
  607. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_say_spell.py +0 -0
  608. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_scan_parity.py +0 -0
  609. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_schema_validation.py +0 -0
  610. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_scripted_session.py +0 -0
  611. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_shop_conversion.py +0 -0
  612. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_shops.py +0 -0
  613. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_combat_rom_parity.py +0 -0
  614. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_conversion.py +0 -0
  615. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_envenom_rom_parity.py +0 -0
  616. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_haggle_rom_parity.py +0 -0
  617. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_hide_rom_parity.py +0 -0
  618. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_peek_rom_parity.py +0 -0
  619. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_pick_lock_rom_parity.py +0 -0
  620. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_recall_rom_parity.py +0 -0
  621. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_registry.py +0 -0
  622. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_steal_rom_parity.py +0 -0
  623. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_buffs.py +0 -0
  624. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_combat.py +0 -0
  625. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_conjuration.py +0 -0
  626. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_damage.py +0 -0
  627. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_debuffs.py +0 -0
  628. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_detection.py +0 -0
  629. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_healing.py +0 -0
  630. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_identify.py +0 -0
  631. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_learned.py +0 -0
  632. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_mass.py +0 -0
  633. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_misc.py +0 -0
  634. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_transport.py +0 -0
  635. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_social_conversion.py +0 -0
  636. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_social_placeholders.py +0 -0
  637. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spawning.py +0 -0
  638. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spec_fun_behaviors.py +0 -0
  639. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spec_funs.py +0 -0
  640. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spec_funs_extra.py +0 -0
  641. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_specials_loader_ext.py +0 -0
  642. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_area_effects_rom_parity.py +0 -0
  643. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
  644. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
  645. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
  646. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_cancellation_rom_parity.py +0 -0
  647. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_charm_control_rom_parity.py +0 -0
  648. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_creation_rom_parity.py +0 -0
  649. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
  650. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_damage_additional_rom_parity.py +0 -0
  651. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_detection_rom_parity.py +0 -0
  652. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_enchantment_rom_parity.py +0 -0
  653. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_farsight_rom_parity.py +0 -0
  654. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_final_nine_rom_parity.py +0 -0
  655. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_harm_rom_parity.py +0 -0
  656. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_healing_rom_parity.py +0 -0
  657. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_heat_metal_rom_parity.py +0 -0
  658. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
  659. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_information_rom_parity.py +0 -0
  660. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_mass_healing_rom_parity.py +0 -0
  661. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_priority_high_rom_parity.py +0 -0
  662. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
  663. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_travel_portal_rom_parity.py +0 -0
  664. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spells_basic.py +0 -0
  665. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spells_damage.py +0 -0
  666. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_state_transitions.py +0 -0
  667. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_telnet_server.py +0 -0
  668. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_time_daynight.py +0 -0
  669. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_time_persistence.py +0 -0
  670. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_utility_spells_parity.py +0 -0
  671. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_weapon_damage.py +0 -0
  672. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_weapon_special_attacks.py +0 -0
  673. {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_wiznet.py +0 -0
@@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.5.2] - 2025-12-30
11
+
12
+ ### Added
13
+
14
+ - **Command Integration ROM Parity Tests** (70 new tests):
15
+ - `tests/test_act_comm_rom_parity.py` - 23 tests for communication commands (ROM `act_comm.c`)
16
+ - Channel status display (`do_channels`)
17
+ - Communication flag toggles (`do_deaf`, `do_quiet`, `do_afk`)
18
+ - Channel blocking logic (QUIET, NOCHANNELS flags)
19
+ - Delete command NPC blocking
20
+ - Replay command behaviors
21
+ - `tests/test_act_enter_rom_parity.py` - 22 tests for portal mechanics (ROM `act_enter.c`)
22
+ - Random room selection with flag exclusions (`get_random_room`)
23
+ - Portal entry mechanics (closed, curse, trust checks)
24
+ - Portal charge system and flag handling (RANDOM, BUGGY, GOWITH)
25
+ - Follower cascading through portals
26
+ - `tests/test_act_wiz_rom_parity.py` - 25 tests for wiznet/admin commands (ROM `act_wiz.c`)
27
+ - Wiznet channel toggle and flag management
28
+ - Wiznet broadcast filtering (WIZ_ON, flag filters, min_level)
29
+ - Admin commands (freeze, transfer, goto, trust)
30
+ - Trust level enforcement
31
+
32
+ - **Documentation**:
33
+ - `COMMAND_INTEGRATION_PARITY_REPORT.md` - Comprehensive command integration test completion report
34
+ - Detailed ROM C to Python mapping for all 70 tests
35
+ - Test philosophy and design decisions
36
+ - ROM C source analysis summary
37
+ - Quality metrics and coverage matrix
38
+
39
+ ### Changed
40
+
41
+ - **ROM 2.4b6 Parity Certification Updates**:
42
+ - Updated total ROM parity test count: 735 → 805 tests (+70)
43
+ - Updated total test count: 2507 → 2577 tests (+70)
44
+ - Added Command Integration Tests section to certification document
45
+ - Updated ROM C source verification to include `act_comm.c`, `act_enter.c`, `act_wiz.c`
46
+
47
+ - **Test Coverage**:
48
+ - Increased command integration test coverage (communication, portal, wiznet modules)
49
+ - Total ROM parity tests: 805 (127 P0/P1/P2 + 608 combat/spells/skills + 70 command integration)
50
+
10
51
  ## [2.5.1] - 2025-12-30
11
52
 
12
53
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom24-quickmud-python
3
- Version: 2.5.1
3
+ Version: 2.5.3
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>
@@ -56,10 +56,10 @@ Dynamic: license-file
56
56
  [![Version](https://img.shields.io/badge/version-2.5.0-blue.svg)](https://github.com/avinson/rom24-quickmud)
57
57
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
58
58
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
59
- [![Tests](https://img.shields.io/badge/tests-700+%20passing-brightgreen.svg)](https://github.com/Nostoi/rom24-quickmud-python)
59
+ [![Tests](https://img.shields.io/badge/tests-1435%2F1436%20passing-brightgreen.svg)](https://github.com/Nostoi/rom24-quickmud-python)
60
60
  [![ROM 2.4b Parity](https://img.shields.io/badge/ROM%202.4b%20Parity-100%25%20CERTIFIED-success.svg)](ROM_2.4B6_PARITY_CERTIFICATION.md)
61
61
  [![Function Coverage](https://img.shields.io/badge/ROM%20C%20Functions-96.1%25-blue.svg)](FUNCTION_MAPPING.md)
62
- [![Integration Tests](https://img.shields.io/badge/integration%20tests-43%2F43%20passing-brightgreen.svg)](tests/integration/)
62
+ [![Integration Tests](https://img.shields.io/badge/integration%20tests-688%2F701%20passing-brightgreen.svg)](tests/integration/)
63
63
 
64
64
  **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 **100% ROM 2.4b behavioral parity**.
65
65
 
@@ -77,7 +77,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
77
77
  - **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
78
78
  - **👥 Social Features**: Say, tell, shout, and 100+ social interactions
79
79
  - **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
80
- - **📊 Comprehensive Testing**: 700+ tests with 43/43 integration tests passing (100%)
80
+ - **📊 Comprehensive Testing**: 1435+ tests with 688/701 integration tests passing (98.1%)
81
81
  - **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
82
82
 
83
83
  ## 📦 Installation
@@ -149,7 +149,7 @@ pip install -e .[dev]
149
149
 
150
150
  ```bash
151
151
  pytest # Run all tests (~16 seconds)
152
- pytest tests/integration/ -v # Run integration tests (43/43 passing)
152
+ pytest tests/integration/ -v # Run integration tests (688/701 passing)
153
153
  ```
154
154
 
155
155
  ### Development Server
@@ -163,8 +163,8 @@ python -m mud # Start development server
163
163
  - **Version**: 2.5.0 (Production Ready - ROM 2.4b6 Parity Certified)
164
164
  - **ROM 2.4b Parity**: ✅ **100% CERTIFIED** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md))
165
165
  - **ROM C Function Coverage**: 96.1% (716/745 functions mapped)
166
- - **Test Coverage**: 700+ tests passing, 43/43 integration tests (100%)
167
- - **Performance**: Full test suite completes in ~16 seconds
166
+ - **Test Coverage**: 1435/1436 tests passing (99.93%), 688/701 integration tests (98.1%)
167
+ - **Performance**: Full test suite completes in ~75 seconds
168
168
  - **Compatibility**: Python 3.10+, cross-platform
169
169
 
170
170
  ## 🏛️ Architecture
@@ -3,10 +3,10 @@
3
3
  [![Version](https://img.shields.io/badge/version-2.5.0-blue.svg)](https://github.com/avinson/rom24-quickmud)
4
4
  [![Python 3.10+](https://img.shields.io/badge/python-3.10+-blue.svg)](https://www.python.org/downloads/)
5
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-700+%20passing-brightgreen.svg)](https://github.com/Nostoi/rom24-quickmud-python)
6
+ [![Tests](https://img.shields.io/badge/tests-1435%2F1436%20passing-brightgreen.svg)](https://github.com/Nostoi/rom24-quickmud-python)
7
7
  [![ROM 2.4b Parity](https://img.shields.io/badge/ROM%202.4b%20Parity-100%25%20CERTIFIED-success.svg)](ROM_2.4B6_PARITY_CERTIFICATION.md)
8
8
  [![Function Coverage](https://img.shields.io/badge/ROM%20C%20Functions-96.1%25-blue.svg)](FUNCTION_MAPPING.md)
9
- [![Integration Tests](https://img.shields.io/badge/integration%20tests-43%2F43%20passing-brightgreen.svg)](tests/integration/)
9
+ [![Integration Tests](https://img.shields.io/badge/integration%20tests-688%2F701%20passing-brightgreen.svg)](tests/integration/)
10
10
 
11
11
  **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 **100% ROM 2.4b behavioral parity**.
12
12
 
@@ -24,7 +24,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
24
24
  - **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
25
25
  - **👥 Social Features**: Say, tell, shout, and 100+ social interactions
26
26
  - **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
27
- - **📊 Comprehensive Testing**: 700+ tests with 43/43 integration tests passing (100%)
27
+ - **📊 Comprehensive Testing**: 1435+ tests with 688/701 integration tests passing (98.1%)
28
28
  - **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
29
29
 
30
30
  ## 📦 Installation
@@ -96,7 +96,7 @@ pip install -e .[dev]
96
96
 
97
97
  ```bash
98
98
  pytest # Run all tests (~16 seconds)
99
- pytest tests/integration/ -v # Run integration tests (43/43 passing)
99
+ pytest tests/integration/ -v # Run integration tests (688/701 passing)
100
100
  ```
101
101
 
102
102
  ### Development Server
@@ -110,8 +110,8 @@ python -m mud # Start development server
110
110
  - **Version**: 2.5.0 (Production Ready - ROM 2.4b6 Parity Certified)
111
111
  - **ROM 2.4b Parity**: ✅ **100% CERTIFIED** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md))
112
112
  - **ROM C Function Coverage**: 96.1% (716/745 functions mapped)
113
- - **Test Coverage**: 700+ tests passing, 43/43 integration tests (100%)
114
- - **Performance**: Full test suite completes in ~16 seconds
113
+ - **Test Coverage**: 1435/1436 tests passing (99.93%), 688/701 integration tests (98.1%)
114
+ - **Performance**: Full test suite completes in ~75 seconds
115
115
  - **Compatibility**: Python 3.10+, cross-platform
116
116
 
117
117
  ## 🏛️ Architecture
@@ -0,0 +1,7 @@
1
+ {
2
+ "hour": 0,
3
+ "day": 0,
4
+ "month": 0,
5
+ "year": 0,
6
+ "sunlight": 0
7
+ }
@@ -16,7 +16,8 @@ from mud.models.constants import (
16
16
  EX_CLOSED,
17
17
  )
18
18
  from mud.models.obj import ObjectData
19
- from mud.models.room import Exit, Room, room_registry
19
+ from mud.models.room import Exit, Room
20
+ from mud.registry import room_registry
20
21
  from mud.utils import rng_mm
21
22
  from mud.world.movement import move_character
22
23
 
@@ -209,14 +210,20 @@ def _room_contents(room: Room | None) -> Iterable[ObjectData]:
209
210
 
210
211
 
211
212
  def _take_object(mob: Character, obj: ObjectData) -> None:
212
- room = getattr(obj, "in_room", None) or getattr(mob, "room", None)
213
+ room = getattr(obj, "in_room", None) or getattr(obj, "location", None) or getattr(mob, "room", None)
213
214
  if room is not None:
214
215
  contents = getattr(room, "contents", None)
215
216
  if isinstance(contents, list) and obj in contents:
216
217
  contents.remove(obj)
217
- obj.in_room = None
218
- obj.in_obj = None
219
- obj.carried_by = mob
218
+
219
+ if hasattr(obj, "in_room"):
220
+ obj.in_room = None
221
+ if hasattr(obj, "location"):
222
+ obj.location = None
223
+ if hasattr(obj, "in_obj"):
224
+ obj.in_obj = None
225
+ if hasattr(obj, "carried_by"):
226
+ obj.carried_by = mob
220
227
 
221
228
  inventory = getattr(mob, "inventory", None)
222
229
  if isinstance(inventory, list) and obj not in inventory:
@@ -280,9 +287,8 @@ def _maybe_wander(mob: Character, room: Room) -> None:
280
287
  if rng_mm.number_bits(3) != 0:
281
288
  return
282
289
 
283
- door = rng_mm.number_bits(5)
284
- if door > int(Direction.DOWN):
285
- return
290
+ # ROM C mob_cmds.c:1274 uses number_door() for random direction
291
+ door = rng_mm.number_door()
286
292
 
287
293
  exit_obj = _valid_exit(room, door)
288
294
  if exit_obj is None:
@@ -67,4 +67,18 @@ def stop_follower(follower: "Character") -> None:
67
67
  follower.leader = None
68
68
 
69
69
 
70
- __all__ = ["add_follower", "stop_follower"]
70
+ def die_follower(char: "Character") -> None:
71
+ """Stop all followers when character dies.
72
+
73
+ ROM Reference: src/handler.c die_follower
74
+ Mirrors ROM behavior: when character dies, all their followers stop following.
75
+ """
76
+ from mud.models.character import character_registry
77
+
78
+ for follower in list(character_registry):
79
+ master = getattr(follower, "master", None)
80
+ if master is char:
81
+ stop_follower(follower)
82
+
83
+
84
+ __all__ = ["add_follower", "stop_follower", "die_follower"]
@@ -145,7 +145,9 @@ def _is_floating_slot(slot: str | None, obj: Object) -> bool:
145
145
 
146
146
 
147
147
  def _format_corpse_labels(corpse: Object, name: str) -> None:
148
- short_template = getattr(corpse.prototype, "short_descr", None) or getattr(corpse, "short_descr", "the corpse of %s")
148
+ short_template = getattr(corpse.prototype, "short_descr", None) or getattr(
149
+ corpse, "short_descr", "the corpse of %s"
150
+ )
149
151
  desc_template = getattr(corpse.prototype, "description", None) or getattr(
150
152
  corpse, "description", "The corpse of %s is lying here."
151
153
  )
@@ -216,11 +218,7 @@ def _broadcast_neighbor_cry(victim: Character) -> None:
216
218
  if room is None:
217
219
  return
218
220
 
219
- message = (
220
- "You hear something's death cry."
221
- if getattr(victim, "is_npc", False)
222
- else "You hear someone's death cry."
223
- )
221
+ message = "You hear something's death cry." if getattr(victim, "is_npc", False) else "You hear someone's death cry."
224
222
 
225
223
  for exit_data in getattr(room, "exits", []) or []:
226
224
  if exit_data is None:
@@ -341,7 +339,7 @@ def death_cry(victim: Character) -> None:
341
339
  def _fallback_corpse(vnum: int, *, item_type: ItemType) -> Object:
342
340
  """Return a minimal corpse object when the real prototype is missing."""
343
341
 
344
- proto = ObjIndex(vnum=vnum, short_descr="a corpse", description="The corpse of someone lies here.")
342
+ proto = ObjIndex(vnum=vnum, short_descr="the corpse of %s", description="The corpse of %s is lying here.")
345
343
  proto.item_type = int(item_type)
346
344
  corpse = Object(instance_id=None, prototype=proto)
347
345
  corpse.item_type = int(item_type)
@@ -368,19 +366,6 @@ def _strip_inventory(victim: Character) -> list[tuple[Object, bool]]:
368
366
  return items
369
367
 
370
368
 
371
- def _set_corpse_coins(corpse: Object, gold: int, silver: int) -> None:
372
- """Persist coin totals on the corpse and mirror into ``value[0:2]``."""
373
-
374
- corpse.gold = gold
375
- corpse.silver = silver
376
- values = list(getattr(corpse, "value", []) or [])
377
- while len(values) < 2:
378
- values.append(0)
379
- values[0] = gold
380
- values[1] = silver
381
- corpse.value = values
382
-
383
-
384
369
  def _handle_corpse_item(
385
370
  corpse: Object,
386
371
  room,
@@ -445,9 +430,18 @@ def make_corpse(victim: Character) -> Object | None:
445
430
 
446
431
  gold = max(0, int(getattr(victim, "gold", 0) or 0))
447
432
  silver = max(0, int(getattr(victim, "silver", 0) or 0))
448
- _set_corpse_coins(corpse, gold, silver)
449
- victim.gold = max(0, int(getattr(victim, "gold", 0) or 0) - gold)
450
- victim.silver = max(0, int(getattr(victim, "silver", 0) or 0) - silver)
433
+
434
+ # ROM C fight.c:1473-1478 - Create money object inside corpse
435
+ if gold > 0 or silver > 0:
436
+ from mud.handler import create_money
437
+
438
+ money_obj = create_money(gold, silver)
439
+ if money_obj:
440
+ corpse.contained_items.append(money_obj)
441
+ money_obj.location = None # Inside corpse, not in room
442
+
443
+ victim.gold = 0
444
+ victim.silver = 0
451
445
 
452
446
  if not is_npc:
453
447
  _clear_player_flag(victim, PlayerFlag.CANLOOT)
@@ -557,16 +551,18 @@ def raw_kill(victim: Character) -> Object | None:
557
551
  """Handle character death by creating a corpse and removing the victim."""
558
552
 
559
553
  from mud.combat.engine import stop_fighting as _stop_fighting
560
-
554
+ from mud.characters.follow import die_follower
555
+
561
556
  # Trigger death mobprog handled in apply_damage before raw_kill
562
557
  # ROM Reference: src/fight.c:1136-1180 (mp_death_trigger called before raw_kill)
563
-
558
+
559
+ _nuke_pets(victim, room=getattr(victim, "room", None))
560
+ die_follower(victim)
564
561
  _stop_fighting(victim, True)
565
562
  death_cry(victim)
566
563
  corpse = make_corpse(victim)
567
564
 
568
565
  room = getattr(victim, "room", None)
569
- _nuke_pets(victim, room)
570
566
  if room is not None:
571
567
  room.remove_character(victim)
572
568
 
@@ -499,6 +499,20 @@ def apply_damage(
499
499
  if victim.position == Position.DEAD:
500
500
  return "Already dead."
501
501
 
502
+ # Set up fighting state BEFORE defense checks (ROM parity: src/fight.c:damage sets fighting before parry/dodge)
503
+ if victim != attacker:
504
+ if victim.position > Position.STUNNED:
505
+ if victim.fighting is None:
506
+ set_fighting(victim, attacker)
507
+ if getattr(victim, "is_npc", False):
508
+ mobprog.mp_kill_trigger(victim, attacker)
509
+ if getattr(victim, "timer", 0) <= 4:
510
+ victim.position = Position.FIGHTING
511
+
512
+ if victim.position > Position.STUNNED:
513
+ if attacker.fighting is None:
514
+ set_fighting(attacker, victim)
515
+
502
516
  # Check for parry, dodge, and shield block following C src/fight.c:damage() order
503
517
  # These are checked AFTER hit determination but BEFORE damage application
504
518
  # Order is critical: shield_block → parry → dodge (per ROM C src/fight.c:one_hit)
@@ -533,23 +547,6 @@ def apply_damage(
533
547
  message_bundle = dam_message(attacker, victim, damage, dt, immune)
534
548
  _dispatch_damage_messages(attacker, victim, message_bundle)
535
549
 
536
- # Set up fighting state if not already fighting
537
- if victim != attacker:
538
- # Victim starts fighting back if able
539
- if victim.position > Position.STUNNED:
540
- if victim.fighting is None:
541
- set_fighting(victim, attacker)
542
- if getattr(victim, "is_npc", False):
543
- mobprog.mp_kill_trigger(victim, attacker)
544
- # Update victim to fighting position if timer allows
545
- if getattr(victim, "timer", 0) <= 4:
546
- victim.position = Position.FIGHTING
547
-
548
- # Attacker starts fighting if not already
549
- if victim.position > Position.STUNNED:
550
- if attacker.fighting is None:
551
- set_fighting(attacker, victim)
552
-
553
550
  if damage <= 0:
554
551
  if message_bundle and message_bundle.attacker:
555
552
  return message_bundle.attacker
@@ -752,30 +749,53 @@ def _object_has_wear_flag(obj, flag: WearFlag) -> bool:
752
749
 
753
750
 
754
751
  def _transfer_corpse_coins(attacker: Character, corpse) -> bool:
755
- """Move coins from *corpse* to *attacker*, returning True when any moved."""
752
+ """Extract gold/silver from money objects and add to attacker's purse.
756
753
 
757
- try:
758
- gold = int(getattr(corpse, "gold", 0) or 0)
759
- except (TypeError, ValueError):
760
- gold = 0
761
- try:
762
- silver = int(getattr(corpse, "silver", 0) or 0)
763
- except (TypeError, ValueError):
764
- silver = 0
754
+ ROM Reference: src/fight.c auto_loot handles money extraction.
755
+ QuickMUD uses actual money objects (ItemType.MONEY) instead of corpse attributes.
756
+ Money objects may already be in attacker's inventory if AUTOLOOT moved them.
757
+ """
758
+ from mud.models.constants import ItemType
759
+
760
+ contained = list(getattr(corpse, "contained_items", []) or [])
761
+ attacker_inv = list(getattr(attacker, "inventory", []) or [])
765
762
 
766
- if gold == 0 and silver == 0:
763
+ money_in_corpse = [obj for obj in contained if getattr(obj, "item_type", None) == int(ItemType.MONEY)]
764
+ money_in_inventory = [obj for obj in attacker_inv if getattr(obj, "item_type", None) == int(ItemType.MONEY)]
765
+
766
+ all_money_objects = money_in_corpse + money_in_inventory
767
+
768
+ if not all_money_objects:
767
769
  return False
768
770
 
769
- attacker.gold = int(getattr(attacker, "gold", 0) or 0) + gold
770
- attacker.silver = int(getattr(attacker, "silver", 0) or 0) + silver
771
- corpse.gold = 0
772
- corpse.silver = 0
773
- values = list(getattr(corpse, "value", []) or [])
774
- if len(values) < 2:
775
- values.extend([0] * (2 - len(values)))
776
- values[0] = 0
777
- values[1] = 0
778
- corpse.value = values
771
+ total_gold = 0
772
+ total_silver = 0
773
+
774
+ for money_obj in all_money_objects:
775
+ values = list(getattr(money_obj, "value", [0, 0]) or [0, 0])
776
+ while len(values) < 2:
777
+ values.append(0)
778
+
779
+ silver = int(values[0] or 0)
780
+ gold = int(values[1] or 0)
781
+
782
+ total_silver += silver
783
+ total_gold += gold
784
+
785
+ if money_obj in money_in_corpse:
786
+ try:
787
+ corpse.contained_items.remove(money_obj)
788
+ except (AttributeError, ValueError):
789
+ pass
790
+ else:
791
+ try:
792
+ attacker.remove_object(money_obj)
793
+ except (AttributeError, ValueError):
794
+ pass
795
+
796
+ attacker.gold = int(getattr(attacker, "gold", 0) or 0) + total_gold
797
+ attacker.silver = int(getattr(attacker, "silver", 0) or 0) + total_silver
798
+
779
799
  return True
780
800
 
781
801
 
@@ -34,6 +34,8 @@ def cmd_who(char: Character, args: str) -> str:
34
34
 
35
35
 
36
36
  def cmd_teleport(char: Character, args: str) -> str:
37
+ if char.level < 52:
38
+ return "You don't have permission to use this command."
37
39
  if not args.isdigit() or int(args) not in room_registry:
38
40
  return "Invalid room."
39
41
  target = room_registry[int(args)]
@@ -188,9 +188,17 @@ def do_practice(char: Character, args: str) -> str:
188
188
  new_value = min(adept, current + increment)
189
189
  char.skills[skill_key] = new_value
190
190
 
191
+ # ROM C parity: Send messages to both char and room (src/act_info.c:2767-2777)
191
192
  if new_value >= adept:
192
- return f"You are now learned at {skill.name}."
193
- return f"You practice {skill.name}."
193
+ char.messages.append(f"You are now learned at {skill.name}.")
194
+ if char.room:
195
+ char.room.broadcast(f"{char.name} is now learned at {skill.name}.", exclude=char)
196
+ else:
197
+ char.messages.append(f"You practice {skill.name}.")
198
+ if char.room:
199
+ char.room.broadcast(f"{char.name} practices {skill.name}.", exclude=char)
200
+
201
+ return ""
194
202
 
195
203
 
196
204
  def do_train(char: Character, args: str) -> str:
@@ -0,0 +1,149 @@
1
+ """
2
+ Affects command - show active spell/affect effects on character.
3
+
4
+ ROM Reference: src/act_info.c do_affects (lines 2300-2400)
5
+ """
6
+
7
+ from __future__ import annotations
8
+
9
+ from mud.models.character import Character
10
+ from mud.models.constants import AffectFlag
11
+
12
+
13
+ # Mapping of affect flags to human-readable names
14
+ _AFFECT_NAMES = {
15
+ AffectFlag.BLIND: "blindness",
16
+ AffectFlag.INVISIBLE: "invisibility",
17
+ AffectFlag.DETECT_EVIL: "detect evil",
18
+ AffectFlag.DETECT_INVIS: "detect invisibility",
19
+ AffectFlag.DETECT_MAGIC: "detect magic",
20
+ AffectFlag.DETECT_HIDDEN: "detect hidden",
21
+ AffectFlag.DETECT_GOOD: "detect good",
22
+ AffectFlag.SANCTUARY: "sanctuary",
23
+ AffectFlag.FAERIE_FIRE: "faerie fire",
24
+ AffectFlag.INFRARED: "infrared vision",
25
+ AffectFlag.CURSE: "curse",
26
+ AffectFlag.POISON: "poison",
27
+ AffectFlag.PROTECT_EVIL: "protection evil",
28
+ AffectFlag.PROTECT_GOOD: "protection good",
29
+ AffectFlag.SNEAK: "sneak",
30
+ AffectFlag.HIDE: "hide",
31
+ AffectFlag.SLEEP: "sleep",
32
+ AffectFlag.CHARM: "charm",
33
+ AffectFlag.FLYING: "fly",
34
+ AffectFlag.PASS_DOOR: "pass door",
35
+ AffectFlag.HASTE: "haste",
36
+ AffectFlag.CALM: "calm",
37
+ AffectFlag.PLAGUE: "plague",
38
+ AffectFlag.WEAKEN: "weaken",
39
+ AffectFlag.DARK_VISION: "dark vision",
40
+ AffectFlag.BERSERK: "berserk",
41
+ AffectFlag.SWIM: "swim",
42
+ AffectFlag.REGENERATION: "regeneration",
43
+ AffectFlag.SLOW: "slow",
44
+ }
45
+
46
+
47
+ def affect_loc_name(location: int) -> str:
48
+ """
49
+ Return ASCII name of an affect location.
50
+
51
+ ROM Reference: src/handler.c affect_loc_name (lines 2718-2775)
52
+
53
+ Args:
54
+ location: APPLY_* constant (0-25)
55
+
56
+ Returns:
57
+ Human-readable location name (e.g., "strength", "armor class", "hit roll")
58
+ """
59
+ # ROM C APPLY_* constants (src/merc.h lines 1205-1231)
60
+ APPLY_NAMES = {
61
+ 0: "none", # APPLY_NONE
62
+ 1: "strength", # APPLY_STR
63
+ 2: "dexterity", # APPLY_DEX
64
+ 3: "intelligence", # APPLY_INT
65
+ 4: "wisdom", # APPLY_WIS
66
+ 5: "constitution", # APPLY_CON
67
+ 6: "sex", # APPLY_SEX
68
+ 7: "class", # APPLY_CLASS
69
+ 8: "level", # APPLY_LEVEL
70
+ 9: "age", # APPLY_AGE
71
+ 10: "height", # APPLY_HEIGHT (not shown in ROM affect_loc_name)
72
+ 11: "weight", # APPLY_WEIGHT (not shown in ROM affect_loc_name)
73
+ 12: "mana", # APPLY_MANA
74
+ 13: "hp", # APPLY_HIT
75
+ 14: "moves", # APPLY_MOVE
76
+ 15: "gold", # APPLY_GOLD
77
+ 16: "experience", # APPLY_EXP
78
+ 17: "armor class", # APPLY_AC
79
+ 18: "hit roll", # APPLY_HITROLL
80
+ 19: "damage roll", # APPLY_DAMROLL
81
+ 20: "saves", # APPLY_SAVES / APPLY_SAVING_PARA
82
+ 21: "save vs rod", # APPLY_SAVING_ROD
83
+ 22: "save vs petrification", # APPLY_SAVING_PETRI
84
+ 23: "save vs breath", # APPLY_SAVING_BREATH
85
+ 24: "save vs spell", # APPLY_SAVING_SPELL
86
+ 25: "none", # APPLY_SPELL_AFFECT (returns "none" in ROM C)
87
+ }
88
+
89
+ return APPLY_NAMES.get(location, "(unknown)")
90
+
91
+
92
+ def do_affects(char: Character, args: str) -> str:
93
+ """
94
+ Display active affects on the character.
95
+
96
+ ROM Reference: src/act_info.c do_affects (lines 1714-1755)
97
+
98
+ Usage: affects
99
+
100
+ Behavior:
101
+ - Level <20: Shows simple format (spell name only)
102
+ - Level 20+: Shows detailed format (modifier, location, duration)
103
+ - Stacked affects (same spell, multiple modifiers): Indented continuation lines
104
+ """
105
+ # Primary ROM C behavior: iterate ch.affected list (AFFECT_DATA structures)
106
+ affected = getattr(char, "affected", [])
107
+
108
+ if not affected:
109
+ return "You are not affected by any spells."
110
+
111
+ lines = ["You are affected by the following spells:"]
112
+ paf_last = None
113
+
114
+ for paf in affected:
115
+ # Deduplication: check if same spell as previous affect
116
+ if paf_last and paf.type == paf_last.type:
117
+ if char.level >= 20:
118
+ # Level 20+: Show duplicate affects with indentation (22 spaces + ": ")
119
+ buf = " " * 22 + ": "
120
+ else:
121
+ # Level <20: Skip duplicate spells entirely
122
+ continue
123
+ else:
124
+ # New spell: show spell name (left-aligned, 15 chars)
125
+ # TODO: Replace with proper skill_table[paf.type].name lookup when SN mapping is available
126
+ # For now, assume paf.type is already a skill name string (temporary until spell system updated)
127
+ spell_name = str(paf.type) if paf.type else "(unknown)"
128
+
129
+ buf = f"Spell: {spell_name:15s}"
130
+
131
+ # Level 20+: Show detailed modifier information
132
+ if char.level >= 20:
133
+ location_name = affect_loc_name(paf.location)
134
+
135
+ # ROM C line 1737: uses raw %d (no explicit + sign)
136
+ modifier_str = str(paf.modifier)
137
+
138
+ if paf.duration == -1:
139
+ duration_str = "permanently"
140
+ else:
141
+ duration_str = f"for {paf.duration} hours"
142
+
143
+ # ROM C line 1736: ": modifies..." (colon prefix)
144
+ buf += f": modifies {location_name} by {modifier_str} {duration_str}"
145
+
146
+ lines.append(buf)
147
+ paf_last = paf
148
+
149
+ return "\n".join(lines)