rom24-quickmud-python 2.5.2__tar.gz → 2.5.4__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.2/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.5.4}/PKG-INFO +13 -11
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/README.md +12 -10
- rom24_quickmud_python-2.5.4/data/time.json +7 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/__main__.py +1 -1
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/ai/__init__.py +14 -8
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/characters/follow.py +15 -1
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/death.py +22 -26
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/engine.py +57 -37
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/admin_commands.py +2 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/advancement.py +10 -2
- rom24_quickmud_python-2.5.4/mud/commands/affects.py +149 -0
- rom24_quickmud_python-2.5.4/mud/commands/character.py +207 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/combat.py +10 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/communication.py +15 -4
- rom24_quickmud_python-2.5.4/mud/commands/compare.py +111 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/equipment.py +153 -30
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_commands.py +92 -86
- rom24_quickmud_python-2.5.4/mud/commands/info.py +591 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/info_extended.py +127 -67
- rom24_quickmud_python-2.5.4/mud/commands/inspection.py +279 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/inventory.py +169 -9
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/obj_manipulation.py +39 -3
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/player_info.py +42 -40
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/session.py +166 -24
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/shop.py +3 -24
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/config.py +19 -1
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/game_loop.py +183 -11
- rom24_quickmud_python-2.5.4/mud/handler.py +1424 -0
- rom24_quickmud_python-2.5.4/mud/magic/effects.py +775 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/mob_cmds.py +54 -10
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/character.py +178 -2
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/constants.py +8 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/room.py +77 -7
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/persistence.py +327 -1
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/skills/handlers.py +0 -8
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/spawning/templates.py +73 -4
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/utils/rng_mm.py +15 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/utils/text.py +50 -12
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/char_find.py +33 -35
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/look.py +156 -49
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/obj_find.py +60 -40
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/vision.py +17 -7
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/world_state.py +13 -2
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/pyproject.toml +1 -1
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4/rom24_quickmud_python.egg-info}/PKG-INFO +13 -11
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/rom24_quickmud_python.egg-info/SOURCES.txt +45 -3
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/conftest.py +10 -8
- rom24_quickmud_python-2.5.4/tests/integration/test_admin_commands.py +458 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_auto_flags.py +487 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_channels.py +209 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_character_advancement.py +475 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_character_commands.py +276 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_character_creation_runtime.py +258 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_communication_enhancement.py +243 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_compare_critical_gaps.py +325 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_config_commands.py +315 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_death_and_corpses.py +443 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_affects.py +186 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_consider_command.py +261 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_equipment.py +281 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_examine_command.py +362 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_exits_command.py +413 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_help_command.py +362 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_inventory.py +352 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_password_command.py +262 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_practice_command.py +312 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_time_command.py +220 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_weather_command.py +153 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_where_command.py +329 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_who_command.py +366 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_do_worth.py +137 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_environmental_effects.py +467 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_equipment_ac_calculations.py +400 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_equipment_system.py +657 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_group_combat.py +676 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_info_display.py +328 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_invisibility_combat.py +186 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_mob_ai.py +545 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_money_objects.py +415 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_olc_builders.py +366 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_pet_persistence.py +515 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_player_config.py +265 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_room_light_tracking.py +262 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_room_safety_features.py +261 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_save_load_parity.py +508 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_skills_integration.py +449 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_skills_integration_combat_specials.py +317 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_socials.py +262 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_spell_affects_persistence.py +717 -0
- rom24_quickmud_python-2.5.4/tests/integration/test_weather_time.py +525 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_agent_interface.py +20 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_death.py +8 -4
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_encumbrance.py +192 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_costs.py +5 -1
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills.py +5 -8
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_world.py +9 -0
- rom24_quickmud_python-2.5.2/data/time.json +0 -7
- rom24_quickmud_python-2.5.2/mud/commands/affects.py +0 -98
- rom24_quickmud_python-2.5.2/mud/commands/character.py +0 -161
- rom24_quickmud_python-2.5.2/mud/commands/compare.py +0 -144
- rom24_quickmud_python-2.5.2/mud/commands/info.py +0 -352
- rom24_quickmud_python-2.5.2/mud/commands/inspection.py +0 -141
- rom24_quickmud_python-2.5.2/mud/magic/effects.py +0 -86
- rom24_quickmud_python-2.5.2/tests/test_admin_commands.py +0 -610
- rom24_quickmud_python-2.5.2/tests/test_socials.py +0 -47
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/CHANGELOG.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/LICENSE +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/MANIFEST.in +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/air.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/arachnos.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/area.lst +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/astral.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/canyon.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/catacomb.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/chapel.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/daycare.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/draconia.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/dream.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/drow.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/dwarven.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/dylan.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/eastern.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/galaxy.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/gnome.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/grave.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/group.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/grove.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/haon.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/help.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/hitower.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/hood.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/immort.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/limbo.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/mahntor.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/marsh.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/mega1.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/midennir.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/midgaard.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/mirror.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/mobfact.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/moria.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/newthalos.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/nirvana.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/ofcol.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/ofcol2.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/olympus.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/plains.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/proto.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/pyramid.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/quifael.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/redferne.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/rom.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/school.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/sewer.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/shire.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/smurf.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/social.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/thalos.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/tohell.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/trollden.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/valley.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/area/wyvern.are +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/air.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/arachnos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/area.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/area_0.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/astral.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/canyon.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/catacomb.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/chapel.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/daycare.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/draconia.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/dream.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/drow.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/dwarven.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/eastern.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/galaxy.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/gnome.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/group.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/grove.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/haon.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/help.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/hitower.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/hood.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/immort.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/limbo.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/mahntor.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/marsh.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/mega1.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/midennir.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/midgaard.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/mirror.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/mobfact.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/moria.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/newthalos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/nirvana.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/ofcol.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/ofcol2.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/olympus.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/plains.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/pyramid.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/quifael.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/redferne.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/rom.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/school.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/sewer.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/shire.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/smurf.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/social.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/thalos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/tohell.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/trollden.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/valley.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas/wyvern.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/arachnos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/area.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/area_0.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/astral_plane.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/catacombs.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/chapel.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/day_care.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/dragon_tower.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/drow_city.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/dwarven_kingdom.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/dylan's_area.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/elemental_canyon.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/galaxy.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/gangland.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/gnome_village.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/graveyard.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/group.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/haon_dor.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/help.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/high_tower.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/holy_grove.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/in_the_air.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/limbo.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/machine_dreams.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/mahn-tor.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/marsh.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/mega_city_one.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/miden'nir.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/midgaard.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/mob_factory.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/moria.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/mud_school.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/new_ofcol.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/new_thalos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/nirvana.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/ofcol.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/old_thalos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/olympus.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/plains.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/pyramid.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/quifael's.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/redferne's.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/rom.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/sands_of_sorrow.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/sewers.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/shire.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/smurfville.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/social.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/thalos.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/tohell.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/troll_den.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/valhalla.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/valley_of_the_elves.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/areas_backup/wyvern's_tower.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/help.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/players/.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/players/attacker.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/players/eddol.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/players/hero.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/players/sleeper.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/players/trouble.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/shops.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/skills.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/data/socials.json +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/MPDocs/examples.doc +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/MPDocs/hacker.doc +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/MPDocs/mobprog.doc +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/MPDocs/new_readme.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/QuickMUD.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/act.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/area.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/c_module_inventory.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/c_python_cross_reference.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/c_to_python_file_coverage.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/class.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/command.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/contrib.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/drool.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/hacker.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/license.doc +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/license.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/memory.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/new.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/pfile.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/port.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/pr_queue.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/python_architecture.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/python_module_inventory.md +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/security.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/sites.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/skill.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/sky.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/trad.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/vnum.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/doc/~$Rom2.4.doc +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/account/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/account/account_manager.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/account/account_service.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/admin_logging/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/admin_logging/admin.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/admin_logging/agent_trace.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/advancement.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/affects/engine.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/affects/saves.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/agent/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/agent/agent_protocol.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/agent/character_agent.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/ai/aggressive.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/characters/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/characters/conditions.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/assist.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/kill_table.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/messages.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/combat/safety.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/alias_cmds.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/auto_settings.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/build.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/channels.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/consider.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/consumption.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/decorators.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/dispatcher.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/doors.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/feedback.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/give.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/group_commands.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/healer.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/help.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imc.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_admin.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_display.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_emote.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_load.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_olc.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_punish.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_search.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_server.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/imm_set.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/liquids.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/magic_items.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/misc_info.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/misc_player.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/mobprog_tools.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/movement.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/murder.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/notes.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/player_config.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/position.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/remaining_rom.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/socials.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/thief_skills.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/commands/typo_guards.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/init.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/migrate_from_files.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/migrations.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/models.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/seed.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/db/session.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/devtools/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/devtools/agent_demo.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/entrypoint.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/game_tick_scheduler.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/groups/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/groups/xp.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/imc/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/imc/commands.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/imc/network.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/imc/protocol.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/area_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/base_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/help_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/json_area_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/json_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/mob_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/mobprog_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/obj_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/reset_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/room_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/shop_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/social_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/loaders/specials_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/logging.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/magic/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/math/c_compat.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/mobprog.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/area.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/area_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/board.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/board_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/character_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/clans.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/classes.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/conversion.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/help.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/help_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/json_io.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/mob.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/note.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/note_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/obj.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/object.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/object_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/player_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/races.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/room_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/shop.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/shop_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/skill.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/skill_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/social.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/models/social_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/music/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/ansi.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/connection.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/protocol.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/session.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/ssh_server.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/net/telnet_server.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/network/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/network/websocket_server.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/network/websocket_session.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/notes.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/olc/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/olc/save.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/registry.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/rom_api.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/convert_are_to_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/convert_help_are_to_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/convert_player_to_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/convert_shops_to_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/convert_skills_to_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/convert_social_are_to_json.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/scripts/load_test_data.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/security/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/security/bans.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/security/hash_utils.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/server.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/skills/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/skills/groups.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/skills/metadata.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/skills/registry.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/skills/say_spell.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/spawning/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/spawning/mob_spawner.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/spawning/obj_spawner.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/spawning/reset_handler.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/spec_funs.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/time.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/utils/act.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/wiznet.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/__init__.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/linking.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/mud/world/movement.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/rom24_quickmud_python.egg-info/dependency_links.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/rom24_quickmud_python.egg-info/entry_points.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/rom24_quickmud_python.egg-info/requires.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/rom24_quickmud_python.egg-info/top_level.txt +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/setup.cfg +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/setup.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/conftest.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/helpers.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/helpers_player.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_architectural_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_auto_sequences.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_mobprog_scenarios.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_new_player_workflow.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_pilot_integration.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_player_npc_interaction.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/integration/test_spell_casting.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_account_auth.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_act_comm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_act_enter_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_act_info_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_act_obj_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_act_wiz_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_advancement.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_affects.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_alias_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_ansi.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_are_conversion.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_area_counts.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_area_exits.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_area_loader.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_area_specials.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_bans.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_boards.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_builder_hedit.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_builder_stat_commands.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_building.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_char_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_assist.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_damage_types.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_defenses_prob.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_messages.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_position_damage.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_skills.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_state.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_surrender.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_thac0.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_combat_thac0_engine.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_command_abbrev.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_command_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_commands.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_communication.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_connection_motd.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_convert_are_to_json_cli.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_critical_function_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_damage_reduction.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_damage_reduction_integration.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_db_resets_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_db_seed.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_defense_flags.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_enter_portal.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_fighting_state.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_game_loop.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_game_loop_order.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_game_loop_wait_daze.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_golden_reference.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_handler_affects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_hash_utils.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_healer.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_healer_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_healer_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_help_conversion.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_help_system.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_imc.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_inventory_persistence.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_json_io.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_json_model_instantiation.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_json_room_fields.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_load_midgaard.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_logging_admin.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_logging_rotation.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_mob_act_flags.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_mob_damage_modifiers.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_mobprog.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_mobprog_commands.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_mobprog_helpers.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_mobprog_triggers.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_charm.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_doors.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_followers.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_mobprog.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_npc.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_portals.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_privacy.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_movement_visibility.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_music.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_nanny_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_networking_telnet.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_obj_update_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_olc_aedit.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_olc_medit.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_olc_oedit.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_olc_save.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_passive_skills_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_persistence.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_affect_flags.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_auto_settings.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_combat_attributes.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_conditions.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_creation.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_equipment.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_flags.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_info_commands.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_mechanics.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_prompt.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_resistance_flags.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_save_format.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_skills_spells.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_stats.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_title_description.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_player_wimpy.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_practice.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_reset_levels.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_resets.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_rng_and_ccompat.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_rng_dice.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_rom_api.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_runtime_models.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_saves_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_say_spell.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_scan_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_schema_validation.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_scripted_session.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_shop_conversion.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_shops.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_combat_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_conversion.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_envenom_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_haggle_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_hide_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_peek_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_pick_lock_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_recall_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_registry.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skill_steal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_buffs.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_combat.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_conjuration.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_damage.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_debuffs.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_detection.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_healing.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_identify.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_learned.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_mass.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_misc.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_skills_transport.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_social_conversion.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_social_placeholders.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spawning.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spec_fun_behaviors.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spec_funs.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spec_funs_extra.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_specials_loader_ext.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_area_effects_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_breath_weapons_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_buff_debuff_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_buff_debuff_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_cancellation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_charm_control_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_creation_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_critical_gameplay_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_damage_additional_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_detection_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_enchantment_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_farsight_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_final_nine_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_harm_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_heat_metal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_high_priority_missing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_information_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_mass_healing_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_priority_high_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_shocking_grasp_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spell_travel_portal_rom_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spells_basic.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_spells_damage.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_state_transitions.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_telnet_server.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_time_daynight.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_time_persistence.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_utility_spells_parity.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_weapon_damage.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_weapon_special_attacks.py +0 -0
- {rom24_quickmud_python-2.5.2 → rom24_quickmud_python-2.5.4}/tests/test_wiznet.py +0 -0
{rom24_quickmud_python-2.5.2/rom24_quickmud_python.egg-info → rom24_quickmud_python-2.5.4}/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.4
|
|
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
|
|
@@ -92,13 +92,15 @@ pip install quickmud
|
|
|
92
92
|
|
|
93
93
|
Run a QuickMUD server:
|
|
94
94
|
|
|
95
|
-
**Telnet Server (port
|
|
95
|
+
**Telnet Server (port 5001):**
|
|
96
96
|
```bash
|
|
97
97
|
python3 -m mud socketserver
|
|
98
98
|
# or
|
|
99
99
|
mud socketserver
|
|
100
100
|
```
|
|
101
101
|
|
|
102
|
+
> **⚠️ macOS Users:** Port 5000 is used by macOS AirPlay Receiver (Monterey+). QuickMUD defaults to port 5001 to avoid conflicts. To use a different port: `python3 -m mud socketserver --port 4000`
|
|
103
|
+
|
|
102
104
|
**WebSocket Server (port 8000):**
|
|
103
105
|
```bash
|
|
104
106
|
python3 -m mud websocketserver
|
|
@@ -122,7 +124,7 @@ Connect to the server:
|
|
|
122
124
|
|
|
123
125
|
**Via Telnet:**
|
|
124
126
|
```bash
|
|
125
|
-
telnet localhost
|
|
127
|
+
telnet localhost 5001
|
|
126
128
|
```
|
|
127
129
|
|
|
128
130
|
**Via SSH:**
|
|
@@ -149,7 +151,7 @@ pip install -e .[dev]
|
|
|
149
151
|
|
|
150
152
|
```bash
|
|
151
153
|
pytest # Run all tests (~16 seconds)
|
|
152
|
-
pytest tests/integration/ -v # Run integration tests (
|
|
154
|
+
pytest tests/integration/ -v # Run integration tests (688/701 passing)
|
|
153
155
|
```
|
|
154
156
|
|
|
155
157
|
### Development Server
|
|
@@ -163,8 +165,8 @@ python -m mud # Start development server
|
|
|
163
165
|
- **Version**: 2.5.0 (Production Ready - ROM 2.4b6 Parity Certified)
|
|
164
166
|
- **ROM 2.4b Parity**: ✅ **100% CERTIFIED** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md))
|
|
165
167
|
- **ROM C Function Coverage**: 96.1% (716/745 functions mapped)
|
|
166
|
-
- **Test Coverage**:
|
|
167
|
-
- **Performance**: Full test suite completes in ~
|
|
168
|
+
- **Test Coverage**: 1435/1436 tests passing (99.93%), 688/701 integration tests (98.1%)
|
|
169
|
+
- **Performance**: Full test suite completes in ~75 seconds
|
|
168
170
|
- **Compatibility**: Python 3.10+, cross-platform
|
|
169
171
|
|
|
170
172
|
## 🏛️ Architecture
|
|
@@ -263,7 +265,7 @@ Build and run the Python server with Docker:
|
|
|
263
265
|
|
|
264
266
|
```bash
|
|
265
267
|
docker build -t quickmud .
|
|
266
|
-
docker run -p
|
|
268
|
+
docker run -p 5001:5001 quickmud
|
|
267
269
|
```
|
|
268
270
|
|
|
269
271
|
Or use docker-compose to rebuild on changes and mount the repository:
|
|
@@ -275,7 +277,7 @@ docker-compose up
|
|
|
275
277
|
Connect via:
|
|
276
278
|
|
|
277
279
|
```bash
|
|
278
|
-
telnet localhost
|
|
280
|
+
telnet localhost 5001
|
|
279
281
|
```
|
|
280
282
|
|
|
281
283
|
## Data Models
|
|
@@ -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
|
|
@@ -39,13 +39,15 @@ pip install quickmud
|
|
|
39
39
|
|
|
40
40
|
Run a QuickMUD server:
|
|
41
41
|
|
|
42
|
-
**Telnet Server (port
|
|
42
|
+
**Telnet Server (port 5001):**
|
|
43
43
|
```bash
|
|
44
44
|
python3 -m mud socketserver
|
|
45
45
|
# or
|
|
46
46
|
mud socketserver
|
|
47
47
|
```
|
|
48
48
|
|
|
49
|
+
> **⚠️ macOS Users:** Port 5000 is used by macOS AirPlay Receiver (Monterey+). QuickMUD defaults to port 5001 to avoid conflicts. To use a different port: `python3 -m mud socketserver --port 4000`
|
|
50
|
+
|
|
49
51
|
**WebSocket Server (port 8000):**
|
|
50
52
|
```bash
|
|
51
53
|
python3 -m mud websocketserver
|
|
@@ -69,7 +71,7 @@ Connect to the server:
|
|
|
69
71
|
|
|
70
72
|
**Via Telnet:**
|
|
71
73
|
```bash
|
|
72
|
-
telnet localhost
|
|
74
|
+
telnet localhost 5001
|
|
73
75
|
```
|
|
74
76
|
|
|
75
77
|
**Via SSH:**
|
|
@@ -96,7 +98,7 @@ pip install -e .[dev]
|
|
|
96
98
|
|
|
97
99
|
```bash
|
|
98
100
|
pytest # Run all tests (~16 seconds)
|
|
99
|
-
pytest tests/integration/ -v # Run integration tests (
|
|
101
|
+
pytest tests/integration/ -v # Run integration tests (688/701 passing)
|
|
100
102
|
```
|
|
101
103
|
|
|
102
104
|
### Development Server
|
|
@@ -110,8 +112,8 @@ python -m mud # Start development server
|
|
|
110
112
|
- **Version**: 2.5.0 (Production Ready - ROM 2.4b6 Parity Certified)
|
|
111
113
|
- **ROM 2.4b Parity**: ✅ **100% CERTIFIED** ([official certification](ROM_2.4B6_PARITY_CERTIFICATION.md))
|
|
112
114
|
- **ROM C Function Coverage**: 96.1% (716/745 functions mapped)
|
|
113
|
-
- **Test Coverage**:
|
|
114
|
-
- **Performance**: Full test suite completes in ~
|
|
115
|
+
- **Test Coverage**: 1435/1436 tests passing (99.93%), 688/701 integration tests (98.1%)
|
|
116
|
+
- **Performance**: Full test suite completes in ~75 seconds
|
|
115
117
|
- **Compatibility**: Python 3.10+, cross-platform
|
|
116
118
|
|
|
117
119
|
## 🏛️ Architecture
|
|
@@ -210,7 +212,7 @@ Build and run the Python server with Docker:
|
|
|
210
212
|
|
|
211
213
|
```bash
|
|
212
214
|
docker build -t quickmud .
|
|
213
|
-
docker run -p
|
|
215
|
+
docker run -p 5001:5001 quickmud
|
|
214
216
|
```
|
|
215
217
|
|
|
216
218
|
Or use docker-compose to rebuild on changes and mount the repository:
|
|
@@ -222,7 +224,7 @@ docker-compose up
|
|
|
222
224
|
Connect via:
|
|
223
225
|
|
|
224
226
|
```bash
|
|
225
|
-
telnet localhost
|
|
227
|
+
telnet localhost 5001
|
|
226
228
|
```
|
|
227
229
|
|
|
228
230
|
## Data Models
|
|
@@ -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)
|