rom24-quickmud-python 2.9.2__tar.gz → 2.9.4__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 (826) hide show
  1. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/CHANGELOG.md +16 -0
  2. {rom24_quickmud_python-2.9.2/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.9.4}/PKG-INFO +1 -1
  3. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/death.py +3 -3
  4. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/shop.py +2 -2
  5. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/handler.py +2 -2
  6. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/mob_cmds.py +8 -0
  7. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/character.py +5 -0
  8. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/conversion.py +2 -2
  9. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/object.py +20 -0
  10. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/rom_api.py +2 -2
  11. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/skills/handlers.py +38 -2
  12. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/pyproject.toml +1 -1
  13. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4/rom24_quickmud_python.egg-info}/PKG-INFO +1 -1
  14. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/rom24_quickmud_python.egg-info/SOURCES.txt +2 -0
  15. rom24_quickmud_python-2.9.4/tests/integration/test_inv013_add_object_carrier.py +140 -0
  16. rom24_quickmud_python-2.9.4/tests/integration/test_inv014_object_registry_membership.py +169 -0
  17. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/LICENSE +0 -0
  18. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/MANIFEST.in +0 -0
  19. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/README.md +0 -0
  20. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/air.are +0 -0
  21. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/arachnos.are +0 -0
  22. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/area.lst +0 -0
  23. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/astral.are +0 -0
  24. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/canyon.are +0 -0
  25. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/catacomb.are +0 -0
  26. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/chapel.are +0 -0
  27. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/daycare.are +0 -0
  28. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/draconia.are +0 -0
  29. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/dream.are +0 -0
  30. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/drow.are +0 -0
  31. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/dwarven.are +0 -0
  32. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/dylan.are +0 -0
  33. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/eastern.are +0 -0
  34. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/galaxy.are +0 -0
  35. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/gnome.are +0 -0
  36. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/grave.are +0 -0
  37. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/group.are +0 -0
  38. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/grove.are +0 -0
  39. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/haon.are +0 -0
  40. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/help.are +0 -0
  41. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/hitower.are +0 -0
  42. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/hood.are +0 -0
  43. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/immort.are +0 -0
  44. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/limbo.are +0 -0
  45. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/mahntor.are +0 -0
  46. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/marsh.are +0 -0
  47. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/mega1.are +0 -0
  48. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/midennir.are +0 -0
  49. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/midgaard.are +0 -0
  50. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/mirror.are +0 -0
  51. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/mobfact.are +0 -0
  52. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/moria.are +0 -0
  53. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/newthalos.are +0 -0
  54. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/nirvana.are +0 -0
  55. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/ofcol.are +0 -0
  56. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/ofcol2.are +0 -0
  57. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/olympus.are +0 -0
  58. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/plains.are +0 -0
  59. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/proto.are +0 -0
  60. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/pyramid.are +0 -0
  61. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/quifael.are +0 -0
  62. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/redferne.are +0 -0
  63. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/rom.are +0 -0
  64. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/school.are +0 -0
  65. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/sewer.are +0 -0
  66. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/shire.are +0 -0
  67. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/smurf.are +0 -0
  68. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/social.are +0 -0
  69. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/thalos.are +0 -0
  70. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/tohell.are +0 -0
  71. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/trollden.are +0 -0
  72. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/valley.are +0 -0
  73. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/area/wyvern.are +0 -0
  74. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/air.json +0 -0
  75. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/arachnos.json +0 -0
  76. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/area.json +0 -0
  77. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/area_0.json +0 -0
  78. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/astral.json +0 -0
  79. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/canyon.json +0 -0
  80. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/catacomb.json +0 -0
  81. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/chapel.json +0 -0
  82. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/daycare.json +0 -0
  83. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/draconia.json +0 -0
  84. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/dream.json +0 -0
  85. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/drow.json +0 -0
  86. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/dwarven.json +0 -0
  87. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/dylan.json +0 -0
  88. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/eastern.json +0 -0
  89. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/galaxy.json +0 -0
  90. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/gnome.json +0 -0
  91. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/grave.json +0 -0
  92. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/group.json +0 -0
  93. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/grove.json +0 -0
  94. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/haon.json +0 -0
  95. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/help.json +0 -0
  96. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/hitower.json +0 -0
  97. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/hood.json +0 -0
  98. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/immort.json +0 -0
  99. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/limbo.json +0 -0
  100. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/mahntor.json +0 -0
  101. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/marsh.json +0 -0
  102. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/mega1.json +0 -0
  103. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/midennir.json +0 -0
  104. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/midgaard.json +0 -0
  105. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/mirror.json +0 -0
  106. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/mobfact.json +0 -0
  107. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/moria.json +0 -0
  108. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/newthalos.json +0 -0
  109. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/nirvana.json +0 -0
  110. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/ofcol.json +0 -0
  111. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/ofcol2.json +0 -0
  112. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/olympus.json +0 -0
  113. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/plains.json +0 -0
  114. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/pyramid.json +0 -0
  115. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/quifael.json +0 -0
  116. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/redferne.json +0 -0
  117. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/rom.json +0 -0
  118. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/school.json +0 -0
  119. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/sewer.json +0 -0
  120. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/shire.json +0 -0
  121. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/smurf.json +0 -0
  122. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/social.json +0 -0
  123. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/thalos.json +0 -0
  124. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/tohell.json +0 -0
  125. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/trollden.json +0 -0
  126. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/valley.json +0 -0
  127. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas/wyvern.json +0 -0
  128. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/arachnos.json +0 -0
  129. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/area.json +0 -0
  130. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/area_0.json +0 -0
  131. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/astral_plane.json +0 -0
  132. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/catacombs.json +0 -0
  133. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/chapel.json +0 -0
  134. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/day_care.json +0 -0
  135. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/dragon_tower.json +0 -0
  136. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/drow_city.json +0 -0
  137. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/dwarven_kingdom.json +0 -0
  138. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/dylan's_area.json +0 -0
  139. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/elemental_canyon.json +0 -0
  140. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/galaxy.json +0 -0
  141. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/gangland.json +0 -0
  142. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/gnome_village.json +0 -0
  143. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/graveyard.json +0 -0
  144. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/group.json +0 -0
  145. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/haon_dor.json +0 -0
  146. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/help.json +0 -0
  147. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/high_tower.json +0 -0
  148. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/holy_grove.json +0 -0
  149. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/in_the_air.json +0 -0
  150. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/limbo.json +0 -0
  151. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/machine_dreams.json +0 -0
  152. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/mahn-tor.json +0 -0
  153. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/marsh.json +0 -0
  154. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/mega_city_one.json +0 -0
  155. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/miden'nir.json +0 -0
  156. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/midgaard.json +0 -0
  157. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/mob_factory.json +0 -0
  158. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/moria.json +0 -0
  159. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/mud_school.json +0 -0
  160. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/new_ofcol.json +0 -0
  161. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/new_thalos.json +0 -0
  162. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/nirvana.json +0 -0
  163. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/ofcol.json +0 -0
  164. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/old_thalos.json +0 -0
  165. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/olympus.json +0 -0
  166. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/plains.json +0 -0
  167. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/pyramid.json +0 -0
  168. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/quifael's.json +0 -0
  169. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/redferne's.json +0 -0
  170. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/rom.json +0 -0
  171. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/sands_of_sorrow.json +0 -0
  172. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/sewers.json +0 -0
  173. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/shire.json +0 -0
  174. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/smurfville.json +0 -0
  175. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/social.json +0 -0
  176. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/thalos.json +0 -0
  177. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/tohell.json +0 -0
  178. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/troll_den.json +0 -0
  179. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/valhalla.json +0 -0
  180. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/valley_of_the_elves.json +0 -0
  181. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/areas_backup/wyvern's_tower.json +0 -0
  182. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/help.json +0 -0
  183. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/players/.json +0 -0
  184. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/players/attacker.json +0 -0
  185. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/players/eddol.json +0 -0
  186. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/players/hero.json +0 -0
  187. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/players/sleeper.json +0 -0
  188. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/players/trouble.json +0 -0
  189. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/shops.json +0 -0
  190. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/skills.json +0 -0
  191. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/socials.json +0 -0
  192. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/data/time.json +0 -0
  193. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/MPDocs/examples.doc +0 -0
  194. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/MPDocs/hacker.doc +0 -0
  195. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/MPDocs/mobprog.doc +0 -0
  196. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/MPDocs/new_readme.txt +0 -0
  197. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/QuickMUD.txt +0 -0
  198. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/Rom2.4.doc +0 -0
  199. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/act.txt +0 -0
  200. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/area.txt +0 -0
  201. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/c_module_inventory.md +0 -0
  202. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/c_python_cross_reference.md +0 -0
  203. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/c_to_python_file_coverage.md +0 -0
  204. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/class.txt +0 -0
  205. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/command.txt +0 -0
  206. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/contrib.txt +0 -0
  207. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/drool.txt +0 -0
  208. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/hacker.txt +0 -0
  209. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/license.doc +0 -0
  210. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/license.txt +0 -0
  211. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/memory.txt +0 -0
  212. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/new.txt +0 -0
  213. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/pfile.txt +0 -0
  214. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/port.txt +0 -0
  215. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/pr_queue.md +0 -0
  216. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/python_architecture.md +0 -0
  217. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/python_module_inventory.md +0 -0
  218. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/security.txt +0 -0
  219. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/sites.txt +0 -0
  220. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/skill.txt +0 -0
  221. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/sky.txt +0 -0
  222. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/trad.txt +0 -0
  223. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/vnum.txt +0 -0
  224. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/doc/~$Rom2.4.doc +0 -0
  225. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/__init__.py +0 -0
  226. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/__main__.py +0 -0
  227. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/account/__init__.py +0 -0
  228. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/account/account_manager.py +0 -0
  229. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/account/account_service.py +0 -0
  230. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/admin_logging/__init__.py +0 -0
  231. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/admin_logging/admin.py +0 -0
  232. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/admin_logging/agent_trace.py +0 -0
  233. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/advancement.py +0 -0
  234. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/affects/engine.py +0 -0
  235. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/affects/saves.py +0 -0
  236. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/agent/__init__.py +0 -0
  237. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/agent/agent_protocol.py +0 -0
  238. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/agent/character_agent.py +0 -0
  239. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/ai/__init__.py +0 -0
  240. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/ai/aggressive.py +0 -0
  241. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/characters/__init__.py +0 -0
  242. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/characters/conditions.py +0 -0
  243. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/characters/follow.py +0 -0
  244. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/__init__.py +0 -0
  245. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/assist.py +0 -0
  246. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/engine.py +0 -0
  247. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/kill_table.py +0 -0
  248. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/messages.py +0 -0
  249. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/combat/safety.py +0 -0
  250. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/__init__.py +0 -0
  251. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/admin_commands.py +0 -0
  252. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/advancement.py +0 -0
  253. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/affects.py +0 -0
  254. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/alias_cmds.py +0 -0
  255. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/auto_settings.py +0 -0
  256. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/build.py +0 -0
  257. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/channels.py +0 -0
  258. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/character.py +0 -0
  259. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/combat.py +0 -0
  260. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/communication.py +0 -0
  261. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/compare.py +0 -0
  262. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/consider.py +0 -0
  263. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/consumption.py +0 -0
  264. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/decorators.py +0 -0
  265. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/dispatcher.py +0 -0
  266. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/doors.py +0 -0
  267. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/equipment.py +0 -0
  268. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/feedback.py +0 -0
  269. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/give.py +0 -0
  270. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/group_commands.py +0 -0
  271. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/healer.py +0 -0
  272. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/help.py +0 -0
  273. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imc.py +0 -0
  274. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_admin.py +0 -0
  275. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_commands.py +0 -0
  276. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_display.py +0 -0
  277. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_emote.py +0 -0
  278. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_load.py +0 -0
  279. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_olc.py +0 -0
  280. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_punish.py +0 -0
  281. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_search.py +0 -0
  282. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_server.py +0 -0
  283. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/imm_set.py +0 -0
  284. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/info.py +0 -0
  285. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/info_extended.py +0 -0
  286. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/inspection.py +0 -0
  287. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/inventory.py +0 -0
  288. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/liquids.py +0 -0
  289. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/magic_items.py +0 -0
  290. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/misc_info.py +0 -0
  291. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/misc_player.py +0 -0
  292. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/mobprog_tools.py +0 -0
  293. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/movement.py +0 -0
  294. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/murder.py +0 -0
  295. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/notes.py +0 -0
  296. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/obj_manipulation.py +0 -0
  297. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/player_config.py +0 -0
  298. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/player_info.py +0 -0
  299. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/position.py +0 -0
  300. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/remaining_rom.py +0 -0
  301. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/session.py +0 -0
  302. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/socials.py +0 -0
  303. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/thief_skills.py +0 -0
  304. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/commands/typo_guards.py +0 -0
  305. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/config.py +0 -0
  306. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/__init__.py +0 -0
  307. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/init.py +0 -0
  308. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/migrate_from_files.py +0 -0
  309. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/migrations.py +0 -0
  310. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/models.py +0 -0
  311. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/seed.py +0 -0
  312. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/serializers.py +0 -0
  313. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/db/session.py +0 -0
  314. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/devtools/__init__.py +0 -0
  315. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/devtools/agent_demo.py +0 -0
  316. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/entrypoint.py +0 -0
  317. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/game_loop.py +0 -0
  318. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/game_tick_scheduler.py +0 -0
  319. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/groups/__init__.py +0 -0
  320. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/groups/xp.py +0 -0
  321. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/imc/__init__.py +0 -0
  322. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/imc/commands.py +0 -0
  323. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/imc/network.py +0 -0
  324. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/imc/protocol.py +0 -0
  325. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/__init__.py +0 -0
  326. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/area_loader.py +0 -0
  327. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/base_loader.py +0 -0
  328. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/help_loader.py +0 -0
  329. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/json_area_loader.py +0 -0
  330. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/json_loader.py +0 -0
  331. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/mob_loader.py +0 -0
  332. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/mobprog_loader.py +0 -0
  333. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/obj_loader.py +0 -0
  334. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/reset_loader.py +0 -0
  335. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/room_loader.py +0 -0
  336. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/shop_loader.py +0 -0
  337. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/social_loader.py +0 -0
  338. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/loaders/specials_loader.py +0 -0
  339. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/logging.py +0 -0
  340. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/magic/__init__.py +0 -0
  341. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/magic/effects.py +0 -0
  342. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/math/c_compat.py +0 -0
  343. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/math/stat_apps.py +0 -0
  344. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/mobprog.py +0 -0
  345. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/__init__.py +0 -0
  346. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/area.py +0 -0
  347. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/area_json.py +0 -0
  348. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/board.py +0 -0
  349. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/board_json.py +0 -0
  350. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/character_json.py +0 -0
  351. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/clans.py +0 -0
  352. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/classes.py +0 -0
  353. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/constants.py +0 -0
  354. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/help.py +0 -0
  355. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/help_json.py +0 -0
  356. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/json_io.py +0 -0
  357. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/mob.py +0 -0
  358. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/note.py +0 -0
  359. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/note_json.py +0 -0
  360. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/obj.py +0 -0
  361. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/object_json.py +0 -0
  362. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/player_json.py +0 -0
  363. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/races.py +0 -0
  364. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/room.py +0 -0
  365. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/room_json.py +0 -0
  366. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/shop.py +0 -0
  367. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/shop_json.py +0 -0
  368. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/skill.py +0 -0
  369. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/skill_json.py +0 -0
  370. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/social.py +0 -0
  371. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/social_json.py +0 -0
  372. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/titles.py +0 -0
  373. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/models/weapon_table.py +0 -0
  374. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/music/__init__.py +0 -0
  375. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/__init__.py +0 -0
  376. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/ansi.py +0 -0
  377. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/connection.py +0 -0
  378. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/protocol.py +0 -0
  379. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/session.py +0 -0
  380. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/ssh_server.py +0 -0
  381. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/net/telnet_server.py +0 -0
  382. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/network/__init__.py +0 -0
  383. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/network/websocket_server.py +0 -0
  384. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/network/websocket_session.py +0 -0
  385. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/network/websocket_stream.py +0 -0
  386. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/notes.py +0 -0
  387. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/olc/__init__.py +0 -0
  388. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/olc/editor_state.py +0 -0
  389. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/olc/save.py +0 -0
  390. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/registry.py +0 -0
  391. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/convert_are_to_json.py +0 -0
  392. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/convert_help_are_to_json.py +0 -0
  393. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/convert_player_to_json.py +0 -0
  394. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/convert_shops_to_json.py +0 -0
  395. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/convert_skills_to_json.py +0 -0
  396. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/convert_social_are_to_json.py +0 -0
  397. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/scripts/load_test_data.py +0 -0
  398. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/security/__init__.py +0 -0
  399. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/security/bans.py +0 -0
  400. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/security/hash_utils.py +0 -0
  401. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/server.py +0 -0
  402. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/skills/__init__.py +0 -0
  403. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/skills/groups.py +0 -0
  404. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/skills/metadata.py +0 -0
  405. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/skills/registry.py +0 -0
  406. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/skills/say_spell.py +0 -0
  407. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/spawning/__init__.py +0 -0
  408. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/spawning/mob_spawner.py +0 -0
  409. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/spawning/obj_spawner.py +0 -0
  410. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/spawning/reset_handler.py +0 -0
  411. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/spawning/templates.py +0 -0
  412. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/spec_funs.py +0 -0
  413. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/time.py +0 -0
  414. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/act.py +0 -0
  415. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/bit.py +0 -0
  416. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/fix_sex.py +0 -0
  417. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/olc_tables.py +0 -0
  418. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/poses.py +0 -0
  419. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/prefix_lookup.py +0 -0
  420. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/prompt.py +0 -0
  421. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/rng_mm.py +0 -0
  422. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/string_editor.py +0 -0
  423. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/utils/text.py +0 -0
  424. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/wiznet.py +0 -0
  425. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/__init__.py +0 -0
  426. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/char_find.py +0 -0
  427. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/linking.py +0 -0
  428. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/look.py +0 -0
  429. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/movement.py +0 -0
  430. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/obj_find.py +0 -0
  431. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/time_persistence.py +0 -0
  432. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/vision.py +0 -0
  433. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/mud/world/world_state.py +0 -0
  434. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
  435. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
  436. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/rom24_quickmud_python.egg-info/requires.txt +0 -0
  437. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
  438. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/setup.cfg +0 -0
  439. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/setup.py +0 -0
  440. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/conftest.py +0 -0
  441. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/helpers.py +0 -0
  442. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/helpers_player.py +0 -0
  443. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/conftest.py +0 -0
  444. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_act_comm_gaps.py +0 -0
  445. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_act_enter_gaps.py +0 -0
  446. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_act_wiz_command_parity.py +0 -0
  447. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_admin_commands.py +0 -0
  448. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_advancement_con_app.py +0 -0
  449. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_advancement_wis_app.py +0 -0
  450. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_alias_command_parity.py +0 -0
  451. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_architectural_parity.py +0 -0
  452. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_auto_flags.py +0 -0
  453. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_auto_sacrifice_pers.py +0 -0
  454. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_auto_sequences.py +0 -0
  455. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_ban_command_parity.py +0 -0
  456. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_bit_flag_string.py +0 -0
  457. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_bit_flag_value.py +0 -0
  458. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_bit_is_stat.py +0 -0
  459. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_boards_rom_parity.py +0 -0
  460. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_channels.py +0 -0
  461. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_character_advancement.py +0 -0
  462. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_character_commands.py +0 -0
  463. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_character_creation_runtime.py +0 -0
  464. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_combat_dex_app.py +0 -0
  465. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_combat_str_app.py +0 -0
  466. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_communication_enhancement.py +0 -0
  467. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_compare_critical_gaps.py +0 -0
  468. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_config_commands.py +0 -0
  469. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_consumables.py +0 -0
  470. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_container_retrieval.py +0 -0
  471. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_dam_message_pers.py +0 -0
  472. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_db2_loader_parity.py +0 -0
  473. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_db_canonical_round_trip.py +0 -0
  474. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_death_and_corpses.py +0 -0
  475. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_affects.py +0 -0
  476. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_consider_command.py +0 -0
  477. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_equipment.py +0 -0
  478. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_examine_command.py +0 -0
  479. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_exits_command.py +0 -0
  480. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_help_command.py +0 -0
  481. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_inventory.py +0 -0
  482. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_look_command.py +0 -0
  483. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_password_command.py +0 -0
  484. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_practice_command.py +0 -0
  485. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_time_command.py +0 -0
  486. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_weather_command.py +0 -0
  487. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_where_command.py +0 -0
  488. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_who_command.py +0 -0
  489. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_do_worth.py +0 -0
  490. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_door_portal_commands.py +0 -0
  491. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_drop_command.py +0 -0
  492. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_emote_parity.py +0 -0
  493. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_environmental_effects.py +0 -0
  494. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_equipment_ac_calculations.py +0 -0
  495. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_equipment_system.py +0 -0
  496. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_fight_c_do_kill_parity.py +0 -0
  497. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_fight_c_safe_room_damage_gate.py +0 -0
  498. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_flag_command_parity.py +0 -0
  499. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_furniture_occupancy.py +0 -0
  500. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_get_room_messages.py +0 -0
  501. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_give_command.py +0 -0
  502. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_group_combat.py +0 -0
  503. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_healer_command_parity.py +0 -0
  504. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_hedit_parity.py +0 -0
  505. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_info_display.py +0 -0
  506. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_interp_dispatcher.py +0 -0
  507. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_interp_prefix_order.py +0 -0
  508. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_interp_trust.py +0 -0
  509. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv005_same_room_combat.py +0 -0
  510. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv006_fighting_pointer_coherence.py +0 -0
  511. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv008_persistence_coherence.py +0 -0
  512. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv009_registry_disconnect_cleanup.py +0 -0
  513. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv010_room_people_coherence.py +0 -0
  514. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv011_carry_weight_coherence.py +0 -0
  515. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv012_end_to_end.py +0 -0
  516. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv012_object_list_canonical.py +0 -0
  517. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_inv013_object_location_coherence.py +0 -0
  518. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_invisibility_combat.py +0 -0
  519. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_json_loader_parity.py +0 -0
  520. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_lookup_parity.py +0 -0
  521. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_message_delivery_no_duplicate.py +0 -0
  522. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_ai.py +0 -0
  523. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_assist.py +0 -0
  524. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_call.py +0 -0
  525. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_cast.py +0 -0
  526. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_damage.py +0 -0
  527. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_flee.py +0 -0
  528. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_junk.py +0 -0
  529. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_kill.py +0 -0
  530. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_oload.py +0 -0
  531. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_purge.py +0 -0
  532. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mob_cmds_transfer.py +0 -0
  533. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mobprog_edge_cases.py +0 -0
  534. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mobprog_greet_trigger.py +0 -0
  535. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mobprog_predicates.py +0 -0
  536. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mobprog_program_flow.py +0 -0
  537. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mobprog_scenarios.py +0 -0
  538. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_money_objects.py +0 -0
  539. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mpedit_001_interpret_mpedit.py +0 -0
  540. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mpedit_002_do_mpedit.py +0 -0
  541. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_mpedit_003_mprog_code_model.py +0 -0
  542. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_music_load_songs.py +0 -0
  543. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_music_play.py +0 -0
  544. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_nanny_login_parity.py +0 -0
  545. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_nanny_saveload_runtime_path.py +0 -0
  546. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_new_player_workflow.py +0 -0
  547. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_numbered_get_syntax.py +0 -0
  548. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_001_run_olc_editor.py +0 -0
  549. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_007_redit_list_show.py +0 -0
  550. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_008_oedit_missing_cmds.py +0 -0
  551. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_009_medit_missing_cmds.py +0 -0
  552. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_010_015_do_olc_router.py +0 -0
  553. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_011_aedit_flag_toggle.py +0 -0
  554. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_012_014_editor_fallback.py +0 -0
  555. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_001_aedit_create.py +0 -0
  556. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_002_redit_create.py +0 -0
  557. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_003_redit_reset.py +0 -0
  558. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_004_redit_vnum_teleport.py +0 -0
  559. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_005_oedit_create.py +0 -0
  560. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_006_medit_create.py +0 -0
  561. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_007_aedit_show_flags.py +0 -0
  562. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_008_redit_show_parity.py +0 -0
  563. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_009_oedit_show_parity.py +0 -0
  564. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_010_medit_show_parity.py +0 -0
  565. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_011_name_messages.py +0 -0
  566. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_012_aedit_reset.py +0 -0
  567. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_013_get_area_for_vnum_order.py +0 -0
  568. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_act_014_area_changed_protocol.py +0 -0
  569. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_alist.py +0 -0
  570. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_builders.py +0 -0
  571. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_commands_listing.py +0 -0
  572. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_descriptor_state.py +0 -0
  573. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_display_resets.py +0 -0
  574. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_do_resets_subcommands.py +0 -0
  575. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_001_mob_defensive_flags.py +0 -0
  576. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_002_mob_form_parts_size_material.py +0 -0
  577. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_003_mob_mprogs.py +0 -0
  578. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_004_mob_shops.py +0 -0
  579. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_005_mob_spec_fun.py +0 -0
  580. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_006_object_level.py +0 -0
  581. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_007_object_affects.py +0 -0
  582. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_008_object_extra_descr.py +0 -0
  583. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_009_area_helps_round_trip.py +0 -0
  584. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_010_asave_area_dispatch.py +0 -0
  585. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_011_autosave_entry.py +0 -0
  586. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_012_npc_security_gate.py +0 -0
  587. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_013_area_list_social_prepend.py +0 -0
  588. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_olc_save_014_017_message_strings.py +0 -0
  589. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_pc_death_keeps_connection.py +0 -0
  590. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_pc_death_no_message_replay.py +0 -0
  591. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_pilot_integration.py +0 -0
  592. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_pit_timer_handling.py +0 -0
  593. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_player_config.py +0 -0
  594. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_player_npc_interaction.py +0 -0
  595. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_position_commands.py +0 -0
  596. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_prompt_cmd_parity.py +0 -0
  597. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_prompt_rom_parity.py +0 -0
  598. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_put_pit_timer.py +0 -0
  599. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_put_room_messages.py +0 -0
  600. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_put_weight_mult.py +0 -0
  601. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_recall_train_commands.py +0 -0
  602. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_remove_command.py +0 -0
  603. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_room_light_tracking.py +0 -0
  604. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_room_retrieval.py +0 -0
  605. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_room_safety_features.py +0 -0
  606. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_runtime_bugs_2026_04_30.py +0 -0
  607. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_sacrifice_command.py +0 -0
  608. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_say_parity.py +0 -0
  609. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_scan_broadcasts.py +0 -0
  610. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_shout_yell_parity.py +0 -0
  611. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_skills_integration.py +0 -0
  612. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_skills_integration_combat_specials.py +0 -0
  613. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_socials.py +0 -0
  614. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_spell_affects_persistence.py +0 -0
  615. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_spell_casting.py +0 -0
  616. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_steal_command.py +0 -0
  617. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_append.py +0 -0
  618. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_edit.py +0 -0
  619. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_first_arg.py +0 -0
  620. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_format_string.py +0 -0
  621. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_lineadd.py +0 -0
  622. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_linedel.py +0 -0
  623. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_merc_getline.py +0 -0
  624. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_numlines.py +0 -0
  625. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_proper.py +0 -0
  626. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_replace.py +0 -0
  627. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_string_add.py +0 -0
  628. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_string_editor_unpad.py +0 -0
  629. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_tables_parity.py +0 -0
  630. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_tell_parity.py +0 -0
  631. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_update_c_parity.py +0 -0
  632. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_weapon_proc_pers.py +0 -0
  633. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/integration/test_weather_time.py +0 -0
  634. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_account_auth.py +0 -0
  635. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_act_comm_rom_parity.py +0 -0
  636. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_act_enter_rom_parity.py +0 -0
  637. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_act_info_rom_parity.py +0 -0
  638. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_act_obj_rom_parity.py +0 -0
  639. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_act_wiz_rom_parity.py +0 -0
  640. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_advancement.py +0 -0
  641. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_affects.py +0 -0
  642. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_agent_interface.py +0 -0
  643. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_alias_parity.py +0 -0
  644. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_ansi.py +0 -0
  645. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_are_conversion.py +0 -0
  646. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_area_counts.py +0 -0
  647. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_area_exits.py +0 -0
  648. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_area_loader.py +0 -0
  649. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_area_specials.py +0 -0
  650. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_bans.py +0 -0
  651. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_boards.py +0 -0
  652. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_builder_hedit.py +0 -0
  653. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_builder_stat_commands.py +0 -0
  654. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_building.py +0 -0
  655. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_char_update_rom_parity.py +0 -0
  656. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat.py +0 -0
  657. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_assist.py +0 -0
  658. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_damage_types.py +0 -0
  659. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_death.py +0 -0
  660. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_defenses_prob.py +0 -0
  661. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_messages.py +0 -0
  662. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_position_damage.py +0 -0
  663. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_rom_parity.py +0 -0
  664. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_skills.py +0 -0
  665. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_state.py +0 -0
  666. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_surrender.py +0 -0
  667. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_thac0.py +0 -0
  668. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_combat_thac0_engine.py +0 -0
  669. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_command_abbrev.py +0 -0
  670. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_command_parity.py +0 -0
  671. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_commands.py +0 -0
  672. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_communication.py +0 -0
  673. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_connection_motd.py +0 -0
  674. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_convert_are_to_json_cli.py +0 -0
  675. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_critical_function_parity.py +0 -0
  676. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_damage_reduction.py +0 -0
  677. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_damage_reduction_integration.py +0 -0
  678. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_db_resets_rom_parity.py +0 -0
  679. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_db_seed.py +0 -0
  680. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_defense_flags.py +0 -0
  681. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_encumbrance.py +0 -0
  682. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_enter_portal.py +0 -0
  683. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_fighting_state.py +0 -0
  684. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_fix_sex.py +0 -0
  685. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_game_loop.py +0 -0
  686. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_game_loop_order.py +0 -0
  687. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_game_loop_wait_daze.py +0 -0
  688. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_golden_reference.py +0 -0
  689. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_handler_affects_rom_parity.py +0 -0
  690. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_hash_utils.py +0 -0
  691. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_healer.py +0 -0
  692. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_healer_parity.py +0 -0
  693. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_healer_rom_parity.py +0 -0
  694. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_help_conversion.py +0 -0
  695. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_help_system.py +0 -0
  696. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_imc.py +0 -0
  697. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_json_io.py +0 -0
  698. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_json_model_instantiation.py +0 -0
  699. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_json_room_fields.py +0 -0
  700. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_load_midgaard.py +0 -0
  701. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_logging_admin.py +0 -0
  702. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_logging_rotation.py +0 -0
  703. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_mob_act_flags.py +0 -0
  704. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_mob_damage_modifiers.py +0 -0
  705. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_mobprog.py +0 -0
  706. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_mobprog_commands.py +0 -0
  707. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_mobprog_helpers.py +0 -0
  708. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_mobprog_triggers.py +0 -0
  709. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement.py +0 -0
  710. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_charm.py +0 -0
  711. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_costs.py +0 -0
  712. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_doors.py +0 -0
  713. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_followers.py +0 -0
  714. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_mobprog.py +0 -0
  715. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_npc.py +0 -0
  716. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_portals.py +0 -0
  717. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_privacy.py +0 -0
  718. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_movement_visibility.py +0 -0
  719. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_music.py +0 -0
  720. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_nanny_rom_parity.py +0 -0
  721. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_networking_telnet.py +0 -0
  722. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_obj_loader.py +0 -0
  723. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_obj_update_rom_parity.py +0 -0
  724. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_olc_aedit.py +0 -0
  725. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_olc_medit.py +0 -0
  726. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_olc_oedit.py +0 -0
  727. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_olc_save.py +0 -0
  728. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_passive_skills_rom_parity.py +0 -0
  729. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_affect_flags.py +0 -0
  730. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_auto_settings.py +0 -0
  731. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_combat_attributes.py +0 -0
  732. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_conditions.py +0 -0
  733. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_creation.py +0 -0
  734. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_equipment.py +0 -0
  735. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_flags.py +0 -0
  736. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_info_commands.py +0 -0
  737. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_mechanics.py +0 -0
  738. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_prompt.py +0 -0
  739. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_resistance_flags.py +0 -0
  740. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_skills_spells.py +0 -0
  741. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_stats.py +0 -0
  742. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_title_description.py +0 -0
  743. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_player_wimpy.py +0 -0
  744. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_practice.py +0 -0
  745. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_prompt_clamps_hp.py +0 -0
  746. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_reset_levels.py +0 -0
  747. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_resets.py +0 -0
  748. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_rng_and_ccompat.py +0 -0
  749. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_rng_determinism.py +0 -0
  750. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_rng_dice.py +0 -0
  751. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_rom_api.py +0 -0
  752. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_runtime_models.py +0 -0
  753. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_saves_rom_parity.py +0 -0
  754. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_say_spell.py +0 -0
  755. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_scan_parity.py +0 -0
  756. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_schema_validation.py +0 -0
  757. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_scripted_session.py +0 -0
  758. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_shop_conversion.py +0 -0
  759. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_shops.py +0 -0
  760. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_combat_rom_parity.py +0 -0
  761. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_conversion.py +0 -0
  762. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_envenom_rom_parity.py +0 -0
  763. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_haggle_rom_parity.py +0 -0
  764. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_hide_rom_parity.py +0 -0
  765. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_peek_rom_parity.py +0 -0
  766. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_pick_lock_rom_parity.py +0 -0
  767. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_recall_rom_parity.py +0 -0
  768. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_registry.py +0 -0
  769. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skill_steal_rom_parity.py +0 -0
  770. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills.py +0 -0
  771. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_buffs.py +0 -0
  772. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_combat.py +0 -0
  773. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_conjuration.py +0 -0
  774. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_damage.py +0 -0
  775. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_debuffs.py +0 -0
  776. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_detection.py +0 -0
  777. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_healing.py +0 -0
  778. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_identify.py +0 -0
  779. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_learned.py +0 -0
  780. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_mass.py +0 -0
  781. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_misc.py +0 -0
  782. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_spells_cast_listing.py +0 -0
  783. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_skills_transport.py +0 -0
  784. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_social_conversion.py +0 -0
  785. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_social_placeholders.py +0 -0
  786. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spawning.py +0 -0
  787. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spec_fun_behaviors.py +0 -0
  788. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spec_funs.py +0 -0
  789. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spec_funs_extra.py +0 -0
  790. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_specials_loader_ext.py +0 -0
  791. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_area_effects_rom_parity.py +0 -0
  792. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
  793. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
  794. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
  795. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_cancellation_rom_parity.py +0 -0
  796. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_charm_control_rom_parity.py +0 -0
  797. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_creation_rom_parity.py +0 -0
  798. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
  799. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_damage_additional_rom_parity.py +0 -0
  800. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_detection_rom_parity.py +0 -0
  801. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_enchantment_rom_parity.py +0 -0
  802. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_farsight_rom_parity.py +0 -0
  803. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_final_nine_rom_parity.py +0 -0
  804. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_harm_rom_parity.py +0 -0
  805. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_healing_rom_parity.py +0 -0
  806. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_heat_metal_rom_parity.py +0 -0
  807. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
  808. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_information_rom_parity.py +0 -0
  809. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_mass_healing_rom_parity.py +0 -0
  810. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_priority_high_rom_parity.py +0 -0
  811. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
  812. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spell_travel_portal_rom_parity.py +0 -0
  813. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spells_basic.py +0 -0
  814. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_spells_damage.py +0 -0
  815. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_state_transitions.py +0 -0
  816. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_telnet_server.py +0 -0
  817. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_thief_skills_dispatcher_parity.py +0 -0
  818. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_time_daynight.py +0 -0
  819. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_time_persistence.py +0 -0
  820. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_utility_spells_parity.py +0 -0
  821. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_weapon_damage.py +0 -0
  822. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_weapon_special_attacks.py +0 -0
  823. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_weapon_table_parity.py +0 -0
  824. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_websocket_server.py +0 -0
  825. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_wiznet.py +0 -0
  826. {rom24_quickmud_python-2.9.2 → rom24_quickmud_python-2.9.4}/tests/test_world.py +0 -0
@@ -7,6 +7,22 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.9.4]
11
+
12
+ ### Fixed
13
+ - **`Character.add_object` did not set `obj.carried_by`** (`mud/models/character.py:542`): ROM `src/handler.c:1626 obj_to_char` sets `obj->carried_by = ch` atomically with the inventory append. The Python helper updated `inventory` + carry counters but left the canonical INV-013 carrier field as `None`, so every direct `add_object` caller silently produced an inventory item with no back-pointer to its carrier. Fix: `add_object` now sets `obj.location = self` (INV-013 property dispatch sets `carried_by` and clears `in_room` / `in_obj`).
14
+ - **`do_mpoload` bypassed `Character.add_object` entirely** (`mud/mob_cmds.py:651-655`, ROM `src/mob_cmds.c:603-607 → src/handler.c:1626 obj_to_char`): the inventory-mode branch did `inventory.append(obj)`, missing both the INV-013 `carried_by` field AND the INV-011 carry counters. Every MOBprog `mob oload <vnum>` left the script-mob's `carry_weight` and `carry_number` unchanged, so encumbrance skewed every time a mob scripted an item load. Fix: route through `ch.add_object(obj)`.
15
+ - Surfaced via the INV-012 follow-up scan of `do_mpoload`; existing `test_mob_cmds_oload.py` only checked `obj.level` and inventory membership, never asserting `carried_by` or carry counters. New `tests/integration/test_inv013_add_object_carrier.py` pins both behaviors (3 tests).
16
+
17
+ ## [2.9.3]
18
+
19
+ ### Added
20
+ - **`INV-014` — OBJECT-REGISTRY-MEMBERSHIP locked in** (`docs/parity/CROSS_FILE_INVARIANTS_TRACKER.md`, `tests/integration/test_inv014_object_registry_membership.py`): ROM `src/db.c:create_object` appends every freshly built `OBJ_DATA` to the global `object_list` unconditionally — every world-scan consumer (`src/magic.c:3737 spell_locate_object`, decay sweep, save) walks that list. Previously only `mud/spawning/obj_spawner.py:spawn_object` appended to `mud.models.obj.object_registry`; six other production sites built `Object` instances without registering, leaving freshly-created corpses, gore objects, money piles, shop clones, and DB-restored inventory invisible to `locate object`. Added `mud.models.object.create_object(prototype, *, instance_id=None)` as the canonical factory (appends and returns); routed every production construction site through it. `mud/skills/handlers.py:_iterate_world_objects` now walks `object_registry` first, computing the holder per ROM `src/magic.c:3747` (outermost `in_obj` chain → `carried_by` → `in_room` → `None` rendered as "somewhere"); a legacy room/character walk remains as a compat backstop for unit tests. Eight enforcement tests cover every construction path plus the homeless-object locate symptom.
21
+
22
+ ### Fixed
23
+ - **`spell_locate_object` could not find homeless objects** (`mud/skills/handlers.py:_iterate_world_objects`): an object spawned but not yet placed (`in_room=None, carried_by=None, in_obj=None`) was skipped entirely, while ROM `src/magic.c:3756-3762` reports it as "one is in somewhere" (the `in_room == NULL` branch). Iterator now walks `object_registry` so registered-but-unplaced objects surface at parity with ROM.
24
+ - **Six production sites built `Object` instances without registering** (handler.py, combat/death.py ×2, rom_api.py, commands/shop.py fallback, models/conversion.py): `create_money`, `_fallback_gore`, `_fallback_corpse`, `recursive_clone`, `_clone_inventory_object` (when `spawn_object` returned `None`), and `load_objects_for_character` all bypassed `object_registry`. ROM `create_object` always appends. All six now route through `create_object` (or `spawn_object` where applicable).
25
+
10
26
  ## [2.9.2]
11
27
 
12
28
  ### Added
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom24-quickmud-python
3
- Version: 2.9.2
3
+ Version: 2.9.4
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>
@@ -29,7 +29,7 @@ from mud.characters.follow import stop_follower
29
29
  from mud.models.clans import get_clan_hall_vnum
30
30
  from mud.models.races import get_race_by_index
31
31
  from mud.models.obj import ObjIndex
32
- from mud.models.object import Object
32
+ from mud.models.object import Object, create_object
33
33
  from mud.models.social import expand_placeholders
34
34
  from mud.spawning.obj_spawner import spawn_object
35
35
  from mud.utils import rng_mm
@@ -74,7 +74,7 @@ def _fallback_gore(
74
74
  description=description_template,
75
75
  )
76
76
  proto.item_type = int(item_type)
77
- obj = Object(instance_id=None, prototype=proto)
77
+ obj = create_object(proto)
78
78
  obj.item_type = int(item_type)
79
79
  return obj
80
80
 
@@ -341,7 +341,7 @@ def _fallback_corpse(vnum: int, *, item_type: ItemType) -> Object:
341
341
 
342
342
  proto = ObjIndex(vnum=vnum, short_descr="the corpse of %s", description="The corpse of %s is lying here.")
343
343
  proto.item_type = int(item_type)
344
- corpse = Object(instance_id=None, prototype=proto)
344
+ corpse = create_object(proto)
345
345
  corpse.item_type = int(item_type)
346
346
  return corpse
347
347
 
@@ -20,7 +20,7 @@ from mud.models.constants import (
20
20
  ITEM_SELL_EXTRACT,
21
21
  ITEM_VIS_DEATH,
22
22
  )
23
- from mud.models.object import Object
23
+ from mud.models.object import Object, create_object
24
24
  from mud.registry import room_registry, shop_registry
25
25
  from mud.skills import check_improve
26
26
  from mud.spawning.obj_spawner import spawn_object
@@ -354,7 +354,7 @@ def _clone_inventory_object(template: Object) -> Object | None:
354
354
 
355
355
  clone = spawn_object(getattr(proto, "vnum", 0))
356
356
  if clone is None:
357
- clone = Object(instance_id=None, prototype=proto)
357
+ clone = create_object(proto)
358
358
 
359
359
  # Mirror runtime overrides from the template copy so shop customisations persist.
360
360
  clone.value = list(getattr(template, "value", clone.value))
@@ -892,7 +892,7 @@ def create_money(gold: int, silver: int) -> Object:
892
892
  ItemType,
893
893
  )
894
894
  from mud.models.obj import ObjIndex
895
- from mud.models.object import Object
895
+ from mud.models.object import Object, create_object
896
896
 
897
897
  # ROM C handler.c:2432-2437 (validate input)
898
898
  if gold < 0 or silver < 0 or (gold == 0 and silver == 0):
@@ -957,7 +957,7 @@ def create_money(gold: int, silver: int) -> Object:
957
957
  wear_flags=int(WearFlag.TAKE),
958
958
  weight=weight,
959
959
  )
960
- obj = Object(instance_id=None, prototype=proto)
960
+ obj = create_object(proto)
961
961
  obj.item_type = int(ItemType.MONEY)
962
962
  obj.short_descr = short_descr
963
963
  obj.cost = cost
@@ -648,11 +648,19 @@ def do_mpoload(ch: Character, argument: str) -> None:
648
648
  if mode.startswith("r"):
649
649
  room.add_object(obj)
650
650
  return
651
+ # mirroring ROM src/mob_cmds.c:603-607 → src/handler.c:1626 obj_to_char.
652
+ # Route through Character.add_object so the INV-013 carrier field
653
+ # and INV-011 carry counters stay in lockstep with inventory.
654
+ add = getattr(ch, "add_object", None)
655
+ if callable(add):
656
+ add(obj)
657
+ return
651
658
  inventory = getattr(ch, "inventory", None)
652
659
  if inventory is None:
653
660
  inventory = []
654
661
  ch.inventory = inventory
655
662
  inventory.append(obj)
663
+ obj.location = ch
656
664
 
657
665
 
658
666
  def _resolve_transfer_location(ch: Character, token: str) -> Room | None:
@@ -540,7 +540,12 @@ class Character:
540
540
  return base_weight + silver // 10 + (gold * 2) // 5
541
541
 
542
542
  def add_object(self, obj: Object) -> None:
543
+ # mirroring ROM src/handler.c:1626 obj_to_char — the carrier
544
+ # field is set atomically with the inventory append. Using the
545
+ # INV-013 `obj.location` property dispatch sets `carried_by`
546
+ # and clears `in_room` / `in_obj` per the property contract.
543
547
  self.inventory.append(obj)
548
+ obj.location = self
544
549
  self.carry_number += _object_carry_number(obj)
545
550
  self._recalculate_carry_weight()
546
551
 
@@ -2,7 +2,7 @@ from __future__ import annotations
2
2
 
3
3
  from mud.db.models import Character as DBCharacter
4
4
  from mud.db.models import ObjectInstance as DBObjectInstance
5
- from mud.models.object import Object
5
+ from mud.models.object import Object, create_object
6
6
  from mud.registry import obj_registry
7
7
 
8
8
 
@@ -14,7 +14,7 @@ def load_objects_for_character(db_char: DBCharacter) -> tuple[list[Object], dict
14
14
  proto = obj_registry.get(inst.prototype_vnum)
15
15
  if not proto:
16
16
  continue
17
- obj = Object(instance_id=inst.id, prototype=proto)
17
+ obj = create_object(proto, instance_id=inst.id)
18
18
  if inst.location and inst.location.startswith("equipment:"):
19
19
  slot = inst.location.split(":", 1)[1]
20
20
  equipment[slot] = obj
@@ -146,3 +146,23 @@ class Object:
146
146
  self.in_room = value # type: ignore[assignment]
147
147
  self.carried_by = None
148
148
  self.in_obj = None
149
+
150
+
151
+ def create_object(prototype: ObjIndex, *, instance_id: int | None = None) -> Object:
152
+ """Build a new ``Object`` and register it on ``object_registry``.
153
+
154
+ INV-014 OBJECT-REGISTRY-MEMBERSHIP: ROM ``src/db.c:create_object``
155
+ appends every freshly built ``OBJ_DATA`` to the global
156
+ ``object_list``. ``mud.models.obj.object_registry`` is the canonical
157
+ Python equivalent; world-scan consumers (``spell_locate_object`` and
158
+ any future iteration over every live object) rely on it being
159
+ complete. Every Python ``Object(...)`` construction site that does
160
+ not already go through ``mud.spawning.obj_spawner.spawn_object``
161
+ must call this helper.
162
+ """
163
+
164
+ from mud.models.obj import object_registry
165
+
166
+ obj = Object(instance_id=instance_id, prototype=prototype)
167
+ object_registry.append(obj)
168
+ return obj
@@ -658,7 +658,7 @@ def recursive_clone(obj: Object, clone_to: Object | None = None) -> Object:
658
658
  Cloned object with all contents
659
659
  """
660
660
  from mud.models.obj import ObjIndex
661
- from mud.models.object import Object
661
+ from mud.models.object import Object, create_object
662
662
 
663
663
  if not obj.prototype:
664
664
  proto = ObjIndex(
@@ -678,7 +678,7 @@ def recursive_clone(obj: Object, clone_to: Object | None = None) -> Object:
678
678
  else:
679
679
  proto = obj.prototype
680
680
 
681
- new_obj = Object(instance_id=None, prototype=proto)
681
+ new_obj = create_object(proto)
682
682
 
683
683
  for content in obj.contained_items:
684
684
  recursive_clone(content, new_obj)
@@ -857,16 +857,52 @@ def _object_name_matches(obj: Object, search: str) -> bool:
857
857
 
858
858
 
859
859
  def _iterate_world_objects():
860
- """Yield (object, holder) pairs mirroring ROM ``object_list`` traversal."""
860
+ """Yield ``(object, holder)`` pairs mirroring ROM ``object_list``.
861
+
862
+ INV-014 OBJECT-REGISTRY-MEMBERSHIP: ``object_registry`` is the
863
+ canonical Python equivalent of ROM ``object_list``. The primary
864
+ iteration walks it directly so that registered-but-unplaced objects
865
+ (e.g. transiently between ``extract`` and re-placement, or freshly
866
+ spawned before being put in a room) are surfaced exactly as ROM
867
+ ``spell_locate_object`` (src/magic.c:3737) sees them.
868
+
869
+ For each registered obj the holder is computed per ROM
870
+ src/magic.c:3747: walk the ``in_obj`` chain to the outermost
871
+ container, then prefer ``carried_by`` over ``in_room`` (``None``
872
+ if neither is set, rendered as "somewhere").
873
+
874
+ A secondary walk of ``room_registry`` / ``character_registry``
875
+ backstops legacy unit tests that build ``Object`` instances directly
876
+ without going through ``create_object`` / ``spawn_object``; the seen
877
+ set dedupes by identity so registered objects are not yielded twice.
878
+ """
879
+
880
+ from mud.models.obj import object_registry
861
881
 
862
882
  seen: set[int] = set()
863
883
 
864
- def _walk(obj: Object, holder: object):
884
+ def _yield(obj: Object, holder: object):
865
885
  ident = id(obj)
866
886
  if ident in seen:
867
887
  return
868
888
  seen.add(ident)
869
889
  yield obj, holder
890
+
891
+ for obj in list(object_registry):
892
+ outer = obj
893
+ while getattr(outer, "in_obj", None) is not None:
894
+ outer = outer.in_obj
895
+ carried_by = getattr(outer, "carried_by", None)
896
+ if carried_by is not None:
897
+ yield from _yield(obj, carried_by)
898
+ continue
899
+ in_room = getattr(outer, "in_room", None)
900
+ yield from _yield(obj, in_room)
901
+
902
+ def _walk(obj: Object, holder: object):
903
+ if id(obj) in seen:
904
+ return
905
+ yield from _yield(obj, holder)
870
906
  children: list[Object] = []
871
907
  contained = getattr(obj, "contained_items", None)
872
908
  if isinstance(contained, list):
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rom24-quickmud-python"
7
- version = "2.9.2"
7
+ version = "2.9.4"
8
8
  description = "A modern Python port of the ROM 2.4b6 MUD engine with full telnet server and JSON world loading"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom24-quickmud-python
3
- Version: 2.9.2
3
+ Version: 2.9.4
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>
@@ -703,7 +703,9 @@ tests/integration/test_inv010_room_people_coherence.py
703
703
  tests/integration/test_inv011_carry_weight_coherence.py
704
704
  tests/integration/test_inv012_end_to_end.py
705
705
  tests/integration/test_inv012_object_list_canonical.py
706
+ tests/integration/test_inv013_add_object_carrier.py
706
707
  tests/integration/test_inv013_object_location_coherence.py
708
+ tests/integration/test_inv014_object_registry_membership.py
707
709
  tests/integration/test_invisibility_combat.py
708
710
  tests/integration/test_json_loader_parity.py
709
711
  tests/integration/test_lookup_parity.py
@@ -0,0 +1,140 @@
1
+ """INV-013/INV-011 follow-up: ``Character.add_object`` must set
2
+ ``obj.carried_by`` and update carry counters per ROM
3
+ ``src/handler.c:1626 obj_to_char``.
4
+
5
+ ROM ``obj_to_char`` does three things atomically:
6
+
7
+ obj->next_content = ch->carrying;
8
+ ch->carrying = obj;
9
+ obj->carried_by = ch;
10
+ obj->in_room = NULL;
11
+ obj->in_obj = NULL;
12
+ ch->carry_number += get_obj_number(obj);
13
+ ch->carry_weight += get_obj_weight(obj);
14
+
15
+ The Python ``Character.add_object`` previously updated
16
+ ``inventory`` + carry counters but never set ``obj.carried_by``, so
17
+ the canonical INV-013 carrier field stayed ``None`` for every direct
18
+ ``add_object`` caller. Per the INV-013 property dispatch,
19
+ ``obj.location = self`` is the convergent way to set the field and
20
+ clear the other two (``in_room``, ``in_obj``).
21
+
22
+ Surfaced through the ``do_mpoload`` audit: the script command
23
+ appended directly to ``ch.inventory`` instead of going through
24
+ ``add_object``, so it hit BOTH gaps — the carrier field stayed unset
25
+ AND the carry counters drifted. Both regression tests live here so
26
+ ``Character.add_object`` and ``do_mpoload`` are pinned to ROM
27
+ contracts together.
28
+ """
29
+
30
+ from __future__ import annotations
31
+
32
+ import pytest
33
+
34
+ from mud.mob_cmds import do_mpoload
35
+ from mud.models.character import Character
36
+ from mud.models.obj import ObjIndex
37
+ from mud.models.room import Room
38
+ from mud.registry import obj_registry, room_registry
39
+ from mud.spawning.obj_spawner import spawn_object
40
+
41
+ _TEST_VNUM = 91510
42
+ _ROOM_VNUM = 9511
43
+
44
+
45
+ @pytest.fixture
46
+ def add_room() -> Room:
47
+ room = room_registry.get(_ROOM_VNUM)
48
+ if room is None:
49
+ room = Room(vnum=_ROOM_VNUM, name="Add-Object Test Room")
50
+ room_registry[_ROOM_VNUM] = room
51
+ room.contents.clear()
52
+ room.people.clear()
53
+ return room
54
+
55
+
56
+ @pytest.fixture(autouse=True)
57
+ def _register_proto():
58
+ proto = ObjIndex(
59
+ vnum=_TEST_VNUM,
60
+ name="anvil",
61
+ short_descr="an anvil",
62
+ description="A heavy anvil.",
63
+ item_type=1,
64
+ level=5,
65
+ weight=20,
66
+ value=[0, 0, 0, 0, 0],
67
+ )
68
+ obj_registry[_TEST_VNUM] = proto
69
+ yield
70
+ obj_registry.pop(_TEST_VNUM, None)
71
+
72
+
73
+ @pytest.fixture
74
+ def carrier(add_room: Room) -> Character:
75
+ ch = Character(name="Carrier", is_npc=True)
76
+ ch.level = 30
77
+ ch.trust = 30
78
+ add_room.add_character(ch)
79
+ return ch
80
+
81
+
82
+ def test_add_object_sets_carried_by(carrier: Character) -> None:
83
+ """``Character.add_object`` must set ``obj.carried_by`` per
84
+ ROM ``src/handler.c:1626 obj_to_char``.
85
+ """
86
+
87
+ obj = spawn_object(_TEST_VNUM)
88
+ assert obj is not None
89
+
90
+ carrier.add_object(obj)
91
+
92
+ assert obj in carrier.inventory
93
+ assert obj.carried_by is carrier, (
94
+ "Character.add_object appended to inventory without setting "
95
+ "obj.carried_by; ROM src/handler.c:1626 obj_to_char sets it "
96
+ "atomically and INV-013 makes carried_by the canonical "
97
+ "carrier field."
98
+ )
99
+ # INV-013: setting carried_by must clear the other two location
100
+ # fields atomically (property dispatch contract).
101
+ assert obj.in_room is None
102
+ assert obj.in_obj is None
103
+
104
+
105
+ def test_mpoload_inventory_sets_carried_by(carrier: Character) -> None:
106
+ """``do_mpoload`` (inventory mode) must route through
107
+ ``Character.add_object`` so the carrier field is set.
108
+ """
109
+
110
+ do_mpoload(carrier, f"{_TEST_VNUM}")
111
+
112
+ assert len(carrier.inventory) == 1
113
+ obj = carrier.inventory[0]
114
+ assert obj.carried_by is carrier, (
115
+ "do_mpoload appended to ch.inventory directly without calling "
116
+ "ch.add_object(obj); obj.carried_by stayed None, violating "
117
+ "INV-013 and ROM src/mob_cmds.c:603-607 → src/handler.c:1626 "
118
+ "obj_to_char."
119
+ )
120
+
121
+
122
+ def test_mpoload_inventory_updates_carry_counters(carrier: Character) -> None:
123
+ """``do_mpoload`` (inventory mode) must update ``carry_weight``
124
+ and ``carry_number`` per ROM ``obj_to_char`` (INV-011).
125
+ """
126
+
127
+ initial_weight = carrier.carry_weight
128
+ initial_number = carrier.carry_number
129
+
130
+ do_mpoload(carrier, f"{_TEST_VNUM}")
131
+
132
+ obj = carrier.inventory[0]
133
+ proto_weight = int(getattr(obj.prototype, "weight", 0) or 0)
134
+ assert carrier.carry_weight == initial_weight + proto_weight, (
135
+ f"carry_weight={carrier.carry_weight}; expected initial "
136
+ f"({initial_weight}) + obj.weight ({proto_weight}). do_mpoload "
137
+ "must route through Character.add_object so INV-011 carry "
138
+ "counters stay in lockstep with inventory contents."
139
+ )
140
+ assert carrier.carry_number == initial_number + 1
@@ -0,0 +1,169 @@
1
+ """INV-014 OBJECT-REGISTRY-MEMBERSHIP enforcement.
2
+
3
+ ROM ``src/db.c:create_object`` appends every freshly built OBJ_DATA to
4
+ the global ``object_list``. ROM ``src/magic.c:3737 spell_locate_object``
5
+ walks that list. After INV-012 consolidated the dual ``Object``/
6
+ ``ObjectData`` runtime into one class, ``mud.models.obj.object_registry``
7
+ became the canonical Python equivalent of ``object_list`` — populated
8
+ by ``spawn_object`` and drained by ``mud.game_loop._extract_obj``.
9
+
10
+ Production sites that constructed ``Object`` instances WITHOUT appending
11
+ to the registry left those objects invisible to any
12
+ ``object_registry``-driven world scan. The symptom shipped against
13
+ ``spell_locate_object``: a freshly-created corpse, gore object, money
14
+ pile, shop clone, or DB-restored inventory was not findable by
15
+ ``locate object`` despite being live in the world.
16
+
17
+ These tests pin every known construction path to the registry contract.
18
+ Add a test here when introducing a new ``Object(...)`` construction
19
+ site.
20
+ """
21
+
22
+ from __future__ import annotations
23
+
24
+ from mud.combat.death import _fallback_corpse, _fallback_gore
25
+ from mud.commands.shop import _clone_inventory_object
26
+ from mud.db.models import Character as DBCharacter
27
+ from mud.db.models import ObjectInstance as DBObjectInstance
28
+ from mud.handler import create_money
29
+ from mud.models.character import Character, character_registry
30
+ from mud.models.constants import LEVEL_IMMORTAL, ItemType
31
+ from mud.models.obj import ObjIndex, object_registry
32
+ from mud.models.object import Object
33
+ from mud.models.conversion import load_objects_for_character
34
+ from mud.registry import obj_registry, room_registry
35
+ from mud.rom_api import recursive_clone
36
+ from mud.skills.handlers import locate_object
37
+ from mud.spawning.obj_spawner import spawn_object
38
+
39
+
40
+ def _registry_contains(obj: Object) -> bool:
41
+ """Identity-based membership check.
42
+
43
+ ``Object`` is a dataclass with default ``__eq__``; two distinct
44
+ instances sharing the same prototype and default field values compare
45
+ equal, so ``obj in object_registry`` can falsely succeed when an
46
+ *unrelated* like-shaped object happens to be in the registry. Use
47
+ ``id`` to verify the actual instance was registered.
48
+ """
49
+
50
+ return any(o is obj for o in object_registry)
51
+
52
+
53
+ def test_inv014_spawn_object_registers() -> None:
54
+ """``spawn_object`` is the original ROM-faithful ``create_object`` mirror."""
55
+
56
+ proto = ObjIndex(vnum=4001, name="anvil", short_descr="an anvil")
57
+ obj_registry[4001] = proto
58
+ try:
59
+ obj = spawn_object(4001)
60
+ finally:
61
+ obj_registry.pop(4001, None)
62
+
63
+ assert obj is not None
64
+ assert _registry_contains(obj)
65
+
66
+
67
+ def test_inv014_create_money_registers() -> None:
68
+ """ROM ``create_money`` (``src/handler.c``) emits an OBJ_DATA via ``create_object``."""
69
+
70
+ obj = create_money(gold=100, silver=0)
71
+ assert _registry_contains(obj)
72
+
73
+
74
+ def test_inv014_recursive_clone_registers() -> None:
75
+ """ROM ``act_obj.c:do_clone`` builds clones through ``create_object``."""
76
+
77
+ proto = ObjIndex(vnum=4100, name="staff", short_descr="a staff")
78
+ template = Object(instance_id=None, prototype=proto)
79
+ object_registry.append(template)
80
+
81
+ clone = recursive_clone(template)
82
+ assert _registry_contains(clone)
83
+ assert clone is not template
84
+
85
+
86
+ def test_inv014_fallback_corpse_registers() -> None:
87
+ """``make_corpse`` fallback path still goes through ``create_object`` in ROM."""
88
+
89
+ corpse = _fallback_corpse(0, item_type=ItemType.CORPSE_NPC)
90
+ assert _registry_contains(corpse)
91
+
92
+
93
+ def test_inv014_fallback_gore_registers() -> None:
94
+ """Gore fallback in ``death_cry`` constructs an OBJ_DATA — must register."""
95
+
96
+ gore = _fallback_gore(
97
+ 0,
98
+ short_template="a bloody hunk",
99
+ description_template="A bloody hunk lies here.",
100
+ item_type=ItemType.FOOD,
101
+ )
102
+ assert _registry_contains(gore)
103
+
104
+
105
+ def test_inv014_clone_inventory_object_registers() -> None:
106
+ """Shop stocking clones a template — ROM ``act_obj.c:do_buy`` calls ``create_object``."""
107
+
108
+ proto = ObjIndex(vnum=4200, name="potion", short_descr="a potion")
109
+ template = Object(instance_id=None, prototype=proto)
110
+ object_registry.append(template)
111
+
112
+ clone = _clone_inventory_object(template)
113
+ assert clone is not None
114
+ assert _registry_contains(clone)
115
+
116
+
117
+ def test_inv014_load_objects_for_character_registers() -> None:
118
+ """Restoring a character's inventory from DB must put each obj on ``object_list``."""
119
+
120
+ proto = ObjIndex(vnum=4300, name="ring", short_descr="a ring")
121
+ obj_registry[4300] = proto
122
+ db_char = DBCharacter(name="Restored", level=1, hp=10, room_vnum=3001)
123
+ db_char.objects = [DBObjectInstance(prototype_vnum=4300, location="inventory")]
124
+
125
+ try:
126
+ inventory, _equipment = load_objects_for_character(db_char)
127
+ finally:
128
+ obj_registry.pop(4300, None)
129
+
130
+ assert len(inventory) == 1
131
+ assert _registry_contains(inventory[0])
132
+
133
+
134
+ def test_inv014_locate_object_finds_homeless_object() -> None:
135
+ """ROM ``spell_locate_object`` iterates ``object_list``; an unplaced
136
+ object (``in_room == NULL``, ``carried_by == NULL``, ``in_obj == NULL``)
137
+ is reported as "one is in somewhere" rather than skipped.
138
+ """
139
+
140
+ caster = Character(
141
+ name="Diviner",
142
+ level=LEVEL_IMMORTAL,
143
+ trust=LEVEL_IMMORTAL,
144
+ is_npc=False,
145
+ )
146
+ character_registry.append(caster)
147
+
148
+ proto = ObjIndex(vnum=4400, name="orphan widget", short_descr="an orphan widget")
149
+ obj_registry[4400] = proto
150
+ try:
151
+ widget = spawn_object(4400)
152
+ finally:
153
+ obj_registry.pop(4400, None)
154
+ assert widget is not None
155
+ # Spawned but never placed — in_room/carried_by/in_obj all None.
156
+ assert widget.in_room is None
157
+ assert widget.carried_by is None
158
+ assert widget.in_obj is None
159
+
160
+ caster.messages.clear()
161
+ assert locate_object(caster, "widget") is True
162
+ # ROM's "in_room == NULL" branch prints "one is in somewhere\n\r"
163
+ # uppercased to "One is in somewhere".
164
+ assert any("somewhere" in msg for msg in caster.messages)
165
+
166
+ # Cleanup — autouse fixtures handle object_registry; character_registry
167
+ # is not auto-cleared in unit tests, so be explicit.
168
+ character_registry.remove(caster)
169
+ room_registry.clear()