rom24-quickmud-python 2.9.5__tar.gz → 2.9.7__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 (828) hide show
  1. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/CHANGELOG.md +11 -0
  2. {rom24_quickmud_python-2.9.5/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.9.7}/PKG-INFO +1 -1
  3. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/affects/engine.py +22 -1
  4. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/handler.py +30 -0
  5. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/pyproject.toml +1 -1
  6. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7/rom24_quickmud_python.egg-info}/PKG-INFO +1 -1
  7. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/rom24_quickmud_python.egg-info/SOURCES.txt +2 -0
  8. rom24_quickmud_python-2.9.7/tests/integration/test_decay_loop_inv012.py +198 -0
  9. rom24_quickmud_python-2.9.7/tests/integration/test_inv015_affect_tick_lifecycle.py +143 -0
  10. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/LICENSE +0 -0
  11. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/MANIFEST.in +0 -0
  12. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/README.md +0 -0
  13. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/air.are +0 -0
  14. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/arachnos.are +0 -0
  15. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/area.lst +0 -0
  16. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/astral.are +0 -0
  17. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/canyon.are +0 -0
  18. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/catacomb.are +0 -0
  19. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/chapel.are +0 -0
  20. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/daycare.are +0 -0
  21. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/draconia.are +0 -0
  22. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/dream.are +0 -0
  23. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/drow.are +0 -0
  24. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/dwarven.are +0 -0
  25. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/dylan.are +0 -0
  26. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/eastern.are +0 -0
  27. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/galaxy.are +0 -0
  28. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/gnome.are +0 -0
  29. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/grave.are +0 -0
  30. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/group.are +0 -0
  31. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/grove.are +0 -0
  32. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/haon.are +0 -0
  33. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/help.are +0 -0
  34. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/hitower.are +0 -0
  35. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/hood.are +0 -0
  36. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/immort.are +0 -0
  37. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/limbo.are +0 -0
  38. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/mahntor.are +0 -0
  39. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/marsh.are +0 -0
  40. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/mega1.are +0 -0
  41. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/midennir.are +0 -0
  42. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/midgaard.are +0 -0
  43. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/mirror.are +0 -0
  44. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/mobfact.are +0 -0
  45. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/moria.are +0 -0
  46. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/newthalos.are +0 -0
  47. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/nirvana.are +0 -0
  48. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/ofcol.are +0 -0
  49. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/ofcol2.are +0 -0
  50. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/olympus.are +0 -0
  51. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/plains.are +0 -0
  52. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/proto.are +0 -0
  53. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/pyramid.are +0 -0
  54. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/quifael.are +0 -0
  55. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/redferne.are +0 -0
  56. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/rom.are +0 -0
  57. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/school.are +0 -0
  58. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/sewer.are +0 -0
  59. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/shire.are +0 -0
  60. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/smurf.are +0 -0
  61. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/social.are +0 -0
  62. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/thalos.are +0 -0
  63. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/tohell.are +0 -0
  64. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/trollden.are +0 -0
  65. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/valley.are +0 -0
  66. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/area/wyvern.are +0 -0
  67. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/air.json +0 -0
  68. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/arachnos.json +0 -0
  69. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/area.json +0 -0
  70. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/area_0.json +0 -0
  71. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/astral.json +0 -0
  72. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/canyon.json +0 -0
  73. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/catacomb.json +0 -0
  74. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/chapel.json +0 -0
  75. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/daycare.json +0 -0
  76. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/draconia.json +0 -0
  77. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/dream.json +0 -0
  78. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/drow.json +0 -0
  79. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/dwarven.json +0 -0
  80. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/dylan.json +0 -0
  81. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/eastern.json +0 -0
  82. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/galaxy.json +0 -0
  83. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/gnome.json +0 -0
  84. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/grave.json +0 -0
  85. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/group.json +0 -0
  86. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/grove.json +0 -0
  87. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/haon.json +0 -0
  88. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/help.json +0 -0
  89. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/hitower.json +0 -0
  90. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/hood.json +0 -0
  91. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/immort.json +0 -0
  92. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/limbo.json +0 -0
  93. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/mahntor.json +0 -0
  94. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/marsh.json +0 -0
  95. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/mega1.json +0 -0
  96. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/midennir.json +0 -0
  97. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/midgaard.json +0 -0
  98. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/mirror.json +0 -0
  99. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/mobfact.json +0 -0
  100. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/moria.json +0 -0
  101. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/newthalos.json +0 -0
  102. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/nirvana.json +0 -0
  103. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/ofcol.json +0 -0
  104. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/ofcol2.json +0 -0
  105. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/olympus.json +0 -0
  106. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/plains.json +0 -0
  107. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/pyramid.json +0 -0
  108. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/quifael.json +0 -0
  109. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/redferne.json +0 -0
  110. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/rom.json +0 -0
  111. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/school.json +0 -0
  112. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/sewer.json +0 -0
  113. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/shire.json +0 -0
  114. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/smurf.json +0 -0
  115. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/social.json +0 -0
  116. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/thalos.json +0 -0
  117. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/tohell.json +0 -0
  118. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/trollden.json +0 -0
  119. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/valley.json +0 -0
  120. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas/wyvern.json +0 -0
  121. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/arachnos.json +0 -0
  122. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/area.json +0 -0
  123. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/area_0.json +0 -0
  124. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/astral_plane.json +0 -0
  125. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/catacombs.json +0 -0
  126. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/chapel.json +0 -0
  127. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/day_care.json +0 -0
  128. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/dragon_tower.json +0 -0
  129. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/drow_city.json +0 -0
  130. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/dwarven_kingdom.json +0 -0
  131. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/dylan's_area.json +0 -0
  132. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/elemental_canyon.json +0 -0
  133. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/galaxy.json +0 -0
  134. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/gangland.json +0 -0
  135. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/gnome_village.json +0 -0
  136. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/graveyard.json +0 -0
  137. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/group.json +0 -0
  138. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/haon_dor.json +0 -0
  139. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/help.json +0 -0
  140. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/high_tower.json +0 -0
  141. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/holy_grove.json +0 -0
  142. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/in_the_air.json +0 -0
  143. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/limbo.json +0 -0
  144. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/machine_dreams.json +0 -0
  145. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/mahn-tor.json +0 -0
  146. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/marsh.json +0 -0
  147. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/mega_city_one.json +0 -0
  148. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/miden'nir.json +0 -0
  149. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/midgaard.json +0 -0
  150. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/mob_factory.json +0 -0
  151. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/moria.json +0 -0
  152. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/mud_school.json +0 -0
  153. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/new_ofcol.json +0 -0
  154. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/new_thalos.json +0 -0
  155. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/nirvana.json +0 -0
  156. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/ofcol.json +0 -0
  157. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/old_thalos.json +0 -0
  158. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/olympus.json +0 -0
  159. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/plains.json +0 -0
  160. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/pyramid.json +0 -0
  161. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/quifael's.json +0 -0
  162. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/redferne's.json +0 -0
  163. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/rom.json +0 -0
  164. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/sands_of_sorrow.json +0 -0
  165. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/sewers.json +0 -0
  166. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/shire.json +0 -0
  167. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/smurfville.json +0 -0
  168. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/social.json +0 -0
  169. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/thalos.json +0 -0
  170. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/tohell.json +0 -0
  171. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/troll_den.json +0 -0
  172. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/valhalla.json +0 -0
  173. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/valley_of_the_elves.json +0 -0
  174. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/areas_backup/wyvern's_tower.json +0 -0
  175. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/help.json +0 -0
  176. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/players/.json +0 -0
  177. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/players/attacker.json +0 -0
  178. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/players/eddol.json +0 -0
  179. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/players/hero.json +0 -0
  180. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/players/sleeper.json +0 -0
  181. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/players/trouble.json +0 -0
  182. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/shops.json +0 -0
  183. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/skills.json +0 -0
  184. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/socials.json +0 -0
  185. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/data/time.json +0 -0
  186. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/MPDocs/examples.doc +0 -0
  187. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/MPDocs/hacker.doc +0 -0
  188. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/MPDocs/mobprog.doc +0 -0
  189. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/MPDocs/new_readme.txt +0 -0
  190. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/QuickMUD.txt +0 -0
  191. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/Rom2.4.doc +0 -0
  192. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/act.txt +0 -0
  193. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/area.txt +0 -0
  194. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/c_module_inventory.md +0 -0
  195. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/c_python_cross_reference.md +0 -0
  196. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/c_to_python_file_coverage.md +0 -0
  197. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/class.txt +0 -0
  198. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/command.txt +0 -0
  199. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/contrib.txt +0 -0
  200. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/drool.txt +0 -0
  201. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/hacker.txt +0 -0
  202. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/license.doc +0 -0
  203. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/license.txt +0 -0
  204. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/memory.txt +0 -0
  205. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/new.txt +0 -0
  206. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/pfile.txt +0 -0
  207. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/port.txt +0 -0
  208. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/pr_queue.md +0 -0
  209. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/python_architecture.md +0 -0
  210. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/python_module_inventory.md +0 -0
  211. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/security.txt +0 -0
  212. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/sites.txt +0 -0
  213. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/skill.txt +0 -0
  214. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/sky.txt +0 -0
  215. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/trad.txt +0 -0
  216. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/vnum.txt +0 -0
  217. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/doc/~$Rom2.4.doc +0 -0
  218. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/__init__.py +0 -0
  219. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/__main__.py +0 -0
  220. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/account/__init__.py +0 -0
  221. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/account/account_manager.py +0 -0
  222. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/account/account_service.py +0 -0
  223. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/admin_logging/__init__.py +0 -0
  224. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/admin_logging/admin.py +0 -0
  225. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/admin_logging/agent_trace.py +0 -0
  226. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/advancement.py +0 -0
  227. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/affects/saves.py +0 -0
  228. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/agent/__init__.py +0 -0
  229. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/agent/agent_protocol.py +0 -0
  230. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/agent/character_agent.py +0 -0
  231. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/ai/__init__.py +0 -0
  232. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/ai/aggressive.py +0 -0
  233. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/characters/__init__.py +0 -0
  234. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/characters/conditions.py +0 -0
  235. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/characters/follow.py +0 -0
  236. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/__init__.py +0 -0
  237. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/assist.py +0 -0
  238. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/death.py +0 -0
  239. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/engine.py +0 -0
  240. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/kill_table.py +0 -0
  241. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/messages.py +0 -0
  242. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/combat/safety.py +0 -0
  243. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/__init__.py +0 -0
  244. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/admin_commands.py +0 -0
  245. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/advancement.py +0 -0
  246. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/affects.py +0 -0
  247. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/alias_cmds.py +0 -0
  248. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/auto_settings.py +0 -0
  249. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/build.py +0 -0
  250. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/channels.py +0 -0
  251. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/character.py +0 -0
  252. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/combat.py +0 -0
  253. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/communication.py +0 -0
  254. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/compare.py +0 -0
  255. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/consider.py +0 -0
  256. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/consumption.py +0 -0
  257. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/decorators.py +0 -0
  258. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/dispatcher.py +0 -0
  259. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/doors.py +0 -0
  260. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/equipment.py +0 -0
  261. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/feedback.py +0 -0
  262. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/give.py +0 -0
  263. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/group_commands.py +0 -0
  264. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/healer.py +0 -0
  265. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/help.py +0 -0
  266. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imc.py +0 -0
  267. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_admin.py +0 -0
  268. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_commands.py +0 -0
  269. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_display.py +0 -0
  270. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_emote.py +0 -0
  271. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_load.py +0 -0
  272. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_olc.py +0 -0
  273. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_punish.py +0 -0
  274. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_search.py +0 -0
  275. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_server.py +0 -0
  276. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/imm_set.py +0 -0
  277. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/info.py +0 -0
  278. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/info_extended.py +0 -0
  279. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/inspection.py +0 -0
  280. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/inventory.py +0 -0
  281. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/liquids.py +0 -0
  282. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/magic_items.py +0 -0
  283. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/misc_info.py +0 -0
  284. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/misc_player.py +0 -0
  285. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/mobprog_tools.py +0 -0
  286. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/movement.py +0 -0
  287. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/murder.py +0 -0
  288. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/notes.py +0 -0
  289. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/obj_manipulation.py +0 -0
  290. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/player_config.py +0 -0
  291. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/player_info.py +0 -0
  292. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/position.py +0 -0
  293. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/remaining_rom.py +0 -0
  294. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/session.py +0 -0
  295. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/shop.py +0 -0
  296. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/socials.py +0 -0
  297. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/thief_skills.py +0 -0
  298. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/commands/typo_guards.py +0 -0
  299. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/config.py +0 -0
  300. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/__init__.py +0 -0
  301. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/init.py +0 -0
  302. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/migrate_from_files.py +0 -0
  303. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/migrations.py +0 -0
  304. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/models.py +0 -0
  305. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/seed.py +0 -0
  306. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/serializers.py +0 -0
  307. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/db/session.py +0 -0
  308. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/devtools/__init__.py +0 -0
  309. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/devtools/agent_demo.py +0 -0
  310. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/entrypoint.py +0 -0
  311. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/game_loop.py +0 -0
  312. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/game_tick_scheduler.py +0 -0
  313. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/groups/__init__.py +0 -0
  314. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/groups/xp.py +0 -0
  315. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/imc/__init__.py +0 -0
  316. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/imc/commands.py +0 -0
  317. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/imc/network.py +0 -0
  318. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/imc/protocol.py +0 -0
  319. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/__init__.py +0 -0
  320. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/area_loader.py +0 -0
  321. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/base_loader.py +0 -0
  322. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/help_loader.py +0 -0
  323. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/json_area_loader.py +0 -0
  324. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/json_loader.py +0 -0
  325. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/mob_loader.py +0 -0
  326. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/mobprog_loader.py +0 -0
  327. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/obj_loader.py +0 -0
  328. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/reset_loader.py +0 -0
  329. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/room_loader.py +0 -0
  330. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/shop_loader.py +0 -0
  331. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/social_loader.py +0 -0
  332. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/loaders/specials_loader.py +0 -0
  333. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/logging.py +0 -0
  334. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/magic/__init__.py +0 -0
  335. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/magic/effects.py +0 -0
  336. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/math/c_compat.py +0 -0
  337. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/math/stat_apps.py +0 -0
  338. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/mob_cmds.py +0 -0
  339. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/mobprog.py +0 -0
  340. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/__init__.py +0 -0
  341. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/area.py +0 -0
  342. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/area_json.py +0 -0
  343. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/board.py +0 -0
  344. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/board_json.py +0 -0
  345. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/character.py +0 -0
  346. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/character_json.py +0 -0
  347. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/clans.py +0 -0
  348. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/classes.py +0 -0
  349. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/constants.py +0 -0
  350. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/conversion.py +0 -0
  351. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/help.py +0 -0
  352. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/help_json.py +0 -0
  353. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/json_io.py +0 -0
  354. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/mob.py +0 -0
  355. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/note.py +0 -0
  356. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/note_json.py +0 -0
  357. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/obj.py +0 -0
  358. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/object.py +0 -0
  359. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/object_json.py +0 -0
  360. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/player_json.py +0 -0
  361. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/races.py +0 -0
  362. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/room.py +0 -0
  363. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/room_json.py +0 -0
  364. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/shop.py +0 -0
  365. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/shop_json.py +0 -0
  366. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/skill.py +0 -0
  367. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/skill_json.py +0 -0
  368. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/social.py +0 -0
  369. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/social_json.py +0 -0
  370. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/titles.py +0 -0
  371. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/models/weapon_table.py +0 -0
  372. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/music/__init__.py +0 -0
  373. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/__init__.py +0 -0
  374. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/ansi.py +0 -0
  375. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/connection.py +0 -0
  376. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/protocol.py +0 -0
  377. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/session.py +0 -0
  378. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/ssh_server.py +0 -0
  379. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/net/telnet_server.py +0 -0
  380. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/network/__init__.py +0 -0
  381. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/network/websocket_server.py +0 -0
  382. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/network/websocket_session.py +0 -0
  383. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/network/websocket_stream.py +0 -0
  384. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/notes.py +0 -0
  385. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/olc/__init__.py +0 -0
  386. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/olc/editor_state.py +0 -0
  387. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/olc/save.py +0 -0
  388. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/registry.py +0 -0
  389. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/rom_api.py +0 -0
  390. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/convert_are_to_json.py +0 -0
  391. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/convert_help_are_to_json.py +0 -0
  392. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/convert_player_to_json.py +0 -0
  393. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/convert_shops_to_json.py +0 -0
  394. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/convert_skills_to_json.py +0 -0
  395. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/convert_social_are_to_json.py +0 -0
  396. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/scripts/load_test_data.py +0 -0
  397. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/security/__init__.py +0 -0
  398. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/security/bans.py +0 -0
  399. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/security/hash_utils.py +0 -0
  400. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/server.py +0 -0
  401. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/skills/__init__.py +0 -0
  402. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/skills/groups.py +0 -0
  403. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/skills/handlers.py +0 -0
  404. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/skills/metadata.py +0 -0
  405. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/skills/registry.py +0 -0
  406. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/skills/say_spell.py +0 -0
  407. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/spawning/__init__.py +0 -0
  408. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/spawning/mob_spawner.py +0 -0
  409. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/spawning/obj_spawner.py +0 -0
  410. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/spawning/reset_handler.py +0 -0
  411. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/spawning/templates.py +0 -0
  412. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/spec_funs.py +0 -0
  413. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/time.py +0 -0
  414. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/act.py +0 -0
  415. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/bit.py +0 -0
  416. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/fix_sex.py +0 -0
  417. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/olc_tables.py +0 -0
  418. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/poses.py +0 -0
  419. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/prefix_lookup.py +0 -0
  420. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/prompt.py +0 -0
  421. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/rng_mm.py +0 -0
  422. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/string_editor.py +0 -0
  423. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/utils/text.py +0 -0
  424. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/wiznet.py +0 -0
  425. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/__init__.py +0 -0
  426. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/char_find.py +0 -0
  427. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/linking.py +0 -0
  428. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/look.py +0 -0
  429. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/movement.py +0 -0
  430. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/obj_find.py +0 -0
  431. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/time_persistence.py +0 -0
  432. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/vision.py +0 -0
  433. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/mud/world/world_state.py +0 -0
  434. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
  435. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
  436. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/rom24_quickmud_python.egg-info/requires.txt +0 -0
  437. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
  438. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/setup.cfg +0 -0
  439. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/setup.py +0 -0
  440. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/conftest.py +0 -0
  441. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/helpers.py +0 -0
  442. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/helpers_player.py +0 -0
  443. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/conftest.py +0 -0
  444. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_act_comm_gaps.py +0 -0
  445. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_act_enter_gaps.py +0 -0
  446. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_act_wiz_command_parity.py +0 -0
  447. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_admin_commands.py +0 -0
  448. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_advancement_con_app.py +0 -0
  449. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_advancement_wis_app.py +0 -0
  450. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_alias_command_parity.py +0 -0
  451. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_architectural_parity.py +0 -0
  452. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_auto_flags.py +0 -0
  453. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_auto_sacrifice_pers.py +0 -0
  454. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_auto_sequences.py +0 -0
  455. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_ban_command_parity.py +0 -0
  456. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_bit_flag_string.py +0 -0
  457. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_bit_flag_value.py +0 -0
  458. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_bit_is_stat.py +0 -0
  459. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_boards_rom_parity.py +0 -0
  460. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_channels.py +0 -0
  461. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_character_advancement.py +0 -0
  462. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_character_commands.py +0 -0
  463. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_character_creation_runtime.py +0 -0
  464. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_combat_dex_app.py +0 -0
  465. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_combat_str_app.py +0 -0
  466. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_communication_enhancement.py +0 -0
  467. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_compare_critical_gaps.py +0 -0
  468. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_config_commands.py +0 -0
  469. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_consumables.py +0 -0
  470. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_container_retrieval.py +0 -0
  471. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_dam_message_pers.py +0 -0
  472. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_db2_loader_parity.py +0 -0
  473. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_db_canonical_round_trip.py +0 -0
  474. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_death_and_corpses.py +0 -0
  475. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_affects.py +0 -0
  476. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_consider_command.py +0 -0
  477. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_equipment.py +0 -0
  478. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_examine_command.py +0 -0
  479. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_exits_command.py +0 -0
  480. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_help_command.py +0 -0
  481. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_inventory.py +0 -0
  482. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_look_command.py +0 -0
  483. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_password_command.py +0 -0
  484. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_practice_command.py +0 -0
  485. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_time_command.py +0 -0
  486. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_weather_command.py +0 -0
  487. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_where_command.py +0 -0
  488. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_who_command.py +0 -0
  489. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_do_worth.py +0 -0
  490. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_door_portal_commands.py +0 -0
  491. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_drop_command.py +0 -0
  492. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_emote_parity.py +0 -0
  493. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_environmental_effects.py +0 -0
  494. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_equipment_ac_calculations.py +0 -0
  495. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_equipment_system.py +0 -0
  496. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_fight_c_do_kill_parity.py +0 -0
  497. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_fight_c_safe_room_damage_gate.py +0 -0
  498. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_flag_command_parity.py +0 -0
  499. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_furniture_occupancy.py +0 -0
  500. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_get_room_messages.py +0 -0
  501. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_give_command.py +0 -0
  502. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_group_combat.py +0 -0
  503. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_healer_command_parity.py +0 -0
  504. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_hedit_parity.py +0 -0
  505. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_info_display.py +0 -0
  506. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_interp_dispatcher.py +0 -0
  507. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_interp_prefix_order.py +0 -0
  508. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_interp_trust.py +0 -0
  509. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv005_same_room_combat.py +0 -0
  510. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv006_fighting_pointer_coherence.py +0 -0
  511. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv008_persistence_coherence.py +0 -0
  512. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv009_registry_disconnect_cleanup.py +0 -0
  513. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv010_room_people_coherence.py +0 -0
  514. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv011_carry_weight_coherence.py +0 -0
  515. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv012_end_to_end.py +0 -0
  516. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv012_object_list_canonical.py +0 -0
  517. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv013_add_object_carrier.py +0 -0
  518. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv013_object_location_coherence.py +0 -0
  519. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_inv014_object_registry_membership.py +0 -0
  520. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_invisibility_combat.py +0 -0
  521. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_json_loader_parity.py +0 -0
  522. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_lookup_parity.py +0 -0
  523. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_message_delivery_no_duplicate.py +0 -0
  524. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_ai.py +0 -0
  525. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_assist.py +0 -0
  526. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_call.py +0 -0
  527. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_cast.py +0 -0
  528. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_damage.py +0 -0
  529. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_flee.py +0 -0
  530. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_junk.py +0 -0
  531. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_kill.py +0 -0
  532. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_oload.py +0 -0
  533. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_purge.py +0 -0
  534. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mob_cmds_transfer.py +0 -0
  535. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mobprog_edge_cases.py +0 -0
  536. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mobprog_greet_trigger.py +0 -0
  537. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mobprog_predicates.py +0 -0
  538. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mobprog_program_flow.py +0 -0
  539. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mobprog_scenarios.py +0 -0
  540. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_money_objects.py +0 -0
  541. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mpedit_001_interpret_mpedit.py +0 -0
  542. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mpedit_002_do_mpedit.py +0 -0
  543. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_mpedit_003_mprog_code_model.py +0 -0
  544. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_music_load_songs.py +0 -0
  545. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_music_play.py +0 -0
  546. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_nanny_login_parity.py +0 -0
  547. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_nanny_saveload_runtime_path.py +0 -0
  548. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_new_player_workflow.py +0 -0
  549. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_numbered_get_syntax.py +0 -0
  550. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_001_run_olc_editor.py +0 -0
  551. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_007_redit_list_show.py +0 -0
  552. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_008_oedit_missing_cmds.py +0 -0
  553. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_009_medit_missing_cmds.py +0 -0
  554. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_010_015_do_olc_router.py +0 -0
  555. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_011_aedit_flag_toggle.py +0 -0
  556. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_012_014_editor_fallback.py +0 -0
  557. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_001_aedit_create.py +0 -0
  558. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_002_redit_create.py +0 -0
  559. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_003_redit_reset.py +0 -0
  560. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_004_redit_vnum_teleport.py +0 -0
  561. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_005_oedit_create.py +0 -0
  562. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_006_medit_create.py +0 -0
  563. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_007_aedit_show_flags.py +0 -0
  564. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_008_redit_show_parity.py +0 -0
  565. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_009_oedit_show_parity.py +0 -0
  566. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_010_medit_show_parity.py +0 -0
  567. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_011_name_messages.py +0 -0
  568. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_012_aedit_reset.py +0 -0
  569. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_013_get_area_for_vnum_order.py +0 -0
  570. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_act_014_area_changed_protocol.py +0 -0
  571. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_alist.py +0 -0
  572. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_builders.py +0 -0
  573. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_commands_listing.py +0 -0
  574. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_descriptor_state.py +0 -0
  575. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_display_resets.py +0 -0
  576. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_do_resets_subcommands.py +0 -0
  577. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_001_mob_defensive_flags.py +0 -0
  578. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_002_mob_form_parts_size_material.py +0 -0
  579. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_003_mob_mprogs.py +0 -0
  580. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_004_mob_shops.py +0 -0
  581. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_005_mob_spec_fun.py +0 -0
  582. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_006_object_level.py +0 -0
  583. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_007_object_affects.py +0 -0
  584. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_008_object_extra_descr.py +0 -0
  585. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_009_area_helps_round_trip.py +0 -0
  586. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_010_asave_area_dispatch.py +0 -0
  587. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_011_autosave_entry.py +0 -0
  588. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_012_npc_security_gate.py +0 -0
  589. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_013_area_list_social_prepend.py +0 -0
  590. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_olc_save_014_017_message_strings.py +0 -0
  591. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_pc_death_keeps_connection.py +0 -0
  592. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_pc_death_no_message_replay.py +0 -0
  593. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_pilot_integration.py +0 -0
  594. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_pit_timer_handling.py +0 -0
  595. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_player_config.py +0 -0
  596. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_player_npc_interaction.py +0 -0
  597. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_position_commands.py +0 -0
  598. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_prompt_cmd_parity.py +0 -0
  599. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_prompt_rom_parity.py +0 -0
  600. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_put_pit_timer.py +0 -0
  601. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_put_room_messages.py +0 -0
  602. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_put_weight_mult.py +0 -0
  603. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_recall_train_commands.py +0 -0
  604. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_remove_command.py +0 -0
  605. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_room_light_tracking.py +0 -0
  606. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_room_retrieval.py +0 -0
  607. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_room_safety_features.py +0 -0
  608. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_runtime_bugs_2026_04_30.py +0 -0
  609. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_sacrifice_command.py +0 -0
  610. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_say_parity.py +0 -0
  611. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_scan_broadcasts.py +0 -0
  612. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_shout_yell_parity.py +0 -0
  613. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_skills_integration.py +0 -0
  614. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_skills_integration_combat_specials.py +0 -0
  615. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_socials.py +0 -0
  616. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_spell_affects_persistence.py +0 -0
  617. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_spell_casting.py +0 -0
  618. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_steal_command.py +0 -0
  619. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_append.py +0 -0
  620. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_edit.py +0 -0
  621. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_first_arg.py +0 -0
  622. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_format_string.py +0 -0
  623. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_lineadd.py +0 -0
  624. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_linedel.py +0 -0
  625. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_merc_getline.py +0 -0
  626. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_numlines.py +0 -0
  627. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_proper.py +0 -0
  628. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_replace.py +0 -0
  629. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_string_add.py +0 -0
  630. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_string_editor_unpad.py +0 -0
  631. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_tables_parity.py +0 -0
  632. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_tell_parity.py +0 -0
  633. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_update_c_parity.py +0 -0
  634. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_weapon_proc_pers.py +0 -0
  635. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/integration/test_weather_time.py +0 -0
  636. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_account_auth.py +0 -0
  637. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_act_comm_rom_parity.py +0 -0
  638. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_act_enter_rom_parity.py +0 -0
  639. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_act_info_rom_parity.py +0 -0
  640. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_act_obj_rom_parity.py +0 -0
  641. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_act_wiz_rom_parity.py +0 -0
  642. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_advancement.py +0 -0
  643. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_affects.py +0 -0
  644. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_agent_interface.py +0 -0
  645. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_alias_parity.py +0 -0
  646. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_ansi.py +0 -0
  647. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_are_conversion.py +0 -0
  648. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_area_counts.py +0 -0
  649. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_area_exits.py +0 -0
  650. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_area_loader.py +0 -0
  651. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_area_specials.py +0 -0
  652. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_bans.py +0 -0
  653. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_boards.py +0 -0
  654. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_builder_hedit.py +0 -0
  655. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_builder_stat_commands.py +0 -0
  656. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_building.py +0 -0
  657. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_char_update_rom_parity.py +0 -0
  658. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat.py +0 -0
  659. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_assist.py +0 -0
  660. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_damage_types.py +0 -0
  661. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_death.py +0 -0
  662. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_defenses_prob.py +0 -0
  663. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_messages.py +0 -0
  664. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_position_damage.py +0 -0
  665. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_rom_parity.py +0 -0
  666. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_skills.py +0 -0
  667. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_state.py +0 -0
  668. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_surrender.py +0 -0
  669. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_thac0.py +0 -0
  670. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_combat_thac0_engine.py +0 -0
  671. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_command_abbrev.py +0 -0
  672. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_command_parity.py +0 -0
  673. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_commands.py +0 -0
  674. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_communication.py +0 -0
  675. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_connection_motd.py +0 -0
  676. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_convert_are_to_json_cli.py +0 -0
  677. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_critical_function_parity.py +0 -0
  678. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_damage_reduction.py +0 -0
  679. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_damage_reduction_integration.py +0 -0
  680. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_db_resets_rom_parity.py +0 -0
  681. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_db_seed.py +0 -0
  682. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_defense_flags.py +0 -0
  683. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_encumbrance.py +0 -0
  684. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_enter_portal.py +0 -0
  685. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_fighting_state.py +0 -0
  686. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_fix_sex.py +0 -0
  687. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_game_loop.py +0 -0
  688. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_game_loop_order.py +0 -0
  689. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_game_loop_wait_daze.py +0 -0
  690. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_golden_reference.py +0 -0
  691. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_handler_affects_rom_parity.py +0 -0
  692. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_hash_utils.py +0 -0
  693. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_healer.py +0 -0
  694. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_healer_parity.py +0 -0
  695. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_healer_rom_parity.py +0 -0
  696. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_help_conversion.py +0 -0
  697. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_help_system.py +0 -0
  698. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_imc.py +0 -0
  699. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_json_io.py +0 -0
  700. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_json_model_instantiation.py +0 -0
  701. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_json_room_fields.py +0 -0
  702. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_load_midgaard.py +0 -0
  703. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_logging_admin.py +0 -0
  704. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_logging_rotation.py +0 -0
  705. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_mob_act_flags.py +0 -0
  706. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_mob_damage_modifiers.py +0 -0
  707. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_mobprog.py +0 -0
  708. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_mobprog_commands.py +0 -0
  709. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_mobprog_helpers.py +0 -0
  710. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_mobprog_triggers.py +0 -0
  711. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement.py +0 -0
  712. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_charm.py +0 -0
  713. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_costs.py +0 -0
  714. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_doors.py +0 -0
  715. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_followers.py +0 -0
  716. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_mobprog.py +0 -0
  717. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_npc.py +0 -0
  718. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_portals.py +0 -0
  719. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_privacy.py +0 -0
  720. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_movement_visibility.py +0 -0
  721. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_music.py +0 -0
  722. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_nanny_rom_parity.py +0 -0
  723. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_networking_telnet.py +0 -0
  724. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_obj_loader.py +0 -0
  725. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_obj_update_rom_parity.py +0 -0
  726. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_olc_aedit.py +0 -0
  727. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_olc_medit.py +0 -0
  728. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_olc_oedit.py +0 -0
  729. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_olc_save.py +0 -0
  730. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_passive_skills_rom_parity.py +0 -0
  731. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_affect_flags.py +0 -0
  732. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_auto_settings.py +0 -0
  733. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_combat_attributes.py +0 -0
  734. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_conditions.py +0 -0
  735. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_creation.py +0 -0
  736. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_equipment.py +0 -0
  737. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_flags.py +0 -0
  738. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_info_commands.py +0 -0
  739. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_mechanics.py +0 -0
  740. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_prompt.py +0 -0
  741. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_resistance_flags.py +0 -0
  742. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_skills_spells.py +0 -0
  743. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_stats.py +0 -0
  744. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_title_description.py +0 -0
  745. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_player_wimpy.py +0 -0
  746. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_practice.py +0 -0
  747. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_prompt_clamps_hp.py +0 -0
  748. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_reset_levels.py +0 -0
  749. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_resets.py +0 -0
  750. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_rng_and_ccompat.py +0 -0
  751. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_rng_determinism.py +0 -0
  752. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_rng_dice.py +0 -0
  753. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_rom_api.py +0 -0
  754. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_runtime_models.py +0 -0
  755. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_saves_rom_parity.py +0 -0
  756. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_say_spell.py +0 -0
  757. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_scan_parity.py +0 -0
  758. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_schema_validation.py +0 -0
  759. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_scripted_session.py +0 -0
  760. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_shop_conversion.py +0 -0
  761. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_shops.py +0 -0
  762. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_combat_rom_parity.py +0 -0
  763. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_conversion.py +0 -0
  764. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_envenom_rom_parity.py +0 -0
  765. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_haggle_rom_parity.py +0 -0
  766. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_hide_rom_parity.py +0 -0
  767. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_peek_rom_parity.py +0 -0
  768. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_pick_lock_rom_parity.py +0 -0
  769. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_recall_rom_parity.py +0 -0
  770. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_registry.py +0 -0
  771. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skill_steal_rom_parity.py +0 -0
  772. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills.py +0 -0
  773. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_buffs.py +0 -0
  774. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_combat.py +0 -0
  775. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_conjuration.py +0 -0
  776. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_damage.py +0 -0
  777. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_debuffs.py +0 -0
  778. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_detection.py +0 -0
  779. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_healing.py +0 -0
  780. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_identify.py +0 -0
  781. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_learned.py +0 -0
  782. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_mass.py +0 -0
  783. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_misc.py +0 -0
  784. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_spells_cast_listing.py +0 -0
  785. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_skills_transport.py +0 -0
  786. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_social_conversion.py +0 -0
  787. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_social_placeholders.py +0 -0
  788. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spawning.py +0 -0
  789. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spec_fun_behaviors.py +0 -0
  790. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spec_funs.py +0 -0
  791. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spec_funs_extra.py +0 -0
  792. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_specials_loader_ext.py +0 -0
  793. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_area_effects_rom_parity.py +0 -0
  794. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
  795. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
  796. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
  797. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_cancellation_rom_parity.py +0 -0
  798. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_charm_control_rom_parity.py +0 -0
  799. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_creation_rom_parity.py +0 -0
  800. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
  801. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_damage_additional_rom_parity.py +0 -0
  802. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_detection_rom_parity.py +0 -0
  803. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_enchantment_rom_parity.py +0 -0
  804. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_farsight_rom_parity.py +0 -0
  805. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_final_nine_rom_parity.py +0 -0
  806. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_harm_rom_parity.py +0 -0
  807. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_healing_rom_parity.py +0 -0
  808. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_heat_metal_rom_parity.py +0 -0
  809. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
  810. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_information_rom_parity.py +0 -0
  811. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_mass_healing_rom_parity.py +0 -0
  812. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_priority_high_rom_parity.py +0 -0
  813. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
  814. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spell_travel_portal_rom_parity.py +0 -0
  815. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spells_basic.py +0 -0
  816. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_spells_damage.py +0 -0
  817. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_state_transitions.py +0 -0
  818. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_telnet_server.py +0 -0
  819. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_thief_skills_dispatcher_parity.py +0 -0
  820. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_time_daynight.py +0 -0
  821. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_time_persistence.py +0 -0
  822. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_utility_spells_parity.py +0 -0
  823. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_weapon_damage.py +0 -0
  824. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_weapon_special_attacks.py +0 -0
  825. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_weapon_table_parity.py +0 -0
  826. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_websocket_server.py +0 -0
  827. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_wiznet.py +0 -0
  828. {rom24_quickmud_python-2.9.5 → rom24_quickmud_python-2.9.7}/tests/test_world.py +0 -0
@@ -7,6 +7,17 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
7
7
 
8
8
  ## [Unreleased]
9
9
 
10
+ ## [2.9.7]
11
+
12
+ ### Fixed
13
+ - **INV-015 AFFECT-TICK-LIFECYCLE — expired ROM-canonical affects leaked stat modifiers and bitvectors** (`mud/affects/engine.py:tick_spell_effects`, `mud/handler.py:affect_remove`): ROM `src/update.c:762-786 affect_update` calls `src/handler.c:1317 affect_remove` on expiry, which `affect_modify(FALSE)` (subtracts the stat mod, clears the bitvector) → unlinks from `ch->affected` → calls `affect_check` (re-sets the bit only if another affect still provides it). The Python tick path was a bare `affected.remove(affect)` — no stat unwind, no bitvector clear. Symptom for any `AffectData` whose `type` is the ROM-canonical integer spell SN (the `isinstance(spell_name, str)` guard at engine.py:32 skipped the `spell_effects` cleanup branch for these): permanent stat boosts and phantom `affected_by` bits after every expiry. Fix: new module-level `mud/handler.py:affect_remove(ch, paf)` mirrors `src/handler.c:1317` exactly. `tick_spell_effects` routes raw ROM-canonical entries through it. **Spell-effects-managed entries (the `apply_spell_effect` shadow-mirror path used by frenzy/bless/weaken/etc.) keep bare list removal** — `remove_spell_effect` already handles their stat unwind; double-routing would double-unwind (caught by `tests/integration/test_spell_affects_persistence.py` + `tests/test_affects.py` regressions during implementation, hence the split).
14
+ - INV-015 row added to `docs/parity/CROSS_FILE_INVARIANTS_TRACKER.md`, ✅ ENFORCED. Two enforcement tests in `tests/integration/test_inv015_affect_tick_lifecycle.py` — stat-modifier unwind, and bitvector preservation when a second affect provides the same bit (mirrors ROM `affect_check`).
15
+
16
+ ## [2.9.6]
17
+
18
+ ### Added
19
+ - **End-to-end decay-loop coverage for INV-012 / INV-013 / INV-014** (`tests/integration/test_decay_loop_inv012.py`): three new integration tests pin the registry/carrier/carry-counter contracts as they cross the `obj_update` → `_extract_obj` boundary. (1) A carried potion whose timer expires must be removed from `object_registry` (INV-014), removed from the carrier's inventory, and the `carry_weight` / `carry_number` counters must drop (INV-011). (2) ROM `src/handler.c:2063-2067 extract_obj` recurses through container contents — verified with an NPC corpse containing a pouch containing a ruby; all three leave the registry on the corpse's decay tick. (3) Downstream INV-014 consequence — a decayed obj is no longer findable via `locate object` (it walked the registry). Fills coverage gaps the pre-existing `test_obj_update_decays_corpse` and `test_obj_update_spills_floating_container` did not exercise.
20
+
10
21
  ## [2.9.5]
11
22
 
12
23
  ### Fixed
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom24-quickmud-python
3
- Version: 2.9.5
3
+ Version: 2.9.7
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>
@@ -1,5 +1,6 @@
1
1
  from __future__ import annotations
2
2
 
3
+ from mud.handler import affect_remove
3
4
  from mud.models.character import Character
4
5
  from mud.utils import rng_mm
5
6
 
@@ -43,8 +44,28 @@ def tick_spell_effects(character: Character) -> list[str]:
43
44
  or int(getattr(next_affect, "duration", 0) or 0) > 0
44
45
  )
45
46
 
47
+ # ROM src/handler.c:1317 affect_remove — affect_modify(FALSE)
48
+ # subtracts the stat mod and clears the bitvector; affect_check
49
+ # re-sets the bit only if another affect still provides it.
50
+ # INV-015 fix (2.9.7): was a bare `affected.remove(affect)`,
51
+ # which leaked stat mods and bitvectors for any AffectData
52
+ # whose `type` is an integer SN (the ROM-canonical form).
53
+ #
54
+ # Python has a parallel apply path: `Character.apply_spell_effect`
55
+ # already calls `_apply_stat_modifier(+mod)`, mirrors a shadow
56
+ # AffectData into `ch.affected`, and on expiry the
57
+ # `remove_spell_effect` branch below unwinds via
58
+ # `_apply_stat_modifier(-mod)`. For those entries the shadow
59
+ # AffectData's modifier was NEVER applied via `affect_modify(True)`,
60
+ # so calling `affect_modify(False)` on it would double-unwind.
61
+ # Split: spell_effects-managed entries get bare list removal;
62
+ # raw ROM-canonical AffectData routes through affect_remove.
63
+ spell_effects_managed = isinstance(spell_name, str) and spell_name in effects
46
64
  if affect in affected:
47
- affected.remove(affect)
65
+ if spell_effects_managed:
66
+ affected.remove(affect)
67
+ else:
68
+ affect_remove(character, affect)
48
69
 
49
70
  if isinstance(spell_name, str) and spell_name in effects:
50
71
  touched_names.add(spell_name)
@@ -442,6 +442,36 @@ def affect_check(ch: Character, where: int, vector: int) -> None:
442
442
  return
443
443
 
444
444
 
445
+ def affect_remove(ch: Character, paf: Affect) -> None:
446
+ """Remove an affect from a character — ROM ``src/handler.c:1317``.
447
+
448
+ Mirrors ROM exactly: ``affect_modify(ch, paf, FALSE)`` (subtracts
449
+ the stat modifier and clears the bitvector in
450
+ ``affected_by``/``imm_flags``/``res_flags``/``vuln_flags``),
451
+ unlinks ``paf`` from ``ch.affected``, then calls
452
+ ``affect_check(ch, where, vector)`` which re-sets the bitvector
453
+ only if another affect on the char or equipped objects still
454
+ provides it. INV-015 enforcement point for the affect-tick
455
+ lifecycle contract.
456
+ """
457
+
458
+ affected = getattr(ch, "affected", None)
459
+ if not isinstance(affected, list) or not affected:
460
+ return
461
+
462
+ where = getattr(paf, "where", 0)
463
+ vector = getattr(paf, "bitvector", 0)
464
+
465
+ affect_modify(ch, paf, False)
466
+
467
+ try:
468
+ affected.remove(paf)
469
+ except ValueError:
470
+ pass
471
+
472
+ affect_check(ch, where, vector)
473
+
474
+
445
475
  def affect_to_obj(obj: Object, paf: Affect) -> None:
446
476
  """
447
477
  Add an affect to an object.
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "rom24-quickmud-python"
7
- version = "2.9.5"
7
+ version = "2.9.7"
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.5
3
+ Version: 2.9.7
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>
@@ -661,6 +661,7 @@ tests/integration/test_dam_message_pers.py
661
661
  tests/integration/test_db2_loader_parity.py
662
662
  tests/integration/test_db_canonical_round_trip.py
663
663
  tests/integration/test_death_and_corpses.py
664
+ tests/integration/test_decay_loop_inv012.py
664
665
  tests/integration/test_do_affects.py
665
666
  tests/integration/test_do_consider_command.py
666
667
  tests/integration/test_do_equipment.py
@@ -706,6 +707,7 @@ tests/integration/test_inv012_object_list_canonical.py
706
707
  tests/integration/test_inv013_add_object_carrier.py
707
708
  tests/integration/test_inv013_object_location_coherence.py
708
709
  tests/integration/test_inv014_object_registry_membership.py
710
+ tests/integration/test_inv015_affect_tick_lifecycle.py
709
711
  tests/integration/test_invisibility_combat.py
710
712
  tests/integration/test_json_loader_parity.py
711
713
  tests/integration/test_lookup_parity.py
@@ -0,0 +1,198 @@
1
+ """End-to-end decay loop coverage — INV-012 / INV-013 / INV-014.
2
+
3
+ ROM ``src/update.c:obj_update`` walks ``object_list``, decrements
4
+ timers, and on expiry calls ``src/handler.c:extract_obj`` which
5
+ recursively extracts contents and removes the obj from
6
+ ``object_list``. Three contracts intersect here:
7
+
8
+ - INV-014: every live obj is on ``object_registry``; extract removes.
9
+ - INV-013: extracting a carried obj must release the carrier field.
10
+ - INV-011: extracting a carried obj must update ``carry_weight`` and
11
+ ``carry_number``.
12
+
13
+ The pre-existing ``test_obj_update_decays_corpse`` and
14
+ ``test_obj_update_spills_floating_container`` cover the room-carried
15
+ and floating-container cases. These tests fill the remaining
16
+ end-to-end gaps for the INV-012 newly-live registry: carried-obj
17
+ decay and recursive nested-container decay.
18
+ """
19
+
20
+ from __future__ import annotations
21
+
22
+ import pytest
23
+
24
+ from mud.game_loop import obj_update
25
+ from mud.models.character import Character, character_registry
26
+ from mud.models.constants import LEVEL_IMMORTAL, ItemType
27
+ from mud.models.obj import ObjIndex, object_registry
28
+ from mud.models.object import create_object
29
+ from mud.models.room import Room
30
+ from mud.registry import room_registry
31
+ from mud.skills.handlers import locate_object
32
+
33
+
34
+ _ROOM_VNUM = 9601
35
+
36
+
37
+ @pytest.fixture
38
+ def decay_room() -> Room:
39
+ room = room_registry.get(_ROOM_VNUM)
40
+ if room is None:
41
+ room = Room(vnum=_ROOM_VNUM, name="Decay Test Room")
42
+ room_registry[_ROOM_VNUM] = room
43
+ room.contents.clear()
44
+ room.people.clear()
45
+ return room
46
+
47
+
48
+ def test_decay_of_carried_obj_updates_carry_counters_and_registry(
49
+ decay_room: Room,
50
+ ) -> None:
51
+ """A potion in a character's inventory whose timer expires must:
52
+ extract from ``object_registry`` (INV-014), clear the carrier
53
+ field (INV-013), and decrement ``carry_weight`` / ``carry_number``
54
+ (INV-011). End-to-end check across all three invariants.
55
+ """
56
+
57
+ carrier = Character(name="Drinker", is_npc=False)
58
+ carrier.level = 30
59
+ decay_room.add_character(carrier)
60
+ character_registry.append(carrier)
61
+
62
+ proto = ObjIndex(
63
+ vnum=9602,
64
+ name="potion",
65
+ short_descr="a potion of healing",
66
+ item_type=int(ItemType.POTION),
67
+ weight=2,
68
+ value=[0, 0, 0, 0, 0],
69
+ )
70
+ potion = create_object(proto)
71
+ potion.timer = 1
72
+ potion.item_type = int(ItemType.POTION)
73
+ carrier.add_object(potion)
74
+
75
+ assert potion in object_registry
76
+ assert potion.carried_by is carrier
77
+ initial_weight = carrier.carry_weight
78
+ initial_number = carrier.carry_number
79
+ assert initial_weight >= 2 # potion weight contributed
80
+ assert initial_number >= 1
81
+
82
+ obj_update()
83
+
84
+ assert potion not in object_registry, (
85
+ "INV-014: decayed obj must be removed from object_registry by "
86
+ "_extract_obj (mud/game_loop.py)."
87
+ )
88
+ assert potion not in carrier.inventory
89
+ assert carrier.carry_weight < initial_weight, (
90
+ "INV-011: decay of carried obj must decrement carry_weight."
91
+ )
92
+ assert carrier.carry_number < initial_number, (
93
+ "INV-011: decay of carried obj must decrement carry_number."
94
+ )
95
+
96
+
97
+ def test_npc_corpse_decay_recursively_extracts_contents(
98
+ decay_room: Room,
99
+ ) -> None:
100
+ """ROM ``extract_obj`` recurses through container contents
101
+ (``src/handler.c:2063-2067``). NPC corpses are NOT in the spill
102
+ branch of ``obj_update`` — when the corpse timer expires, every
103
+ item inside is destroyed with it. INV-014: all three objects
104
+ must leave ``object_registry``.
105
+
106
+ Contrast with float-container decay, where contents spill to the
107
+ room and survive (covered by
108
+ ``tests/test_game_loop.py::test_obj_update_spills_floating_container``).
109
+ """
110
+
111
+ corpse_proto = ObjIndex(
112
+ vnum=9610,
113
+ name="orc corpse",
114
+ short_descr="the corpse of an orc",
115
+ item_type=int(ItemType.CORPSE_NPC),
116
+ )
117
+ corpse = create_object(corpse_proto)
118
+ corpse.item_type = int(ItemType.CORPSE_NPC)
119
+ corpse.timer = 1
120
+
121
+ pouch_proto = ObjIndex(
122
+ vnum=9611,
123
+ name="pouch",
124
+ short_descr="a leather pouch",
125
+ item_type=int(ItemType.CONTAINER),
126
+ )
127
+ pouch = create_object(pouch_proto)
128
+ pouch.item_type = int(ItemType.CONTAINER)
129
+
130
+ gem_proto = ObjIndex(
131
+ vnum=9612,
132
+ name="ruby",
133
+ short_descr="a ruby",
134
+ item_type=int(ItemType.GEM),
135
+ )
136
+ gem = create_object(gem_proto)
137
+ gem.item_type = int(ItemType.GEM)
138
+
139
+ pouch.contained_items.append(gem)
140
+ gem.in_obj = pouch
141
+ corpse.contained_items.append(pouch)
142
+ pouch.in_obj = corpse
143
+ decay_room.add_object(corpse)
144
+
145
+ assert all(o in object_registry for o in (corpse, pouch, gem))
146
+
147
+ obj_update()
148
+
149
+ assert corpse not in object_registry, (
150
+ "INV-014: decayed corpse must be removed from registry."
151
+ )
152
+ assert pouch not in object_registry, (
153
+ "ROM extract_obj recurses through contents; INV-014 contract "
154
+ "requires the pouch nested inside the corpse to leave the "
155
+ "registry too."
156
+ )
157
+ assert gem not in object_registry, (
158
+ "Deeply nested items (gem in pouch in corpse) must also be "
159
+ "extracted by the recursion."
160
+ )
161
+
162
+
163
+ def test_decayed_obj_invisible_to_locate(decay_room: Room) -> None:
164
+ """Downstream INV-014 consequence: after decay, ``locate object``
165
+ can no longer find the obj (it walks ``object_registry``).
166
+ """
167
+
168
+ seer = Character(
169
+ name="Seer",
170
+ level=LEVEL_IMMORTAL,
171
+ trust=LEVEL_IMMORTAL,
172
+ is_npc=False,
173
+ )
174
+ character_registry.append(seer)
175
+
176
+ proto = ObjIndex(
177
+ vnum=9620,
178
+ name="ephemeral wisp",
179
+ short_descr="an ephemeral wisp",
180
+ item_type=int(ItemType.FOOD),
181
+ )
182
+ wisp = create_object(proto)
183
+ wisp.item_type = int(ItemType.FOOD)
184
+ wisp.timer = 1
185
+ decay_room.add_object(wisp)
186
+
187
+ # Pre-decay: locate finds it.
188
+ seer.messages.clear()
189
+ assert locate_object(seer, "wisp") is True
190
+
191
+ obj_update()
192
+
193
+ # Post-decay: locate misses it.
194
+ seer.messages.clear()
195
+ assert locate_object(seer, "wisp") is False
196
+ assert seer.messages[-1] == "Nothing like that in heaven or earth."
197
+
198
+ character_registry.remove(seer)
@@ -0,0 +1,143 @@
1
+ """INV-015 AFFECT-TICK-LIFECYCLE enforcement.
2
+
3
+ ROM ``src/update.c:762-786 affect_update`` decrements each
4
+ ``ch->affected`` entry's duration; on expiry it calls
5
+ ``src/handler.c:1317 affect_remove``, which in turn:
6
+
7
+ 1. calls ``affect_modify(ch, paf, FALSE)`` — subtracts the stat
8
+ modifier (``mod_stat[STR] -= mod``) AND clears the bitvector in
9
+ ``ch->affected_by`` (handler.c:1110-1117);
10
+ 2. unlinks the affect from ``ch->affected``;
11
+ 3. calls ``affect_check(ch, where, vector)``, which re-sets the
12
+ bitvector ONLY if another affect (on ``ch`` or on equipped
13
+ objects) still provides it.
14
+
15
+ The Python tick path at ``mud/affects/engine.py:tick_spell_effects``
16
+ historically just did ``affected.remove(affect)`` on expiry. When the
17
+ ``AffectData`` carried an integer ``type`` (the ROM-canonical form,
18
+ since ``type`` is a spell SN per ``src/merc.h:648-659``), the parallel
19
+ ``spell_effects`` cleanup at engine.py:55-68 never fired, because the
20
+ ``isinstance(spell_name, str)`` guard skipped non-string types. Net:
21
+ the bitvector leaked into ``affected_by`` permanently, and any stat
22
+ modifier applied via ``affect_modify(TRUE)`` was never undone.
23
+
24
+ This test pins the contract: after enough ticks to expire an Affect
25
+ that was applied via the canonical ``affect_modify`` + list append
26
+ sequence, the stat mod must be undone and the bitvector must be
27
+ clear. Add a test here when introducing a new path that decrements
28
+ ``AffectData.duration`` to zero.
29
+ """
30
+
31
+ from __future__ import annotations
32
+
33
+ from mud.affects.engine import tick_spell_effects
34
+ from mud.handler import affect_modify
35
+ from mud.models.character import AffectData, Character
36
+ from mud.models.constants import AffectFlag, Stat
37
+
38
+
39
+ APPLY_STR = 1
40
+ TO_AFFECTS = 0
41
+
42
+
43
+ def _build_char() -> Character:
44
+ ch = Character(name="affect-tick-pc", is_npc=False)
45
+ ch._ensure_mod_stat_capacity()
46
+ return ch
47
+
48
+
49
+ def test_affect_with_stat_mod_undoes_on_tick_expiry() -> None:
50
+ """A +2 STR / AFF_HASTE affect with duration=1 must fully unwind
51
+ after two ticks: the +2 must be subtracted from mod_stat[STR] and
52
+ the HASTE bit must be cleared from affected_by."""
53
+
54
+ ch = _build_char()
55
+ baseline_str = ch.mod_stat[int(Stat.STR)]
56
+ baseline_affected_by = ch.affected_by
57
+
58
+ affect = AffectData(
59
+ type=1, # ROM spell SN — integer, NOT a string spell name
60
+ level=10,
61
+ duration=1,
62
+ location=APPLY_STR,
63
+ modifier=2,
64
+ bitvector=int(AffectFlag.HASTE),
65
+ where=TO_AFFECTS,
66
+ )
67
+
68
+ # Canonical apply: affect_modify(True) updates mod_stat AND
69
+ # affected_by, then append to ch.affected (ROM affect_to_char).
70
+ affect_modify(ch, affect, True) # type: ignore[arg-type] # duck-typed: AffectData vs Affect
71
+ ch.affected.append(affect)
72
+
73
+ assert ch.mod_stat[int(Stat.STR)] == baseline_str + 2
74
+ assert ch.affected_by & int(AffectFlag.HASTE)
75
+ assert affect in ch.affected
76
+
77
+ # Tick 1: duration 1 -> 0, affect stays in list.
78
+ tick_spell_effects(ch)
79
+ assert affect in ch.affected
80
+ assert affect.duration == 0
81
+
82
+ # Tick 2: duration == 0, ROM removes via affect_remove.
83
+ tick_spell_effects(ch)
84
+
85
+ # ROM contract — all three must hold:
86
+ assert affect not in ch.affected, "expired affect must be unlinked"
87
+ assert ch.affected_by & int(AffectFlag.HASTE) == 0, (
88
+ "expired affect's bitvector must clear from affected_by "
89
+ "(src/handler.c:1317 affect_remove -> affect_modify(FALSE))"
90
+ )
91
+ assert ch.mod_stat[int(Stat.STR)] == baseline_str, (
92
+ "expired affect's stat modifier must be subtracted "
93
+ "(src/handler.c:1317 affect_remove -> affect_modify(FALSE))"
94
+ )
95
+ assert ch.affected_by == baseline_affected_by
96
+
97
+
98
+ def test_affect_check_preserves_bit_if_another_affect_provides_it() -> None:
99
+ """When two affects share a bitvector and only one expires, the
100
+ bit must remain set — ROM ``affect_check`` (src/handler.c:1182)
101
+ re-sets it after ``affect_modify(FALSE)`` clears it."""
102
+
103
+ ch = _build_char()
104
+
105
+ short = AffectData(
106
+ type=1,
107
+ level=10,
108
+ duration=1,
109
+ location=APPLY_STR,
110
+ modifier=2,
111
+ bitvector=int(AffectFlag.HASTE),
112
+ where=TO_AFFECTS,
113
+ )
114
+ long = AffectData(
115
+ type=2,
116
+ level=10,
117
+ duration=10,
118
+ location=APPLY_STR,
119
+ modifier=3,
120
+ bitvector=int(AffectFlag.HASTE),
121
+ where=TO_AFFECTS,
122
+ )
123
+
124
+ affect_modify(ch, short, True) # type: ignore[arg-type]
125
+ ch.affected.append(short)
126
+ affect_modify(ch, long, True) # type: ignore[arg-type]
127
+ ch.affected.append(long)
128
+
129
+ baseline_str_with_long_only = ch.mod_stat[int(Stat.STR)] - 2 # subtract short's +2
130
+
131
+ # Tick short to expiry.
132
+ tick_spell_effects(ch)
133
+ tick_spell_effects(ch)
134
+
135
+ assert short not in ch.affected
136
+ assert long in ch.affected
137
+ assert ch.affected_by & int(AffectFlag.HASTE), (
138
+ "HASTE bit must survive — `long` still provides it "
139
+ "(src/handler.c:1182 affect_check re-sets after clear)"
140
+ )
141
+ assert ch.mod_stat[int(Stat.STR)] == baseline_str_with_long_only, (
142
+ "only short's +2 must unwind; long's +3 must remain"
143
+ )