rom24-quickmud-python 2.7.0__tar.gz → 2.8.21__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.7.0 → rom24_quickmud_python-2.8.21}/CHANGELOG.md +285 -0
- {rom24_quickmud_python-2.7.0/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.8.21}/PKG-INFO +22 -34
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/README.md +19 -33
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/air.json +358 -221
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/arachnos.json +163 -345
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/astral.json +488 -1418
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/canyon.json +323 -1315
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/catacomb.json +147 -653
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/chapel.json +371 -1040
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/daycare.json +97 -372
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/draconia.json +245 -1330
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/dream.json +507 -447
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/drow.json +253 -665
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/dwarven.json +156 -624
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/dylan.json +62 -197
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/eastern.json +365 -1104
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/galaxy.json +278 -1256
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/gnome.json +223 -898
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/grave.json +92 -403
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/grove.json +121 -515
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/haon.json +107 -717
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/help.json +6 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/hitower.json +742 -3457
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/hood.json +109 -667
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/immort.json +30 -26
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/mahntor.json +821 -3343
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/marsh.json +139 -375
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/mega1.json +225 -716
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/midennir.json +237 -356
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/mirror.json +700 -1463
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/mobfact.json +197 -148
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/moria.json +781 -1561
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/newthalos.json +861 -3373
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/nirvana.json +101 -204
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/ofcol.json +12 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/ofcol2.json +780 -2650
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/olympus.json +237 -1054
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/plains.json +94 -414
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/pyramid.json +178 -1160
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/quifael.json +9 -2
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/redferne.json +22 -106
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/school.json +517 -1005
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/sewer.json +215 -1330
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/shire.json +306 -826
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/smurf.json +123 -408
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/thalos.json +430 -1341
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/tohell.json +617 -2254
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/trollden.json +92 -289
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/valley.json +547 -1030
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/wyvern.json +434 -1015
- rom24_quickmud_python-2.8.21/data/time.json +7 -0
- rom24_quickmud_python-2.8.21/mud/account/account_manager.py +328 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/account/account_service.py +23 -18
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/advancement.py +8 -2
- rom24_quickmud_python-2.8.21/mud/affects/engine.py +82 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/ai/__init__.py +0 -54
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/engine.py +54 -28
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/admin_commands.py +4 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/build.py +1184 -95
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/character.py +2 -4
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/combat.py +7 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/communication.py +5 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/dispatcher.py +77 -16
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_admin.py +8 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_olc.py +292 -63
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/notes.py +42 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/remaining_rom.py +44 -6
- rom24_quickmud_python-2.8.21/mud/db/migrations.py +129 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/db/models.py +48 -1
- rom24_quickmud_python-2.8.21/mud/db/serializers.py +622 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/game_loop.py +225 -33
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/groups/xp.py +30 -30
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/handler.py +2 -5
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/json_loader.py +5 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/obj_loader.py +6 -5
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/board.py +1 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/character.py +181 -14
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/mob.py +25 -0
- rom24_quickmud_python-2.8.21/mud/models/titles.py +292 -0
- rom24_quickmud_python-2.8.21/mud/models/weapon_table.py +86 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/music/__init__.py +69 -9
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/connection.py +210 -12
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/network/websocket_server.py +21 -13
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/network/websocket_stream.py +3 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/skills/registry.py +4 -7
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/act.py +9 -5
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/prompt.py +96 -6
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/wiznet.py +17 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/char_find.py +4 -0
- rom24_quickmud_python-2.8.21/mud/world/time_persistence.py +61 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/world_state.py +9 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/pyproject.toml +7 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21/rom24_quickmud_python.egg-info}/PKG-INFO +22 -34
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/rom24_quickmud_python.egg-info/SOURCES.txt +31 -7
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/rom24_quickmud_python.egg-info/requires.txt +2 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_boards_rom_parity.py +145 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_character_advancement.py +51 -4
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_character_creation_runtime.py +53 -4
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_communication_enhancement.py +5 -2
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_consumables.py +0 -6
- rom24_quickmud_python-2.8.21/tests/integration/test_db_canonical_round_trip.py +433 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_fight_c_do_kill_parity.py +67 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_fight_c_safe_room_damage_gate.py +78 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_flag_command_parity.py +39 -5
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_group_combat.py +7 -2
- rom24_quickmud_python-2.8.21/tests/integration/test_hedit_parity.py +268 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_inv005_same_room_combat.py +100 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_inv006_fighting_pointer_coherence.py +104 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_inv008_persistence_coherence.py +191 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_message_delivery_no_duplicate.py +76 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_ai.py +136 -62
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_money_objects.py +36 -30
- rom24_quickmud_python-2.8.21/tests/integration/test_mpedit_001_interpret_mpedit.py +226 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_mpedit_002_do_mpedit.py +114 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_mpedit_003_mprog_code_model.py +70 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_music_play.py +83 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_nanny_login_parity.py +11 -1
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_001_run_olc_editor.py +90 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_007_redit_list_show.py +236 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_008_oedit_missing_cmds.py +282 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_009_medit_missing_cmds.py +416 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_010_015_do_olc_router.py +252 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_011_aedit_flag_toggle.py +202 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_012_014_editor_fallback.py +211 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_alist.py +10 -5
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_commands_listing.py +97 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_do_resets_subcommands.py +72 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_010_asave_area_dispatch.py +4 -8
- rom24_quickmud_python-2.8.21/tests/integration/test_olc_save_014_017_message_strings.py +137 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_pc_death_keeps_connection.py +123 -0
- rom24_quickmud_python-2.8.21/tests/integration/test_pc_death_no_message_replay.py +90 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_prompt_rom_parity.py +35 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_skills_integration.py +38 -48
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_spell_affects_persistence.py +116 -8
- rom24_quickmud_python-2.8.21/tests/integration/test_update_c_parity.py +447 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_account_auth.py +280 -28
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_advancement.py +83 -4
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_affects.py +59 -14
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_area_loader.py +9 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_boards.py +44 -8
- rom24_quickmud_python-2.8.21/tests/test_builder_hedit.py +294 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_building.py +1 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat.py +53 -4
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_defenses_prob.py +2 -2
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_rom_parity.py +2 -1
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_thac0_engine.py +2 -2
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_commands.py +41 -15
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_fighting_state.py +26 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_game_loop.py +53 -17
- rom24_quickmud_python-2.8.21/tests/test_game_loop_order.py +71 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_game_loop_wait_daze.py +1 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_logging_admin.py +52 -30
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_mobprog_triggers.py +2 -0
- rom24_quickmud_python-2.8.21/tests/test_obj_loader.py +8 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_obj_update_rom_parity.py +18 -3
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_olc_aedit.py +3 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_olc_medit.py +8 -7
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_olc_oedit.py +8 -7
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_olc_save.py +1 -1
- rom24_quickmud_python-2.8.21/tests/test_prompt_clamps_hp.py +54 -0
- rom24_quickmud_python-2.8.21/tests/test_rng_determinism.py +22 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_scan_parity.py +5 -8
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_scripted_session.py +2 -2
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_combat_rom_parity.py +24 -14
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills.py +6 -6
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_telnet_server.py +10 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_time_persistence.py +1 -1
- rom24_quickmud_python-2.8.21/tests/test_weapon_table_parity.py +97 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_wiznet.py +63 -12
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_world.py +14 -0
- rom24_quickmud_python-2.7.0/data/time.json +0 -7
- rom24_quickmud_python-2.7.0/mud/account/account_manager.py +0 -108
- rom24_quickmud_python-2.7.0/mud/affects/engine.py +0 -32
- rom24_quickmud_python-2.7.0/mud/db/migrations.py +0 -63
- rom24_quickmud_python-2.7.0/mud/persistence.py +0 -1239
- rom24_quickmud_python-2.7.0/tests/integration/test_pet_persistence.py +0 -515
- rom24_quickmud_python-2.7.0/tests/integration/test_save_load_parity.py +0 -508
- rom24_quickmud_python-2.7.0/tests/integration/test_tables_001_affect_migration.py +0 -139
- rom24_quickmud_python-2.7.0/tests/test_builder_hedit.py +0 -300
- rom24_quickmud_python-2.7.0/tests/test_game_loop_order.py +0 -61
- rom24_quickmud_python-2.7.0/tests/test_inventory_persistence.py +0 -27
- rom24_quickmud_python-2.7.0/tests/test_persistence.py +0 -227
- rom24_quickmud_python-2.7.0/tests/test_player_save_format.py +0 -758
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/LICENSE +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/MANIFEST.in +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/air.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/arachnos.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/area.lst +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/astral.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/canyon.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/catacomb.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/chapel.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/daycare.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/draconia.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/dream.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/drow.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/dwarven.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/dylan.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/eastern.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/galaxy.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/gnome.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/grave.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/group.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/grove.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/haon.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/help.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/hitower.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/hood.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/immort.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/limbo.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/mahntor.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/marsh.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/mega1.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/midennir.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/midgaard.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/mirror.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/mobfact.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/moria.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/newthalos.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/nirvana.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/ofcol.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/ofcol2.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/olympus.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/plains.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/proto.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/pyramid.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/quifael.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/redferne.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/rom.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/school.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/sewer.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/shire.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/smurf.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/social.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/thalos.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/tohell.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/trollden.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/valley.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/area/wyvern.are +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/area.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/area_0.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/group.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/limbo.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/midgaard.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/rom.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas/social.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/arachnos.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/area.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/area_0.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/astral_plane.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/catacombs.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/chapel.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/day_care.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/dragon_tower.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/drow_city.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/dwarven_kingdom.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/dylan's_area.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/elemental_canyon.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/galaxy.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/gangland.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/gnome_village.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/graveyard.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/group.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/haon_dor.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/help.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/high_tower.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/holy_grove.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/in_the_air.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/limbo.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/machine_dreams.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/mahn-tor.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/marsh.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/mega_city_one.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/miden'nir.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/midgaard.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/mob_factory.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/moria.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/mud_school.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/new_ofcol.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/new_thalos.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/nirvana.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/ofcol.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/old_thalos.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/olympus.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/plains.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/pyramid.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/quifael's.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/redferne's.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/rom.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/sands_of_sorrow.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/sewers.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/shire.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/smurfville.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/social.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/thalos.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/tohell.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/troll_den.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/valhalla.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/valley_of_the_elves.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/areas_backup/wyvern's_tower.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/help.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/players/.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/players/attacker.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/players/eddol.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/players/hero.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/players/sleeper.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/players/trouble.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/shops.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/skills.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/data/socials.json +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/MPDocs/examples.doc +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/MPDocs/hacker.doc +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/MPDocs/mobprog.doc +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/MPDocs/new_readme.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/QuickMUD.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/act.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/area.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/c_module_inventory.md +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/c_python_cross_reference.md +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/c_to_python_file_coverage.md +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/class.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/command.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/contrib.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/drool.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/hacker.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/license.doc +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/license.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/memory.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/new.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/pfile.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/port.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/pr_queue.md +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/python_architecture.md +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/python_module_inventory.md +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/security.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/sites.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/skill.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/sky.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/trad.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/vnum.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/doc/~$Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/__main__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/account/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/admin_logging/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/admin_logging/admin.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/admin_logging/agent_trace.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/affects/saves.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/agent/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/agent/agent_protocol.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/agent/character_agent.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/ai/aggressive.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/characters/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/characters/conditions.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/characters/follow.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/assist.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/death.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/kill_table.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/messages.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/combat/safety.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/advancement.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/affects.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/alias_cmds.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/auto_settings.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/channels.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/compare.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/consider.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/consumption.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/decorators.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/doors.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/equipment.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/feedback.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/give.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/group_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/healer.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/help.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imc.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_display.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_emote.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_load.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_punish.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_search.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_server.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/imm_set.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/info.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/info_extended.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/inspection.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/inventory.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/liquids.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/magic_items.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/misc_info.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/misc_player.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/mobprog_tools.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/movement.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/murder.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/obj_manipulation.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/player_config.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/player_info.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/position.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/session.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/shop.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/socials.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/thief_skills.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/commands/typo_guards.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/config.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/db/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/db/init.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/db/migrate_from_files.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/db/seed.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/db/session.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/devtools/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/devtools/agent_demo.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/entrypoint.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/game_tick_scheduler.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/groups/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/imc/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/imc/commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/imc/network.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/imc/protocol.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/area_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/base_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/help_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/json_area_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/mob_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/mobprog_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/reset_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/room_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/shop_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/social_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/loaders/specials_loader.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/logging.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/magic/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/magic/effects.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/math/c_compat.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/math/stat_apps.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/mob_cmds.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/mobprog.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/area.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/area_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/board_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/character_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/clans.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/classes.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/constants.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/conversion.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/help.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/help_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/json_io.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/note.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/note_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/obj.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/object.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/object_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/player_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/races.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/room.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/room_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/shop.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/shop_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/skill.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/skill_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/social.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/models/social_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/ansi.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/protocol.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/session.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/ssh_server.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/net/telnet_server.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/network/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/network/websocket_session.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/notes.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/olc/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/olc/editor_state.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/olc/save.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/registry.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/rom_api.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/convert_are_to_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/convert_help_are_to_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/convert_player_to_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/convert_shops_to_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/convert_skills_to_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/convert_social_are_to_json.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/scripts/load_test_data.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/security/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/security/bans.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/security/hash_utils.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/server.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/skills/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/skills/groups.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/skills/handlers.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/skills/metadata.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/skills/say_spell.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/spawning/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/spawning/mob_spawner.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/spawning/obj_spawner.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/spawning/reset_handler.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/spawning/templates.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/spec_funs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/time.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/bit.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/fix_sex.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/olc_tables.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/poses.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/prefix_lookup.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/rng_mm.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/string_editor.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/utils/text.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/__init__.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/linking.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/look.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/movement.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/obj_find.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/mud/world/vision.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/setup.cfg +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/setup.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/conftest.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/helpers.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/helpers_player.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/conftest.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_act_comm_gaps.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_act_enter_gaps.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_act_wiz_command_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_admin_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_advancement_con_app.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_advancement_wis_app.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_alias_command_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_architectural_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_auto_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_auto_sequences.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_ban_command_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_bit_flag_string.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_bit_flag_value.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_bit_is_stat.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_channels.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_character_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_combat_dex_app.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_combat_str_app.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_compare_critical_gaps.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_config_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_container_retrieval.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_db2_loader_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_death_and_corpses.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_affects.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_consider_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_equipment.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_examine_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_exits_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_help_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_inventory.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_password_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_practice_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_time_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_weather_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_where_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_who_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_do_worth.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_door_portal_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_drop_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_environmental_effects.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_equipment_ac_calculations.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_equipment_system.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_furniture_occupancy.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_get_room_messages.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_give_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_healer_command_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_info_display.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_interp_dispatcher.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_interp_prefix_order.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_interp_trust.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_invisibility_combat.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_json_loader_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_lookup_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_assist.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_call.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_cast.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_damage.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_flee.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_junk.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_kill.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_oload.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_purge.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mob_cmds_transfer.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mobprog_edge_cases.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mobprog_greet_trigger.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mobprog_predicates.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mobprog_program_flow.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_mobprog_scenarios.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_music_load_songs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_new_player_workflow.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_numbered_get_syntax.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_001_aedit_create.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_002_redit_create.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_003_redit_reset.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_004_redit_vnum_teleport.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_005_oedit_create.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_006_medit_create.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_007_aedit_show_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_008_redit_show_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_009_oedit_show_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_010_medit_show_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_011_name_messages.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_012_aedit_reset.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_013_get_area_for_vnum_order.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_act_014_area_changed_protocol.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_builders.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_descriptor_state.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_display_resets.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_001_mob_defensive_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_002_mob_form_parts_size_material.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_003_mob_mprogs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_004_mob_shops.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_005_mob_spec_fun.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_006_object_level.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_007_object_affects.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_008_object_extra_descr.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_009_area_helps_round_trip.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_011_autosave_entry.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_012_npc_security_gate.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_olc_save_013_area_list_social_prepend.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_pilot_integration.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_pit_timer_handling.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_player_config.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_player_npc_interaction.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_position_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_put_pit_timer.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_put_room_messages.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_put_weight_mult.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_recall_train_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_remove_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_room_light_tracking.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_room_retrieval.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_room_safety_features.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_runtime_bugs_2026_04_30.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_sacrifice_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_scan_broadcasts.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_skills_integration_combat_specials.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_socials.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_spell_casting.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_steal_command.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_append.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_edit.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_first_arg.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_format_string.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_lineadd.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_linedel.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_merc_getline.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_numlines.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_proper.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_replace.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_string_add.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_string_editor_unpad.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_tables_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/integration/test_weather_time.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_act_comm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_act_enter_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_act_info_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_act_obj_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_act_wiz_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_agent_interface.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_alias_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_ansi.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_are_conversion.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_area_counts.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_area_exits.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_area_specials.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_bans.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_builder_stat_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_char_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_assist.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_damage_types.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_death.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_messages.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_position_damage.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_skills.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_state.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_surrender.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_combat_thac0.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_command_abbrev.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_command_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_communication.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_connection_motd.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_convert_are_to_json_cli.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_critical_function_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_damage_reduction.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_damage_reduction_integration.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_db_resets_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_db_seed.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_defense_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_encumbrance.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_enter_portal.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_fix_sex.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_golden_reference.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_handler_affects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_hash_utils.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_healer.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_healer_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_healer_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_help_conversion.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_help_system.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_imc.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_json_io.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_json_model_instantiation.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_json_room_fields.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_load_midgaard.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_logging_rotation.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_mob_act_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_mob_damage_modifiers.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_mobprog.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_mobprog_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_mobprog_helpers.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_charm.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_costs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_doors.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_followers.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_mobprog.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_npc.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_portals.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_privacy.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_movement_visibility.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_music.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_nanny_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_networking_telnet.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_passive_skills_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_affect_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_auto_settings.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_combat_attributes.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_conditions.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_creation.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_equipment.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_info_commands.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_mechanics.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_prompt.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_resistance_flags.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_skills_spells.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_stats.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_title_description.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_player_wimpy.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_practice.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_reset_levels.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_resets.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_rng_and_ccompat.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_rng_dice.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_rom_api.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_runtime_models.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_saves_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_say_spell.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_schema_validation.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_shop_conversion.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_shops.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_conversion.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_envenom_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_haggle_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_hide_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_peek_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_pick_lock_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_recall_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_registry.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skill_steal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_buffs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_combat.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_conjuration.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_damage.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_debuffs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_detection.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_healing.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_identify.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_learned.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_mass.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_misc.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_skills_transport.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_social_conversion.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_social_placeholders.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spawning.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spec_fun_behaviors.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spec_funs.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spec_funs_extra.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_specials_loader_ext.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_area_effects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_cancellation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_charm_control_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_creation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_damage_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_detection_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_enchantment_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_farsight_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_final_nine_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_harm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_heat_metal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_information_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_mass_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_priority_high_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spell_travel_portal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spells_basic.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_spells_damage.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_state_transitions.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_thief_skills_dispatcher_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_time_daynight.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_utility_spells_parity.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_weapon_damage.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_weapon_special_attacks.py +0 -0
- {rom24_quickmud_python-2.7.0 → rom24_quickmud_python-2.8.21}/tests/test_websocket_server.py +0 -0
|
@@ -7,6 +7,291 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.8.21]
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
- **README status refresh**: updated the public project status, audit coverage, test counts, and active-focus guidance so the README now matches the audited trackers and current session status.
|
|
14
|
+
- **Release wrap-up**: recertified the published repo state around the current fully green parity program (`4560 passed, 4 skipped`) and the completed 40/40 audit-bound ROM C file coverage.
|
|
15
|
+
|
|
16
|
+
## [2.8.20]
|
|
17
|
+
|
|
18
|
+
### Changed
|
|
19
|
+
- **Stability investigation recertified clean**: executed the queued descriptor/session reproduction subset and a full-suite rerun with no reproducing leak (`36 passed, 36 deselected` in the networking subset; full suite still `4560 passed, 4 skipped`).
|
|
20
|
+
- **Session guidance tightened**: `docs/sessions/SESSION_STATUS.md` now records that descriptor/session cleanup work should not proceed without a deterministic reproduction, and points the next agent at the standing investigation plan only if a leak reappears.
|
|
21
|
+
|
|
22
|
+
## [2.8.19]
|
|
23
|
+
|
|
24
|
+
### Added
|
|
25
|
+
- **Stability / invariant hardening handoff plan**: added a concrete next-agent execution plan for descriptor/session global-state isolation, targeting `descriptor_list`, `character_registry`, telnet/session teardown, and any newly discovered cross-file invariant.
|
|
26
|
+
|
|
27
|
+
### Changed
|
|
28
|
+
- **Session handoff updated**: `docs/sessions/SESSION_STATUS.md` now points at the stability / invariant hardening queue, with a dedicated handoff summary and explicit first verification commands for the next agent.
|
|
29
|
+
|
|
30
|
+
## [2.8.18]
|
|
31
|
+
|
|
32
|
+
### Added
|
|
33
|
+
- **Descriptor-backed `wiznet` regression coverage**: `tests/test_wiznet.py` now registers ROM-style playing descriptors for listeners and includes a stale-descriptor regression, so the suite exercises the production descriptor path instead of relying on the character-registry fallback.
|
|
34
|
+
|
|
35
|
+
### Fixed
|
|
36
|
+
- **`wiznet` descriptor-path immortal gate parity**: `mud/wiznet.py` now mirrors ROM `src/act_wiz.c:171-194` on the real descriptor path by rejecting NPC and non-immortal recipients before checking wiznet flags.
|
|
37
|
+
|
|
38
|
+
### Changed
|
|
39
|
+
- **Full-suite recertification**: the suite now reruns clean at `4560 passed, 4 skipped`.
|
|
40
|
+
|
|
41
|
+
## [2.8.17]
|
|
42
|
+
|
|
43
|
+
### Added
|
|
44
|
+
- **`BOARD-014` AFK parity coverage**: added ROM-backed integration tests for note-editor AFK ownership, including `note write`, `note send`, and the new `note forget` cancel path.
|
|
45
|
+
|
|
46
|
+
### Fixed
|
|
47
|
+
- **`BOARD-014` note-editor AFK parity**: `mud/commands/notes.py` and `mud/models/board.py` now mirror ROM `src/board.c` by setting AFK when note composition begins, clearing only note-owned AFK when posting or forgetting a note, and preserving manually enabled AFK.
|
|
48
|
+
|
|
49
|
+
### Changed
|
|
50
|
+
- **`board.c` audit closure**: `docs/parity/BOARD_C_AUDIT.md` and `docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md` now record `board.c` as fully closed with `BOARD-014` no longer deferred.
|
|
51
|
+
- **Full-suite recertification**: the suite now reruns clean at `4559 passed, 4 skipped`.
|
|
52
|
+
|
|
53
|
+
## [2.8.16]
|
|
54
|
+
|
|
55
|
+
### Fixed
|
|
56
|
+
- **`MUSIC-005` global-channel recipient parity**: `mud/music/__init__.py` now mirrors ROM `src/music.c:88-97` by iterating the ROM-style descriptor list, requiring `CON_PLAYING`, checking `COMM_NOMUSIC` / `COMM_QUIET` on `descriptor.original` when switched, and delivering the line to the active descriptor character.
|
|
57
|
+
- **`MUSIC-006` jukebox visibility parity**: jukebox room output now resolves `$p` per viewer, so recipients who cannot see the jukebox get ROM-style `"something"` fallback instead of a leaked short description. Implemented in `mud/music/__init__.py` with object visibility fallback in `mud/utils/act.py`.
|
|
58
|
+
|
|
59
|
+
### Changed
|
|
60
|
+
- **`music.c` audit closure**: `docs/parity/MUSIC_C_AUDIT.md` and `docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md` now record `music.c` at 100% with all six gaps closed.
|
|
61
|
+
|
|
62
|
+
## [2.8.15]
|
|
63
|
+
|
|
64
|
+
### Changed
|
|
65
|
+
- **Parity audit reconciliation**: refreshed stale `nanny.c` audit headers and the historical `save.c` tracker narrative so the docs match the verified codebase and enforced invariants (`INV-003`, `INV-008`).
|
|
66
|
+
|
|
67
|
+
## [2.8.14]
|
|
68
|
+
|
|
69
|
+
### Added
|
|
70
|
+
- **Deterministic ROM skill-improvement coverage**: `tests/integration/test_skills_integration.py` now enforces `check_improve()` on the live combat path, including the ROM rule that combat learning can continue above class adept up to 100.
|
|
71
|
+
- **Executable money and spell-affect integration coverage**: replaced stale skipped placeholders with live tests for drop-money consolidation, cursed no-remove equipment, poison damage-over-time, and plague contagion spread.
|
|
72
|
+
|
|
73
|
+
### Fixed
|
|
74
|
+
- **`check_improve()` adept-cap parity**: `mud/skills/registry.py` now mirrors ROM `src/skills.c` by allowing post-use learning through 100 instead of stopping at the class adept cap.
|
|
75
|
+
- **Plague contagion parity**: `mud/game_loop.py` now applies a full `AffectData` record to newly infected victims during `char_update()`, matching ROM `src/update.c:839-840`.
|
|
76
|
+
- **Kick ROM parity test stability**: `tests/test_skill_combat_rom_parity.py` now isolates `check_improve()` from the kick damage-roll assertions so the test verifies the ROM damage call instead of incidental follow-up RNG.
|
|
77
|
+
|
|
78
|
+
### Changed
|
|
79
|
+
- **Integration coverage tracker reconciliation**: the skills and spell-affects slices now record their real enforced status, and the stale info-command / equipment / group-combat historical narratives were collapsed to canonical current-state notes.
|
|
80
|
+
- **Full-suite recertification**: the suite now reruns clean at `4553 passed, 4 skipped`.
|
|
81
|
+
|
|
82
|
+
## [2.8.13]
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
- **ROM wear-off suppression enforcement**: added targeted regression coverage for `char_update()` and `obj_update()` so consecutive same-type affect expirations now stay locked to ROM `src/update.c` semantics, including single-message suppression for object wear-off.
|
|
86
|
+
- **Deterministic `mobile_update()` wander-gate enforcement**: added isolated integration coverage for `ACT_STAY_AREA`, `ACT_OUTDOORS`, and `ACT_INDOORS` movement restrictions using synthetic room topology instead of boot-world assumptions.
|
|
87
|
+
|
|
88
|
+
### Fixed
|
|
89
|
+
- **`GL-010` character affect wear-off parity**: `mud/affects/engine.py` now preserves merged spell effects while any same-type `AffectData` remains active, matching ROM `src/update.c:762-786`.
|
|
90
|
+
- **`GL-017` object affect wear-off parity**: `mud/game_loop.py` now suppresses duplicate same-type object wear-off messages exactly once per tick, matching ROM `src/update.c:939-957`.
|
|
91
|
+
|
|
92
|
+
### Changed
|
|
93
|
+
- **Parity tracker reconciliation**: cross-file invariant and integration-coverage trackers now record the enforced wander-gate and wear-off parity slices, and the full suite is recertified at `4547 passed, 10 skipped`.
|
|
94
|
+
|
|
95
|
+
## [2.8.12]
|
|
96
|
+
|
|
97
|
+
### Added
|
|
98
|
+
- **Canonical ROM `weapon_table`**: added `/mud/models/weapon_table.py` as the shared source for weapon class name, school weapon vnum, weapon type, and linked proficiency mapping, then wired combat, character-load skill seeding, and creation-time weapon handling to it.
|
|
99
|
+
- **`NANNY-010` reconnect descriptor sweep**: `mud/net/connection.py` now mirrors ROM `src/nanny.c:307-352` by sweeping duplicate descriptors on break-connect reconnect, including the switched-immortal `original->name` branch.
|
|
100
|
+
|
|
101
|
+
### Fixed
|
|
102
|
+
- **`COMM-005` duplicate-newbie parity**: new-character name validation now closes matching non-playing duplicate descriptors and emits ROM's `Double newbie alert` wiznet notice.
|
|
103
|
+
- **`FLAG-002` settable-bit preservation**: `do_flag` now preserves ROM `settable=FALSE` bits across the `=` operator for `act`, `plr`, and `comm` fields.
|
|
104
|
+
- **Test determinism and suite stability**: stabilized wiznet and advancement integration tests by isolating shared descriptor-list state and replacing wall-clock ROM RNG seeding with a fixed Mitchell-Moore seed.
|
|
105
|
+
|
|
106
|
+
### Changed
|
|
107
|
+
- **Parity tracker reconciliation**: refreshed stale audit/tracker rows for `act_obj.c`, `act_wiz.c`, `scan.c`, `special.c`, `healer.c`, `const/tables/lookup`, `fight.c`, and `comm.c` so docs match the verified codebase.
|
|
108
|
+
- **Full-suite recertification**: the suite now reruns clean at `4535 passed, 11 skipped`.
|
|
109
|
+
|
|
110
|
+
## [2.8.11]
|
|
111
|
+
|
|
112
|
+
### Fixed
|
|
113
|
+
- **`log` command trust parity**: restored the dispatcher registration for `log` to ROM `src/interp.c` level `L1` (`MAX_LEVEL - 1`) and updated the admin-logging tests to use a ROM-valid immortal trust level instead of `LEVEL_HERO`.
|
|
114
|
+
|
|
115
|
+
## [2.8.10]
|
|
116
|
+
|
|
117
|
+
### Fixed
|
|
118
|
+
- **Legacy character-row compatibility**: `mud/db/migrations.py` now backfills the DB-canonical `characters` columns that `load_character()` queries, so older SQLite databases with only the pre-2.8.0 schema can still load characters after migration. `mud/models/character.py:from_orm` and `mud/account/account_service.py:create_character` also keep persistent `points` aligned with ROM creation-point state.
|
|
119
|
+
|
|
120
|
+
## [2.8.9]
|
|
121
|
+
|
|
122
|
+
### Fixed
|
|
123
|
+
- **Command parser test parity**: leading punctuation commands now follow ROM `src/interp.c` single-character tokenization, restoring apostrophe-as-`say` handling. Updated scripted-session/command tests to match current ROM-faithful transcript ordering and scan output, and replaced a stale non-takeable school-sword pickup assumption with an explicit takeable test object.
|
|
124
|
+
|
|
125
|
+
## [2.8.8]
|
|
126
|
+
|
|
127
|
+
### Fixed
|
|
128
|
+
- **Admin `log` command parity**: dispatcher trust for `log` now matches ROM `src/interp.c`/`src/act_wiz.c`, `cmd_log` keeps the persisted `PLR_LOG` bit and `log_commands` boolean in sync, and admin player lookup now resolves through the live runtime character registry so `log <player>` works reliably.
|
|
129
|
+
|
|
130
|
+
## [2.8.7]
|
|
131
|
+
|
|
132
|
+
### Fixed
|
|
133
|
+
- **hedit RecursionError**: `_interpret_hedit` fallthrough on unknown commands now returns `"Unknown help editor command: <cmd>\n\r"` so `_should_fallback_from_olc` routes to the normal command table instead of re-entering hedit via `process_command`. Mirrors ROM `src/hedit.c:258` `interpret(ch, arg)` without the re-entry loop.
|
|
134
|
+
|
|
135
|
+
### Changed
|
|
136
|
+
- **tests/test_builder_hedit.py rewrite**: All 19 stale tests replaced with 23 ROM-parity tests that verify actual `cmd_hedit`/`cmd_hesave` behavior (ROM-exact strings: `"HEdit: There is no default help to edit.\n\r"`, `"Ok.\n\r"`, `"Keyword : [...]"`, `"Level : [...]"`, etc.). Covers entry-point guard, `new` subcommand, session open/show/keyword/level/text/done, session-lost recovery, unknown-command non-recursion, and full `hesave` workflow.
|
|
137
|
+
|
|
138
|
+
## [2.8.6]
|
|
139
|
+
|
|
140
|
+
### Fixed
|
|
141
|
+
- **FIGHT-002 safe-room parity**: `mud/combat/engine.py:apply_damage` now mirrors ROM `src/fight.c:725-733` by re-checking `is_safe(ch, victim)` before any fighting-state or HP mutation. This stops melee damage, weapon procs, and other `apply_damage()`-backed attack paths from landing after combatants are moved into a safe room mid-fight. Regression coverage: `tests/integration/test_fight_c_safe_room_damage_gate.py`.
|
|
142
|
+
|
|
143
|
+
## [2.8.5]
|
|
144
|
+
|
|
145
|
+
### Fixed
|
|
146
|
+
- **FIGHT-001 combat-entry parity**: `mud/commands/combat.py:do_kill` now mirrors ROM `src/fight.c:2815-2817` by entering combat through `multi_hit(ch, victim, TYPE_UNDEFINED)` instead of a single `attack_round()`. This restores haste / second-attack / third-attack follow-up swings for `kill` command combat starts. Regression coverage: `tests/integration/test_fight_c_do_kill_parity.py`.
|
|
147
|
+
|
|
148
|
+
## [2.8.4]
|
|
149
|
+
|
|
150
|
+
### Changed
|
|
151
|
+
- **Pyright cleanup across test suite.** Eliminated ~30 pre-existing `reportOptionalMemberAccess` / `reportArgumentType` / `reportAttributeAccessIssue` warnings across `tests/test_boards.py`, `tests/test_logging_admin.py`, `tests/test_commands.py`, `tests/test_wiznet.py`, `tests/test_affects.py`, and `tests/test_account_auth.py`. Approach: per-call-site `assert x is not None` guards on `Optional` returns from `find_board(...)`, `from_orm(db_char)`, `load_character(...)`, `Character.pcdata`, etc.; `cast(StreamReader, …)` / `cast(TelnetStream, …)` / `cast(Room, …)` for test doubles; widened `DummyWriter.write` overrides to `bytes | bytearray | memoryview`; initialized possibly-unbound `menu_task: asyncio.Task | None = None`; `# type: ignore[arg-type]` on the two intentional `dam_type=None` cases that exercise edge-case handling. No behavior change; tests still pass at the prior pre-existing-failure baseline.
|
|
152
|
+
|
|
153
|
+
## [2.8.3]
|
|
154
|
+
|
|
155
|
+
### Changed
|
|
156
|
+
- **Extract `time_info` persistence to `mud/world/time_persistence.py`.** `save_time_info`, `load_time_info`, `TimeSave`, and `TIME_FILE` now live in the new module. `tests/test_time_persistence.py` updated to import from the new location.
|
|
157
|
+
- **Extract serialization helpers to `mud/db/serializers.py`.** All live helpers imported by `mud/account/account_manager.py` (`_normalize_int_list`, `_serialize_colour_table`, `_serialize_object`, `_serialize_pet`, `_serialize_skill_map`, `_serialize_groups`) and `mud/models/character.py:from_orm` (`_apply_colour_table`, `_normalize_int_list`, `_deserialize_object`, `ObjectSave`, `_deserialize_pet`) now live in `mud/db/serializers.py`. Both importers updated.
|
|
158
|
+
|
|
159
|
+
### Removed
|
|
160
|
+
- **`mud/persistence.py` deleted.** The deprecated stub (holding only the two extracted surfaces above, plus dead code from the now-gone JSON-pfile path) is gone. No behavior change; `mud/persistence` was already a non-functional deprecation banner since 2.8.1.
|
|
161
|
+
|
|
162
|
+
## [2.8.2]
|
|
163
|
+
|
|
164
|
+
### Changed
|
|
165
|
+
- **Type cleanup on the new DB-canonical persistence surface.** `save_character_to_db` now types its `session` parameter as `sqlalchemy.orm.Session` (TYPE_CHECKING import) instead of `object`, dropping the `# type: ignore[union-attr]` on the `session.query` call. `mud/models/character.py:from_orm` casts `_deserialize_object(...)` to `Object | None` at the equipment-restore site so the `restored_equipment: dict[str, Object]` annotation is honored. No behavior change; pyright cleanup only. 25/25 critical persistence tests still green.
|
|
166
|
+
|
|
167
|
+
## [2.8.1]
|
|
168
|
+
|
|
169
|
+
### Changed
|
|
170
|
+
- **INV-008 reversal — Phase 2: DB-canonical persistence is live.** `mud/account/account_manager.save_character` and `load_character` now hit the SQL `Character` row directly (via Phase 1's `save_character_to_db` and `Character.from_orm`). The JSON-pfile delegation is removed; `mud/persistence.py` keeps only `time_info` save/load and a few ROM-only helpers (deprecated banner at module top). `tests/integration/test_inv008_persistence_coherence.py` now asserts the DB-canonical round-trip including a new `test_inv008_db_canonical_is_sole_path` case. INV-008 is ✅ ENFORCED again under the new architecture.
|
|
171
|
+
|
|
172
|
+
### Removed
|
|
173
|
+
- **JSON-pfile test files** — deleted because the surface they covered no longer exists: `tests/test_persistence.py`, `tests/test_persistence_password_hash.py`, `tests/test_player_save_format.py`, `tests/test_inventory_persistence.py`, `tests/integration/test_pet_persistence.py`, `tests/integration/test_save_load_parity.py`, `tests/integration/test_tables_001_affect_migration.py`. Persistence coverage is now provided by `tests/integration/test_db_canonical_round_trip.py` (7 tests) + `tests/integration/test_inv008_persistence_coherence.py` (5 tests). The 3 pre-existing `test_persistence.py` / `test_inventory_persistence.py` failures (broken-area-JSON / vnum 3022) are no longer relevant — those tests went away with the surface they tested.
|
|
174
|
+
|
|
175
|
+
## [2.8.0]
|
|
176
|
+
|
|
177
|
+
### Added
|
|
178
|
+
- **INV-008 reversal — Phase 1 of 2: DB-canonical persistence schema.** Following the discovery that `mud/account/account_service.create_character` and `mud/models/character.py:from_orm` still write/read the DB row at first-login (the JSON-pfile path was load-bearing only after first save), the project is reversing course on INV-008: the DB row is being made canonical for ALL player state, the JSON pfile path will be deleted in Phase 2. This commit extends the `Character` SQLAlchemy model with 39 new columns to hold every field `PlayerSave` round-trips (scalars: `max_hit`, `mana`, `move`, `gold`, `silver`, `exp`, `trust`, `invis_level`, `incog_level`, `saving_throw`, `hitroll`, `damroll`, `wimpy`, `position`, `played`, `logon`, `lines`, `prompt`, `prefix`, `title`, `bamfin`, `bamfout`, `security`, `points`, `last_level`, `affected_by`, `comm`, `wiznet`, `log_commands`, `pfile_version`, `board`; JSON columns: `mod_stat`, `armor`, `conditions`, `aliases`, `skills`, `groups`, `last_notes`, `colours`, `pet_state`, `inventory_state`, `equipment_state`). Extended `Character.from_orm` to hydrate every new column. New `save_character_to_db(session, char)` in `mud/account/account_manager.py` writes the full state via UPDATE. Round-trip proven by 7 new tests in `tests/integration/test_db_canonical_round_trip.py` (all green). Public `save_character` / `load_character` surface unchanged in this phase — Phase 2 swaps the implementations and deletes `mud/persistence.py`. INV-008 reopened in the cross-file invariants tracker.
|
|
179
|
+
- **`docs/parity/INV008_REVERSAL_AUDIT.md`** — 71-field map (PlayerSave → Character columns), `from_orm` audit, new code surface, caller surface, INV-008 test rewrite plan, and risk register; produced as the spec for both phases of the migration.
|
|
180
|
+
|
|
181
|
+
### Notes
|
|
182
|
+
- Pre-existing test slowness (full suite ~12 min vs. AGENTS.md's "~16s") and ~30 pre-existing test failures verified at the pre-Phase-1 baseline (git stash). Not introduced by this commit.
|
|
183
|
+
|
|
184
|
+
## [2.7.6]
|
|
185
|
+
|
|
186
|
+
### Changed
|
|
187
|
+
- **INV-008 DUAL-LOAD-CHARACTER-COHERENCE consolidated (hybrid path).** `mud/account/account_manager.py` is now a thin shim delegating `load_character` and `save_character` to `mud.persistence` (the JSON pfile path). The DB row (`mud/db/models.py:Character`) keeps `name` + `password_hash` for auth only; gameplay columns are vestigial and will be dropped in a later schema-migration session. Field-level audit at `docs/parity/INV008_DIVERGENCE_AUDIT.md`. No data migration was required — pre-launch.
|
|
188
|
+
- **`mud/persistence.py:PlayerSave` now persists `password_hash`** so the JSON pfile is the single ROM-faithful source of truth for all PC state, including auth credentials. `save_character` writes `pcdata.pwd`; `load_character` restores it. The shim's `save_character` also syncs the hash to the DB row so the auth path (`account_service.login_character`) stays consistent after `do_password`.
|
|
189
|
+
|
|
190
|
+
### Fixed
|
|
191
|
+
- **30+ PC fields previously dropped on every WS logout** (because the DB-backed `account_manager.save_character` only persisted ~18 columns). Now restored on next login: current mana / current move, gold, silver, exp, hitroll, damroll, saving throw, AC array, wimpy, position, mod_stat array, comm bitfield, affected_by, wiznet flags, conditions (drunk/full/thirst/hunger), full skill learned-percent map, aliases, colour table, prompt, title, bamfin/bamfout, played time, logon timestamp, pets, item timer/value/condition/enchanted/affects on inventory and equipment, container contents.
|
|
192
|
+
|
|
193
|
+
### Added
|
|
194
|
+
- **INV-008 enforcement test** (`tests/integration/test_inv008_persistence_coherence.py`): four cases asserting the `account_manager` shim round-trips full gameplay state, registers loaded characters in `character_registry` (INV-003), preserves `pcdata.pwd`, and restores room placement. INV-008 flipped from ⚠️ KNOWN DIVERGENCE → ✅ ENFORCED. **All 8 cross-file invariants are now ✅ ENFORCED.**
|
|
195
|
+
- `docs/parity/INV008_DIVERGENCE_AUDIT.md`: field-level provenance audit (51 vs 29 fields, caller surface, recommendation).
|
|
196
|
+
|
|
197
|
+
## [2.7.5]
|
|
198
|
+
|
|
199
|
+
### Added
|
|
200
|
+
- **INV-007 RNG-DETERMINISM enforcement test** (`tests/test_rng_determinism.py`): scans every `.py` file under `mud/combat/`, `mud/skills/`, and `mud/spells/` for `import random`, `from random`, or `random.` and fails with path:line detail if any match. Runs in <1s. INV-007 flipped from ⚠️ ENFORCED BY CONVENTION → ✅ ENFORCED. 7 of 8 cross-file invariants are now ✅ ENFORCED; INV-008 (DUAL-LOAD-CHARACTER-COHERENCE) remains a known divergence.
|
|
201
|
+
|
|
202
|
+
### Removed
|
|
203
|
+
- **Vestigial `stdlib Random` from `SkillRegistry`** (`mud/skills/registry.py`): `__init__` accepted `rng: Random | None` and stored `self.rng`, but `self.rng` was never read — all rolls in registry.py already went through `rng_mm`. Removed the dead field, the dead parameter, and the `from random import Random` import. `tests/test_skills.py:load_registry` updated accordingly. Required before INV-007's grep test could be written cleanly.
|
|
204
|
+
|
|
205
|
+
## [2.7.4]
|
|
206
|
+
|
|
207
|
+
### Added
|
|
208
|
+
- **INV-005 SAME-ROOM-COMBAT-ONLY enforcement test** (`tests/integration/test_inv005_same_room_combat.py`): proves `mud/game_loop.py:violence_tick` skips `multi_hit` and stops fighting when attacker and victim are in different rooms (ROM `src/fight.c:violence_update`). Plus a same-room sanity case so a flipped equality wouldn't silently pass.
|
|
209
|
+
- **INV-006 FIGHTING-POINTER-COHERENCE enforcement test** (`tests/integration/test_inv006_fighting_pointer_coherence.py`): proves `mud/combat/engine.py:stop_fighting(victim, both=True)` sweeps `character_registry` and clears every attacker pointing at the victim (ROM `src/fight.c:stop_fighting(victim, TRUE)`); inverse case confirms `both=False` does not sweep.
|
|
210
|
+
- Both invariants flipped from ⚠️ VERIFIED MANUALLY → ✅ ENFORCED in `docs/parity/CROSS_FILE_INVARIANTS_TRACKER.md`.
|
|
211
|
+
- **Cross-File Invariants tracker** (`docs/parity/CROSS_FILE_INVARIANTS_TRACKER.md`): new top-level parity doc enumerating contracts the per-file audit methodology can't enforce on its own (single-delivery, registry membership, prompt-render-after-raw_kill, etc.). Eight INV-NNN entries seeded from this year's bug history; each has a stable ID, ROM mechanism, Python enforcement point, and regression test (or an action-item placeholder when the test is still missing).
|
|
212
|
+
- **AGENTS.md "Cross-File Invariants" section**: methodology note explaining what per-file audits miss and how to use the new tracker. Tracker added to the "Trackers" table.
|
|
213
|
+
- **rom-parity-audit skill update**: Phase 2 now requires following the call chain across module boundaries and consulting the cross-file invariants tracker; Phase 5 requires citing relevant INV-NNN statuses in each tracker row's Notes column ("Audited (per-file)" replaces bare "Audited").
|
|
214
|
+
|
|
215
|
+
### Changed
|
|
216
|
+
- `docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md`: `comm.c`, `fight.c`, and `save.c` rows annotated with the cross-file invariants they touch and the bugs the per-file audit missed (single-delivery, prompt clamp, registry membership). Per-file ratings preserved; the new annotations make the audit's actual coverage explicit.
|
|
217
|
+
|
|
218
|
+
|
|
219
|
+
## [2.7.3]
|
|
220
|
+
|
|
221
|
+
### Fixed
|
|
222
|
+
- **Combat parity (death path)**: Combat messages now reach connected PCs exactly once. `mud/combat/engine.py:_push_message` previously appended every message to `char.messages` AND scheduled an async send, and `mud/net/connection.py:1756` unconditionally drained `char.messages` after every command — so each combat line was delivered TWICE to WebSocket clients. Live repro: PC dies, types `look`, sees the entire combat sequence (including "You have been KILLED!!") replayed milliseconds later, making it appear they died twice. ROM `src/comm.c:write_to_buffer` is one-shot. Per `docs/divergences/MESSAGE_DELIVERY.md`, the mailbox is fallback-only for tests/disconnected characters; fix returns immediately after the async dispatch when a connection exists.
|
|
223
|
+
- **Combat parity (prompt display)**: `bust_a_prompt` now clamps displayed hit to >= 0. The death path could leave `char.hit` negative between `update_pos` setting `Position.DEAD` (at hit <= -11) and `raw_kill` clamping to `max(1, hit)` — Python's async dispatch can interleave a prompt render in that window, exposing the negative transient. ROM never shows negative hp because `raw_kill` always finishes first in its single-threaded loop. Display-only clamp at the two render sites (default prompt + `%h` token).
|
|
224
|
+
- **Combat parity (death-path comments)**: `_handle_death` documents the bidirectional fighting-pointer clear and its relationship with `raw_kill → _stop_fighting`'s `char_list` sweep. ROM ref: `src/fight.c:damage` death branch.
|
|
225
|
+
|
|
226
|
+
### Added
|
|
227
|
+
- `tests/test_prompt_clamps_hp.py` — 4 cases guarding prompt clamp (default + custom `%h`).
|
|
228
|
+
- `tests/integration/test_message_delivery_no_duplicate.py` — connected PC gets one async send, no mailbox queue; disconnected falls back to mailbox.
|
|
229
|
+
- `tests/integration/test_pc_death_no_message_replay.py` — end-to-end: pushes the actual death-message sequence, drives the read-loop drain manually, asserts "You have been KILLED!!" appears exactly once across both passes.
|
|
230
|
+
- `tests/integration/test_pc_death_keeps_connection.py` — regression guard that `raw_kill` keeps the PC in `character_registry`, in the death room, with hit/mana/move >= 1, position `RESTING`, connection intact.
|
|
231
|
+
- `mud/net/connection.py` — diagnostic logging upgrade: read-loop's outer `except` now prints `type(exc).__name__: exc!r` plus traceback so future disconnect causes are visible in server stdout.
|
|
232
|
+
|
|
233
|
+
## [2.7.2]
|
|
234
|
+
|
|
235
|
+
### Fixed
|
|
236
|
+
- Restore `version` field in `pyproject.toml` (accidentally dropped in `cdcd0cc`).
|
|
237
|
+
- Combat one-way bug: `mud/account/account_manager.load_character` now appends loaded PCs to `character_registry` so `violence_tick`/`char_update`/idle pump iterate them. Mirrors ROM `src/save.c:fread_char` `char_list` membership.
|
|
238
|
+
- World mob spawning: regenerated `resets` for 46 of 54 JSON area files via `scripts/patch_json_resets.py` so the school arena and other populated areas spawn ROM mobs on boot.
|
|
239
|
+
- BOARD-010: `note read again` is now a no-op (ROM `src/board.c:569-572`).
|
|
240
|
+
|
|
241
|
+
### Changed
|
|
242
|
+
- Reconciled `BOARD_C_AUDIT.md`, `OLC_C_AUDIT.md`, and `ROM_C_SUBSYSTEM_AUDIT_TRACKER.md` against current implementation; folded several stale-test fixes (`test_save_load_parity`, `test_olc_alist`, `test_spell_affects_persistence`, `test_tables_001_affect_migration`, `test_nanny_login_parity`, `test_fighting_state`, `test_olc_save`) and added `tests/test_obj_loader.py`.
|
|
243
|
+
- Session summaries added under `docs/sessions/` for the 2026-05-02 work (combat triage, board audit, OLC audit, asave cleanup, broad-suite triage / JSON itemtype fix).
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
### Fixed
|
|
247
|
+
- **OLC-004/005**: Active OLC editors now support ROM-style `commands` listings with five fixed-width columns, mirroring `src/olc.c:153-209`.
|
|
248
|
+
- **OLC-010/015**: `do_olc` / `editor_table[]` ported — `olc <area|room|object|mobile|mpcode|hedit>` now dispatches to the real per-editor entry points via prefix matching (`str_prefix` parity), NPC guard, and remainder-arg forwarding, mirroring ROM `src/olc.c:646-690`. Both `olc` and `edit` command aliases are live. Integration tests: `tests/integration/test_olc_010_015_do_olc_router.py` (14 cases).
|
|
249
|
+
- **OLC_SAVE-014**: `cmd_asave <vnum>` now silent on success (ROM `src/olc_save.c:982-995`)
|
|
250
|
+
- **OLC_SAVE-015**: `cmd_asave world` returns `"You saved the world.\n\r"` (ROM exact)
|
|
251
|
+
- **OLC_SAVE-016**: `cmd_asave changed` returns `"Saved zones:\n\r"` + per-area rows + `"None.\n\r"` fallback (ROM exact)
|
|
252
|
+
- **OLC_SAVE-017**: `cmd_asave area` returns `"Area saved.\n\r"` (ROM exact)
|
|
253
|
+
- **BOARD-010**: `note read again` is now a no-op (returns `""`) — mirrors ROM `src/board.c:569-572` empty `if`-body
|
|
254
|
+
- **MPEDIT-003**: Added `MprogCode` dataclass + `mprog_code_registry` dict + `get_mprog_index()` — mirrors ROM `MPROG_CODE` struct and `mprog_list` linked list (`src/olc_mpcode.c`)
|
|
255
|
+
- **MPEDIT-002**: `do_mpedit` now looks up `mprog_code_registry` (not `mob_prototypes`); opens `mpedit` session silently on success; exact Spanish error strings; `create` branch delegates to `_mpedit_create`
|
|
256
|
+
- **MPEDIT-001**: `_interpret_mpedit` session loop — smash_tilde, empty→show, `done` silent, security re-check, area=NULL→edit_done, dispatch table, fallback to `interpret()`
|
|
257
|
+
- **MPEDIT-004**: `_mpedit_show` — ROM exact format `"Vnum: [%d]\n\rCode:\n\r%s\n\r"`
|
|
258
|
+
- **MPEDIT-005**: `_mpedit_code` — no-arg enters string_edit mode; arg → `"Syntax: code\n\r"`
|
|
259
|
+
- **MPEDIT-006**: `_mpedit_list` — `[%3d] (%c) %5d\n\r` format; `*/space/?` builder indicator; `all`/area filter; exact empty messages
|
|
260
|
+
- **HEDIT-002**: `hedit level` accepts -1..MAX_LEVEL; exact ROM error message
|
|
261
|
+
- **HEDIT-003/004**: `hedit keyword`/`hedit level` return `"Ok.\n\r"` / exact ROM syntax strings
|
|
262
|
+
- **HEDIT-005**: `hedit text` no-arg is valid (triggers `string_append`); arg present → `"Syntax: text\n\r"`
|
|
263
|
+
- **HEDIT-006**: security check returns `"HEdit: Insufficient security to edit helps.\n\r"` (with `\n\r`)
|
|
264
|
+
- **HEDIT-007**: empty input in hedit session → `hedit_show` (not syntax string)
|
|
265
|
+
- **HEDIT-008**: `done` is silent (returns `""`, no verbose save message)
|
|
266
|
+
- **HEDIT-009**: unknown hedit command falls back to normal command table (`interpret`)
|
|
267
|
+
- **HEDIT-010**: `hedit delete` implemented — removes from `help_entries` + all keyword buckets
|
|
268
|
+
- **HEDIT-011**: `hedit list all` / `list area` implemented with ROM 4-column `%3d. %-14.14s` format
|
|
269
|
+
- **HEDIT-012**: `do_hedit new <topic>` path correctly creates entry + enters editor
|
|
270
|
+
- **HEDIT-013**: `do_hedit <keyword>` uses `is_name` word-match (not exact key lookup)
|
|
271
|
+
- **HEDIT-014**: `hedit_level`/`hedit_keyword` return `"Ok.\n\r"` (triggers `had->changed = TRUE` equivalent) (`src/olc_act.c:770-790`) — sets `pArea->age`, validates numeric arg, does not set `changed` (ROM parity). 6 integration tests added.
|
|
272
|
+
- **OLC-012/013/014**: `redit`/`oedit`/`medit` fallback to `interpret()` verified — `_should_fallback_from_olc()` + `_process_descriptor_input()` returning `None` correctly re-dispatches unknown OLC input through the normal command table (mirrors ROM `src/olc.c:519-521`, `575-577`, `631-633`). 14 integration tests added in `tests/integration/test_olc_012_014_editor_fallback.py`.
|
|
273
|
+
- **OLC-009**: `medit` missing subcommands ported — `act`, `affect`, `armor`, `form`, `part`, `imm`, `res`, `vuln`, `off`, `size`, `hitdice`, `manadice`, `damdice`, `position`, `addmprog`, `delmprog` now dispatched from `_interpret_medit`. Helpers mirror ROM `src/olc_act.c:4142-4969`. Flag toggles use XOR pattern (act/affect/form/part/imm/res/vuln/off); `act` always re-sets `IS_NPC` (ROM:4153); dice stored as `tuple[int,int,int]`; `addmprog` validates vnum against mob_registry; `delmprog` splices list and clears mprog_flags bit. Integration tests: `tests/integration/test_olc_009_medit_missing_cmds.py` (30 cases).
|
|
274
|
+
- **OLC-008**: `oedit` missing subcommands ported — `addaffect`, `addapply`, `delaffect`, `extra`, `wear` now dispatched from `_interpret_oedit`. Helpers mirror ROM `src/olc_act.c:2818-3450`: flag-value toggle for `extra`/`wear` (ExtraFlag/WearFlag XOR), affect list append/splice for `addaffect`/`addapply`/`delaffect` with `TO_OBJECT=1`, `type=-1`, `duration=-1` ROM defaults. Integration tests: `tests/integration/test_olc_008_oedit_missing_cmds.py` (16 cases).
|
|
275
|
+
- **OLC-007**: `redit` missing subcommands ported — `rlist`, `mlist`, `olist`, `mshow`, `oshow` are now dispatched from `_interpret_redit`. Helpers `_redit_rlist/mlist/olist/mshow/oshow` mirror ROM `src/olc_act.c:329-570` (3-column vnum/name listing, `is_name` filtering, item-type prefix matching, mob/obj show via `_medit_show`/`_oedit_show`). Integration tests: `tests/integration/test_olc_007_redit_list_show.py` (16 cases).
|
|
276
|
+
- **OLC-011**: `aedit` flag-toggle prefix ported — typing a bare `area_flags` name (e.g. `loading`, `added`) inside an active aedit session now toggles the flag via `flag_value(AreaFlag, command)` and sends `"Flag toggled."`, mirroring ROM `src/olc.c:443-449`. Integration tests: `tests/integration/test_olc_011_aedit_flag_toggle.py` (7 cases).
|
|
277
|
+
|
|
278
|
+
## [2.7.1] — update.c Parity Gap Closures (GL-004/005/009/011/012/013/014/015/018)
|
|
279
|
+
|
|
280
|
+
### Fixed
|
|
281
|
+
- **GL-004**: `mana_gain` now uses `room.mana_rate` instead of `room.heal_rate`; rooms with custom mana rates now regenerate mana at the correct rate (ROM `update.c:300`).
|
|
282
|
+
- **GL-005**: `mana_gain` furniture bonus now reads `value[4]` (mana bonus) instead of `value[3]` (hit bonus) (ROM `update.c:218,300`).
|
|
283
|
+
- **GL-009**: NPC `char_update` wanders-home: out-of-zone NPCs that are not fighting and not charmed now have a 5% per-tick chance of being extracted (despawned) — mirrors ROM `update.c:688-696`. Previously missing entirely.
|
|
284
|
+
- **GL-011**: Plague tick implemented: spreads to room occupants (5% per-tick per target, saves vs disease), drains mana and move, and deals HP damage per tick (ROM `update.c:794-846`). Previously missing.
|
|
285
|
+
- **GL-012**: Poison tick implemented: sends "You shiver and suffer" message and deals `level // 10 + 1` HP damage per tick (ROM `update.c:848-862`). Previously missing.
|
|
286
|
+
- **GL-013**: INCAP position tick damage: 50% chance of 1 HP damage per tick (ROM `update.c:864-867`). Previously missing.
|
|
287
|
+
- **GL-014**: MORTAL position tick damage: 1 HP damage every tick unconditionally (ROM `update.c:868-871`). Previously missing.
|
|
288
|
+
- **GL-015**: `_idle_to_limbo` now calls `stop_fighting(ch, both=True)` instead of `ch.fighting = None`, properly cleaning both sides of any fight (ROM `update.c:741-744`).
|
|
289
|
+
- **GL-018**: Decay messages for objects inside an untakeable pit (vnum 3010) are now suppressed (ROM `update.c:1017-1018`). Previously objects inside a pit always broadcast their decay message to the room.
|
|
290
|
+
|
|
291
|
+
### Added
|
|
292
|
+
- `_char_update_tick_effects()` helper in `mud/game_loop.py` encapsulating all per-tick damage effects (plague, poison, INCAP, MORTAL).
|
|
293
|
+
- Integration tests: `tests/integration/test_update_c_parity.py` — 11 tests covering all closed gaps.
|
|
294
|
+
|
|
10
295
|
## [2.7.0] — ROM Character-First Login
|
|
11
296
|
|
|
12
297
|
### Changed
|
{rom24_quickmud_python-2.7.0/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.8.21}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.8.21
|
|
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>
|
|
@@ -39,6 +39,7 @@ Provides-Extra: dev
|
|
|
39
39
|
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
40
40
|
Requires-Dist: pytest-cov>=6.0; extra == "dev"
|
|
41
41
|
Requires-Dist: pytest-timeout>=2.1.0; extra == "dev"
|
|
42
|
+
Requires-Dist: httpx>=0.27; extra == "dev"
|
|
42
43
|
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
43
44
|
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
44
45
|
Requires-Dist: black>=22.0; extra == "dev"
|
|
@@ -49,16 +50,17 @@ Provides-Extra: test
|
|
|
49
50
|
Requires-Dist: pytest>=8.0; extra == "test"
|
|
50
51
|
Requires-Dist: pytest-cov>=6.0; extra == "test"
|
|
51
52
|
Requires-Dist: pytest-timeout>=2.1.0; extra == "test"
|
|
53
|
+
Requires-Dist: httpx>=0.27; extra == "test"
|
|
52
54
|
Dynamic: license-file
|
|
53
55
|
|
|
54
56
|
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
55
57
|
|
|
56
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
57
59
|
[](https://www.python.org/downloads/)
|
|
58
60
|
[](https://opensource.org/licenses/MIT)
|
|
59
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
60
62
|
[](ROM_2.4B6_PARITY_CERTIFICATION.md)
|
|
61
|
-
[](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md)
|
|
62
64
|
[](tests/integration/)
|
|
63
65
|
|
|
64
66
|
**QuickMUD is a modern Python port of the legendary ROM 2.4b6 MUD engine**, derived from ROM 2.4b6, Merc 2.1 and DikuMUD. This is a complete rewrite that brings the classic text-based MMORPG experience to modern Python with async networking, JSON world data, and **100% ROM 2.4b behavioral parity**.
|
|
@@ -77,7 +79,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
|
|
|
77
79
|
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
78
80
|
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
79
81
|
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
80
|
-
- **📊 Comprehensive Testing**:
|
|
82
|
+
- **📊 Comprehensive Testing**: 4,560 passing tests across unit, integration, and command-registry suites
|
|
81
83
|
- **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
|
|
82
84
|
|
|
83
85
|
## 📦 Installation
|
|
@@ -191,8 +193,6 @@ parity logic in this backend repo.
|
|
|
191
193
|
|
|
192
194
|
## 🏗️ For Developers
|
|
193
195
|
|
|
194
|
-
## 🏗️ For Developers
|
|
195
|
-
|
|
196
196
|
### Development Installation
|
|
197
197
|
|
|
198
198
|
```bash
|
|
@@ -206,8 +206,8 @@ pip install -e .[dev]
|
|
|
206
206
|
### Running Tests
|
|
207
207
|
|
|
208
208
|
```bash
|
|
209
|
-
pytest # Run
|
|
210
|
-
pytest tests/integration/ -v # Run integration suite
|
|
209
|
+
pytest # Run the full suite
|
|
210
|
+
pytest tests/integration/ -v # Run the integration suite
|
|
211
211
|
```
|
|
212
212
|
|
|
213
213
|
### Development Server
|
|
@@ -218,26 +218,19 @@ python -m mud # Start development server
|
|
|
218
218
|
|
|
219
219
|
## 🎯 Project Status
|
|
220
220
|
|
|
221
|
-
- **Version**: 2.
|
|
221
|
+
- **Version**: 2.8.21
|
|
222
222
|
- **ROM 2.4b Gameplay Parity**: ✅ **100%** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md)) —
|
|
223
223
|
combat, skills, spells, movement, communication, world/db, save/load, mob programs,
|
|
224
224
|
and all 255 ROM commands are implemented and audited.
|
|
225
|
-
- **ROM C Source Audit**:
|
|
226
|
-
|
|
227
|
-
`olc_mpcode.c`, `hedit.c`) plus a small partial-audit tail (`board.c` 95%).
|
|
228
|
-
Several audited files sit at 85–98% with deferred-by-design or sibling-gated
|
|
229
|
-
gaps (`act_move.c`, `comm.c`, `nanny.c`, `const.c`, `music.c`, `board.c`).
|
|
230
|
-
Gameplay is not blocked on any of them. See
|
|
225
|
+
- **ROM C Source Audit**: ✅ **100% audit-bound coverage** — 40 of 40 applicable ROM C files are audited, with
|
|
226
|
+
3 additional ROM files intentionally N/A (`recycle.c`, `mem.c`, `imc.c`). See
|
|
231
227
|
[`docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md`](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md).
|
|
232
|
-
- **
|
|
233
|
-
-
|
|
234
|
-
|
|
235
|
-
integration (`tests/integration
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
- **Active focus**: `olc.c` cluster — OLC-020/022/023 + STRING-001..012 closed;
|
|
239
|
-
remaining CRITICAL gaps (OLC-016/017/018/019, the `*edit create` subcommands)
|
|
240
|
-
gated on the held `olc_act.c` sibling audit.
|
|
228
|
+
- **Cross-file Invariants**: ✅ **8/8 enforced** — message delivery, prompt clamping, registry membership,
|
|
229
|
+
same-room combat, death/connection behavior, RNG determinism, and persistence coherence are locked by dedicated tests.
|
|
230
|
+
- **Test Suite**: ✅ **4560 passed, 4 skipped**. Three layers — unit (`tests/test_*.py`),
|
|
231
|
+
integration (`tests/integration/`), and command-registry (`test_all_commands.py`).
|
|
232
|
+
- **Active focus**: parity work is effectively complete; current work is maintenance, frontend coordination,
|
|
233
|
+
and investigation only when a deterministic regression is reproduced.
|
|
241
234
|
- **Compatibility**: Python 3.10+, cross-platform
|
|
242
235
|
|
|
243
236
|
## 🏛️ Architecture
|
|
@@ -323,7 +316,7 @@ Game systems are implemented in Python modules:
|
|
|
323
316
|
- `mud/game_loop.py` drives the tick-based update loop.
|
|
324
317
|
- `mud/commands` contains the command dispatcher and handlers.
|
|
325
318
|
- `mud/combat` and `mud/skills` implement combat and abilities.
|
|
326
|
-
- `mud/
|
|
319
|
+
- `mud/account/` and `mud/db/` handle character persistence and account state.
|
|
327
320
|
|
|
328
321
|
Start the server with:
|
|
329
322
|
|
|
@@ -377,17 +370,12 @@ QuickMUD is a **production-ready ROM 2.4b MUD** with ✅ **100% behavioral parit
|
|
|
377
370
|
|
|
378
371
|
### 📈 Quality Metrics
|
|
379
372
|
|
|
380
|
-
- **Test Suite**:
|
|
381
|
-
pre-existing failures (full run ~8 min); pre-existing skips/failures are
|
|
382
|
-
catalogued in
|
|
383
|
-
[`docs/parity/PRE_EXISTING_FAILURES_TRIAGE.md`](docs/parity/PRE_EXISTING_FAILURES_TRIAGE.md).
|
|
373
|
+
- **Test Suite**: 4,560 passing, 4 skipped on the last full recertification.
|
|
384
374
|
- **Behavioral Parity**: 100% of ROM 2.4b6 gameplay subsystems audited (combat,
|
|
385
375
|
skills, spells, movement, communication, world/db, save/load, mob programs,
|
|
386
376
|
255/255 commands).
|
|
387
|
-
- **
|
|
388
|
-
- **
|
|
389
|
-
is the OLC editor cluster (`olc.c`/`olc_act.c`/`olc_save.c`/`olc_mpcode.c`/`hedit.c`)
|
|
390
|
-
and a small partial tail (`board.c` 95%).
|
|
377
|
+
- **ROM C Source Audit**: 40 of 40 applicable ROM files audited, plus 3 intentional N/A files.
|
|
378
|
+
- **Cross-file Invariants**: 8 of 8 enforced by dedicated regression tests.
|
|
391
379
|
|
|
392
380
|
### 🔧 Advanced Features
|
|
393
381
|
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
2
2
|
|
|
3
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
4
4
|
[](https://www.python.org/downloads/)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
7
7
|
[](ROM_2.4B6_PARITY_CERTIFICATION.md)
|
|
8
|
-
[](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md)
|
|
9
9
|
[](tests/integration/)
|
|
10
10
|
|
|
11
11
|
**QuickMUD is a modern Python port of the legendary ROM 2.4b6 MUD engine**, derived from ROM 2.4b6, Merc 2.1 and DikuMUD. This is a complete rewrite that brings the classic text-based MMORPG experience to modern Python with async networking, JSON world data, and **100% ROM 2.4b behavioral parity**.
|
|
@@ -24,7 +24,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
|
|
|
24
24
|
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
25
25
|
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
26
26
|
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
27
|
-
- **📊 Comprehensive Testing**:
|
|
27
|
+
- **📊 Comprehensive Testing**: 4,560 passing tests across unit, integration, and command-registry suites
|
|
28
28
|
- **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
|
|
29
29
|
|
|
30
30
|
## 📦 Installation
|
|
@@ -138,8 +138,6 @@ parity logic in this backend repo.
|
|
|
138
138
|
|
|
139
139
|
## 🏗️ For Developers
|
|
140
140
|
|
|
141
|
-
## 🏗️ For Developers
|
|
142
|
-
|
|
143
141
|
### Development Installation
|
|
144
142
|
|
|
145
143
|
```bash
|
|
@@ -153,8 +151,8 @@ pip install -e .[dev]
|
|
|
153
151
|
### Running Tests
|
|
154
152
|
|
|
155
153
|
```bash
|
|
156
|
-
pytest # Run
|
|
157
|
-
pytest tests/integration/ -v # Run integration suite
|
|
154
|
+
pytest # Run the full suite
|
|
155
|
+
pytest tests/integration/ -v # Run the integration suite
|
|
158
156
|
```
|
|
159
157
|
|
|
160
158
|
### Development Server
|
|
@@ -165,26 +163,19 @@ python -m mud # Start development server
|
|
|
165
163
|
|
|
166
164
|
## 🎯 Project Status
|
|
167
165
|
|
|
168
|
-
- **Version**: 2.
|
|
166
|
+
- **Version**: 2.8.21
|
|
169
167
|
- **ROM 2.4b Gameplay Parity**: ✅ **100%** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md)) —
|
|
170
168
|
combat, skills, spells, movement, communication, world/db, save/load, mob programs,
|
|
171
169
|
and all 255 ROM commands are implemented and audited.
|
|
172
|
-
- **ROM C Source Audit**:
|
|
173
|
-
|
|
174
|
-
`olc_mpcode.c`, `hedit.c`) plus a small partial-audit tail (`board.c` 95%).
|
|
175
|
-
Several audited files sit at 85–98% with deferred-by-design or sibling-gated
|
|
176
|
-
gaps (`act_move.c`, `comm.c`, `nanny.c`, `const.c`, `music.c`, `board.c`).
|
|
177
|
-
Gameplay is not blocked on any of them. See
|
|
170
|
+
- **ROM C Source Audit**: ✅ **100% audit-bound coverage** — 40 of 40 applicable ROM C files are audited, with
|
|
171
|
+
3 additional ROM files intentionally N/A (`recycle.c`, `mem.c`, `imc.c`). See
|
|
178
172
|
[`docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md`](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md).
|
|
179
|
-
- **
|
|
180
|
-
-
|
|
181
|
-
|
|
182
|
-
integration (`tests/integration
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
- **Active focus**: `olc.c` cluster — OLC-020/022/023 + STRING-001..012 closed;
|
|
186
|
-
remaining CRITICAL gaps (OLC-016/017/018/019, the `*edit create` subcommands)
|
|
187
|
-
gated on the held `olc_act.c` sibling audit.
|
|
173
|
+
- **Cross-file Invariants**: ✅ **8/8 enforced** — message delivery, prompt clamping, registry membership,
|
|
174
|
+
same-room combat, death/connection behavior, RNG determinism, and persistence coherence are locked by dedicated tests.
|
|
175
|
+
- **Test Suite**: ✅ **4560 passed, 4 skipped**. Three layers — unit (`tests/test_*.py`),
|
|
176
|
+
integration (`tests/integration/`), and command-registry (`test_all_commands.py`).
|
|
177
|
+
- **Active focus**: parity work is effectively complete; current work is maintenance, frontend coordination,
|
|
178
|
+
and investigation only when a deterministic regression is reproduced.
|
|
188
179
|
- **Compatibility**: Python 3.10+, cross-platform
|
|
189
180
|
|
|
190
181
|
## 🏛️ Architecture
|
|
@@ -270,7 +261,7 @@ Game systems are implemented in Python modules:
|
|
|
270
261
|
- `mud/game_loop.py` drives the tick-based update loop.
|
|
271
262
|
- `mud/commands` contains the command dispatcher and handlers.
|
|
272
263
|
- `mud/combat` and `mud/skills` implement combat and abilities.
|
|
273
|
-
- `mud/
|
|
264
|
+
- `mud/account/` and `mud/db/` handle character persistence and account state.
|
|
274
265
|
|
|
275
266
|
Start the server with:
|
|
276
267
|
|
|
@@ -324,17 +315,12 @@ QuickMUD is a **production-ready ROM 2.4b MUD** with ✅ **100% behavioral parit
|
|
|
324
315
|
|
|
325
316
|
### 📈 Quality Metrics
|
|
326
317
|
|
|
327
|
-
- **Test Suite**:
|
|
328
|
-
pre-existing failures (full run ~8 min); pre-existing skips/failures are
|
|
329
|
-
catalogued in
|
|
330
|
-
[`docs/parity/PRE_EXISTING_FAILURES_TRIAGE.md`](docs/parity/PRE_EXISTING_FAILURES_TRIAGE.md).
|
|
318
|
+
- **Test Suite**: 4,560 passing, 4 skipped on the last full recertification.
|
|
331
319
|
- **Behavioral Parity**: 100% of ROM 2.4b6 gameplay subsystems audited (combat,
|
|
332
320
|
skills, spells, movement, communication, world/db, save/load, mob programs,
|
|
333
321
|
255/255 commands).
|
|
334
|
-
- **
|
|
335
|
-
- **
|
|
336
|
-
is the OLC editor cluster (`olc.c`/`olc_act.c`/`olc_save.c`/`olc_mpcode.c`/`hedit.c`)
|
|
337
|
-
and a small partial tail (`board.c` 95%).
|
|
322
|
+
- **ROM C Source Audit**: 40 of 40 applicable ROM files audited, plus 3 intentional N/A files.
|
|
323
|
+
- **Cross-file Invariants**: 8 of 8 enforced by dedicated regression tests.
|
|
338
324
|
|
|
339
325
|
### 🔧 Advanced Features
|
|
340
326
|
|