rom24-quickmud-python 2.14.211__tar.gz → 2.14.268__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.14.211 → rom24_quickmud_python-2.14.268}/CHANGELOG.md +473 -0
- {rom24_quickmud_python-2.14.211/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.14.268}/PKG-INFO +7 -7
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/README.md +6 -6
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/admin_logging/admin.py +3 -3
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/engine.py +78 -23
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/advancement.py +6 -1
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/affects.py +5 -2
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/combat.py +92 -29
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/consumption.py +4 -28
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/doors.py +17 -7
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/equipment.py +5 -23
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/inventory.py +62 -22
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/obj_manipulation.py +25 -2
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/shop.py +11 -4
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/game_loop.py +66 -34
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/mobprog.py +11 -1
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/character.py +19 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/connection.py +33 -16
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/session.py +1 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/skills/handlers.py +148 -206
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/skills/registry.py +4 -10
- rom24_quickmud_python-2.14.268/mud/skills/skill_lookup.py +148 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/look.py +10 -4
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/vision.py +4 -2
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/pyproject.toml +13 -2
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268/rom24_quickmud_python.egg-info}/PKG-INFO +7 -7
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/rom24_quickmud_python.egg-info/SOURCES.txt +22 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_consumables.py +22 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_container_retrieval.py +40 -4
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_affects.py +25 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_look_command.py +25 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_practice_command.py +20 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_door_container_message_order.py +45 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_equipment_system.py +30 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight035_disarm_act_structure.py +7 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight037_dirt_kick_victim_legs.py +5 -1
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight038_disarm_noremove_improve.py +1 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight039_trip_self_room_pers.py +18 -3
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight055_xp_compute_alignment_gaps.py +23 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight071_dirt_trip_charm_gate.py +3 -1
- rom24_quickmud_python-2.14.268/tests/integration/test_fight081_ac_scale_order.py +77 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight082_do_trip_cluster.py +121 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight083_dirt_kick_false_zero.py +72 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight084_parry_visibility_direction.py +74 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight085_skill_wait_raw_beats.py +50 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight086_backstab_thac0.py +77 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight087_disarm_unarmed_hth.py +100 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight088_do_trip_act_render.py +74 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight089_dodge_visibility_direction.py +74 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_fight091_npc_kick_skill.py +74 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_026_npc_offensive_skill_no_crash.py +45 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding025_mob_equip_disarm.py +2 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_gain_condition_drunk_sober_guard.py +59 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_get_weight_mult.py +113 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_gl046_plague_spread_rng_order.py +142 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_gl047_regen_drain_room.py +88 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_gl048_mp_delay_trigger_parity.py +61 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_group_combat.py +1 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_invisibility_combat.py +46 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic004_chain_lightning_pers_masking.py +4 -1
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic031_slow_stoneskin_pers.py +4 -1
- rom24_quickmud_python-2.14.268/tests/integration/test_magic046_heat_metal_carry_order.py +81 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_ai.py +76 -0
- rom24_quickmud_python-2.14.268/tests/integration/test_pick003_immortal_threshold.py +105 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_put_weight_mult.py +70 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_rescue_killer_flag.py +4 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_rescue_single_delivery.py +1 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_spell_affects_persistence.py +4 -1
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_advancement.py +2 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat.py +4 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_defenses_prob.py +19 -9
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_rom_parity.py +28 -15
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_critical_function_parity.py +10 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_diff_harness_unit.py +59 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_differential_smoke.py +1 -1
- rom24_quickmud_python-2.14.268/tests/test_get_skill.py +150 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_logging_rotation.py +2 -2
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_networking_telnet.py +40 -0
- rom24_quickmud_python-2.14.268/tests/test_obj_update_affect_fade_rng.py +68 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_shops.py +70 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_combat_rom_parity.py +15 -150
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills.py +11 -8
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_buffs.py +27 -2
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_combat.py +45 -28
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_damage.py +38 -3
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_buff_debuff_rom_parity.py +9 -8
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_heat_metal_rom_parity.py +93 -1
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_high_priority_missing_rom_parity.py +16 -5
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_information_rom_parity.py +3 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_utility_spells_parity.py +26 -0
- rom24_quickmud_python-2.14.268/tests/test_weather_tick_draw_order.py +87 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/LICENSE +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/MANIFEST.in +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/air.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/arachnos.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/area.lst +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/astral.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/canyon.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/catacomb.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/chapel.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/daycare.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/draconia.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/dream.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/drow.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/dwarven.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/dylan.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/eastern.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/galaxy.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/gnome.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/grave.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/group.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/grove.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/haon.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/help.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/hitower.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/hood.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/immort.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/limbo.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/mahntor.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/marsh.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/mega1.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/midennir.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/midgaard.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/mirror.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/mobfact.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/moria.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/newthalos.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/nirvana.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/ofcol.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/ofcol2.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/olympus.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/plains.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/proto.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/pyramid.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/quifael.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/redferne.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/rom.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/school.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/sewer.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/shire.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/smurf.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/social.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/thalos.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/tohell.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/trollden.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/valley.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/area/wyvern.are +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/air.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/arachnos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/area.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/area_0.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/astral.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/canyon.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/catacomb.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/chapel.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/daycare.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/draconia.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/dream.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/drow.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/dwarven.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/dylan.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/eastern.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/galaxy.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/gnome.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/grave.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/group.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/grove.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/haon.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/help.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/hitower.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/hood.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/immort.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/limbo.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/mahntor.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/marsh.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/mega1.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/midennir.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/midgaard.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/mirror.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/mobfact.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/moria.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/newthalos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/nirvana.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/ofcol.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/ofcol2.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/olympus.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/plains.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/pyramid.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/quifael.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/redferne.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/rom.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/school.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/sewer.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/shire.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/smurf.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/social.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/thalos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/tohell.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/trollden.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/valley.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas/wyvern.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/arachnos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/area.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/area_0.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/astral_plane.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/catacombs.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/chapel.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/day_care.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/dragon_tower.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/drow_city.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/dwarven_kingdom.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/dylan's_area.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/elemental_canyon.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/galaxy.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/gangland.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/gnome_village.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/graveyard.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/group.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/haon_dor.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/help.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/high_tower.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/holy_grove.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/in_the_air.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/limbo.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/machine_dreams.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/mahn-tor.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/marsh.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/mega_city_one.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/miden'nir.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/midgaard.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/mob_factory.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/moria.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/mud_school.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/new_ofcol.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/new_thalos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/nirvana.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/ofcol.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/old_thalos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/olympus.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/plains.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/pyramid.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/quifael's.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/redferne's.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/rom.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/sands_of_sorrow.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/sewers.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/shire.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/smurfville.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/social.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/thalos.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/tohell.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/troll_den.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/valhalla.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/valley_of_the_elves.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/areas_backup/wyvern's_tower.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/help.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/players/.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/players/attacker.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/players/hero.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/players/sleeper.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/players/trouble.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/shops.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/skills.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/socials.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/data/time.json +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/MPDocs/examples.doc +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/MPDocs/hacker.doc +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/MPDocs/mobprog.doc +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/MPDocs/new_readme.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/QuickMUD.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/act.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/area.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/c_module_inventory.md +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/c_python_cross_reference.md +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/c_to_python_file_coverage.md +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/class.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/command.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/contrib.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/drool.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/hacker.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/license.doc +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/license.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/memory.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/new.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/pfile.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/port.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/pr_queue.md +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/python_architecture.md +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/python_module_inventory.md +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/security.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/sites.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/skill.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/sky.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/trad.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/vnum.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/doc/~$Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/__main__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/account/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/account/account_manager.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/account/account_service.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/admin_logging/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/admin_logging/agent_trace.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/advancement.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/affects/engine.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/affects/saves.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/agent/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/agent/agent_protocol.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/agent/character_agent.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/ai/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/ai/aggressive.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/characters/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/characters/conditions.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/characters/follow.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/assist.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/death.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/kill_table.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/messages.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/combat/safety.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/admin_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/alias_cmds.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/auto_settings.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/build.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/channels.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/character.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/communication.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/compare.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/consider.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/decorators.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/dispatcher.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/feedback.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/give.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/group_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/healer.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/help.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_admin.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_display.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_emote.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_load.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_olc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_punish.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_search.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/imm_set.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/info.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/info_extended.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/inspection.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/liquids.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/magic_items.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/misc_info.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/misc_player.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/mobprog_tools.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/movement.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/murder.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/notes.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/player_config.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/player_info.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/position.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/remaining_rom.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/session.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/socials.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/thief_skills.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/commands/typo_guards.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/config.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/init.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/migrate_from_files.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/migrations.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/models.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/seed.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/serializers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/db/session.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/devtools/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/devtools/agent_demo.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/diagnostics/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/diagnostics/invariants.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/entrypoint.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/game_tick_scheduler.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/groups/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/groups/xp.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/handler.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/imc/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/imc/commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/imc/network.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/imc/protocol.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/area_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/base_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/help_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/json_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/mob_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/mobprog_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/obj_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/reset_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/room_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/shop_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/social_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/loaders/specials_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/logging.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/magic/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/magic/effects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/math/c_compat.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/math/stat_apps.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/mob_cmds.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/area.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/area_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/board.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/board_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/character_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/clans.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/classes.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/constants.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/conversion.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/help.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/help_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/json_io.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/mob.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/note.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/note_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/obj.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/object.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/object_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/player_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/races.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/room.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/room_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/shop.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/shop_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/skill.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/skill_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/social.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/social_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/titles.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/models/weapon_table.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/music/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/ansi.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/protocol.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/ssh_server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/net/telnet_server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/network/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/network/websocket_server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/network/websocket_session.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/network/websocket_stream.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/notes.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/olc/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/olc/editor_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/olc/save.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/registry.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/convert_are_to_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/convert_help_are_to_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/convert_player_to_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/convert_shops_to_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/convert_skills_to_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/convert_social_are_to_json.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/scripts/load_test_data.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/security/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/security/bans.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/security/hash_utils.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/skills/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/skills/groups.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/skills/metadata.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/skills/say_spell.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/spawning/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/spawning/mob_spawner.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/spawning/obj_spawner.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/spawning/reset_handler.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/spawning/templates.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/spec_funs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/time.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/act.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/bit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/fix_sex.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/messaging.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/olc_tables.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/poses.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/prefix_lookup.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/prompt.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/rng_mm.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/string_editor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/text.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/utils/timing.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/wiznet.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/__init__.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/char_find.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/linking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/movement.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/obj_find.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/time_persistence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/world/world_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/rom24_quickmud_python.egg-info/requires.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/setup.cfg +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/setup.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/conftest.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/helpers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/helpers_player.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/conftest.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_cap_001_broadcast_room.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_cap_002_room_broadcast.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_cap_003_communication_capitalize.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_cap_004_broadcast_global_capitalize.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_comm001_follow_self_single_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_comm002_follow_other_single_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_comm003_stop_follower_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_comm_gaps.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_enter_gaps.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_act_wiz_command_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_admin_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_advancement_con_app.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_advancement_wis_app.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_affect_check_prototype_fallback.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_affect_join_merge.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_alias_command_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_architectural_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_arith_107_nplayer_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_arith_111_haggle_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_arith_115_keeper_wealth_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_arith_203_204_plague_drain_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_arith_205_carry_number_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_auto_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_auto_sacrifice_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_auto_sacrifice_reward_scaling.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_auto_sequences.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_ban_command_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_bash_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_berserk_duration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_bit_flag_string.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_bit_flag_value.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_bit_is_stat.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_boards_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_broadcast_room_single_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_can_drop_obj_nodrop_bit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_cast010_wait_state_uses_spell_beats.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_cast011_say_spell_broadcast.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_cast_009_failed_cast_improves_skill.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_channels.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_char_update_lethal_tick_iteration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_character_advancement.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_character_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_character_creation_runtime.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_charm_person_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_charm_person_duration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_check_assist_dispatch_scope.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_class14_linkdead_lifecycle.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_clone_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_close_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_colour_spray_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_combat_dex_app.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_combat_str_app.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_communication_enhancement.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_compare_critical_gaps.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_config_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_consider002_safe_target_context_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_dam_message_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_db2_loader_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_db_canonical_round_trip.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_death_and_corpses.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_decay_loop_inv012.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_die_follower_leader_chain.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_cast_object_target.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_cast_pk_gates.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_config_flag_alignment.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_consider_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_equipment.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_examine_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_exits_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_follow_master_notification.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_gain_act_gain_bit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_group_notification.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_groups_known_groups.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_help_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_inventory.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_password_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_peek_check_improve.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_purge_nopurge_bits.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_quiet_comm_bit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_time_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_weather_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_where_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_who_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_do_worth.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_door_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_door_portal_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_drop_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_dupl_001b_no_duplicate_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_dupl_001c_game_loop_no_duplicate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_dupl_003_extract_obj.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_emote_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_environmental_effects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_equip_key_canonical.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_equipment_ac_calculations.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight036_dirt_kick_pronoun_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight040_dirt_already_blinded.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight041_death_cry_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight042_death_cry_neighbor_trig_act.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight043_flee_xp_loss.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight044_bash_killer_flag.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight045_trip_killer_flag.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight046_backstab_killer_flag.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight047_kick_killer_flag.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight048_murder_yell.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight049_murder_safety_pc_vs_pc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight050_is_safe_npc_guards.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight051_murder_safety_npc_guards.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight052_kill_safety_npc_guard_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight053_check_assist_rng_increment.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight054_do_flee_mechanism.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight056_damage_soft_cap.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight057_double_riv.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight058_damage_reduction_bypass.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight060_check_assist_elif_chain.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight061_flee_move_cost.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight062_flee_broadcast.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight065_disarm_no_weapon_literal.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight066_defense_return_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight067_bash_safe_room_entry_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight068_bash_position_before_self.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight069_dirt_trip_kill_steal_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight070_bash_is_safe_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight072_dirt_blind_before_self.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight073_dirt_blind_pronoun_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight074_kill_charm_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight075_bash_position_pronoun_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight077_is_safe_no_npc_level_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight078_npc_corpse_money_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_018_dam_message_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_019_thac0_attack_roll.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_021_multi_hit_unconditional_draw.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_022_mob_hit_skill_rolls.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_023_mob_dam_type_attack_index.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_024_violence_tick_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_025_act_capitalization.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_027_npc_unarmed_damage_dice.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_028_miss_attack_noun.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_031_combat_act_capitalization.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_032_defense_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_033_frost_shocking_weapon_name.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_034_auto_split_pers_cap.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_c_do_kill_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_fight_c_safe_room_damage_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding020_equip_remove_carry_position.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding021_look_in_container_header.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding022_show_list_to_char_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding030_bless_affect_count.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding_012_npc_spell_save.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_finding_013_cast_silent_on_success.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_flag_command_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_flee_moves_character.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_follow_can_see_gating.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_followcap_master_notification_capitalized.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_furniture_occupancy.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gain_condition_delivers_to_connected_pc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_get_curr_stat_floor_three.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_get_room_messages.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_give001_victim_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_give_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl026_affect_tick_rng_consumption.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl027_mob_affect_tick_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl028_mob_spell_effect_tick.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl031_pet_spell_effect_persistence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl032_mob_affect_application.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl039_obj_update_spill_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_gl_024_level1_plague_dormant.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_group_005_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_group_006_listing_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_group_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_group_gain_tick_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_group_xp_npc_level_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_handler001_get_char_room_self.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_handler002_get_char_room_count_once.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_handler003_get_char_matches_name_only.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_handler004_is_name_whole_word_prefix.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_handler005_get_char_world_skips_roomless.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_handler006_get_char_world_newest_match.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_healer_command_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_hedit_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_hpcnt_once_per_pulse.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_imm_command_delivery_dupl_001a.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_imm_set_stat_range.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_imm_summon_bit_alignment.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_incognito_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_info_display.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_interp025_social_self_target.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_interp026_social_can_see_and_nname.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_interp_dispatcher.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_interp_prefix_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_interp_trust.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv001_comm_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv001_delivery_helpers_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv001_inline_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv001_room_broadcast_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv001_wiznet_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv005_same_room_combat.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv006_fighting_pointer_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv008_persistence_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv009_registry_disconnect_cleanup.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv010_room_people_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv011_carry_weight_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv012_end_to_end.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv012_object_list_canonical.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv013_add_object_carrier.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv013_object_location_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv014_object_registry_membership.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv015_affect_tick_lifecycle.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv016_position_transition_broadcast.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv018_wear_off_message_for_raw_affect.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv019_position_promotion_on_heal.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv020_extract_quit_cleanup.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv020_group_leader_coherence_on_raw_kill.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv020_quit_extracts_objects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv021_object_extract_recursive.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv022_equip_applies_object_affects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv023_area_nplayer_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv024_container_closed_visibility.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_cancellation_act_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_clone_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_command_broadcast_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_command_layer_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_communication_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_consumption_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_do_drop_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_do_get_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_do_give_act_trigger_suppression.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_do_open_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_do_put_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_do_sacrifice_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_door_commands_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_door_commands_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_equipment_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_equipment_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_give_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_imm_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_imm_display_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_imm_load_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_liquids_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_magic_items_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_mobprog_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_movement_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_obj_command_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_plague_tick_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_position_transition_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_reverse_door_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_socials_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_spell_effect_act_trigger.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_spell_self_effect_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv025_steal_act_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv026_violence_trigger_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv027_act_pers_name_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv028_light_slot_key_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv029_act_first_letter_cap.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv030_bless_object_branch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv031_pc_death_preserves_group.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv032_room_flags_survive_load.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv033_furniture_on_pointer_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv036_sleep_strip_on_combat_start.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv037_follow_self_pet_pointer_cleanup.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv038_idle_timer_input_reset.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv040_affect_to_char_full_apply.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv041_shopkeeper_psop_coherence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv042_kill_death_xp_trigger_ordering.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv043_nuke_pets_stop_fighting.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv046_family3b.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv046_phantom_registry.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv047_extract_clears_mprog_target.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv047_extract_paths_clear_refs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv050_is_safe_bool_faithful.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv050_is_safe_spell_standalone.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv051_deferred_persistence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv052_act_empty_discard.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_inv053_prompt_after_tick_output.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_invis_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_json_loader_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_kill_command_single_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_lock_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_look007_look_at_char_broadcast.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_look_004_room_object_description.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_look_holylight_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_look_long_descr_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_lookup_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic005_poison_object_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic006_plague_pronoun_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic007_object_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic010_object_invis_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic011_poison_food_caster_caps.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic012_frenzy_room_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic013_cure_disease_room_pers_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic014_single_actor_room_pers_sweep.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic015_infravision_caster_actor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic017_shield_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic018_bless_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic019_cure_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic020_curse_object_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic021_change_sex_quirk.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic022_protection_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic023_frenzy_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic024_strength_haste_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic025_fly_infra_passdoor_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic026_object_p_capitalization.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic027_faerie_fire_silent_duplicate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic028_plague_unaffected_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic029_envenom_skill_already_envenomed_cap.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic030_sleep_silent_gates.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic032_sanctuary_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic033_know_alignment_act_semantics.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic034_detect_cluster_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic035_curse_dispel_neutral_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic036_dispel_to_room_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic037_demonfire_curse_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic038_demonfire_demons_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic039_charm_person_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic040_cure_room_broadcast_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic041_chill_touch_room_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic042_faerie_fog_revealed_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic043_envenom_room_broadcast_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic044_blindness_room_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic_002_armor_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic_002_bless_message.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic_003_affect_message_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_magic_effect_message_no_duplicate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_message_delivery_no_duplicate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mload_oload_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_berserk_has_spell_effect.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_assist.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_call.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_cast.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_damage.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_flee.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_junk.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_kill.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_oload.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_purge.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_remember.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mob_cmds_transfer.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobcmd020_echo_capitalization.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobcmd021_asound_capitalization.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobprog_edge_cases.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobprog_give_trigger.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobprog_greet_trigger.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobprog_predicates.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobprog_program_flow.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mobprog_scenarios.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_money_objects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_move005_exit_trigger_ordering.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_move006_no_encumbrance_movement_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_move_003_walk_line.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mpedit_001_interpret_mpedit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mpedit_002_do_mpedit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_mpedit_003_mprog_code_model.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_music_load_songs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_music_play.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_nanny_login_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_nanny_saveload_runtime_path.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_new_player_workflow.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_npc_speaker_does_not_trigger_speech.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_nukepet001_pet_fade_pers_and_notvict.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_numbered_get_syntax.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_obj_from_char_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_001_run_olc_editor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_007_redit_list_show.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_008_oedit_missing_cmds.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_009_medit_missing_cmds.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_010_015_do_olc_router.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_011_aedit_flag_toggle.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_012_014_editor_fallback.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_001_aedit_create.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_002_redit_create.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_003_redit_reset.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_004_redit_vnum_teleport.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_005_oedit_create.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_006_medit_create.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_007_aedit_show_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_008_redit_show_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_009_oedit_show_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_010_medit_show_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_011_name_messages.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_012_aedit_reset.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_013_get_area_for_vnum_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_act_014_area_changed_protocol.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_alist.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_builders.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_commands_listing.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_descriptor_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_display_resets.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_do_resets_subcommands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_001_mob_defensive_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_002_mob_form_parts_size_material.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_003_mob_mprogs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_004_mob_shops.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_005_mob_spec_fun.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_006_object_level.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_007_object_affects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_008_object_extra_descr.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_009_area_helps_round_trip.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_010_asave_area_dispatch.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_011_autosave_entry.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_012_npc_security_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_013_area_list_social_prepend.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_olc_save_014_017_message_strings.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_order002_wait_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_order003_immortal_trust.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_order_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_password001_wait_state_umax.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pc_death_keeps_connection.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pc_death_no_message_replay.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pet_buy_single_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pick001_check_improve.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pick002_wait_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pick_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pilot_integration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_pit_timer_handling.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_player_config.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_player_npc_interaction.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_position_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_practice_single_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_prompt_cmd_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_prompt_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_purge_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_purge_routes_through_extract_character.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_put_pit_timer.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_put_room_messages.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_quit_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_recall001_exp_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_recall002_check_improve.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_recall_train_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_remove_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_restore_strips_affects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_room_contents_show_list_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_room_light_tracking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_room_retrieval.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_room_safety_features.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_runtime_bugs_2026_04_30.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_sacrifice_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_save001_wait_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_say_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_scan_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_shop_error_paths.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_shop_haggle_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_shop_pet_001_dam_type_resolution.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_shop_pet_002_create_mobile_reroll.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_shop_room_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_shout_yell_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_skill_registry_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_skills_integration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_skills_integration_combat_specials.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_slay_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_slay_routes_through_raw_kill.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_socials.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_spawn_001_rng_draw_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_spec017_delivery_channel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_spell_casting.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_steal_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_steal_command.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_steal_thief_flag_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_still_recovering_single_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_append.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_edit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_first_arg.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_format_string.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_lineadd.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_linedel.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_merc_getline.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_numlines.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_proper.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_replace.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_string_add.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_string_editor_unpad.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_surrender_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_surrender_single_delivery.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_tables_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_tell_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_unlock_broadcasts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_update_c_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_visible001_strip_cast_invis.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_vision_002_dark_gate.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_weapon_damage_damroll_c_div.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_weapon_poison_affect.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_weapon_proc_pers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_weather_time.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_wiz047_transfer_pers_name_masking.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/integration/test_xp_compute_level_zero_pc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_account_auth.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_act_comm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_act_enter_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_act_info_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_act_obj_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_act_wiz_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_affects.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_agent_interface.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_alias_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_ansi.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_are_conversion.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_area_counts.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_area_exits.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_area_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_area_specials.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_arith_208_dice_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_arith_210_current_hp_no_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_arith_211_look_condition_negative_max_hit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_arith_max_hit_floor.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_attribute_convention.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_bans.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_boards.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_builder_hedit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_builder_stat_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_building.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_char_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_assist.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_damage_types.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_death.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_messages.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_position_damage.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_skills.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_surrender.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_thac0.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_combat_thac0_engine.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_command_abbrev.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_command_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_communication.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_connection_motd.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_convert_are_to_json_cli.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_damage_reduction.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_damage_reduction_integration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_db_resets_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_db_seed.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_defense_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_diff_harness_data_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_diff_harness_generated.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_encumbrance.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_enter_portal.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_equipment_key_convention.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_fighting_state.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_fix_sex.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_flag_hex_convention.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_follow_canonical.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_game_loop.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_game_loop_order.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_game_loop_wait_daze.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_golden_reference.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_handler_affects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_hash_utils.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_healer.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_healer_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_healer_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_help_conversion.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_help_system.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_imc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_inv034_pointer_identity_divergence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_invariant_checker.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_json_io.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_json_model_instantiation.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_json_room_fields.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_load_midgaard.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_logging_admin.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_message_delivery_convention.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mob_act_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mob_damage_modifiers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mob_dice_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mobprog.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mobprog_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mobprog_helpers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_mobprog_triggers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_charm.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_costs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_doors.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_followers.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_mobprog.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_npc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_portals.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_privacy.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_movement_visibility.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_music.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_nanny_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_obj_loader.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_obj_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_olc_aedit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_olc_medit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_olc_oedit.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_olc_save.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_passive_skills_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_pet_save_affect_roundtrip.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_phantom_registry_convention.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_affect_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_auto_settings.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_combat_attributes.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_conditions.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_creation.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_equipment.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_info_commands.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_mechanics.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_prompt.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_resistance_flags.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_skills_spells.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_stats.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_title_description.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_player_wimpy.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_practice.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_prompt_clamps_hp.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_reset_levels.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_resets.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_rng_and_ccompat.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_rng_determinism.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_rng_dice.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_runtime_models.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_saves_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_say_spell.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_scan_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_schema_validation.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_scripted_session.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_shop_conversion.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_conversion.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_envenom_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_haggle_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_hide_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_peek_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_pick_lock_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_recall_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_registry.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skill_steal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_conjuration.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_debuffs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_detection.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_healing.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_identify.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_learned.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_mass.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_misc.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_spells_cast_listing.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_skills_transport.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_social_conversion.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_social_placeholders.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spawning.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spec_fun_behaviors.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spec_funs.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spec_funs_extra.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_specials_loader_ext.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_area_effects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_cancellation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_charm_control_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_creation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_damage_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_detection_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_enchantment_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_farsight_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_final_nine_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_harm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_mass_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_priority_high_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spell_travel_portal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spells_basic.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_spells_damage.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_state_transitions.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_telnet_server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_thief_skills_dispatcher_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_time_daynight.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_time_persistence.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_vision_roomless_target.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_weapon_damage.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_weapon_special_attacks.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_weapon_table_parity.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_websocket_server.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_wiznet.py +0 -0
- {rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/tests/test_world.py +0 -0
|
@@ -7,6 +7,479 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.14.268] - 2026-07-05
|
|
11
|
+
|
|
12
|
+
### Changed (CI)
|
|
13
|
+
|
|
14
|
+
- **Full test suite gated to pull-request + manual dispatch; master pushes run
|
|
15
|
+
only the collect-smokes.** Empirically the pinned full suite takes ~32 CI-min
|
|
16
|
+
on a GitHub runner (verified: it ran clean to 98% with no worker crash, i.e.
|
|
17
|
+
the 2.14.267 pinning fix works — it just needs headroom), so running it on
|
|
18
|
+
every push would cost ~36 CI-min/push, no cheaper than the old broken matrix.
|
|
19
|
+
Direct pushes to master now trigger just the ~4-min 3.10/3.11 import smokes
|
|
20
|
+
(the full suite is validated locally via `.venv` before pushing); the full
|
|
21
|
+
suite still gates PRs and is runnable on demand via `workflow_dispatch`.
|
|
22
|
+
Full-suite `timeout-minutes` raised 30 → 40 for headroom.
|
|
23
|
+
|
|
24
|
+
## [2.14.267] - 2026-07-05
|
|
25
|
+
|
|
26
|
+
### Fixed (CI)
|
|
27
|
+
|
|
28
|
+
- **CI Tests workflow green again after ~10 months red** (last passed 2025-09-15
|
|
29
|
+
at v1.2.3, when the suite was tiny). Two root causes, both confirmed by
|
|
30
|
+
reproducing the failure locally:
|
|
31
|
+
- **Unpinned deps → bleeding-edge crash.** The job installed `.[dev,test]`
|
|
32
|
+
(unpinned floors), which pip resolved to **pytest 9.1.1 / pytest-xdist 3.8.0**.
|
|
33
|
+
That stack crashes xdist workers mid-run (`node down: Not properly terminated`
|
|
34
|
+
→ `INTERNALERROR` in `loadscope._reschedule`) — reproduced on a machine with
|
|
35
|
+
ample RAM, so it is a plugin incompatibility, not OOM. The pinned lock
|
|
36
|
+
(`requirements-dev.txt`, pytest 8.x — the same stack that runs green locally)
|
|
37
|
+
does not. **Fix:** the full-suite job now installs `-r requirements-dev.txt`.
|
|
38
|
+
- **Suite outgrew the 10-minute cap.** 6131 tests need ~13 min at the runner's
|
|
39
|
+
worker count; the job capped at 10 min and always timed out. **Fix:**
|
|
40
|
+
`timeout-minutes: 30`.
|
|
41
|
+
- **CI cost reduced.** The 3-way full-suite matrix (3.10/3.11/3.12, ~30 CI-min/push,
|
|
42
|
+
all failing) is replaced by one full-suite run on **3.12** (the version the lock
|
|
43
|
+
is built + proven against) plus near-free **`--collect-only`** import smokes on
|
|
44
|
+
**3.10/3.11** that guard the "Python 3.10+" floor (these would have caught the
|
|
45
|
+
`datetime.UTC` 3.10 break in 2.14.266). Net: fewer CI minutes *and* green.
|
|
46
|
+
- Note: the separate `CI` workflow (`ci.yml`) remains **disabled** (it was turned
|
|
47
|
+
off manually); its coverage gate + drift/mypy/rng static checks are not
|
|
48
|
+
currently enforced. Re-enabling it (pinned, with a timeout) is a follow-up.
|
|
49
|
+
|
|
50
|
+
## [2.14.266] - 2026-07-05
|
|
51
|
+
|
|
52
|
+
### Fixed
|
|
53
|
+
|
|
54
|
+
- **Python 3.10 compatibility: `admin_logging` no longer imports `datetime.UTC`.**
|
|
55
|
+
`datetime.UTC` is a Python **3.11+** alias; `mud/admin_logging/admin.py` used it,
|
|
56
|
+
and since that module is imported transitively across the engine, every test
|
|
57
|
+
collecting `mud` failed at import under 3.10 (`ImportError: cannot import name
|
|
58
|
+
'UTC' from 'datetime'`) — making the advertised "Python 3.10+" support false in
|
|
59
|
+
CI. Swapped to `timezone.utc` (available since 3.2, behavior-identical). Also
|
|
60
|
+
fixed the same import in `tests/test_logging_rotation.py`.
|
|
61
|
+
|
|
62
|
+
## [2.14.265] - 2026-07-05
|
|
63
|
+
|
|
64
|
+
### Changed (dev tooling)
|
|
65
|
+
|
|
66
|
+
- **CI: bump GitHub Actions off deprecated Node 20.** `actions/checkout@v4→v7`,
|
|
67
|
+
`actions/setup-python@v5→v6`, `actions/upload-artifact@v4→v7`,
|
|
68
|
+
`actions/download-artifact@v4→v8` across `ci.yml`, `release.yml`, `test.yml`,
|
|
69
|
+
`docker-image.yml` — GitHub was force-running the v4/v5 actions on Node 24 and
|
|
70
|
+
warning they target the deprecated Node 20 runtime. `pypa/gh-action-pypi-publish`
|
|
71
|
+
is Docker-based and unaffected. No workflow logic changed.
|
|
72
|
+
|
|
73
|
+
## [2.14.264] - 2026-07-05
|
|
74
|
+
|
|
75
|
+
### Changed
|
|
76
|
+
|
|
77
|
+
- **Test suite: per-test hang-guard via `--timeout=120 --timeout-method=thread`
|
|
78
|
+
in `pyproject` addopts** (pytest-timeout, already a declared dep). A single
|
|
79
|
+
hung test now fails with a stack dump after 120s instead of stalling the run
|
|
80
|
+
indefinitely. Does not affect the intermittent xdist *sessionfinish* teardown
|
|
81
|
+
flake (environmental, harmless — all tests have reported by then). Disable with
|
|
82
|
+
`--timeout=0`; override per test with `@pytest.mark.timeout(n)`.
|
|
83
|
+
|
|
84
|
+
### Added
|
|
85
|
+
|
|
86
|
+
- **Coverage-lock: `xp_compute` neutral-branch alignment `c_div` truncation.** A
|
|
87
|
+
probe verified the XP/group award math is ROM-faithful;
|
|
88
|
+
`test_fight055…::test_fight055_neutral_align_change_truncates_toward_zero` pins
|
|
89
|
+
the one signed-math site test_fight055's ±500 branches didn't cover — the
|
|
90
|
+
neutral-alignment change `gch->alignment * base_exp / 500 * level / total_levels`
|
|
91
|
+
(`src/fight.c:1908`) truncates toward zero (`c_div`) for a negative killer, not
|
|
92
|
+
floor (`//`). Also filed SPLIT-001 (`do_split`'s non-ROM `N gold` keyword form)
|
|
93
|
+
for maintainer review.
|
|
94
|
+
|
|
95
|
+
- **Dev environment: run tests in a project virtualenv (`.venv`).** Documented in
|
|
96
|
+
AGENTS.md ("Build / Lint / Test" → Environment): the shared system framework
|
|
97
|
+
Python is over-constrained across projects (`fastapi`/`gradio` need
|
|
98
|
+
`starlette < 1.0`, `sse-starlette` needs `>= 0.49.1` — no single global version
|
|
99
|
+
works), which silently broke 4 web/session test files at collection when the
|
|
100
|
+
global `starlette` drifted to 1.3.1. Setup: `python3 -m venv .venv &&
|
|
101
|
+
.venv/bin/python -m pip install -r requirements-dev.txt`. The project's own pins
|
|
102
|
+
were always correct — only the global env was wrong.
|
|
103
|
+
|
|
104
|
+
### Fixed (dev tooling)
|
|
105
|
+
|
|
106
|
+
- **`requirements-dev.txt` lock now includes the test plugins.** Added
|
|
107
|
+
`pytest-xdist`, `pytest-timeout`, and `hypothesis` to `requirements-dev.in` and
|
|
108
|
+
regenerated the pip-compiled lock (existing pins preserved). Previously the lock
|
|
109
|
+
omitted these plugins that `pyproject`'s `[dev]` extra and the default `addopts`
|
|
110
|
+
(`-n auto`, `--timeout`) require, so a fresh `pip install -r requirements-dev.txt`
|
|
111
|
+
produced a venv that couldn't even parse the pytest options. A clean install from
|
|
112
|
+
the lock now yields a runnable suite.
|
|
113
|
+
|
|
114
|
+
- **Coverage-lock: `aggr_update` victim reservoir selection.** New
|
|
115
|
+
`TestAggressiveUpdateVictimReservoir` in
|
|
116
|
+
`tests/integration/test_mob_ai.py` pins ROM's reservoir sampling
|
|
117
|
+
(`src/update.c:1115-1131`): an aggressive NPC facing multiple eligible PCs
|
|
118
|
+
draws one `number_range(0, count)` per victim in `room.people` order, keeping
|
|
119
|
+
the first eligible victim (count==0 always selects) unless a later victim's
|
|
120
|
+
roll wins. Freezes the shared-RNG draw sequence at a classic desync site that
|
|
121
|
+
had no deterministic regression test.
|
|
122
|
+
|
|
123
|
+
- **Coverage-lock: `gain_condition` DRUNK sober-message guard.** New
|
|
124
|
+
`tests/integration/test_gain_condition_drunk_sober_guard.py` pins ROM's
|
|
125
|
+
`if (condition != 0)` old-value guard (`src/update.c:391-394`): "You are sober."
|
|
126
|
+
fires only when the DRUNK slot was non-zero before ticking to 0, so an
|
|
127
|
+
already-sober idle player is never re-notified (unlike HUNGER/THIRST, which
|
|
128
|
+
announce unconditionally at 0). Locks a previously-untested branch.
|
|
129
|
+
|
|
130
|
+
- **HANDLER-008: faithful unified `get_skill` port (core).** Added
|
|
131
|
+
`mud/skills/skill_lookup.py:get_skill` mirroring ROM `src/handler.c:346-448` —
|
|
132
|
+
the PC class-level gate + learned percent, the full NPC formula dispatch
|
|
133
|
+
(spell/weapon/kick/backstab/dodge/parry/trip/bash/disarm/… by flags), the daze
|
|
134
|
+
(`skill/2` spell, `2*skill/3` skill) and drunk (`9*skill/10`) reductions, and the
|
|
135
|
+
`URANGE(0,skill,100)` clamp. Self-contained + unit-tested; call-site migrations
|
|
136
|
+
(retiring the per-skill NPC-formula partial mirrors) follow.
|
|
137
|
+
|
|
138
|
+
- **Differential harness death autosac coverage** — added `__plr_autosac=0|1`
|
|
139
|
+
to the C/Python replay drivers and committed the `death_auto_sac` scenario +
|
|
140
|
+
golden. The new replay confirms death `PLR_AUTOSAC` converges with ROM
|
|
141
|
+
`src/fight.c:968-979` / `src/act_obj.c:1838-1862` for an empty NPC corpse.
|
|
142
|
+
- **Differential harness grouped autosplit coverage** — added `__plr_autosplit=0|1`
|
|
143
|
+
and descriptorless `__group_pc=<name>` setup to the C/Python replay drivers,
|
|
144
|
+
then committed the `death_autosac_autosplit` scenario + golden. The replay
|
|
145
|
+
confirms grouped death `PLR_AUTOSAC` + `PLR_AUTOSPLIT` converges with ROM:
|
|
146
|
+
the driver sees the sacrifice/split lines and the grouped peer receives its
|
|
147
|
+
silver share.
|
|
148
|
+
- **Differential harness death autogold/autosplit coverage** — committed the
|
|
149
|
+
`death_autogold_autosplit` scenario + golden, pinning ROM `get_obj` autosplit
|
|
150
|
+
behavior when `PLR_AUTOGOLD` collects NPC corpse coins for a grouped PC. The
|
|
151
|
+
replay confirms the driver keeps the remainder share and the grouped peer
|
|
152
|
+
receives its split silver without the autosac branch.
|
|
153
|
+
- **Differential harness death autoloot/autosplit coverage** — committed the
|
|
154
|
+
`death_autoloot_autosplit` scenario + golden, pinning ROM `do_get all corpse`
|
|
155
|
+
behavior when `PLR_AUTOLOOT` collects mixed NPC corpse contents for a grouped
|
|
156
|
+
PC with `PLR_AUTOSPLIT`.
|
|
157
|
+
- **`weather_tick` RNG draw-order regression lock** — `tests/test_weather_tick_draw_order.py`
|
|
158
|
+
pins the Mitchell-Moore draw sequence of ROM `weather_update`
|
|
159
|
+
(`src/update.c:578`): the pressure line `change += diff*dice(1,4) + dice(2,6)
|
|
160
|
+
- dice(2,6)` is a single C expression whose three `dice()` calls have
|
|
161
|
+
*unspecified* evaluation order in C, but the diff-harness build platform
|
|
162
|
+
evaluates it strictly left-to-right — which is the order the Python port
|
|
163
|
+
draws in. The test locks the draw count, order, operand sizes, and the +/−
|
|
164
|
+
assignment (so a refactor cannot silently swap the two `dice(2,6)` draws and
|
|
165
|
+
desync every subsequent MM draw shared with combat/spells), plus the
|
|
166
|
+
per-sky-state `number_bits(2)` draw count. No behavior change — this path was
|
|
167
|
+
previously unguarded by any dedicated test.
|
|
168
|
+
- **Differential harness non-death `get all corpse` autosplit coverage** —
|
|
169
|
+
committed the `get_corpse_money_autosplit` scenario + golden, exercising the
|
|
170
|
+
shared `do_get` → `get_obj` autosplit path (`src/act_obj.c:162-184`) via a
|
|
171
|
+
**manual** `get all corpse` (autoloot/autogold OFF) rather than the death
|
|
172
|
+
auto-branch. A grouped level-5 PC with `PLR_AUTOSPLIT` picks up 17 silver /
|
|
173
|
+
2 gold from a slain janitor's corpse; ROM emits the "You get ..." line plus
|
|
174
|
+
both `do_split` share lines (9 silver / 1 gold), and Python converges — locking
|
|
175
|
+
the FIGHT-080 fix on the non-death entry point.
|
|
176
|
+
|
|
177
|
+
### Fixed
|
|
178
|
+
|
|
179
|
+
- **PRACTICE-002: below-level skills can't be practiced even when already known.**
|
|
180
|
+
ROM `do_practice` (`src/act_info.c:2744-2757`) rejects a skill whenever
|
|
181
|
+
`ch->level < skill_level[class]`, unconditionally — a group-granted spell stored
|
|
182
|
+
at 1% that a low-level character isn't high enough for still can't be practiced.
|
|
183
|
+
The port only applied the level gate at 0%, so a below-level mage could practice
|
|
184
|
+
a known-at-1% spell (spending a session, raising the percent). Made the level
|
|
185
|
+
gate unconditional. Test:
|
|
186
|
+
`tests/integration/test_do_practice_command.py::test_practice_below_class_level_known_skill_is_rejected`.
|
|
187
|
+
|
|
188
|
+
- **LOOK-010: room-occupant aura tags — order + double-render.** ROM prints
|
|
189
|
+
`(Pink Aura)` (faerie fire) before `(White Aura)` (sanctuary)
|
|
190
|
+
(`src/act_info.c:266,272`); both Python aura sites had them reversed. The room
|
|
191
|
+
list also double-rendered them (`_room_occupant_line` prepended auras and then
|
|
192
|
+
used `describe_character`, which prepends them too), so an aura'd occupant showed
|
|
193
|
+
`(White)(Pink)(White)(Pink) Name`. Fixed the order in both sites and removed the
|
|
194
|
+
duplicate prepend. Test:
|
|
195
|
+
`tests/integration/test_do_look_command.py::test_room_occupant_line_aura_order_pink_before_white`.
|
|
196
|
+
|
|
197
|
+
- **MAGIC-049: `dispel magic` was missing ROM's opening save.** ROM
|
|
198
|
+
`spell_dispel_magic` (`src/magic.c:2082`) opens with `saves_spell(level, victim,
|
|
199
|
+
DAM_OTHER)`; on success it aborts ("You feel a brief tingling sensation." /
|
|
200
|
+
"You failed.") and strips nothing. The port had no gate, so it always proceeded
|
|
201
|
+
to the per-effect dispel loop — a missing RNG draw, two absent messages, and a
|
|
202
|
+
high-saving victim losing buffs ROM preserves. Added the gate. Test:
|
|
203
|
+
`tests/test_utility_spells_parity.py::test_dispel_magic_aborts_when_victim_saves`.
|
|
204
|
+
|
|
205
|
+
- **AFFECTS-001: `affects` double-colon on the level-20+ duplicate line.** For a
|
|
206
|
+
level-20+ character with two same-spell affects (e.g. `bless`, which applies
|
|
207
|
+
APPLY_HITROLL + APPLY_SAVING_SPELL), the continuation line rendered a double
|
|
208
|
+
colon (`: :`). ROM (`src/act_info.c:1726`) emits 22 spaces then `": modifies…"`
|
|
209
|
+
— one colon; the port added an extra `": "`. Dropped it. Test:
|
|
210
|
+
`tests/integration/test_do_affects.py::test_affects_level_20_plus_duplicate_continuation_single_colon`.
|
|
211
|
+
|
|
212
|
+
- **MAGIC-048: `chain lightning` arcs to every target in a bounce pass.** ROM's
|
|
213
|
+
bounce loop (`src/magic.c:1259-1278`) has no level-based break — once a pass
|
|
214
|
+
starts, the bolt arcs to every valid target in the room even after `level`
|
|
215
|
+
reaches 0 (0 damage, but the save roll and messages still fire). The port broke
|
|
216
|
+
out at `level <= 0`, skipping later occupants and desyncing the shared RNG.
|
|
217
|
+
Removed the break. Test:
|
|
218
|
+
`tests/test_skills_damage.py::test_chain_lightning_arcs_to_every_target_in_the_pass`.
|
|
219
|
+
(Also corrected two invisible-attacker masking tests that predated the FIGHT-092
|
|
220
|
+
invis-on-hit reveal.)
|
|
221
|
+
|
|
222
|
+
- **MAGIC-047: `stone skin` already-affected guard checks the caster, not the
|
|
223
|
+
target.** ROM `spell_stone_skin` (`src/magic.c:4447`) is unique among buffs —
|
|
224
|
+
its guard tests `is_affected(ch)` (the caster) while still applying the affect
|
|
225
|
+
to the victim; the port checked the target. So a stone-skinned caster casting on
|
|
226
|
+
a different un-skinned victim wrongly buffed the victim (and the mirror case
|
|
227
|
+
wrongly refused). Now gates on the caster, matching ROM. Test:
|
|
228
|
+
`tests/test_skills_buffs.py::test_stone_skin_guard_checks_caster_not_victim`.
|
|
229
|
+
|
|
230
|
+
- **MOVE-008: container open/close message order (CLOSED before CLOSEABLE).** ROM
|
|
231
|
+
`do_open`/`do_close` (`src/act_move.c`) check `CONT_CLOSED` before
|
|
232
|
+
`CONT_CLOSEABLE`, so an already-open non-closeable container reports "It's
|
|
233
|
+
already open." (and already-closed → "It's already closed."). The port checked
|
|
234
|
+
`CLOSEABLE` first and wrongly returned "You can't do that." for those states.
|
|
235
|
+
Reordered both container arms. Test:
|
|
236
|
+
`tests/integration/test_door_container_message_order.py`.
|
|
237
|
+
|
|
238
|
+
- **FIGHT-092: attacking reveals an invisible attacker.** ROM `damage()`
|
|
239
|
+
(`src/fight.c:763-769`) strips the attacker's invis/mass-invis affects and
|
|
240
|
+
`AFF_INVISIBLE` and broadcasts "$n fades into existence." on every connecting
|
|
241
|
+
hit; the port's `apply_damage` did nothing, so an invisible caster/thief stayed
|
|
242
|
+
hidden through a whole fight. Added the strip + room broadcast after the
|
|
243
|
+
parry/dodge/shield-block checks. Test:
|
|
244
|
+
`tests/integration/test_invisibility_combat.py::test_invisible_attacker_revealed_on_connecting_hit`.
|
|
245
|
+
|
|
246
|
+
- **SELL-005: keeper standardizes a sold item's cost even when the existing
|
|
247
|
+
duplicate is free.** ROM `obj_to_keeper` (`src/act_obj.c:2424`) does
|
|
248
|
+
`obj->cost = t_obj->cost` unconditionally when stacking onto a same-proto
|
|
249
|
+
duplicate; the port skipped it for a `cost==0` duplicate. Removed the guard.
|
|
250
|
+
Test: `tests/test_shops.py::test_obj_to_keeper_standardizes_cost_even_when_existing_is_zero`.
|
|
251
|
+
|
|
252
|
+
- **BUY-011: `buy N*item` counts only consecutive stock.** The multi-buy stock
|
|
253
|
+
check scanned the keeper's whole inventory and counted non-adjacent duplicates,
|
|
254
|
+
but ROM `do_buy` (`src/act_obj.c:2667-2686`) counts only a consecutive run and
|
|
255
|
+
stops at the first non-matching item. So a keeper carrying `[lantern, dagger,
|
|
256
|
+
lantern]` refuses `buy 2*lantern` ("I don't have that many in stock.") in ROM,
|
|
257
|
+
but the port sold both. `_collect_matching_stock` now breaks on the first
|
|
258
|
+
non-matching candidate. Test:
|
|
259
|
+
`tests/test_shops.py::test_buy_multi_stock_requires_consecutive_run`.
|
|
260
|
+
|
|
261
|
+
- **GET-016: magic containers weigh less toward carry limits (WEIGHT_MULT).** The
|
|
262
|
+
command-local `_get_obj_weight` helpers (do_get's `can_carry_w` gate and do_put's
|
|
263
|
+
fit check) summed a container's contents at full weight, ignoring ROM's
|
|
264
|
+
`WEIGHT_MULT` (`get_obj_weight(tobj) * WEIGHT_MULT(obj) / 100`,
|
|
265
|
+
`src/handler.c` / `merc.h:2137`). So a magic bag (`value[4]=50`) holding a
|
|
266
|
+
100-lb item counted as bag+100 instead of bag+50, and Python could refuse a
|
|
267
|
+
`get <magic-bag>` that ROM allows. Both helpers now apply the multiplier. Test:
|
|
268
|
+
`tests/integration/test_get_weight_mult.py`.
|
|
269
|
+
|
|
270
|
+
- **PUT-004: putting into a carried bag no longer corrupts encumbrance (INV-011).**
|
|
271
|
+
`do_put`'s object move subtracted the item's weight/number from the carrier but
|
|
272
|
+
never re-added it, so `put sword bag` (a carried bag) permanently dropped
|
|
273
|
+
`carry_weight`/`carry_number` — a player could stuff a carried bag to slip under
|
|
274
|
+
the `can_carry_w` movement gate. ROM `obj_to_obj` re-adds
|
|
275
|
+
`get_obj_weight(obj) * WEIGHT_MULT(container) / 100` (and the number) for each
|
|
276
|
+
carried container in the nesting chain (`src/handler.c:1971-1984`), so a normal
|
|
277
|
+
bag (WEIGHT_MULT=100) is net-zero and a magic bag reduces weight. `_obj_to_obj`
|
|
278
|
+
now performs that walk. Test:
|
|
279
|
+
`tests/integration/test_put_weight_mult.py::test_put_into_carried_bag_is_net_zero_on_carry_weight`.
|
|
280
|
+
|
|
281
|
+
- **WEAR-010: `wear/wield/hold N.item` count prefix now resolves.** `do_wear`
|
|
282
|
+
found its target with a substring-only helper instead of ROM's `get_obj_carry`
|
|
283
|
+
(`src/act_obj.c:1726`), so `wear 2.ring` returned "You do not have that item."
|
|
284
|
+
where ROM wears the 2nd of two same-named rings. `wield`/`hold` delegate to
|
|
285
|
+
`do_wear`, so all three were affected. Same finder class as EAT-008; wired to the
|
|
286
|
+
existing `get_obj_carry`. Test:
|
|
287
|
+
`tests/integration/test_equipment_system.py::test_wear_count_prefix_selects_nth_item`.
|
|
288
|
+
|
|
289
|
+
- **EAT-008: `eat N.item` count prefix now resolves.** `do_eat` found its target
|
|
290
|
+
with a substring-only helper instead of ROM's `get_obj_carry`
|
|
291
|
+
(`src/act_obj.c:1296`), so the `N.name` count prefix never parsed — `eat
|
|
292
|
+
2.mushroom` returned "You do not have that item." where ROM eats the 2nd of two
|
|
293
|
+
same-named items. Wired `do_eat` to the existing `get_obj_carry` (already used by
|
|
294
|
+
`do_quaff`/`do_drink`), a strict superset of the old match. Test:
|
|
295
|
+
`tests/integration/test_consumables.py::test_eat_count_prefix_selects_nth_item`.
|
|
296
|
+
|
|
297
|
+
- **GL-048: mob delay-trigger ends the tick unconditionally (`mobile_update`).**
|
|
298
|
+
ROM's TRIG_DELAY block (`src/update.c:448-454`) fires the trigger on expiry and
|
|
299
|
+
`continue`s **unconditionally**, so the mob does not scavenge or wander that
|
|
300
|
+
tick. The port returned `mp_percent_trigger`'s result, so a *failed* delay
|
|
301
|
+
percent roll let the mob fall through into scavenge/wander — drawing extra RNG
|
|
302
|
+
off the shared stream (desyncing the whole tick) and sometimes picking up an
|
|
303
|
+
item or moving when ROM would not. Also added the missing `HAS_TRIGGER` gate so
|
|
304
|
+
a mob without a delay program no longer counts its `mprog_delay` down. Test:
|
|
305
|
+
`tests/integration/test_gl048_mp_delay_trigger_parity.py`.
|
|
306
|
+
|
|
307
|
+
- **GL-047: regen drains in a negative-rate room + signed rate math (`char_update`).**
|
|
308
|
+
`hit_gain`/`mana_gain`/`move_gain` returned `max(0, min(gain, deficit))`, so a
|
|
309
|
+
room with a negative `heal_rate`/`mana_rate` (a "drain room", fully
|
|
310
|
+
representable via OLC or the signed area loader) never actually drained HP/mana/
|
|
311
|
+
move — ROM returns `UMIN(gain, max-cur)`, a plain min that goes negative and the
|
|
312
|
+
caller subtracts it (`src/update.c:229,698`). The clamp is removed. Separately,
|
|
313
|
+
once the room-rate multiply makes `gain` negative, the rate `/100`, furniture
|
|
314
|
+
`/100`, and poison `/4` / plague `/8` / haste `/2` divisions must truncate
|
|
315
|
+
toward zero like C; the port used floor `//` (off-by-one on a negative
|
|
316
|
+
dividend) — switched to `c_div`. Test:
|
|
317
|
+
`tests/integration/test_gl047_regen_drain_room.py`.
|
|
318
|
+
|
|
319
|
+
- **GL-046: plague-spread RNG draw order/count parity (`char_update`).** The
|
|
320
|
+
per-tick plague infection loop desynced the shared Mitchell-Moore RNG stream
|
|
321
|
+
from ROM `src/update.c:824,829-841` three ways: it drew the spread affect's
|
|
322
|
+
`number_range` **duration** once per infected victim instead of once before the
|
|
323
|
+
loop; it skipped the carrier/immortals/already-plagued occupants without drawing
|
|
324
|
+
their `saves_spell` roll (ROM draws the save for every occupant as the first
|
|
325
|
+
`&&` operand); and it drew `number_bits(4)` **before** the save instead of last.
|
|
326
|
+
Any of the three shifts every downstream RNG consumer in that pulse (regen,
|
|
327
|
+
later chars' affect fades, combat) whenever a plagued character stands in a
|
|
328
|
+
populated room. The loop now mirrors ROM's operand order and draw count exactly.
|
|
329
|
+
Char-side twin of GL-045/GL-026. Test:
|
|
330
|
+
`tests/integration/test_gl046_plague_spread_rng_order.py`.
|
|
331
|
+
|
|
332
|
+
- **HANDLER-008 do_trip NPC trip-chance uses `get_skill` (was hardcoded 100).** `do_trip`'s NPC branch set `skill_level = 100`, so any OFF_TRIP mob tripped at a near-certain base chance regardless of level. It now uses `get_skill(char, "trip")` = ROM's `10 + 3*level` for an OFF_TRIP NPC (`src/handler.c:373-432`, `src/fight.c:2649`) — a level-10 mob's trip base drops from 100 to 40. The OFF_TRIP gate and the `""` silent return for descriptor-less mobs are unchanged. PC path unchanged (a separate opportunistic migration). This closes the last dict-sourced NPC skill lookup — every `get_skill` site in the HANDLER-008 port is now migrated. Test: `test_fight_026_npc_offensive_skill_no_crash.py::test_npc_trip_chance_uses_get_skill_not_hardcoded_100` (+ an over-correction guard confirming a low roll still lands).
|
|
333
|
+
|
|
334
|
+
- **HANDLER-008 test hygiene: `test_fight035` disarm caster is now a warrior.** The disarm act-structure test's caster was a level-30 mage, but ROM's `disarm` skill is mage@53 — so `get_skill` gates it to 0 ("You don't know how to disarm"). The test only passed because it never calls `initialize_world`, leaving the global `skill_registry` empty so the class-gate was skipped; once a sibling test on the same xdist worker populated the registry, the gate activated and the test flaked. Set `ch_class=3` (warrior, disarm@11) so the gate passes deterministically — the same ROM-faithful fix already applied to the `TestDisarmRomParity` chars when the disarm gate was migrated (2.14.236). Exposed by the defensive-check migration reshuffling worker grouping.
|
|
335
|
+
|
|
336
|
+
- **HANDLER-008 complete: defensive checks use `get_skill` — NPCs can finally dodge/parry/shield-block.** `check_dodge`, `check_parry`, and `check_shield_block` sourced their skill from the ad-hoc `_get_skill_percent(defender, …)`, which reads the skills dict — empty (→0) for mobs — so **NPC mobs never dodged, parried, or shield-blocked**. All three now route through the unified `get_skill(victim, …)` (`src/handler.c:373-432`): an NPC with OFF_DODGE/OFF_PARRY gets `level*2`, every NPC gets shield_block `10+2*level`, and PCs are gated below their class skill level. This retires the last dict-sourced defensive site and completes the get_skill port. Test blast radius (13 tests, all re-verified against `get_skill`'s actual output): PC-defender formula tests set a class that learns the skill early (warrior parry@1 / thief dodge@1) to preserve the level-diff; the one NPC-defender test had its expected chance recomputed from the ROM formula (the old dict value was inert); `test_combat_defenses_prob` NPC victims switched from `skills[...]` to `off_flags` with equalized attacker/victim levels (so the level-diff modifier doesn't leak a chance into an unflagged defense).
|
|
337
|
+
|
|
338
|
+
- **FIGHT-090: unified the two `do_trip` implementations.** The `trip` command (`do_trip`) and the `trip` skill function (`skill_handlers.trip`) were divergent duplicate ports of ROM `do_trip`; `skill_handlers.trip` is now a thin delegate to the single canonical `do_trip`. Merged three ROM fixes that had landed only on the handler copy into do_trip: the self-trip colour + `$n trips over $s own feet!` room broadcast (FIGHT-039), the PERS flying/position gate messages `$S`/`$N` (TRIP-001, do_trip had baked "Their"/"They"), and `check_improve` on success/failure (do_trip omitted it, so trip never improved via the command). Also dropped the handler's non-ROM post-damage RESTING re-set. Filed a HANDLER-008 follow-up: do_trip's NPC trip chance still hardcodes 100 instead of get_skill's 10+3*level.
|
|
339
|
+
|
|
340
|
+
- **MAGIC-046: `heat_metal` walks ROM's single `victim->carrying` list + emits `remove_obj` lines.** The spell iterated `inventory + equipment.values()` (carried then worn) instead of ROM's one LIFO list interleaving both by acquisition, so its per-object RNG draws hit different objects. Added `Character.iter_carrying()` (descending `_carry_seq`, the FINDING-020 acquisition counter) and route heat_metal through it; also restored `remove_obj`'s "$n stops using $p." / "You stop using $p." lines before the heat throw lines (src/magic.c:3134, src/act_obj.c:1389-1390).
|
|
341
|
+
|
|
342
|
+
- **HANDLER-008 test fixes: warrior `ch_class` on disarm/rescue PC casters.** The disarm-skill and do_rescue get_skill migrations enforce ROM's PC class-level gate; cross-file disarm/rescue tests that created default mage-class casters now set `ch_class=3` (+ adequate level) — ROM-faithful, since a mage can't disarm/rescue below level 53. Restores the full suite to green.
|
|
343
|
+
|
|
344
|
+
- **HANDLER-008 migration: do_rescue uses `get_skill`.** The rescue success roll now comes from unified `get_skill(char, "rescue")` — class-gated for PCs and 40+level for NPCs (was 0 via the dict → NPC rescue never succeeded). Fifth get_skill site migration; all offensive-skill NPC-formula workarounds are now retired.
|
|
345
|
+
|
|
346
|
+
- **HANDLER-008 migration: disarm-skill gate uses `get_skill`.** `do_disarm`'s skill gate/chance now come from unified `get_skill(caster, "disarm")` — enforcing ROM's PC class-level requirement and finally letting an NPC with OFF_DISARM disarm (20+3*level; was 0 via the dict → always rejected). Fourth of five get_skill site migrations.
|
|
347
|
+
|
|
348
|
+
- **HANDLER-008 migration: disarm hand-to-hand uses `get_skill`.** The unarmed disarm chance sources its hand-to-hand skill from unified `get_skill` (retiring `_hand_to_hand_skill`); daze/drunk now apply. The disarm-*skill* gate migration (which enforces ROM's PC class-level requirement) is a documented follow-up.
|
|
349
|
+
|
|
350
|
+
- **HANDLER-008 migration: backstab THAC0 uses `get_skill`.** `attack_round`'s backstab branch sources its skill from unified `get_skill` (retiring `engine._backstab_skill`); daze/drunk now factor into the backstab near-auto-hit.
|
|
351
|
+
|
|
352
|
+
- **HANDLER-008 migration: `do_kick` routes through `get_skill`.** The kick chance now comes from the unified `get_skill(char, "kick")` — retiring the inline NPC-formula workaround (FIGHT-091) and newly applying ROM's daze/drunk reductions at this site.
|
|
353
|
+
|
|
354
|
+
- **FIGHT-091: an NPC's kick never landed (chance was 0).** `do_kick` read the
|
|
355
|
+
kick percent from the skills dict — empty for mobs — so an aggressive OFF_KICK
|
|
356
|
+
mob could never land a kick. The NPC branch now uses ROM `get_skill`'s
|
|
357
|
+
`10 + 3*level` (`src/handler.c:410`). Fourth site of the get_skill NPC-formula
|
|
358
|
+
class (HANDLER-008), which the unified port will consolidate.
|
|
359
|
+
|
|
360
|
+
- **FIGHT-088: `do_trip` now emits ROM's three act() lines and the failure
|
|
361
|
+
`damage(0)`.** The trip command returned a single baked
|
|
362
|
+
`"You trip X and they go down!"` with no room broadcast or `$N`/`$M` pronoun
|
|
363
|
+
render, and on a miss only set the wait — never starting the fight. Success now
|
|
364
|
+
pushes the TO_VICT line, broadcasts the `$M`-gendered TO_NOTVICT to the room, and
|
|
365
|
+
returns the TO_CHAR line; a miss now calls `damage(ch, victim, 0, gsn_trip, …)`
|
|
366
|
+
before the wait (miss combat message + fight-start), matching
|
|
367
|
+
`src/fight.c:2735-2751`. Filed FIGHT-090 (divergent duplicate trip
|
|
368
|
+
implementations to unify).
|
|
369
|
+
|
|
370
|
+
- **FIGHT-087: unarmed disarm used a hand-to-hand floor of 1 and a non-ROM gate.**
|
|
371
|
+
An unarmed NPC disarmer computed `chance * 1 / 150` (via `max(hand_to_hand, 1)`)
|
|
372
|
+
instead of ROM's `chance * (40+2*level) / 150` — a near-guaranteed failure. Added
|
|
373
|
+
a `_hand_to_hand_skill` helper (PC learned / NPC `40+2*level`, per ROM
|
|
374
|
+
`get_skill`), dropped the floor, and aligned the unarmed gate to ROM's
|
|
375
|
+
`hth==0 OR (IS_NPC AND !OFF_DISARM)`. The disarm-skill NPC lookup on the same
|
|
376
|
+
function remains part of HANDLER-008.
|
|
377
|
+
|
|
378
|
+
- **FIGHT-089: `check_dodge` visibility halving was inert.** The dodge check
|
|
379
|
+
halved chance when the defender couldn't see the attacker, but the port used a
|
|
380
|
+
`getattr(victim, "can_see", lambda x: True)` fallback that never fired (runtime
|
|
381
|
+
entities have no `can_see` method), so a blind defender dodged at full chance.
|
|
382
|
+
Now `not can_see_character(victim, attacker)` (ROM `src/fight.c:1363`) — the twin
|
|
383
|
+
of the FIGHT-084 `check_parry` fix.
|
|
384
|
+
|
|
385
|
+
- **FIGHT-086: backstab THAC0 bonus was missing.** ROM `one_hit`
|
|
386
|
+
(`src/fight.c:474-475`) subtracts `10 * (100 - get_skill(ch, gsn_backstab))`
|
|
387
|
+
from THAC0 for a backstab — a near-guaranteed hit below skill 100. The port
|
|
388
|
+
had the backstab *damage* multiplier but not the THAC0 branch, so sub-100
|
|
389
|
+
backstabs missed far more often than ROM. Added the branch in `attack_round`
|
|
390
|
+
plus a `_backstab_skill` helper mirroring ROM `get_skill` (PC learned / NPC
|
|
391
|
+
thief `20+2*level`). Surfaced HANDLER-008 (systemic daze/drunk get_skill
|
|
392
|
+
modifiers still unported).
|
|
393
|
+
|
|
394
|
+
- **FIGHT-085: skill wait-states were haste/slow-scaled; ROM uses raw beats.**
|
|
395
|
+
`SkillRegistry._compute_skill_lag` halved a skill's lag under `AFF_HASTE` and
|
|
396
|
+
doubled it under `AFF_SLOW`. ROM's `WAIT_STATE` macro (`src/merc.h:2116`) is a
|
|
397
|
+
bare `UMAX` that applies the raw `skill_table[sn].beats`; haste/slow only
|
|
398
|
+
change the number of attacks (`multi_hit`), never lag. Removed the scaling so
|
|
399
|
+
bash/kick/backstab/rescue and every registry-`use()` skill match ROM.
|
|
400
|
+
|
|
401
|
+
- **FIGHT-084: `check_parry` visibility halving used the wrong direction and was
|
|
402
|
+
inert.** ROM `src/fight.c:1311` halves parry on `!can_see(attacker, victim)`;
|
|
403
|
+
the port used `victim.can_see(attacker)` (wrong direction) with a
|
|
404
|
+
`lambda x: True` fallback that never halved. Now `not
|
|
405
|
+
can_see_character(attacker, victim)`. (The sibling inert halving in
|
|
406
|
+
`check_dodge` is filed as FIGHT-089.)
|
|
407
|
+
- **FIGHT-083: `dirt_kicking` false-zero hack + `chance == 0` terrain gate.**
|
|
408
|
+
`src/fight.c:2566-2608`. Restored ROM's "sloppy hack to prevent false zeroes"
|
|
409
|
+
(`chance % 5 == 0 → += 1`, before the terrain switch) and changed the
|
|
410
|
+
post-terrain gate from `chance <= 0` to `chance == 0`, so a weak/low-dex
|
|
411
|
+
kicker on dry land no longer wrongly sees "There isn't any dirt to kick." and
|
|
412
|
+
correctly eats the guaranteed-miss WAIT_STATE; only water/air (which hard-set
|
|
413
|
+
chance to 0) report no dirt.
|
|
414
|
+
- **MAGIC-045: `heat_metal` collapsed ROM's cursed-item branches (HIGH).**
|
|
415
|
+
`src/magic.c:3123-3277`. The port hardcoded `can_drop_obj` to `True`, so a
|
|
416
|
+
worn cursed (NODROP) weapon/armor or a cursed inventory item was dropped and
|
|
417
|
+
took the wrong damage instead of ROM's "sears your flesh / skin is seared"
|
|
418
|
+
else-branch (item stays). Restored the real `can_drop_obj` (NODROP +
|
|
419
|
+
immortal bypass), modelled `remove_obj`'s NOREMOVE failure, preserved ROM's
|
|
420
|
+
`&&` short-circuit so the worn-armor DEX `number_range` is only drawn when the
|
|
421
|
+
item is droppable (RNG parity), and switched that bound to
|
|
422
|
+
`get_curr_stat(DEX)`. Iteration-order sub-finding refiled as MAGIC-046.
|
|
423
|
+
- **FIGHT-082: `do_trip` cluster — four ROM divergences (HIGH).** `src/fight.c:2711-2753`.
|
|
424
|
+
(a) dropped the spurious `skill_level // 20` term from the bash-damage bound
|
|
425
|
+
(ROM `number_range(2, 2 + 2*victim->size)`); (b) added the missing
|
|
426
|
+
OFF_FAST/AFF_HASTE speed modifier (`+10` self / `-20` victim); (c) fixed the
|
|
427
|
+
wait/daze values — success now WAITs the attacker for the skill's raw `beats`
|
|
428
|
+
(24) and `DAZE`s the victim (`2*PULSE_VIOLENCE`) instead of WAITing it, failure
|
|
429
|
+
WAITs `beats*2/3` (16), and self-trip WAITs `2*beats` (48) — all previously a
|
|
430
|
+
flat `PULSE_VIOLENCE`.
|
|
431
|
+
- **FIGHT-081: melee AC modifiers applied at the wrong scale/order in
|
|
432
|
+
`attack_round` (HIGH — every swing).** ROM `one_hit` (`src/fight.c:480-503`)
|
|
433
|
+
divides `GET_AC` by 10 **first**, then applies the `< -15` rescale and the
|
|
434
|
+
`-4/+4/+6` visibility/position modifiers on the /10 scale; the port applied
|
|
435
|
+
them to the raw (×10) AC and divided last, making the modifiers ~10× too weak
|
|
436
|
+
and mis-firing the rescale for nearly every armored character. Extracted
|
|
437
|
+
`_compute_victim_ac` mirroring ROM order, and gated the -4 on
|
|
438
|
+
`not can_see_character(attacker, victim)` (blind/dark/hide/detect-invis aware)
|
|
439
|
+
instead of the victim's INVISIBLE affect. No existing combat test needed
|
|
440
|
+
re-baselining.
|
|
441
|
+
- **GL-045: `obj_update` object-affect fade skipped its RNG draw at level 0
|
|
442
|
+
(RNG desync).** `_tick_object_affects` had the fade-roll operands swapped
|
|
443
|
+
(`level > 0 and number_range(0,4) == 0`), so a level-0 object affect with
|
|
444
|
+
`duration > 0` short-circuited past the draw. ROM
|
|
445
|
+
(`if (number_range(0,4) == 0 && paf->level > 0)`, `src/update.c:933`) consumes
|
|
446
|
+
the roll unconditionally for every `duration>0` affect. The skipped draw
|
|
447
|
+
desynced the shared Mitchell-Moore stream for every downstream consumer in the
|
|
448
|
+
pulse — the object-side twin of the character-side GL-026 fix. Reordered to
|
|
449
|
+
roll first. Test: `tests/test_obj_update_affect_fade_rng.py`.
|
|
450
|
+
- **PICK-003: `do_pick` door immortal-bypass used the wrong threshold and
|
|
451
|
+
skipped the `get_trust` level fallback.** The door branch had
|
|
452
|
+
`is_immortal = trust >= 51` reading raw `char.trust`. ROM gates on
|
|
453
|
+
`!IS_IMMORTAL(ch)` where `IS_IMMORTAL = get_trust(ch) >= LEVEL_IMMORTAL` (=52)
|
|
454
|
+
and `get_trust` falls back to level when trust is unset
|
|
455
|
+
(`src/act_move.c:958,963,973`, `src/merc.h:149,2091`). So (a) a trust-51
|
|
456
|
+
mortal hero wrongly bypassed pickproof/open-door gates, and (b) a level-52
|
|
457
|
+
immortal with trust 0 was wrongly refused ("You failed.") on a pickproof door.
|
|
458
|
+
Fixed to `char.is_immortal()`. Contradicts a stale "immortal bypass FIXED"
|
|
459
|
+
audit claim. Same wrong-constant class as GET-015.
|
|
460
|
+
- **GET-015: `get all <pit>` greed gate treated a level-51 mortal hero as
|
|
461
|
+
immortal.** The pit donation gate hardcoded `char_trust >= 51`, but ROM gates
|
|
462
|
+
on `!IS_IMMORTAL(ch)` where `IS_IMMORTAL = get_trust(ch) >= LEVEL_IMMORTAL`
|
|
463
|
+
and `LEVEL_IMMORTAL = 52` (`src/act_obj.c:320-321`, `src/merc.h:149,2091`).
|
|
464
|
+
Level/trust 51 is `LEVEL_HERO` — the top *mortal* tier — so a max-level mortal
|
|
465
|
+
could empty a donation pit in one command. Fixed to compare `>= LEVEL_IMMORTAL`.
|
|
466
|
+
The prior test encoded the misread (`trust = 51 # ROM: god = 51`) and was
|
|
467
|
+
corrected; added a hero-trust-51 regression.
|
|
468
|
+
- **FIGHT-080 follow-up: AUTOSPLIT output from `get_obj` is now preserved in
|
|
469
|
+
`do_get` output.** ROM `get_obj` (`src/act_obj.c:162-184`) calls `do_split`
|
|
470
|
+
after the "You get ..." money line, so `PLR_AUTOLOOT` over a mixed corpse must
|
|
471
|
+
show both split lines for the actor. Python updated the balances but dropped
|
|
472
|
+
`do_split`'s returned actor lines. The new `death_autoloot_autosplit` C-oracle
|
|
473
|
+
replay caught and locks the fix.
|
|
474
|
+
- **INV-054 DESCRIPTOR-WAIT-BUFFERS-INPUT** — commands typed while a connected
|
|
475
|
+
player is in ROM wait-state recovery are now buffered at the descriptor read
|
|
476
|
+
chokepoint and replayed after recovery clears, matching `src/comm.c:619-623`.
|
|
477
|
+
This removes the Python-only visible `"You are still recovering."` result for
|
|
478
|
+
live `cast magic`/combat-command input during kill/cast lag; the command now
|
|
479
|
+
waits in the session buffer instead of dispatching early into `do_cast`.
|
|
480
|
+
Enforced by
|
|
481
|
+
`tests/test_networking_telnet.py::test_wait_state_buffers_command_until_recovered_per_rom`.
|
|
482
|
+
|
|
10
483
|
## [2.14.211] - 2026-06-22
|
|
11
484
|
|
|
12
485
|
### Added
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.14.
|
|
3
|
+
Version: 2.14.268
|
|
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>
|
|
@@ -59,10 +59,10 @@ Dynamic: license-file
|
|
|
59
59
|
|
|
60
60
|
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
61
61
|
|
|
62
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
63
63
|
[](https://www.python.org/downloads/)
|
|
64
64
|
[](https://opensource.org/licenses/MIT)
|
|
65
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
66
66
|
[](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md)
|
|
67
67
|
[](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md)
|
|
68
68
|
[](tests/integration/)
|
|
@@ -83,7 +83,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
|
|
|
83
83
|
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
84
84
|
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
85
85
|
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
86
|
-
- **📊 Comprehensive Testing**: 6,
|
|
86
|
+
- **📊 Comprehensive Testing**: 6,076 passing tests across unit, integration, and command-registry suites
|
|
87
87
|
- **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
|
|
88
88
|
|
|
89
89
|
## 📦 Installation
|
|
@@ -228,7 +228,7 @@ python -m mud # Start development server
|
|
|
228
228
|
**Stage: parity beta** — feature-complete and playable; parity fidelity is being
|
|
229
229
|
systematically hardened toward ROM-exact behavioral equivalence.
|
|
230
230
|
|
|
231
|
-
- **Version**: 2.14.
|
|
231
|
+
- **Version**: 2.14.268
|
|
232
232
|
- **Playability**: ✅ All 255 ROM commands implemented. Combat, spells, skills,
|
|
233
233
|
movement, shops, mob programs, OLC building, and admin tools work and pass their
|
|
234
234
|
tests. You can run a server and play today.
|
|
@@ -256,7 +256,7 @@ systematically hardened toward ROM-exact behavioral equivalence.
|
|
|
256
256
|
diffed. Any behavioral divergence surfaces mechanically rather than requiring a
|
|
257
257
|
hand-written assertion. Coverage is growing; uncovered surfaces are the remaining
|
|
258
258
|
parity-confidence gap.
|
|
259
|
-
- **Test Suite**: ✅ **6,
|
|
259
|
+
- **Test Suite**: ✅ **6,049 passed, 4 skipped** (full `pytest` run, ~5min parallel).
|
|
260
260
|
Unit, integration, command-registry, and differential-harness layers.
|
|
261
261
|
- **Active focus**: Cross-file invariants and the divergence-class roster (the
|
|
262
262
|
enumeration-of-structural-divergences pass). Recently closed: **divergence-class
|
|
@@ -421,7 +421,7 @@ being hardened gap-by-gap (see **Project Status** above).
|
|
|
421
421
|
|
|
422
422
|
### 📈 Quality Metrics
|
|
423
423
|
|
|
424
|
-
- **Test Suite**: 6,
|
|
424
|
+
- **Test Suite**: 6,076 passing, 4 skipped on the latest full run.
|
|
425
425
|
- **Audit Coverage**: every ROM 2.4b6 gameplay subsystem has a completed audit
|
|
426
426
|
document (combat, skills, spells, movement, communication, world/db, save/load,
|
|
427
427
|
mob programs, 255/255 commands). Audit completion means *reviewed and documented*,
|
|
@@ -1,9 +1,9 @@
|
|
|
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
|
[](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md)
|
|
8
8
|
[](docs/parity/ROM_C_SUBSYSTEM_AUDIT_TRACKER.md)
|
|
9
9
|
[](tests/integration/)
|
|
@@ -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**: 6,
|
|
27
|
+
- **📊 Comprehensive Testing**: 6,076 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
|
|
@@ -169,7 +169,7 @@ python -m mud # Start development server
|
|
|
169
169
|
**Stage: parity beta** — feature-complete and playable; parity fidelity is being
|
|
170
170
|
systematically hardened toward ROM-exact behavioral equivalence.
|
|
171
171
|
|
|
172
|
-
- **Version**: 2.14.
|
|
172
|
+
- **Version**: 2.14.268
|
|
173
173
|
- **Playability**: ✅ All 255 ROM commands implemented. Combat, spells, skills,
|
|
174
174
|
movement, shops, mob programs, OLC building, and admin tools work and pass their
|
|
175
175
|
tests. You can run a server and play today.
|
|
@@ -197,7 +197,7 @@ systematically hardened toward ROM-exact behavioral equivalence.
|
|
|
197
197
|
diffed. Any behavioral divergence surfaces mechanically rather than requiring a
|
|
198
198
|
hand-written assertion. Coverage is growing; uncovered surfaces are the remaining
|
|
199
199
|
parity-confidence gap.
|
|
200
|
-
- **Test Suite**: ✅ **6,
|
|
200
|
+
- **Test Suite**: ✅ **6,049 passed, 4 skipped** (full `pytest` run, ~5min parallel).
|
|
201
201
|
Unit, integration, command-registry, and differential-harness layers.
|
|
202
202
|
- **Active focus**: Cross-file invariants and the divergence-class roster (the
|
|
203
203
|
enumeration-of-structural-divergences pass). Recently closed: **divergence-class
|
|
@@ -362,7 +362,7 @@ being hardened gap-by-gap (see **Project Status** above).
|
|
|
362
362
|
|
|
363
363
|
### 📈 Quality Metrics
|
|
364
364
|
|
|
365
|
-
- **Test Suite**: 6,
|
|
365
|
+
- **Test Suite**: 6,076 passing, 4 skipped on the latest full run.
|
|
366
366
|
- **Audit Coverage**: every ROM 2.4b6 gameplay subsystem has a completed audit
|
|
367
367
|
document (combat, skills, spells, movement, communication, world/db, save/load,
|
|
368
368
|
mob programs, 255/255 commands). Audit completion means *reviewed and documented*,
|
{rom24_quickmud_python-2.14.211 → rom24_quickmud_python-2.14.268}/mud/admin_logging/admin.py
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
-
from datetime import
|
|
3
|
+
from datetime import datetime, timezone
|
|
4
4
|
from pathlib import Path
|
|
5
5
|
from typing import TYPE_CHECKING
|
|
6
6
|
|
|
@@ -100,7 +100,7 @@ def log_admin_command(
|
|
|
100
100
|
"""
|
|
101
101
|
|
|
102
102
|
Path("log").mkdir(exist_ok=True)
|
|
103
|
-
timestamp = datetime.now(
|
|
103
|
+
timestamp = datetime.now(timezone.utc).isoformat().replace("+00:00", "Z")
|
|
104
104
|
sanitized = _sanitize_command_line(command_line)
|
|
105
105
|
if character is not None:
|
|
106
106
|
try:
|
|
@@ -132,7 +132,7 @@ def rotate_admin_log(today: datetime | None = None) -> Path:
|
|
|
132
132
|
active = log_dir / "admin.log"
|
|
133
133
|
if not active.exists():
|
|
134
134
|
return active
|
|
135
|
-
dt = today or datetime.now(
|
|
135
|
+
dt = today or datetime.now(timezone.utc)
|
|
136
136
|
dated = log_dir / f"admin-{dt.strftime('%Y%m%d')}.log"
|
|
137
137
|
# Avoid clobbering: if dated file exists, append current log and remove active
|
|
138
138
|
if dated.exists():
|