rom24-quickmud-python 2.9.16__tar.gz → 2.9.18__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/CHANGELOG.md +10 -0
- {rom24_quickmud_python-2.9.16/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.9.18}/PKG-INFO +1 -1
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/communication.py +16 -8
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/shop.py +11 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/pyproject.toml +1 -1
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18/rom24_quickmud_python.egg-info}/PKG-INFO +1 -1
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/rom24_quickmud_python.egg-info/SOURCES.txt +2 -0
- rom24_quickmud_python-2.9.18/tests/integration/test_npc_speaker_does_not_trigger_speech.py +213 -0
- rom24_quickmud_python-2.9.18/tests/integration/test_shop_room_broadcasts.py +120 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/LICENSE +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/MANIFEST.in +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/README.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/air.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/arachnos.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/area.lst +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/astral.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/canyon.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/catacomb.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/chapel.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/daycare.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/draconia.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/dream.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/drow.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/dwarven.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/dylan.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/eastern.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/galaxy.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/gnome.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/grave.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/group.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/grove.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/haon.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/help.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/hitower.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/hood.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/immort.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/limbo.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/mahntor.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/marsh.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/mega1.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/midennir.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/midgaard.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/mirror.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/mobfact.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/moria.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/newthalos.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/nirvana.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/ofcol.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/ofcol2.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/olympus.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/plains.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/proto.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/pyramid.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/quifael.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/redferne.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/rom.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/school.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/sewer.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/shire.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/smurf.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/social.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/thalos.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/tohell.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/trollden.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/valley.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/area/wyvern.are +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/air.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/arachnos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/area.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/area_0.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/astral.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/canyon.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/catacomb.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/chapel.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/daycare.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/draconia.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/dream.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/drow.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/dwarven.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/dylan.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/eastern.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/galaxy.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/gnome.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/grave.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/group.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/grove.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/haon.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/help.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/hitower.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/hood.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/immort.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/limbo.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/mahntor.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/marsh.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/mega1.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/midennir.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/midgaard.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/mirror.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/mobfact.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/moria.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/newthalos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/nirvana.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/ofcol.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/ofcol2.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/olympus.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/plains.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/pyramid.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/quifael.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/redferne.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/rom.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/school.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/sewer.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/shire.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/smurf.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/social.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/thalos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/tohell.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/trollden.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/valley.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas/wyvern.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/arachnos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/area.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/area_0.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/astral_plane.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/catacombs.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/chapel.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/day_care.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/dragon_tower.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/drow_city.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/dwarven_kingdom.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/dylan's_area.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/elemental_canyon.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/galaxy.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/gangland.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/gnome_village.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/graveyard.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/group.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/haon_dor.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/help.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/high_tower.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/holy_grove.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/in_the_air.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/limbo.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/machine_dreams.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/mahn-tor.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/marsh.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/mega_city_one.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/miden'nir.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/midgaard.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/mob_factory.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/moria.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/mud_school.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/new_ofcol.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/new_thalos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/nirvana.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/ofcol.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/old_thalos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/olympus.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/plains.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/pyramid.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/quifael's.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/redferne's.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/rom.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/sands_of_sorrow.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/sewers.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/shire.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/smurfville.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/social.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/thalos.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/tohell.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/troll_den.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/valhalla.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/valley_of_the_elves.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/areas_backup/wyvern's_tower.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/help.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/players/.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/players/attacker.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/players/eddol.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/players/hero.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/players/sleeper.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/players/trouble.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/shops.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/skills.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/socials.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/data/time.json +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/MPDocs/examples.doc +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/MPDocs/hacker.doc +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/MPDocs/mobprog.doc +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/MPDocs/new_readme.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/QuickMUD.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/act.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/area.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/c_module_inventory.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/c_python_cross_reference.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/c_to_python_file_coverage.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/class.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/command.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/contrib.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/drool.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/hacker.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/license.doc +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/license.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/memory.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/new.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/pfile.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/port.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/pr_queue.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/python_architecture.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/python_module_inventory.md +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/security.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/sites.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/skill.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/sky.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/trad.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/vnum.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/doc/~$Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/__main__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/account/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/account/account_manager.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/account/account_service.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/admin_logging/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/admin_logging/admin.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/admin_logging/agent_trace.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/advancement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/affects/engine.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/affects/saves.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/agent/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/agent/agent_protocol.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/agent/character_agent.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/ai/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/ai/aggressive.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/characters/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/characters/conditions.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/characters/follow.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/assist.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/death.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/engine.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/kill_table.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/messages.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/combat/safety.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/admin_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/advancement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/affects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/alias_cmds.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/auto_settings.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/build.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/channels.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/character.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/combat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/compare.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/consider.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/consumption.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/decorators.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/dispatcher.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/doors.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/equipment.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/feedback.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/give.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/group_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/healer.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/help.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imc.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_admin.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_display.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_emote.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_load.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_olc.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_punish.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_search.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/imm_set.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/info.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/info_extended.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/inspection.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/inventory.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/liquids.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/magic_items.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/misc_info.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/misc_player.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/mobprog_tools.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/movement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/murder.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/notes.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/obj_manipulation.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/player_config.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/player_info.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/position.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/remaining_rom.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/session.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/socials.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/thief_skills.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/commands/typo_guards.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/config.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/init.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/migrate_from_files.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/migrations.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/models.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/seed.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/serializers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/db/session.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/devtools/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/devtools/agent_demo.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/entrypoint.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/game_loop.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/game_tick_scheduler.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/groups/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/groups/xp.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/handler.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/imc/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/imc/commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/imc/network.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/imc/protocol.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/area_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/base_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/help_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/json_area_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/json_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/mob_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/mobprog_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/obj_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/reset_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/room_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/shop_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/social_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/loaders/specials_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/logging.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/magic/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/magic/effects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/math/c_compat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/math/stat_apps.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/mob_cmds.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/mobprog.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/area.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/area_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/board.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/board_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/character.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/character_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/clans.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/classes.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/constants.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/conversion.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/help.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/help_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/json_io.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/mob.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/note.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/note_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/obj.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/object.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/object_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/player_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/races.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/room.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/room_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/shop.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/shop_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/skill.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/skill_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/social.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/social_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/titles.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/models/weapon_table.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/music/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/ansi.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/connection.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/protocol.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/session.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/ssh_server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/net/telnet_server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/network/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/network/websocket_server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/network/websocket_session.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/network/websocket_stream.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/notes.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/olc/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/olc/editor_state.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/olc/save.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/registry.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/rom_api.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/convert_are_to_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/convert_help_are_to_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/convert_player_to_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/convert_shops_to_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/convert_skills_to_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/convert_social_are_to_json.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/scripts/load_test_data.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/security/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/security/bans.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/security/hash_utils.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/skills/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/skills/groups.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/skills/handlers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/skills/metadata.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/skills/registry.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/skills/say_spell.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/spawning/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/spawning/mob_spawner.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/spawning/obj_spawner.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/spawning/reset_handler.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/spawning/templates.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/spec_funs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/time.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/act.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/bit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/fix_sex.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/olc_tables.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/poses.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/prefix_lookup.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/prompt.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/rng_mm.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/string_editor.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/utils/text.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/wiznet.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/__init__.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/char_find.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/linking.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/look.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/movement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/obj_find.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/time_persistence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/vision.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/mud/world/world_state.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/rom24_quickmud_python.egg-info/requires.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/setup.cfg +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/setup.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/conftest.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/helpers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/helpers_player.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/conftest.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_act_comm_gaps.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_act_enter_gaps.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_act_wiz_command_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_admin_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_advancement_con_app.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_advancement_wis_app.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_alias_command_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_architectural_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_auto_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_auto_sacrifice_pers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_auto_sequences.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_ban_command_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_bit_flag_string.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_bit_flag_value.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_bit_is_stat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_boards_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_channels.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_char_update_lethal_tick_iteration.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_character_advancement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_character_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_character_creation_runtime.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_combat_dex_app.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_combat_str_app.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_communication_enhancement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_compare_critical_gaps.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_config_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_consumables.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_container_retrieval.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_dam_message_pers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_db2_loader_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_db_canonical_round_trip.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_death_and_corpses.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_decay_loop_inv012.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_die_follower_leader_chain.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_affects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_consider_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_equipment.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_examine_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_exits_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_help_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_inventory.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_look_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_password_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_practice_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_time_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_weather_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_where_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_who_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_do_worth.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_door_portal_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_drop_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_emote_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_environmental_effects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_equipment_ac_calculations.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_equipment_system.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_fight_c_do_kill_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_fight_c_safe_room_damage_gate.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_flag_command_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_furniture_occupancy.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_get_room_messages.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_give_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_group_combat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_group_xp_npc_level_floor.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_healer_command_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_hedit_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_hpcnt_once_per_pulse.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_info_display.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_interp_dispatcher.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_interp_prefix_order.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_interp_trust.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv005_same_room_combat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv006_fighting_pointer_coherence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv008_persistence_coherence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv009_registry_disconnect_cleanup.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv010_room_people_coherence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv011_carry_weight_coherence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv012_end_to_end.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv012_object_list_canonical.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv013_add_object_carrier.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv013_object_location_coherence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv014_object_registry_membership.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv015_affect_tick_lifecycle.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv016_position_transition_broadcast.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv018_wear_off_message_for_raw_affect.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_inv019_position_promotion_on_heal.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_invisibility_combat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_json_loader_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_lookup_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_message_delivery_no_duplicate.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_ai.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_assist.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_call.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_cast.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_damage.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_flee.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_junk.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_kill.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_oload.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_purge.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mob_cmds_transfer.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mobprog_edge_cases.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mobprog_greet_trigger.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mobprog_predicates.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mobprog_program_flow.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mobprog_scenarios.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_money_objects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mpedit_001_interpret_mpedit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mpedit_002_do_mpedit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_mpedit_003_mprog_code_model.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_music_load_songs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_music_play.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_nanny_login_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_nanny_saveload_runtime_path.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_new_player_workflow.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_numbered_get_syntax.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_001_run_olc_editor.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_007_redit_list_show.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_008_oedit_missing_cmds.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_009_medit_missing_cmds.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_010_015_do_olc_router.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_011_aedit_flag_toggle.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_012_014_editor_fallback.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_001_aedit_create.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_002_redit_create.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_003_redit_reset.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_004_redit_vnum_teleport.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_005_oedit_create.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_006_medit_create.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_007_aedit_show_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_008_redit_show_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_009_oedit_show_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_010_medit_show_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_011_name_messages.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_012_aedit_reset.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_013_get_area_for_vnum_order.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_act_014_area_changed_protocol.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_alist.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_builders.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_commands_listing.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_descriptor_state.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_display_resets.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_do_resets_subcommands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_001_mob_defensive_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_002_mob_form_parts_size_material.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_003_mob_mprogs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_004_mob_shops.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_005_mob_spec_fun.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_006_object_level.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_007_object_affects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_008_object_extra_descr.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_009_area_helps_round_trip.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_010_asave_area_dispatch.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_011_autosave_entry.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_012_npc_security_gate.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_013_area_list_social_prepend.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_olc_save_014_017_message_strings.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_pc_death_keeps_connection.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_pc_death_no_message_replay.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_pilot_integration.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_pit_timer_handling.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_player_config.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_player_npc_interaction.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_position_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_prompt_cmd_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_prompt_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_put_pit_timer.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_put_room_messages.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_put_weight_mult.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_recall_train_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_remove_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_room_light_tracking.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_room_retrieval.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_room_safety_features.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_runtime_bugs_2026_04_30.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_sacrifice_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_say_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_scan_broadcasts.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_shout_yell_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_skills_integration.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_skills_integration_combat_specials.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_socials.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_spell_affects_persistence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_spell_casting.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_steal_command.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_append.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_edit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_first_arg.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_format_string.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_lineadd.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_linedel.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_merc_getline.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_numlines.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_proper.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_replace.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_string_add.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_string_editor_unpad.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_tables_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_tell_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_update_c_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_weapon_proc_pers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/integration/test_weather_time.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_account_auth.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_act_comm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_act_enter_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_act_info_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_act_obj_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_act_wiz_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_advancement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_affects.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_agent_interface.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_alias_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_ansi.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_are_conversion.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_area_counts.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_area_exits.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_area_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_area_specials.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_bans.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_boards.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_builder_hedit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_builder_stat_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_building.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_char_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_assist.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_damage_types.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_death.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_defenses_prob.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_messages.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_position_damage.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_skills.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_state.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_surrender.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_thac0.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_combat_thac0_engine.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_command_abbrev.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_command_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_communication.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_connection_motd.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_convert_are_to_json_cli.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_critical_function_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_damage_reduction.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_damage_reduction_integration.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_db_resets_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_db_seed.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_defense_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_encumbrance.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_enter_portal.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_fighting_state.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_fix_sex.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_game_loop.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_game_loop_order.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_game_loop_wait_daze.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_golden_reference.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_handler_affects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_hash_utils.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_healer.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_healer_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_healer_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_help_conversion.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_help_system.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_imc.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_json_io.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_json_model_instantiation.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_json_room_fields.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_load_midgaard.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_logging_admin.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_logging_rotation.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_mob_act_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_mob_damage_modifiers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_mobprog.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_mobprog_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_mobprog_helpers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_mobprog_triggers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_charm.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_costs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_doors.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_followers.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_mobprog.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_npc.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_portals.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_privacy.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_movement_visibility.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_music.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_nanny_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_networking_telnet.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_obj_loader.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_obj_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_olc_aedit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_olc_medit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_olc_oedit.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_olc_save.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_passive_skills_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_affect_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_auto_settings.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_combat_attributes.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_conditions.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_creation.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_equipment.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_info_commands.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_mechanics.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_prompt.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_resistance_flags.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_skills_spells.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_stats.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_title_description.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_player_wimpy.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_practice.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_prompt_clamps_hp.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_reset_levels.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_resets.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_rng_and_ccompat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_rng_determinism.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_rng_dice.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_rom_api.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_runtime_models.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_saves_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_say_spell.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_scan_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_schema_validation.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_scripted_session.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_shop_conversion.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_shops.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_combat_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_conversion.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_envenom_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_haggle_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_hide_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_peek_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_pick_lock_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_recall_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_registry.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skill_steal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_buffs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_combat.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_conjuration.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_damage.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_debuffs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_detection.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_healing.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_identify.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_learned.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_mass.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_misc.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_spells_cast_listing.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_skills_transport.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_social_conversion.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_social_placeholders.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spawning.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spec_fun_behaviors.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spec_funs.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spec_funs_extra.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_specials_loader_ext.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_area_effects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_cancellation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_charm_control_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_creation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_damage_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_detection_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_enchantment_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_farsight_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_final_nine_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_harm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_heat_metal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_information_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_mass_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_priority_high_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spell_travel_portal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spells_basic.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_spells_damage.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_state_transitions.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_telnet_server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_thief_skills_dispatcher_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_time_daynight.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_time_persistence.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_utility_spells_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_weapon_damage.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_weapon_special_attacks.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_weapon_table_parity.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_websocket_server.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_wiznet.py +0 -0
- {rom24_quickmud_python-2.9.16 → rom24_quickmud_python-2.9.18}/tests/test_world.py +0 -0
|
@@ -7,6 +7,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.9.18]
|
|
11
|
+
|
|
12
|
+
### Fixed
|
|
13
|
+
- **`do_buy` missing `$n buys $p.` TO_ROOM broadcast** (`mud/commands/shop.py:836-846`): ROM `src/act_obj.c:2734-2745 do_buy` emits `$n buys $p[N].` (multi) or `$n buys $p.` (single) to the room before deducting cost, so onlookers see the purchase. Python's `do_buy` had zero room broadcasts — the buyer received their TO_CHAR confirmation but no witness in the room saw the transaction. ROM-divergent. (Sibling `do_sell` at `mud/commands/shop.py:938-942` already had the matching `$n sells $p.` broadcast.) Fix: emit the broadcast via `room.broadcast(..., exclude=char)` before `deduct_cost`, mirroring ROM ordering and `do_sell`'s established pattern. Two enforcement tests in `tests/integration/test_shop_room_broadcasts.py`: (1) witness in same room sees `$n buys $p.` after buy, buyer excluded; (2) regression-pin for the pre-existing `do_sell` broadcast so it can't silently regress.
|
|
14
|
+
|
|
15
|
+
## [2.9.17]
|
|
16
|
+
|
|
17
|
+
### Fixed
|
|
18
|
+
- **`do_say` / `do_tell` missing `!IS_NPC(ch)` gate on SPEECH trigger loop** (`mud/commands/communication.py:140-175`, `:178-241`): ROM `src/act_comm.c:779` (`do_say`) and `:946` (`do_tell`) only enter the SPEECH listener loop when the speaker is a PC: `if (!IS_NPC (ch)) { ... }` and `if (!IS_NPC (ch) && IS_NPC (victim) && HAS_TRIGGER (victim, TRIG_SPEECH))`. The gate is load-bearing: it prevents mob-to-mob speech-trigger cascades (mob A says "X" → mob B's SPEECH trigger fires `mob say "Y"` → mob A's trigger fires → infinite loop). Python's listener loop was unconditional — any NPC who called `do_say` or `do_tell` (e.g. via `mud/agent/character_agent.py`, or any future agent-driven mob path) would fire SPEECH triggers on other NPCs. Fix: gate both listener loops on `not getattr(char, "is_npc", False)` (and `do_tell`'s also requires `getattr(target, "is_npc", False)`, matching ROM's compound conjunction). Two enforcement tests in `tests/integration/test_npc_speaker_does_not_trigger_speech.py`: (1) NPC speaker via `do_say` does not fire SPEECH on listening NPC; (2) NPC teller via `do_tell` does not fire SPEECH on NPC target.
|
|
19
|
+
|
|
10
20
|
## [2.9.16]
|
|
11
21
|
|
|
12
22
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.18
|
|
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>
|
|
@@ -165,13 +165,18 @@ def do_say(char: Character, args: str) -> str:
|
|
|
165
165
|
asyncio.create_task(send_to_char(listener, per_message))
|
|
166
166
|
if hasattr(listener, "messages"):
|
|
167
167
|
listener.messages.append(per_message)
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
168
|
+
# mirroring ROM src/act_comm.c:779 — `if (!IS_NPC (ch))` gate.
|
|
169
|
+
# Only PC speakers enter the SPEECH listener loop; this prevents
|
|
170
|
+
# mob-to-mob speech-trigger cascades (mob A says "X" → mob B's
|
|
171
|
+
# SPEECH trigger fires → triggers another say → infinite loop).
|
|
172
|
+
if not getattr(char, "is_npc", False):
|
|
173
|
+
for mob in list(char.room.people):
|
|
174
|
+
if mob is char or not getattr(mob, "is_npc", False):
|
|
175
|
+
continue
|
|
176
|
+
default_pos = getattr(mob, "default_pos", getattr(mob, "position", Position.STANDING))
|
|
177
|
+
if getattr(mob, "position", default_pos) != default_pos:
|
|
178
|
+
continue
|
|
179
|
+
mobprog.mp_speech_trigger(args, mob, char)
|
|
175
180
|
return f"{{6You say '{{7{args}{{6'{{x"
|
|
176
181
|
|
|
177
182
|
|
|
@@ -215,7 +220,10 @@ def do_tell(char: Character, args: str) -> str:
|
|
|
215
220
|
if buffered_response:
|
|
216
221
|
return buffered_response
|
|
217
222
|
|
|
218
|
-
if
|
|
223
|
+
# mirroring ROM src/act_comm.c:946 — `if (!IS_NPC (ch) && IS_NPC (victim)
|
|
224
|
+
# && HAS_TRIGGER (victim, TRIG_SPEECH))`. NPC tellers do not fire SPEECH
|
|
225
|
+
# triggers on NPC targets; same anti-cascade gate as do_say.
|
|
226
|
+
if not getattr(char, "is_npc", False) and getattr(target, "is_npc", False):
|
|
219
227
|
default_pos = getattr(target, "default_pos", getattr(target, "position", Position.STANDING))
|
|
220
228
|
if getattr(target, "position", default_pos) == default_pos:
|
|
221
229
|
mobprog.mp_speech_trigger(message, target, char)
|
|
@@ -833,6 +833,17 @@ def do_buy(char: Character, args: str) -> str:
|
|
|
833
833
|
char.messages.append("You haggle with the shopkeeper.")
|
|
834
834
|
check_improve(char, "haggle", True, 4)
|
|
835
835
|
|
|
836
|
+
# ROM src/act_obj.c:2734-2745 — broadcast `$n buys $p[N].` or `$n buys $p.`
|
|
837
|
+
# to the room before deducting cost so onlookers see the transaction.
|
|
838
|
+
room = getattr(char, "room", None)
|
|
839
|
+
if room is not None:
|
|
840
|
+
buyer_name = char.short_descr or char.name or "Someone"
|
|
841
|
+
item_name = selected_obj.short_descr or selected_obj.name or "something"
|
|
842
|
+
if quantity > 1:
|
|
843
|
+
room.broadcast(f"{buyer_name} buys {item_name}[{quantity}].", exclude=char)
|
|
844
|
+
else:
|
|
845
|
+
room.broadcast(f"{buyer_name} buys {item_name}.", exclude=char)
|
|
846
|
+
|
|
836
847
|
deduct_cost(char, total_cost)
|
|
837
848
|
_set_keeper_total_wealth(keeper, _keeper_total_wealth(keeper) + total_cost)
|
|
838
849
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "rom24-quickmud-python"
|
|
7
|
-
version = "2.9.
|
|
7
|
+
version = "2.9.18"
|
|
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.
|
|
3
|
+
Version: 2.9.18
|
|
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>
|
|
@@ -744,6 +744,7 @@ tests/integration/test_music_play.py
|
|
|
744
744
|
tests/integration/test_nanny_login_parity.py
|
|
745
745
|
tests/integration/test_nanny_saveload_runtime_path.py
|
|
746
746
|
tests/integration/test_new_player_workflow.py
|
|
747
|
+
tests/integration/test_npc_speaker_does_not_trigger_speech.py
|
|
747
748
|
tests/integration/test_numbered_get_syntax.py
|
|
748
749
|
tests/integration/test_olc_001_run_olc_editor.py
|
|
749
750
|
tests/integration/test_olc_007_redit_list_show.py
|
|
@@ -807,6 +808,7 @@ tests/integration/test_runtime_bugs_2026_04_30.py
|
|
|
807
808
|
tests/integration/test_sacrifice_command.py
|
|
808
809
|
tests/integration/test_say_parity.py
|
|
809
810
|
tests/integration/test_scan_broadcasts.py
|
|
811
|
+
tests/integration/test_shop_room_broadcasts.py
|
|
810
812
|
tests/integration/test_shout_yell_parity.py
|
|
811
813
|
tests/integration/test_skills_integration.py
|
|
812
814
|
tests/integration/test_skills_integration_combat_specials.py
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
"""Probe: NPC speaker must not fire SPEECH triggers on listening NPCs.
|
|
2
|
+
|
|
3
|
+
ROM ``src/act_comm.c:779-789`` (do_say):
|
|
4
|
+
|
|
5
|
+
if (!IS_NPC (ch))
|
|
6
|
+
{
|
|
7
|
+
CHAR_DATA *mob, *mob_next;
|
|
8
|
+
for (mob = ch->in_room->people; mob != NULL; mob = mob_next)
|
|
9
|
+
{
|
|
10
|
+
mob_next = mob->next_in_room;
|
|
11
|
+
if (IS_NPC (mob) && HAS_TRIGGER (mob, TRIG_SPEECH)
|
|
12
|
+
&& mob->position == mob->pIndexData->default_pos)
|
|
13
|
+
mp_act_trigger (argument, mob, ch, NULL, NULL, TRIG_SPEECH);
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
The outer ``if (!IS_NPC (ch))`` gate is load-bearing: it prevents
|
|
18
|
+
mob-to-mob speech-trigger cascades. ROM's MOBtrigger global
|
|
19
|
+
(``src/comm.c:311, 2384``) plays a related role for ``act()``-driven
|
|
20
|
+
triggers, but the SPEECH path in do_say has its own static gate at the
|
|
21
|
+
loop head — it never enters the listener loop when the speaker is an
|
|
22
|
+
NPC.
|
|
23
|
+
|
|
24
|
+
Python's ``mud/commands/communication.py:do_say`` (lines 168-174) iterates
|
|
25
|
+
``char.room.people`` and calls ``mp_speech_trigger`` on every listening
|
|
26
|
+
NPC whose position matches its default_pos — but it does NOT check
|
|
27
|
+
``char.is_npc`` first. If an NPC ever calls ``do_say`` (via
|
|
28
|
+
``mud/agent/character_agent.py`` or any future agent-driven mob), the
|
|
29
|
+
listener loop runs, contradicting ROM.
|
|
30
|
+
|
|
31
|
+
Status: probe. If this test FAILS (the SPEECH trigger fires on the
|
|
32
|
+
listening NPC when an NPC speaker calls do_say), the gap is real and a
|
|
33
|
+
gap-closer follows. If it PASSES, the contract is enforced by some
|
|
34
|
+
other gate and the probe is closed.
|
|
35
|
+
"""
|
|
36
|
+
|
|
37
|
+
from __future__ import annotations
|
|
38
|
+
|
|
39
|
+
import pytest
|
|
40
|
+
|
|
41
|
+
from mud.commands.communication import do_say
|
|
42
|
+
from mud.models.character import Character, character_registry
|
|
43
|
+
from mud.models.constants import Position
|
|
44
|
+
from mud.models.mob import MobIndex
|
|
45
|
+
from mud.models.room import Room
|
|
46
|
+
from mud.registry import room_registry
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
@pytest.fixture(autouse=True)
|
|
50
|
+
def _cleanup():
|
|
51
|
+
snapshot = list(character_registry)
|
|
52
|
+
character_registry.clear()
|
|
53
|
+
yield
|
|
54
|
+
character_registry.clear()
|
|
55
|
+
character_registry.extend(snapshot)
|
|
56
|
+
room_registry.pop(9400, None)
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _make_room() -> Room:
|
|
60
|
+
room = Room(vnum=9400, name="Speech", description="", room_flags=0, sector_type=0)
|
|
61
|
+
room.people = []
|
|
62
|
+
room.contents = []
|
|
63
|
+
room_registry[9400] = room
|
|
64
|
+
return room
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
class _FakeProg:
|
|
68
|
+
def __init__(self, trig_type: int, trig_phrase: str, code: str, vnum: int = 9401):
|
|
69
|
+
self.trig_type = trig_type
|
|
70
|
+
self.trig_phrase = trig_phrase
|
|
71
|
+
self.code = code
|
|
72
|
+
self.vnum = vnum
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
def test_npc_speaker_does_not_fire_speech_trigger_on_listener():
|
|
76
|
+
"""ROM gate: NPC speakers must not trigger SPEECH on listening NPCs.
|
|
77
|
+
|
|
78
|
+
Set up a speaker NPC (with messages list to receive its own self-line)
|
|
79
|
+
and a listener NPC with a SPEECH trigger keyed off a phrase. The
|
|
80
|
+
listener's trigger fires by appending to a sentinel list on the mob.
|
|
81
|
+
"""
|
|
82
|
+
from mud.mobprog import Trigger
|
|
83
|
+
|
|
84
|
+
room = _make_room()
|
|
85
|
+
|
|
86
|
+
speaker = Character(
|
|
87
|
+
name="speaker",
|
|
88
|
+
is_npc=True,
|
|
89
|
+
level=10,
|
|
90
|
+
room=room,
|
|
91
|
+
position=int(Position.STANDING),
|
|
92
|
+
default_pos=int(Position.STANDING),
|
|
93
|
+
)
|
|
94
|
+
speaker.messages = []
|
|
95
|
+
room.people.append(speaker)
|
|
96
|
+
character_registry.append(speaker)
|
|
97
|
+
|
|
98
|
+
listener = Character(
|
|
99
|
+
name="listener",
|
|
100
|
+
is_npc=True,
|
|
101
|
+
level=10,
|
|
102
|
+
room=room,
|
|
103
|
+
position=int(Position.STANDING),
|
|
104
|
+
default_pos=int(Position.STANDING),
|
|
105
|
+
)
|
|
106
|
+
listener.messages = []
|
|
107
|
+
# Attach a SPEECH trigger whose phrase matches our say.
|
|
108
|
+
prog = _FakeProg(
|
|
109
|
+
trig_type=int(Trigger.SPEECH),
|
|
110
|
+
trig_phrase="hello",
|
|
111
|
+
code='mob echo "TRIGGERED"\n',
|
|
112
|
+
vnum=9401,
|
|
113
|
+
)
|
|
114
|
+
proto = MobIndex(vnum=9401, short_descr="a listener", level=10)
|
|
115
|
+
proto.mprogs = [prog]
|
|
116
|
+
listener.prototype = proto
|
|
117
|
+
|
|
118
|
+
room.people.append(listener)
|
|
119
|
+
character_registry.append(listener)
|
|
120
|
+
|
|
121
|
+
# Capture trigger firings via a probe wrapper around mp_act_trigger.
|
|
122
|
+
fired: list[tuple[str, str]] = []
|
|
123
|
+
|
|
124
|
+
import mud.mobprog as mobprog
|
|
125
|
+
|
|
126
|
+
original = mobprog.mp_act_trigger
|
|
127
|
+
|
|
128
|
+
def _probe(argument, mob, ch, *args, **kwargs):
|
|
129
|
+
fired.append((getattr(mob, "name", "?"), argument))
|
|
130
|
+
return original(argument, mob, ch, *args, **kwargs)
|
|
131
|
+
|
|
132
|
+
mobprog.mp_act_trigger = _probe
|
|
133
|
+
try:
|
|
134
|
+
do_say(speaker, "hello")
|
|
135
|
+
finally:
|
|
136
|
+
mobprog.mp_act_trigger = original
|
|
137
|
+
|
|
138
|
+
# ROM gate: NPC speakers do NOT enter the SPEECH listener loop.
|
|
139
|
+
assert fired == [], (
|
|
140
|
+
f"NPC speaker must not fire SPEECH trigger on listening NPCs "
|
|
141
|
+
f"(ROM src/act_comm.c:779 `if (!IS_NPC (ch))`); "
|
|
142
|
+
f"fired triggers: {fired}"
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
|
|
146
|
+
def test_npc_teller_does_not_fire_speech_trigger_on_target():
|
|
147
|
+
"""ROM src/act_comm.c:946 — `if (!IS_NPC (ch) && IS_NPC (victim) ...)`.
|
|
148
|
+
|
|
149
|
+
do_tell carries the same anti-cascade gate as do_say. An NPC who
|
|
150
|
+
tells another NPC something must not fire the target's SPEECH
|
|
151
|
+
trigger.
|
|
152
|
+
"""
|
|
153
|
+
from mud.commands.communication import do_tell
|
|
154
|
+
from mud.mobprog import Trigger
|
|
155
|
+
|
|
156
|
+
room = _make_room()
|
|
157
|
+
|
|
158
|
+
speaker = Character(
|
|
159
|
+
name="speaker",
|
|
160
|
+
is_npc=True,
|
|
161
|
+
level=10,
|
|
162
|
+
room=room,
|
|
163
|
+
position=int(Position.STANDING),
|
|
164
|
+
default_pos=int(Position.STANDING),
|
|
165
|
+
)
|
|
166
|
+
speaker.messages = []
|
|
167
|
+
speaker.banned_channels = set()
|
|
168
|
+
speaker.comm = 0
|
|
169
|
+
room.people.append(speaker)
|
|
170
|
+
character_registry.append(speaker)
|
|
171
|
+
|
|
172
|
+
target = Character(
|
|
173
|
+
name="target",
|
|
174
|
+
is_npc=True,
|
|
175
|
+
level=10,
|
|
176
|
+
room=room,
|
|
177
|
+
position=int(Position.STANDING),
|
|
178
|
+
default_pos=int(Position.STANDING),
|
|
179
|
+
)
|
|
180
|
+
target.messages = []
|
|
181
|
+
target.banned_channels = set()
|
|
182
|
+
target.comm = 0
|
|
183
|
+
proto = MobIndex(vnum=9402, short_descr="a target", level=10)
|
|
184
|
+
prog = _FakeProg(
|
|
185
|
+
trig_type=int(Trigger.SPEECH),
|
|
186
|
+
trig_phrase="hello",
|
|
187
|
+
code='mob echo "TELL_TRIGGERED"\n',
|
|
188
|
+
vnum=9402,
|
|
189
|
+
)
|
|
190
|
+
proto.mprogs = [prog]
|
|
191
|
+
target.prototype = proto
|
|
192
|
+
room.people.append(target)
|
|
193
|
+
character_registry.append(target)
|
|
194
|
+
|
|
195
|
+
fired: list[tuple[str, str]] = []
|
|
196
|
+
import mud.mobprog as mobprog
|
|
197
|
+
|
|
198
|
+
original = mobprog.mp_act_trigger
|
|
199
|
+
|
|
200
|
+
def _probe(argument, mob, ch, *args, **kwargs):
|
|
201
|
+
fired.append((getattr(mob, "name", "?"), argument))
|
|
202
|
+
return original(argument, mob, ch, *args, **kwargs)
|
|
203
|
+
|
|
204
|
+
mobprog.mp_act_trigger = _probe
|
|
205
|
+
try:
|
|
206
|
+
do_tell(speaker, "target hello")
|
|
207
|
+
finally:
|
|
208
|
+
mobprog.mp_act_trigger = original
|
|
209
|
+
|
|
210
|
+
assert fired == [], (
|
|
211
|
+
f"NPC teller must not fire SPEECH trigger on NPC target "
|
|
212
|
+
f"(ROM src/act_comm.c:946); fired triggers: {fired}"
|
|
213
|
+
)
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
"""Probe: shop do_buy / do_sell must emit TO_ROOM broadcasts.
|
|
2
|
+
|
|
3
|
+
ROM ``src/act_obj.c``:
|
|
4
|
+
|
|
5
|
+
- do_buy (line 2734-2745): emits ``$n buys $p[N].`` (multi) or
|
|
6
|
+
``$n buys $p.`` (single) to the room before deducting cost.
|
|
7
|
+
- do_sell (line 2923): emits ``$n sells $p.`` to the room before
|
|
8
|
+
haggle/cost-transfer.
|
|
9
|
+
|
|
10
|
+
Python ``mud/commands/shop.py`` has zero ``broadcast_room`` calls — the
|
|
11
|
+
buyer/seller gets a TO_CHAR string but no witness in the room sees the
|
|
12
|
+
transaction. ROM-divergent: in the original engine, every onlooker sees
|
|
13
|
+
shop activity.
|
|
14
|
+
"""
|
|
15
|
+
|
|
16
|
+
from __future__ import annotations
|
|
17
|
+
|
|
18
|
+
from mud.commands.dispatcher import process_command
|
|
19
|
+
from mud.models.character import character_registry
|
|
20
|
+
from mud.registry import shop_registry
|
|
21
|
+
from mud.spawning.mob_spawner import spawn_mob
|
|
22
|
+
from mud.spawning.obj_spawner import spawn_object
|
|
23
|
+
from mud.time import time_info
|
|
24
|
+
from mud.world import create_test_character, initialize_world
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _grocer_in_room(char):
|
|
28
|
+
return next(
|
|
29
|
+
(
|
|
30
|
+
p
|
|
31
|
+
for p in char.room.people
|
|
32
|
+
if getattr(p, "prototype", None) and p.prototype.vnum in shop_registry
|
|
33
|
+
),
|
|
34
|
+
None,
|
|
35
|
+
)
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
def _ensure_lantern(keeper):
|
|
39
|
+
if not any(
|
|
40
|
+
(obj.short_descr or "").lower().startswith("a hooded brass lantern")
|
|
41
|
+
for obj in keeper.inventory
|
|
42
|
+
):
|
|
43
|
+
lantern = spawn_object(3031)
|
|
44
|
+
assert lantern is not None
|
|
45
|
+
lantern.prototype.short_descr = "a hooded brass lantern"
|
|
46
|
+
keeper.inventory.append(lantern)
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
def test_do_buy_broadcasts_to_room():
|
|
50
|
+
"""ROM src/act_obj.c:2742 — `act("$n buys $p.", ch, obj, NULL, TO_ROOM)`."""
|
|
51
|
+
initialize_world("area/area.lst")
|
|
52
|
+
char = create_test_character("Buyer", 3010)
|
|
53
|
+
char.level = 20
|
|
54
|
+
char.gold = 100
|
|
55
|
+
keeper = _grocer_in_room(char) or spawn_mob(3002)
|
|
56
|
+
assert keeper is not None
|
|
57
|
+
if keeper not in char.room.people:
|
|
58
|
+
keeper.move_to_room(char.room)
|
|
59
|
+
|
|
60
|
+
witness = create_test_character("Witness", 3010)
|
|
61
|
+
witness.messages = []
|
|
62
|
+
|
|
63
|
+
previous_hour = time_info.hour
|
|
64
|
+
try:
|
|
65
|
+
time_info.hour = 10
|
|
66
|
+
_ensure_lantern(keeper)
|
|
67
|
+
process_command(char, "buy lantern")
|
|
68
|
+
finally:
|
|
69
|
+
time_info.hour = previous_hour
|
|
70
|
+
|
|
71
|
+
joined = "\n".join(witness.messages)
|
|
72
|
+
assert "buys" in joined.lower() and "lantern" in joined.lower(), (
|
|
73
|
+
f"witness must see `$n buys $p.` broadcast (ROM src/act_obj.c:2742); "
|
|
74
|
+
f"witness.messages = {witness.messages!r}"
|
|
75
|
+
)
|
|
76
|
+
# Buyer should be excluded from the room broadcast.
|
|
77
|
+
assert not any("buys" in m.lower() for m in getattr(char, "messages", []) or []), (
|
|
78
|
+
"buyer should not receive the TO_ROOM `$n buys $p.` broadcast"
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
|
|
82
|
+
def test_do_sell_broadcasts_to_room():
|
|
83
|
+
"""ROM src/act_obj.c:2923 — `act("$n sells $p.", ch, obj, NULL, TO_ROOM)`."""
|
|
84
|
+
initialize_world("area/area.lst")
|
|
85
|
+
char = create_test_character("Seller", 3010)
|
|
86
|
+
char.level = 20
|
|
87
|
+
char.gold = 100
|
|
88
|
+
keeper = _grocer_in_room(char) or spawn_mob(3002)
|
|
89
|
+
assert keeper is not None
|
|
90
|
+
if keeper not in char.room.people:
|
|
91
|
+
keeper.move_to_room(char.room)
|
|
92
|
+
|
|
93
|
+
# Buy a lantern so the seller has something the keeper will buy back.
|
|
94
|
+
previous_hour = time_info.hour
|
|
95
|
+
try:
|
|
96
|
+
time_info.hour = 10
|
|
97
|
+
_ensure_lantern(keeper)
|
|
98
|
+
process_command(char, "buy lantern")
|
|
99
|
+
finally:
|
|
100
|
+
time_info.hour = previous_hour
|
|
101
|
+
|
|
102
|
+
witness = create_test_character("Witness", 3010)
|
|
103
|
+
witness.messages = []
|
|
104
|
+
if hasattr(char, "messages"):
|
|
105
|
+
char.messages.clear()
|
|
106
|
+
|
|
107
|
+
try:
|
|
108
|
+
time_info.hour = 10
|
|
109
|
+
process_command(char, "sell lantern")
|
|
110
|
+
finally:
|
|
111
|
+
time_info.hour = previous_hour
|
|
112
|
+
|
|
113
|
+
joined = "\n".join(witness.messages)
|
|
114
|
+
assert "sells" in joined.lower() and "lantern" in joined.lower(), (
|
|
115
|
+
f"witness must see `$n sells $p.` broadcast (ROM src/act_obj.c:2923); "
|
|
116
|
+
f"witness.messages = {witness.messages!r}"
|
|
117
|
+
)
|
|
118
|
+
assert not any("sells" in m.lower() for m in getattr(char, "messages", []) or []), (
|
|
119
|
+
"seller should not receive the TO_ROOM `$n sells $p.` broadcast"
|
|
120
|
+
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|