rom24-quickmud-python 2.5.1__tar.gz → 2.5.3__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.5.1 → rom24_quickmud_python-2.5.3}/CHANGELOG.md +41 -0
- {rom24_quickmud_python-2.5.1/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.5.3}/PKG-INFO +7 -7
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/README.md +6 -6
- rom24_quickmud_python-2.5.3/data/time.json +7 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/ai/__init__.py +14 -8
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/characters/follow.py +15 -1
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/death.py +22 -26
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/engine.py +57 -37
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/admin_commands.py +2 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/advancement.py +10 -2
- rom24_quickmud_python-2.5.3/mud/commands/affects.py +149 -0
- rom24_quickmud_python-2.5.3/mud/commands/character.py +207 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/combat.py +10 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/communication.py +15 -4
- rom24_quickmud_python-2.5.3/mud/commands/compare.py +111 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/equipment.py +153 -30
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_commands.py +92 -86
- rom24_quickmud_python-2.5.3/mud/commands/info.py +591 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/info_extended.py +127 -67
- rom24_quickmud_python-2.5.3/mud/commands/inspection.py +279 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/inventory.py +169 -9
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/obj_manipulation.py +39 -3
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/player_info.py +42 -40
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/session.py +166 -24
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/shop.py +3 -24
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/config.py +18 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/game_loop.py +183 -11
- rom24_quickmud_python-2.5.3/mud/handler.py +1424 -0
- rom24_quickmud_python-2.5.3/mud/magic/effects.py +775 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/mob_cmds.py +54 -10
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/character.py +178 -2
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/constants.py +8 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/room.py +77 -7
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/persistence.py +327 -1
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/handlers.py +0 -8
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/templates.py +73 -4
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/utils/rng_mm.py +15 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/utils/text.py +50 -12
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/char_find.py +33 -35
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/look.py +156 -49
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/obj_find.py +60 -40
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/vision.py +17 -7
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/world_state.py +13 -2
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/pyproject.toml +1 -1
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3/rom24_quickmud_python.egg-info}/PKG-INFO +7 -7
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/SOURCES.txt +48 -3
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/conftest.py +10 -8
- rom24_quickmud_python-2.5.3/tests/integration/test_admin_commands.py +458 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_auto_flags.py +487 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_channels.py +209 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_character_advancement.py +475 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_character_commands.py +276 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_character_creation_runtime.py +258 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_communication_enhancement.py +243 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_compare_critical_gaps.py +325 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_config_commands.py +315 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_death_and_corpses.py +443 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_affects.py +186 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_consider_command.py +261 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_equipment.py +281 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_examine_command.py +362 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_exits_command.py +413 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_help_command.py +362 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_inventory.py +352 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_password_command.py +262 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_practice_command.py +312 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_time_command.py +220 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_weather_command.py +153 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_where_command.py +329 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_who_command.py +366 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_do_worth.py +137 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_environmental_effects.py +467 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_equipment_ac_calculations.py +400 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_equipment_system.py +657 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_group_combat.py +676 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_info_display.py +328 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_invisibility_combat.py +186 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_mob_ai.py +545 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_money_objects.py +415 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_olc_builders.py +366 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_pet_persistence.py +515 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_player_config.py +265 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_room_light_tracking.py +262 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_room_safety_features.py +261 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_save_load_parity.py +508 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_skills_integration.py +449 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_skills_integration_combat_specials.py +317 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_socials.py +262 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_spell_affects_persistence.py +717 -0
- rom24_quickmud_python-2.5.3/tests/integration/test_weather_time.py +525 -0
- rom24_quickmud_python-2.5.3/tests/test_act_comm_rom_parity.py +172 -0
- rom24_quickmud_python-2.5.3/tests/test_act_enter_rom_parity.py +154 -0
- rom24_quickmud_python-2.5.3/tests/test_act_wiz_rom_parity.py +193 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_agent_interface.py +20 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_death.py +8 -4
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_encumbrance.py +192 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_costs.py +5 -1
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills.py +5 -8
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_world.py +9 -0
- rom24_quickmud_python-2.5.1/data/time.json +0 -7
- rom24_quickmud_python-2.5.1/mud/commands/affects.py +0 -98
- rom24_quickmud_python-2.5.1/mud/commands/character.py +0 -161
- rom24_quickmud_python-2.5.1/mud/commands/compare.py +0 -144
- rom24_quickmud_python-2.5.1/mud/commands/info.py +0 -352
- rom24_quickmud_python-2.5.1/mud/commands/inspection.py +0 -141
- rom24_quickmud_python-2.5.1/mud/magic/effects.py +0 -86
- rom24_quickmud_python-2.5.1/tests/test_admin_commands.py +0 -610
- rom24_quickmud_python-2.5.1/tests/test_socials.py +0 -47
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/LICENSE +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/MANIFEST.in +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/air.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/arachnos.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/area.lst +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/astral.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/canyon.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/catacomb.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/chapel.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/daycare.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/draconia.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/dream.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/drow.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/dwarven.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/dylan.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/eastern.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/galaxy.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/gnome.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/grave.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/group.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/grove.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/haon.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/help.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/hitower.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/hood.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/immort.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/limbo.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mahntor.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/marsh.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mega1.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/midennir.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/midgaard.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mirror.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/mobfact.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/moria.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/newthalos.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/nirvana.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/ofcol.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/ofcol2.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/olympus.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/plains.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/proto.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/pyramid.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/quifael.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/redferne.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/rom.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/school.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/sewer.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/shire.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/smurf.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/social.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/thalos.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/tohell.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/trollden.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/valley.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/area/wyvern.are +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/air.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/arachnos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/area.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/area_0.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/astral.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/canyon.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/catacomb.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/chapel.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/daycare.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/draconia.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/dream.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/drow.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/dwarven.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/eastern.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/galaxy.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/gnome.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/group.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/grove.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/haon.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/help.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/hitower.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/hood.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/immort.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/limbo.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mahntor.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/marsh.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mega1.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/midennir.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/midgaard.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mirror.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/mobfact.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/moria.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/newthalos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/nirvana.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/ofcol.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/ofcol2.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/olympus.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/plains.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/pyramid.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/quifael.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/redferne.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/rom.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/school.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/sewer.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/shire.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/smurf.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/social.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/thalos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/tohell.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/trollden.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/valley.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas/wyvern.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/arachnos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/area.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/area_0.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/astral_plane.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/catacombs.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/chapel.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/day_care.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/dragon_tower.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/drow_city.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/dwarven_kingdom.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/dylan's_area.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/elemental_canyon.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/galaxy.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/gangland.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/gnome_village.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/graveyard.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/group.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/haon_dor.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/help.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/high_tower.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/holy_grove.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/in_the_air.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/limbo.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/machine_dreams.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mahn-tor.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/marsh.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mega_city_one.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/miden'nir.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/midgaard.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mob_factory.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/moria.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/mud_school.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/new_ofcol.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/new_thalos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/nirvana.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/ofcol.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/old_thalos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/olympus.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/plains.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/pyramid.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/quifael's.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/redferne's.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/rom.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/sands_of_sorrow.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/sewers.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/shire.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/smurfville.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/social.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/thalos.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/tohell.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/troll_den.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/valhalla.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/valley_of_the_elves.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/areas_backup/wyvern's_tower.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/help.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/attacker.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/eddol.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/hero.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/sleeper.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/players/trouble.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/shops.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/skills.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/data/socials.json +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/examples.doc +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/hacker.doc +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/mobprog.doc +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/MPDocs/new_readme.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/QuickMUD.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/act.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/area.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/c_module_inventory.md +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/c_python_cross_reference.md +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/c_to_python_file_coverage.md +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/class.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/command.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/contrib.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/drool.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/hacker.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/license.doc +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/license.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/memory.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/new.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/pfile.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/port.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/pr_queue.md +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/python_architecture.md +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/python_module_inventory.md +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/security.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/sites.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/skill.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/sky.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/trad.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/vnum.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/doc/~$Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/__main__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/account/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/account/account_manager.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/account/account_service.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/admin_logging/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/admin_logging/admin.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/admin_logging/agent_trace.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/advancement.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/affects/engine.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/affects/saves.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/agent/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/agent/agent_protocol.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/agent/character_agent.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/ai/aggressive.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/characters/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/characters/conditions.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/assist.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/kill_table.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/messages.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/combat/safety.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/alias_cmds.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/auto_settings.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/build.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/channels.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/consider.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/consumption.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/decorators.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/dispatcher.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/doors.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/feedback.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/give.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/group_commands.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/healer.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/help.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imc.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_admin.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_display.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_emote.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_load.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_olc.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_punish.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_search.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_server.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/imm_set.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/liquids.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/magic_items.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/misc_info.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/misc_player.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/mobprog_tools.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/movement.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/murder.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/notes.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/player_config.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/position.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/remaining_rom.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/socials.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/thief_skills.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/commands/typo_guards.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/init.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/migrate_from_files.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/migrations.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/models.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/seed.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/db/session.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/devtools/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/devtools/agent_demo.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/entrypoint.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/game_tick_scheduler.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/groups/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/groups/xp.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/commands.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/network.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/imc/protocol.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/area_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/base_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/help_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/json_area_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/json_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/mob_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/mobprog_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/obj_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/reset_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/room_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/shop_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/social_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/loaders/specials_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/logging.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/magic/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/math/c_compat.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/mobprog.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/area.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/area_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/board.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/board_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/character_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/clans.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/classes.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/conversion.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/help.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/help_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/json_io.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/mob.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/note.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/note_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/obj.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/object.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/object_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/player_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/races.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/room_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/shop.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/shop_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/skill.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/skill_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/social.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/models/social_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/music/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/ansi.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/connection.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/protocol.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/session.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/ssh_server.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/net/telnet_server.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/network/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/network/websocket_server.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/network/websocket_session.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/notes.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/olc/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/olc/save.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/registry.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/rom_api.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_are_to_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_help_are_to_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_player_to_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_shops_to_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_skills_to_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/convert_social_are_to_json.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/scripts/load_test_data.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/security/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/security/bans.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/security/hash_utils.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/server.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/groups.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/metadata.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/registry.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/skills/say_spell.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/mob_spawner.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/obj_spawner.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spawning/reset_handler.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/spec_funs.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/time.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/utils/act.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/wiznet.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/__init__.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/linking.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/mud/world/movement.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/requires.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/setup.cfg +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/setup.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/conftest.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/helpers.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/helpers_player.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_architectural_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_auto_sequences.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_mobprog_scenarios.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_new_player_workflow.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_pilot_integration.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_player_npc_interaction.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/integration/test_spell_casting.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_account_auth.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_act_info_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_act_obj_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_advancement.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_affects.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_alias_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_ansi.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_are_conversion.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_counts.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_exits.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_loader.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_area_specials.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_bans.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_boards.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_builder_hedit.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_builder_stat_commands.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_building.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_char_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_assist.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_damage_types.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_defenses_prob.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_messages.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_position_damage.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_skills.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_state.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_surrender.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_thac0.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_combat_thac0_engine.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_command_abbrev.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_command_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_commands.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_communication.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_connection_motd.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_convert_are_to_json_cli.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_critical_function_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_damage_reduction.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_damage_reduction_integration.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_db_resets_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_db_seed.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_defense_flags.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_enter_portal.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_fighting_state.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_game_loop.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_game_loop_order.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_game_loop_wait_daze.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_golden_reference.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_handler_affects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_hash_utils.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_healer.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_healer_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_healer_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_help_conversion.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_help_system.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_imc.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_inventory_persistence.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_json_io.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_json_model_instantiation.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_json_room_fields.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_load_midgaard.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_logging_admin.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_logging_rotation.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mob_act_flags.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mob_damage_modifiers.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog_commands.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog_helpers.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_mobprog_triggers.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_charm.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_doors.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_followers.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_mobprog.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_npc.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_portals.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_privacy.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_movement_visibility.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_music.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_nanny_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_networking_telnet.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_obj_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_aedit.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_medit.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_oedit.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_olc_save.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_passive_skills_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_persistence.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_affect_flags.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_auto_settings.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_combat_attributes.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_conditions.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_creation.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_equipment.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_flags.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_info_commands.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_mechanics.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_prompt.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_resistance_flags.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_save_format.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_skills_spells.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_stats.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_title_description.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_player_wimpy.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_practice.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_reset_levels.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_resets.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_rng_and_ccompat.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_rng_dice.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_rom_api.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_runtime_models.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_saves_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_say_spell.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_scan_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_schema_validation.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_scripted_session.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_shop_conversion.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_shops.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_combat_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_conversion.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_envenom_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_haggle_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_hide_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_peek_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_pick_lock_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_recall_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_registry.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skill_steal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_buffs.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_combat.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_conjuration.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_damage.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_debuffs.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_detection.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_healing.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_identify.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_learned.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_mass.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_misc.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_skills_transport.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_social_conversion.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_social_placeholders.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spawning.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spec_fun_behaviors.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spec_funs.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spec_funs_extra.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_specials_loader_ext.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_area_effects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_cancellation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_charm_control_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_creation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_damage_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_detection_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_enchantment_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_farsight_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_final_nine_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_harm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_heat_metal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_information_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_mass_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_priority_high_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spell_travel_portal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spells_basic.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_spells_damage.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_state_transitions.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_telnet_server.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_time_daynight.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_time_persistence.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_utility_spells_parity.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_weapon_damage.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_weapon_special_attacks.py +0 -0
- {rom24_quickmud_python-2.5.1 → rom24_quickmud_python-2.5.3}/tests/test_wiznet.py +0 -0
|
@@ -7,6 +7,47 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [2.5.2] - 2025-12-30
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
|
|
14
|
+
- **Command Integration ROM Parity Tests** (70 new tests):
|
|
15
|
+
- `tests/test_act_comm_rom_parity.py` - 23 tests for communication commands (ROM `act_comm.c`)
|
|
16
|
+
- Channel status display (`do_channels`)
|
|
17
|
+
- Communication flag toggles (`do_deaf`, `do_quiet`, `do_afk`)
|
|
18
|
+
- Channel blocking logic (QUIET, NOCHANNELS flags)
|
|
19
|
+
- Delete command NPC blocking
|
|
20
|
+
- Replay command behaviors
|
|
21
|
+
- `tests/test_act_enter_rom_parity.py` - 22 tests for portal mechanics (ROM `act_enter.c`)
|
|
22
|
+
- Random room selection with flag exclusions (`get_random_room`)
|
|
23
|
+
- Portal entry mechanics (closed, curse, trust checks)
|
|
24
|
+
- Portal charge system and flag handling (RANDOM, BUGGY, GOWITH)
|
|
25
|
+
- Follower cascading through portals
|
|
26
|
+
- `tests/test_act_wiz_rom_parity.py` - 25 tests for wiznet/admin commands (ROM `act_wiz.c`)
|
|
27
|
+
- Wiznet channel toggle and flag management
|
|
28
|
+
- Wiznet broadcast filtering (WIZ_ON, flag filters, min_level)
|
|
29
|
+
- Admin commands (freeze, transfer, goto, trust)
|
|
30
|
+
- Trust level enforcement
|
|
31
|
+
|
|
32
|
+
- **Documentation**:
|
|
33
|
+
- `COMMAND_INTEGRATION_PARITY_REPORT.md` - Comprehensive command integration test completion report
|
|
34
|
+
- Detailed ROM C to Python mapping for all 70 tests
|
|
35
|
+
- Test philosophy and design decisions
|
|
36
|
+
- ROM C source analysis summary
|
|
37
|
+
- Quality metrics and coverage matrix
|
|
38
|
+
|
|
39
|
+
### Changed
|
|
40
|
+
|
|
41
|
+
- **ROM 2.4b6 Parity Certification Updates**:
|
|
42
|
+
- Updated total ROM parity test count: 735 → 805 tests (+70)
|
|
43
|
+
- Updated total test count: 2507 → 2577 tests (+70)
|
|
44
|
+
- Added Command Integration Tests section to certification document
|
|
45
|
+
- Updated ROM C source verification to include `act_comm.c`, `act_enter.c`, `act_wiz.c`
|
|
46
|
+
|
|
47
|
+
- **Test Coverage**:
|
|
48
|
+
- Increased command integration test coverage (communication, portal, wiznet modules)
|
|
49
|
+
- Total ROM parity tests: 805 (127 P0/P1/P2 + 608 combat/spells/skills + 70 command integration)
|
|
50
|
+
|
|
10
51
|
## [2.5.1] - 2025-12-30
|
|
11
52
|
|
|
12
53
|
### Added
|
{rom24_quickmud_python-2.5.1/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.5.3}/PKG-INFO
RENAMED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.5.
|
|
3
|
+
Version: 2.5.3
|
|
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>
|
|
@@ -56,10 +56,10 @@ Dynamic: license-file
|
|
|
56
56
|
[](https://github.com/avinson/rom24-quickmud)
|
|
57
57
|
[](https://www.python.org/downloads/)
|
|
58
58
|
[](https://opensource.org/licenses/MIT)
|
|
59
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
60
60
|
[](ROM_2.4B6_PARITY_CERTIFICATION.md)
|
|
61
61
|
[](FUNCTION_MAPPING.md)
|
|
62
|
-
[](tests/integration/)
|
|
63
63
|
|
|
64
64
|
**QuickMUD is a modern Python port of the legendary ROM 2.4b6 MUD engine**, derived from ROM 2.4b6, Merc 2.1 and DikuMUD. This is a complete rewrite that brings the classic text-based MMORPG experience to modern Python with async networking, JSON world data, and **100% ROM 2.4b behavioral parity**.
|
|
65
65
|
|
|
@@ -77,7 +77,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
|
|
|
77
77
|
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
78
78
|
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
79
79
|
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
80
|
-
- **📊 Comprehensive Testing**:
|
|
80
|
+
- **📊 Comprehensive Testing**: 1435+ tests with 688/701 integration tests passing (98.1%)
|
|
81
81
|
- **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
|
|
82
82
|
|
|
83
83
|
## 📦 Installation
|
|
@@ -149,7 +149,7 @@ pip install -e .[dev]
|
|
|
149
149
|
|
|
150
150
|
```bash
|
|
151
151
|
pytest # Run all tests (~16 seconds)
|
|
152
|
-
pytest tests/integration/ -v # Run integration tests (
|
|
152
|
+
pytest tests/integration/ -v # Run integration tests (688/701 passing)
|
|
153
153
|
```
|
|
154
154
|
|
|
155
155
|
### Development Server
|
|
@@ -163,8 +163,8 @@ python -m mud # Start development server
|
|
|
163
163
|
- **Version**: 2.5.0 (Production Ready - ROM 2.4b6 Parity Certified)
|
|
164
164
|
- **ROM 2.4b Parity**: ✅ **100% CERTIFIED** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md))
|
|
165
165
|
- **ROM C Function Coverage**: 96.1% (716/745 functions mapped)
|
|
166
|
-
- **Test Coverage**:
|
|
167
|
-
- **Performance**: Full test suite completes in ~
|
|
166
|
+
- **Test Coverage**: 1435/1436 tests passing (99.93%), 688/701 integration tests (98.1%)
|
|
167
|
+
- **Performance**: Full test suite completes in ~75 seconds
|
|
168
168
|
- **Compatibility**: Python 3.10+, cross-platform
|
|
169
169
|
|
|
170
170
|
## 🏛️ Architecture
|
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
[](https://github.com/avinson/rom24-quickmud)
|
|
4
4
|
[](https://www.python.org/downloads/)
|
|
5
5
|
[](https://opensource.org/licenses/MIT)
|
|
6
|
-
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
7
7
|
[](ROM_2.4B6_PARITY_CERTIFICATION.md)
|
|
8
8
|
[](FUNCTION_MAPPING.md)
|
|
9
|
-
[](tests/integration/)
|
|
10
10
|
|
|
11
11
|
**QuickMUD is a modern Python port of the legendary ROM 2.4b6 MUD engine**, derived from ROM 2.4b6, Merc 2.1 and DikuMUD. This is a complete rewrite that brings the classic text-based MMORPG experience to modern Python with async networking, JSON world data, and **100% ROM 2.4b behavioral parity**.
|
|
12
12
|
|
|
@@ -24,7 +24,7 @@ A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-base
|
|
|
24
24
|
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
25
25
|
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
26
26
|
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
27
|
-
- **📊 Comprehensive Testing**:
|
|
27
|
+
- **📊 Comprehensive Testing**: 1435+ tests with 688/701 integration tests passing (98.1%)
|
|
28
28
|
- **🔧 ROM C-Compatible API**: Public API wrappers for external tools and scripts (27 functions)
|
|
29
29
|
|
|
30
30
|
## 📦 Installation
|
|
@@ -96,7 +96,7 @@ pip install -e .[dev]
|
|
|
96
96
|
|
|
97
97
|
```bash
|
|
98
98
|
pytest # Run all tests (~16 seconds)
|
|
99
|
-
pytest tests/integration/ -v # Run integration tests (
|
|
99
|
+
pytest tests/integration/ -v # Run integration tests (688/701 passing)
|
|
100
100
|
```
|
|
101
101
|
|
|
102
102
|
### Development Server
|
|
@@ -110,8 +110,8 @@ python -m mud # Start development server
|
|
|
110
110
|
- **Version**: 2.5.0 (Production Ready - ROM 2.4b6 Parity Certified)
|
|
111
111
|
- **ROM 2.4b Parity**: ✅ **100% CERTIFIED** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md))
|
|
112
112
|
- **ROM C Function Coverage**: 96.1% (716/745 functions mapped)
|
|
113
|
-
- **Test Coverage**:
|
|
114
|
-
- **Performance**: Full test suite completes in ~
|
|
113
|
+
- **Test Coverage**: 1435/1436 tests passing (99.93%), 688/701 integration tests (98.1%)
|
|
114
|
+
- **Performance**: Full test suite completes in ~75 seconds
|
|
115
115
|
- **Compatibility**: Python 3.10+, cross-platform
|
|
116
116
|
|
|
117
117
|
## 🏛️ Architecture
|
|
@@ -16,7 +16,8 @@ from mud.models.constants import (
|
|
|
16
16
|
EX_CLOSED,
|
|
17
17
|
)
|
|
18
18
|
from mud.models.obj import ObjectData
|
|
19
|
-
from mud.models.room import Exit, Room
|
|
19
|
+
from mud.models.room import Exit, Room
|
|
20
|
+
from mud.registry import room_registry
|
|
20
21
|
from mud.utils import rng_mm
|
|
21
22
|
from mud.world.movement import move_character
|
|
22
23
|
|
|
@@ -209,14 +210,20 @@ def _room_contents(room: Room | None) -> Iterable[ObjectData]:
|
|
|
209
210
|
|
|
210
211
|
|
|
211
212
|
def _take_object(mob: Character, obj: ObjectData) -> None:
|
|
212
|
-
room = getattr(obj, "in_room", None) or getattr(mob, "room", None)
|
|
213
|
+
room = getattr(obj, "in_room", None) or getattr(obj, "location", None) or getattr(mob, "room", None)
|
|
213
214
|
if room is not None:
|
|
214
215
|
contents = getattr(room, "contents", None)
|
|
215
216
|
if isinstance(contents, list) and obj in contents:
|
|
216
217
|
contents.remove(obj)
|
|
217
|
-
|
|
218
|
-
obj
|
|
219
|
-
|
|
218
|
+
|
|
219
|
+
if hasattr(obj, "in_room"):
|
|
220
|
+
obj.in_room = None
|
|
221
|
+
if hasattr(obj, "location"):
|
|
222
|
+
obj.location = None
|
|
223
|
+
if hasattr(obj, "in_obj"):
|
|
224
|
+
obj.in_obj = None
|
|
225
|
+
if hasattr(obj, "carried_by"):
|
|
226
|
+
obj.carried_by = mob
|
|
220
227
|
|
|
221
228
|
inventory = getattr(mob, "inventory", None)
|
|
222
229
|
if isinstance(inventory, list) and obj not in inventory:
|
|
@@ -280,9 +287,8 @@ def _maybe_wander(mob: Character, room: Room) -> None:
|
|
|
280
287
|
if rng_mm.number_bits(3) != 0:
|
|
281
288
|
return
|
|
282
289
|
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
return
|
|
290
|
+
# ROM C mob_cmds.c:1274 uses number_door() for random direction
|
|
291
|
+
door = rng_mm.number_door()
|
|
286
292
|
|
|
287
293
|
exit_obj = _valid_exit(room, door)
|
|
288
294
|
if exit_obj is None:
|
|
@@ -67,4 +67,18 @@ def stop_follower(follower: "Character") -> None:
|
|
|
67
67
|
follower.leader = None
|
|
68
68
|
|
|
69
69
|
|
|
70
|
-
|
|
70
|
+
def die_follower(char: "Character") -> None:
|
|
71
|
+
"""Stop all followers when character dies.
|
|
72
|
+
|
|
73
|
+
ROM Reference: src/handler.c die_follower
|
|
74
|
+
Mirrors ROM behavior: when character dies, all their followers stop following.
|
|
75
|
+
"""
|
|
76
|
+
from mud.models.character import character_registry
|
|
77
|
+
|
|
78
|
+
for follower in list(character_registry):
|
|
79
|
+
master = getattr(follower, "master", None)
|
|
80
|
+
if master is char:
|
|
81
|
+
stop_follower(follower)
|
|
82
|
+
|
|
83
|
+
|
|
84
|
+
__all__ = ["add_follower", "stop_follower", "die_follower"]
|
|
@@ -145,7 +145,9 @@ def _is_floating_slot(slot: str | None, obj: Object) -> bool:
|
|
|
145
145
|
|
|
146
146
|
|
|
147
147
|
def _format_corpse_labels(corpse: Object, name: str) -> None:
|
|
148
|
-
short_template = getattr(corpse.prototype, "short_descr", None) or getattr(
|
|
148
|
+
short_template = getattr(corpse.prototype, "short_descr", None) or getattr(
|
|
149
|
+
corpse, "short_descr", "the corpse of %s"
|
|
150
|
+
)
|
|
149
151
|
desc_template = getattr(corpse.prototype, "description", None) or getattr(
|
|
150
152
|
corpse, "description", "The corpse of %s is lying here."
|
|
151
153
|
)
|
|
@@ -216,11 +218,7 @@ def _broadcast_neighbor_cry(victim: Character) -> None:
|
|
|
216
218
|
if room is None:
|
|
217
219
|
return
|
|
218
220
|
|
|
219
|
-
message = (
|
|
220
|
-
"You hear something's death cry."
|
|
221
|
-
if getattr(victim, "is_npc", False)
|
|
222
|
-
else "You hear someone's death cry."
|
|
223
|
-
)
|
|
221
|
+
message = "You hear something's death cry." if getattr(victim, "is_npc", False) else "You hear someone's death cry."
|
|
224
222
|
|
|
225
223
|
for exit_data in getattr(room, "exits", []) or []:
|
|
226
224
|
if exit_data is None:
|
|
@@ -341,7 +339,7 @@ def death_cry(victim: Character) -> None:
|
|
|
341
339
|
def _fallback_corpse(vnum: int, *, item_type: ItemType) -> Object:
|
|
342
340
|
"""Return a minimal corpse object when the real prototype is missing."""
|
|
343
341
|
|
|
344
|
-
proto = ObjIndex(vnum=vnum, short_descr="
|
|
342
|
+
proto = ObjIndex(vnum=vnum, short_descr="the corpse of %s", description="The corpse of %s is lying here.")
|
|
345
343
|
proto.item_type = int(item_type)
|
|
346
344
|
corpse = Object(instance_id=None, prototype=proto)
|
|
347
345
|
corpse.item_type = int(item_type)
|
|
@@ -368,19 +366,6 @@ def _strip_inventory(victim: Character) -> list[tuple[Object, bool]]:
|
|
|
368
366
|
return items
|
|
369
367
|
|
|
370
368
|
|
|
371
|
-
def _set_corpse_coins(corpse: Object, gold: int, silver: int) -> None:
|
|
372
|
-
"""Persist coin totals on the corpse and mirror into ``value[0:2]``."""
|
|
373
|
-
|
|
374
|
-
corpse.gold = gold
|
|
375
|
-
corpse.silver = silver
|
|
376
|
-
values = list(getattr(corpse, "value", []) or [])
|
|
377
|
-
while len(values) < 2:
|
|
378
|
-
values.append(0)
|
|
379
|
-
values[0] = gold
|
|
380
|
-
values[1] = silver
|
|
381
|
-
corpse.value = values
|
|
382
|
-
|
|
383
|
-
|
|
384
369
|
def _handle_corpse_item(
|
|
385
370
|
corpse: Object,
|
|
386
371
|
room,
|
|
@@ -445,9 +430,18 @@ def make_corpse(victim: Character) -> Object | None:
|
|
|
445
430
|
|
|
446
431
|
gold = max(0, int(getattr(victim, "gold", 0) or 0))
|
|
447
432
|
silver = max(0, int(getattr(victim, "silver", 0) or 0))
|
|
448
|
-
|
|
449
|
-
|
|
450
|
-
|
|
433
|
+
|
|
434
|
+
# ROM C fight.c:1473-1478 - Create money object inside corpse
|
|
435
|
+
if gold > 0 or silver > 0:
|
|
436
|
+
from mud.handler import create_money
|
|
437
|
+
|
|
438
|
+
money_obj = create_money(gold, silver)
|
|
439
|
+
if money_obj:
|
|
440
|
+
corpse.contained_items.append(money_obj)
|
|
441
|
+
money_obj.location = None # Inside corpse, not in room
|
|
442
|
+
|
|
443
|
+
victim.gold = 0
|
|
444
|
+
victim.silver = 0
|
|
451
445
|
|
|
452
446
|
if not is_npc:
|
|
453
447
|
_clear_player_flag(victim, PlayerFlag.CANLOOT)
|
|
@@ -557,16 +551,18 @@ def raw_kill(victim: Character) -> Object | None:
|
|
|
557
551
|
"""Handle character death by creating a corpse and removing the victim."""
|
|
558
552
|
|
|
559
553
|
from mud.combat.engine import stop_fighting as _stop_fighting
|
|
560
|
-
|
|
554
|
+
from mud.characters.follow import die_follower
|
|
555
|
+
|
|
561
556
|
# Trigger death mobprog handled in apply_damage before raw_kill
|
|
562
557
|
# ROM Reference: src/fight.c:1136-1180 (mp_death_trigger called before raw_kill)
|
|
563
|
-
|
|
558
|
+
|
|
559
|
+
_nuke_pets(victim, room=getattr(victim, "room", None))
|
|
560
|
+
die_follower(victim)
|
|
564
561
|
_stop_fighting(victim, True)
|
|
565
562
|
death_cry(victim)
|
|
566
563
|
corpse = make_corpse(victim)
|
|
567
564
|
|
|
568
565
|
room = getattr(victim, "room", None)
|
|
569
|
-
_nuke_pets(victim, room)
|
|
570
566
|
if room is not None:
|
|
571
567
|
room.remove_character(victim)
|
|
572
568
|
|
|
@@ -499,6 +499,20 @@ def apply_damage(
|
|
|
499
499
|
if victim.position == Position.DEAD:
|
|
500
500
|
return "Already dead."
|
|
501
501
|
|
|
502
|
+
# Set up fighting state BEFORE defense checks (ROM parity: src/fight.c:damage sets fighting before parry/dodge)
|
|
503
|
+
if victim != attacker:
|
|
504
|
+
if victim.position > Position.STUNNED:
|
|
505
|
+
if victim.fighting is None:
|
|
506
|
+
set_fighting(victim, attacker)
|
|
507
|
+
if getattr(victim, "is_npc", False):
|
|
508
|
+
mobprog.mp_kill_trigger(victim, attacker)
|
|
509
|
+
if getattr(victim, "timer", 0) <= 4:
|
|
510
|
+
victim.position = Position.FIGHTING
|
|
511
|
+
|
|
512
|
+
if victim.position > Position.STUNNED:
|
|
513
|
+
if attacker.fighting is None:
|
|
514
|
+
set_fighting(attacker, victim)
|
|
515
|
+
|
|
502
516
|
# Check for parry, dodge, and shield block following C src/fight.c:damage() order
|
|
503
517
|
# These are checked AFTER hit determination but BEFORE damage application
|
|
504
518
|
# Order is critical: shield_block → parry → dodge (per ROM C src/fight.c:one_hit)
|
|
@@ -533,23 +547,6 @@ def apply_damage(
|
|
|
533
547
|
message_bundle = dam_message(attacker, victim, damage, dt, immune)
|
|
534
548
|
_dispatch_damage_messages(attacker, victim, message_bundle)
|
|
535
549
|
|
|
536
|
-
# Set up fighting state if not already fighting
|
|
537
|
-
if victim != attacker:
|
|
538
|
-
# Victim starts fighting back if able
|
|
539
|
-
if victim.position > Position.STUNNED:
|
|
540
|
-
if victim.fighting is None:
|
|
541
|
-
set_fighting(victim, attacker)
|
|
542
|
-
if getattr(victim, "is_npc", False):
|
|
543
|
-
mobprog.mp_kill_trigger(victim, attacker)
|
|
544
|
-
# Update victim to fighting position if timer allows
|
|
545
|
-
if getattr(victim, "timer", 0) <= 4:
|
|
546
|
-
victim.position = Position.FIGHTING
|
|
547
|
-
|
|
548
|
-
# Attacker starts fighting if not already
|
|
549
|
-
if victim.position > Position.STUNNED:
|
|
550
|
-
if attacker.fighting is None:
|
|
551
|
-
set_fighting(attacker, victim)
|
|
552
|
-
|
|
553
550
|
if damage <= 0:
|
|
554
551
|
if message_bundle and message_bundle.attacker:
|
|
555
552
|
return message_bundle.attacker
|
|
@@ -752,30 +749,53 @@ def _object_has_wear_flag(obj, flag: WearFlag) -> bool:
|
|
|
752
749
|
|
|
753
750
|
|
|
754
751
|
def _transfer_corpse_coins(attacker: Character, corpse) -> bool:
|
|
755
|
-
"""
|
|
752
|
+
"""Extract gold/silver from money objects and add to attacker's purse.
|
|
756
753
|
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
|
|
764
|
-
|
|
754
|
+
ROM Reference: src/fight.c auto_loot handles money extraction.
|
|
755
|
+
QuickMUD uses actual money objects (ItemType.MONEY) instead of corpse attributes.
|
|
756
|
+
Money objects may already be in attacker's inventory if AUTOLOOT moved them.
|
|
757
|
+
"""
|
|
758
|
+
from mud.models.constants import ItemType
|
|
759
|
+
|
|
760
|
+
contained = list(getattr(corpse, "contained_items", []) or [])
|
|
761
|
+
attacker_inv = list(getattr(attacker, "inventory", []) or [])
|
|
765
762
|
|
|
766
|
-
|
|
763
|
+
money_in_corpse = [obj for obj in contained if getattr(obj, "item_type", None) == int(ItemType.MONEY)]
|
|
764
|
+
money_in_inventory = [obj for obj in attacker_inv if getattr(obj, "item_type", None) == int(ItemType.MONEY)]
|
|
765
|
+
|
|
766
|
+
all_money_objects = money_in_corpse + money_in_inventory
|
|
767
|
+
|
|
768
|
+
if not all_money_objects:
|
|
767
769
|
return False
|
|
768
770
|
|
|
769
|
-
|
|
770
|
-
|
|
771
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
777
|
-
|
|
778
|
-
|
|
771
|
+
total_gold = 0
|
|
772
|
+
total_silver = 0
|
|
773
|
+
|
|
774
|
+
for money_obj in all_money_objects:
|
|
775
|
+
values = list(getattr(money_obj, "value", [0, 0]) or [0, 0])
|
|
776
|
+
while len(values) < 2:
|
|
777
|
+
values.append(0)
|
|
778
|
+
|
|
779
|
+
silver = int(values[0] or 0)
|
|
780
|
+
gold = int(values[1] or 0)
|
|
781
|
+
|
|
782
|
+
total_silver += silver
|
|
783
|
+
total_gold += gold
|
|
784
|
+
|
|
785
|
+
if money_obj in money_in_corpse:
|
|
786
|
+
try:
|
|
787
|
+
corpse.contained_items.remove(money_obj)
|
|
788
|
+
except (AttributeError, ValueError):
|
|
789
|
+
pass
|
|
790
|
+
else:
|
|
791
|
+
try:
|
|
792
|
+
attacker.remove_object(money_obj)
|
|
793
|
+
except (AttributeError, ValueError):
|
|
794
|
+
pass
|
|
795
|
+
|
|
796
|
+
attacker.gold = int(getattr(attacker, "gold", 0) or 0) + total_gold
|
|
797
|
+
attacker.silver = int(getattr(attacker, "silver", 0) or 0) + total_silver
|
|
798
|
+
|
|
779
799
|
return True
|
|
780
800
|
|
|
781
801
|
|
|
@@ -34,6 +34,8 @@ def cmd_who(char: Character, args: str) -> str:
|
|
|
34
34
|
|
|
35
35
|
|
|
36
36
|
def cmd_teleport(char: Character, args: str) -> str:
|
|
37
|
+
if char.level < 52:
|
|
38
|
+
return "You don't have permission to use this command."
|
|
37
39
|
if not args.isdigit() or int(args) not in room_registry:
|
|
38
40
|
return "Invalid room."
|
|
39
41
|
target = room_registry[int(args)]
|
|
@@ -188,9 +188,17 @@ def do_practice(char: Character, args: str) -> str:
|
|
|
188
188
|
new_value = min(adept, current + increment)
|
|
189
189
|
char.skills[skill_key] = new_value
|
|
190
190
|
|
|
191
|
+
# ROM C parity: Send messages to both char and room (src/act_info.c:2767-2777)
|
|
191
192
|
if new_value >= adept:
|
|
192
|
-
|
|
193
|
-
|
|
193
|
+
char.messages.append(f"You are now learned at {skill.name}.")
|
|
194
|
+
if char.room:
|
|
195
|
+
char.room.broadcast(f"{char.name} is now learned at {skill.name}.", exclude=char)
|
|
196
|
+
else:
|
|
197
|
+
char.messages.append(f"You practice {skill.name}.")
|
|
198
|
+
if char.room:
|
|
199
|
+
char.room.broadcast(f"{char.name} practices {skill.name}.", exclude=char)
|
|
200
|
+
|
|
201
|
+
return ""
|
|
194
202
|
|
|
195
203
|
|
|
196
204
|
def do_train(char: Character, args: str) -> str:
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Affects command - show active spell/affect effects on character.
|
|
3
|
+
|
|
4
|
+
ROM Reference: src/act_info.c do_affects (lines 2300-2400)
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
from mud.models.character import Character
|
|
10
|
+
from mud.models.constants import AffectFlag
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
# Mapping of affect flags to human-readable names
|
|
14
|
+
_AFFECT_NAMES = {
|
|
15
|
+
AffectFlag.BLIND: "blindness",
|
|
16
|
+
AffectFlag.INVISIBLE: "invisibility",
|
|
17
|
+
AffectFlag.DETECT_EVIL: "detect evil",
|
|
18
|
+
AffectFlag.DETECT_INVIS: "detect invisibility",
|
|
19
|
+
AffectFlag.DETECT_MAGIC: "detect magic",
|
|
20
|
+
AffectFlag.DETECT_HIDDEN: "detect hidden",
|
|
21
|
+
AffectFlag.DETECT_GOOD: "detect good",
|
|
22
|
+
AffectFlag.SANCTUARY: "sanctuary",
|
|
23
|
+
AffectFlag.FAERIE_FIRE: "faerie fire",
|
|
24
|
+
AffectFlag.INFRARED: "infrared vision",
|
|
25
|
+
AffectFlag.CURSE: "curse",
|
|
26
|
+
AffectFlag.POISON: "poison",
|
|
27
|
+
AffectFlag.PROTECT_EVIL: "protection evil",
|
|
28
|
+
AffectFlag.PROTECT_GOOD: "protection good",
|
|
29
|
+
AffectFlag.SNEAK: "sneak",
|
|
30
|
+
AffectFlag.HIDE: "hide",
|
|
31
|
+
AffectFlag.SLEEP: "sleep",
|
|
32
|
+
AffectFlag.CHARM: "charm",
|
|
33
|
+
AffectFlag.FLYING: "fly",
|
|
34
|
+
AffectFlag.PASS_DOOR: "pass door",
|
|
35
|
+
AffectFlag.HASTE: "haste",
|
|
36
|
+
AffectFlag.CALM: "calm",
|
|
37
|
+
AffectFlag.PLAGUE: "plague",
|
|
38
|
+
AffectFlag.WEAKEN: "weaken",
|
|
39
|
+
AffectFlag.DARK_VISION: "dark vision",
|
|
40
|
+
AffectFlag.BERSERK: "berserk",
|
|
41
|
+
AffectFlag.SWIM: "swim",
|
|
42
|
+
AffectFlag.REGENERATION: "regeneration",
|
|
43
|
+
AffectFlag.SLOW: "slow",
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
def affect_loc_name(location: int) -> str:
|
|
48
|
+
"""
|
|
49
|
+
Return ASCII name of an affect location.
|
|
50
|
+
|
|
51
|
+
ROM Reference: src/handler.c affect_loc_name (lines 2718-2775)
|
|
52
|
+
|
|
53
|
+
Args:
|
|
54
|
+
location: APPLY_* constant (0-25)
|
|
55
|
+
|
|
56
|
+
Returns:
|
|
57
|
+
Human-readable location name (e.g., "strength", "armor class", "hit roll")
|
|
58
|
+
"""
|
|
59
|
+
# ROM C APPLY_* constants (src/merc.h lines 1205-1231)
|
|
60
|
+
APPLY_NAMES = {
|
|
61
|
+
0: "none", # APPLY_NONE
|
|
62
|
+
1: "strength", # APPLY_STR
|
|
63
|
+
2: "dexterity", # APPLY_DEX
|
|
64
|
+
3: "intelligence", # APPLY_INT
|
|
65
|
+
4: "wisdom", # APPLY_WIS
|
|
66
|
+
5: "constitution", # APPLY_CON
|
|
67
|
+
6: "sex", # APPLY_SEX
|
|
68
|
+
7: "class", # APPLY_CLASS
|
|
69
|
+
8: "level", # APPLY_LEVEL
|
|
70
|
+
9: "age", # APPLY_AGE
|
|
71
|
+
10: "height", # APPLY_HEIGHT (not shown in ROM affect_loc_name)
|
|
72
|
+
11: "weight", # APPLY_WEIGHT (not shown in ROM affect_loc_name)
|
|
73
|
+
12: "mana", # APPLY_MANA
|
|
74
|
+
13: "hp", # APPLY_HIT
|
|
75
|
+
14: "moves", # APPLY_MOVE
|
|
76
|
+
15: "gold", # APPLY_GOLD
|
|
77
|
+
16: "experience", # APPLY_EXP
|
|
78
|
+
17: "armor class", # APPLY_AC
|
|
79
|
+
18: "hit roll", # APPLY_HITROLL
|
|
80
|
+
19: "damage roll", # APPLY_DAMROLL
|
|
81
|
+
20: "saves", # APPLY_SAVES / APPLY_SAVING_PARA
|
|
82
|
+
21: "save vs rod", # APPLY_SAVING_ROD
|
|
83
|
+
22: "save vs petrification", # APPLY_SAVING_PETRI
|
|
84
|
+
23: "save vs breath", # APPLY_SAVING_BREATH
|
|
85
|
+
24: "save vs spell", # APPLY_SAVING_SPELL
|
|
86
|
+
25: "none", # APPLY_SPELL_AFFECT (returns "none" in ROM C)
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
return APPLY_NAMES.get(location, "(unknown)")
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def do_affects(char: Character, args: str) -> str:
|
|
93
|
+
"""
|
|
94
|
+
Display active affects on the character.
|
|
95
|
+
|
|
96
|
+
ROM Reference: src/act_info.c do_affects (lines 1714-1755)
|
|
97
|
+
|
|
98
|
+
Usage: affects
|
|
99
|
+
|
|
100
|
+
Behavior:
|
|
101
|
+
- Level <20: Shows simple format (spell name only)
|
|
102
|
+
- Level 20+: Shows detailed format (modifier, location, duration)
|
|
103
|
+
- Stacked affects (same spell, multiple modifiers): Indented continuation lines
|
|
104
|
+
"""
|
|
105
|
+
# Primary ROM C behavior: iterate ch.affected list (AFFECT_DATA structures)
|
|
106
|
+
affected = getattr(char, "affected", [])
|
|
107
|
+
|
|
108
|
+
if not affected:
|
|
109
|
+
return "You are not affected by any spells."
|
|
110
|
+
|
|
111
|
+
lines = ["You are affected by the following spells:"]
|
|
112
|
+
paf_last = None
|
|
113
|
+
|
|
114
|
+
for paf in affected:
|
|
115
|
+
# Deduplication: check if same spell as previous affect
|
|
116
|
+
if paf_last and paf.type == paf_last.type:
|
|
117
|
+
if char.level >= 20:
|
|
118
|
+
# Level 20+: Show duplicate affects with indentation (22 spaces + ": ")
|
|
119
|
+
buf = " " * 22 + ": "
|
|
120
|
+
else:
|
|
121
|
+
# Level <20: Skip duplicate spells entirely
|
|
122
|
+
continue
|
|
123
|
+
else:
|
|
124
|
+
# New spell: show spell name (left-aligned, 15 chars)
|
|
125
|
+
# TODO: Replace with proper skill_table[paf.type].name lookup when SN mapping is available
|
|
126
|
+
# For now, assume paf.type is already a skill name string (temporary until spell system updated)
|
|
127
|
+
spell_name = str(paf.type) if paf.type else "(unknown)"
|
|
128
|
+
|
|
129
|
+
buf = f"Spell: {spell_name:15s}"
|
|
130
|
+
|
|
131
|
+
# Level 20+: Show detailed modifier information
|
|
132
|
+
if char.level >= 20:
|
|
133
|
+
location_name = affect_loc_name(paf.location)
|
|
134
|
+
|
|
135
|
+
# ROM C line 1737: uses raw %d (no explicit + sign)
|
|
136
|
+
modifier_str = str(paf.modifier)
|
|
137
|
+
|
|
138
|
+
if paf.duration == -1:
|
|
139
|
+
duration_str = "permanently"
|
|
140
|
+
else:
|
|
141
|
+
duration_str = f"for {paf.duration} hours"
|
|
142
|
+
|
|
143
|
+
# ROM C line 1736: ": modifies..." (colon prefix)
|
|
144
|
+
buf += f": modifies {location_name} by {modifier_str} {duration_str}"
|
|
145
|
+
|
|
146
|
+
lines.append(buf)
|
|
147
|
+
paf_last = paf
|
|
148
|
+
|
|
149
|
+
return "\n".join(lines)
|