rom24-quickmud-python 1.2.2__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-1.2.2/CHANGELOG.md +64 -0
- rom24_quickmud_python-1.2.2/LICENSE +21 -0
- rom24_quickmud_python-1.2.2/MANIFEST.in +15 -0
- rom24_quickmud_python-1.2.2/PKG-INFO +236 -0
- rom24_quickmud_python-1.2.2/README.md +184 -0
- rom24_quickmud_python-1.2.2/area/air.are +1223 -0
- rom24_quickmud_python-1.2.2/area/arachnos.are +1298 -0
- rom24_quickmud_python-1.2.2/area/area.lst +54 -0
- rom24_quickmud_python-1.2.2/area/astral.are +3420 -0
- rom24_quickmud_python-1.2.2/area/canyon.are +2096 -0
- rom24_quickmud_python-1.2.2/area/catacomb.are +1781 -0
- rom24_quickmud_python-1.2.2/area/chapel.are +1964 -0
- rom24_quickmud_python-1.2.2/area/daycare.are +647 -0
- rom24_quickmud_python-1.2.2/area/draconia.are +1629 -0
- rom24_quickmud_python-1.2.2/area/dream.are +1301 -0
- rom24_quickmud_python-1.2.2/area/drow.are +1238 -0
- rom24_quickmud_python-1.2.2/area/dwarven.are +1416 -0
- rom24_quickmud_python-1.2.2/area/dylan.are +1806 -0
- rom24_quickmud_python-1.2.2/area/eastern.are +1466 -0
- rom24_quickmud_python-1.2.2/area/galaxy.are +2010 -0
- rom24_quickmud_python-1.2.2/area/gnome.are +2260 -0
- rom24_quickmud_python-1.2.2/area/grave.are +934 -0
- rom24_quickmud_python-1.2.2/area/group.are +909 -0
- rom24_quickmud_python-1.2.2/area/grove.are +960 -0
- rom24_quickmud_python-1.2.2/area/haon.are +2530 -0
- rom24_quickmud_python-1.2.2/area/help.are +1701 -0
- rom24_quickmud_python-1.2.2/area/hitower.are +5512 -0
- rom24_quickmud_python-1.2.2/area/hood.are +1891 -0
- rom24_quickmud_python-1.2.2/area/immort.are +687 -0
- rom24_quickmud_python-1.2.2/area/limbo.are +196 -0
- rom24_quickmud_python-1.2.2/area/mahntor.are +3850 -0
- rom24_quickmud_python-1.2.2/area/marsh.are +818 -0
- rom24_quickmud_python-1.2.2/area/mega1.are +1042 -0
- rom24_quickmud_python-1.2.2/area/midennir.are +1341 -0
- rom24_quickmud_python-1.2.2/area/midgaard.are +6483 -0
- rom24_quickmud_python-1.2.2/area/mirror.are +3050 -0
- rom24_quickmud_python-1.2.2/area/mobfact.are +701 -0
- rom24_quickmud_python-1.2.2/area/moria.are +3078 -0
- rom24_quickmud_python-1.2.2/area/newthalos.are +7370 -0
- rom24_quickmud_python-1.2.2/area/nirvana.are +1315 -0
- rom24_quickmud_python-1.2.2/area/ofcol.are +191 -0
- rom24_quickmud_python-1.2.2/area/ofcol2.are +3433 -0
- rom24_quickmud_python-1.2.2/area/olympus.are +1629 -0
- rom24_quickmud_python-1.2.2/area/plains.are +1333 -0
- rom24_quickmud_python-1.2.2/area/proto.are +49 -0
- rom24_quickmud_python-1.2.2/area/pyramid.are +2311 -0
- rom24_quickmud_python-1.2.2/area/quifael.are +190 -0
- rom24_quickmud_python-1.2.2/area/redferne.are +498 -0
- rom24_quickmud_python-1.2.2/area/rom.are +514 -0
- rom24_quickmud_python-1.2.2/area/school.are +2176 -0
- rom24_quickmud_python-1.2.2/area/sewer.are +4810 -0
- rom24_quickmud_python-1.2.2/area/shire.are +1945 -0
- rom24_quickmud_python-1.2.2/area/smurf.are +890 -0
- rom24_quickmud_python-1.2.2/area/social.are +2219 -0
- rom24_quickmud_python-1.2.2/area/thalos.are +2203 -0
- rom24_quickmud_python-1.2.2/area/tohell.are +4802 -0
- rom24_quickmud_python-1.2.2/area/trollden.are +373 -0
- rom24_quickmud_python-1.2.2/area/valley.are +2300 -0
- rom24_quickmud_python-1.2.2/area/wyvern.are +1739 -0
- rom24_quickmud_python-1.2.2/data/areas/air.json +1345 -0
- rom24_quickmud_python-1.2.2/data/areas/arachnos.json +2019 -0
- rom24_quickmud_python-1.2.2/data/areas/area.json +12 -0
- rom24_quickmud_python-1.2.2/data/areas/area_0.json +442 -0
- rom24_quickmud_python-1.2.2/data/areas/astral.json +2978 -0
- rom24_quickmud_python-1.2.2/data/areas/astral_plane.json +4501 -0
- rom24_quickmud_python-1.2.2/data/areas/canyon.json +1677 -0
- rom24_quickmud_python-1.2.2/data/areas/catacomb.json +1688 -0
- rom24_quickmud_python-1.2.2/data/areas/catacombs.json +2658 -0
- rom24_quickmud_python-1.2.2/data/areas/chapel.json +2836 -0
- rom24_quickmud_python-1.2.2/data/areas/day_care.json +1042 -0
- rom24_quickmud_python-1.2.2/data/areas/daycare.json +555 -0
- rom24_quickmud_python-1.2.2/data/areas/draconia.json +1407 -0
- rom24_quickmud_python-1.2.2/data/areas/dragon_tower.json +2732 -0
- rom24_quickmud_python-1.2.2/data/areas/dream.json +1346 -0
- rom24_quickmud_python-1.2.2/data/areas/drow.json +1226 -0
- rom24_quickmud_python-1.2.2/data/areas/drow_city.json +1944 -0
- rom24_quickmud_python-1.2.2/data/areas/dwarven.json +1267 -0
- rom24_quickmud_python-1.2.2/data/areas/dwarven_kingdom.json +2225 -0
- rom24_quickmud_python-1.2.2/data/areas/dylan's_area.json +2493 -0
- rom24_quickmud_python-1.2.2/data/areas/dylan.json +1995 -0
- rom24_quickmud_python-1.2.2/data/areas/eastern.json +1372 -0
- rom24_quickmud_python-1.2.2/data/areas/elemental_canyon.json +3479 -0
- rom24_quickmud_python-1.2.2/data/areas/galaxy.json +3386 -0
- rom24_quickmud_python-1.2.2/data/areas/gangland.json +2625 -0
- rom24_quickmud_python-1.2.2/data/areas/gnome.json +2266 -0
- rom24_quickmud_python-1.2.2/data/areas/gnome_village.json +3575 -0
- rom24_quickmud_python-1.2.2/data/areas/grave.json +930 -0
- rom24_quickmud_python-1.2.2/data/areas/graveyard.json +1384 -0
- rom24_quickmud_python-1.2.2/data/areas/group.json +12 -0
- rom24_quickmud_python-1.2.2/data/areas/grove.json +739 -0
- rom24_quickmud_python-1.2.2/data/areas/haon.json +2489 -0
- rom24_quickmud_python-1.2.2/data/areas/haon_dor.json +3421 -0
- rom24_quickmud_python-1.2.2/data/areas/hell.json +7359 -0
- rom24_quickmud_python-1.2.2/data/areas/help.json +12 -0
- rom24_quickmud_python-1.2.2/data/areas/high_tower.json +9028 -0
- rom24_quickmud_python-1.2.2/data/areas/hitower.json +5036 -0
- rom24_quickmud_python-1.2.2/data/areas/holy_grove.json +1355 -0
- rom24_quickmud_python-1.2.2/data/areas/hood.json +1765 -0
- rom24_quickmud_python-1.2.2/data/areas/immort.json +619 -0
- rom24_quickmud_python-1.2.2/data/areas/in_the_air.json +1422 -0
- rom24_quickmud_python-1.2.2/data/areas/limbo.json +136 -0
- rom24_quickmud_python-1.2.2/data/areas/machine_dreams.json +1465 -0
- rom24_quickmud_python-1.2.2/data/areas/mahn-tor.json +6066 -0
- rom24_quickmud_python-1.2.2/data/areas/mahntor.json +3100 -0
- rom24_quickmud_python-1.2.2/data/areas/marsh.json +1314 -0
- rom24_quickmud_python-1.2.2/data/areas/mega1.json +843 -0
- rom24_quickmud_python-1.2.2/data/areas/mega_city_one.json +1601 -0
- rom24_quickmud_python-1.2.2/data/areas/miden'nir.json +1758 -0
- rom24_quickmud_python-1.2.2/data/areas/midennir.json +1346 -0
- rom24_quickmud_python-1.2.2/data/areas/midgaard.json +12453 -0
- rom24_quickmud_python-1.2.2/data/areas/mirror.json +2518 -0
- rom24_quickmud_python-1.2.2/data/areas/mob_factory.json +836 -0
- rom24_quickmud_python-1.2.2/data/areas/mobfact.json +625 -0
- rom24_quickmud_python-1.2.2/data/areas/moria.json +4627 -0
- rom24_quickmud_python-1.2.2/data/areas/mud_school.json +3076 -0
- rom24_quickmud_python-1.2.2/data/areas/new_ofcol.json +5386 -0
- rom24_quickmud_python-1.2.2/data/areas/new_thalos.json +11535 -0
- rom24_quickmud_python-1.2.2/data/areas/newthalos.json +6643 -0
- rom24_quickmud_python-1.2.2/data/areas/nirvana.json +1974 -0
- rom24_quickmud_python-1.2.2/data/areas/ofcol.json +205 -0
- rom24_quickmud_python-1.2.2/data/areas/ofcol2.json +2835 -0
- rom24_quickmud_python-1.2.2/data/areas/old_thalos.json +4212 -0
- rom24_quickmud_python-1.2.2/data/areas/olympus.json +2730 -0
- rom24_quickmud_python-1.2.2/data/areas/plains.json +1881 -0
- rom24_quickmud_python-1.2.2/data/areas/pyramid.json +3286 -0
- rom24_quickmud_python-1.2.2/data/areas/quifael's.json +197 -0
- rom24_quickmud_python-1.2.2/data/areas/quifael.json +185 -0
- rom24_quickmud_python-1.2.2/data/areas/redferne's.json +583 -0
- rom24_quickmud_python-1.2.2/data/areas/redferne.json +458 -0
- rom24_quickmud_python-1.2.2/data/areas/rom.json +12 -0
- rom24_quickmud_python-1.2.2/data/areas/sands_of_sorrow.json +2442 -0
- rom24_quickmud_python-1.2.2/data/areas/school.json +1892 -0
- rom24_quickmud_python-1.2.2/data/areas/sewer.json +4912 -0
- rom24_quickmud_python-1.2.2/data/areas/sewers.json +6783 -0
- rom24_quickmud_python-1.2.2/data/areas/shire.json +2973 -0
- rom24_quickmud_python-1.2.2/data/areas/smurf.json +846 -0
- rom24_quickmud_python-1.2.2/data/areas/smurfville.json +1395 -0
- rom24_quickmud_python-1.2.2/data/areas/social.json +12 -0
- rom24_quickmud_python-1.2.2/data/areas/thalos.json +3179 -0
- rom24_quickmud_python-1.2.2/data/areas/tohell.json +4037 -0
- rom24_quickmud_python-1.2.2/data/areas/troll_den.json +616 -0
- rom24_quickmud_python-1.2.2/data/areas/trollden.json +210 -0
- rom24_quickmud_python-1.2.2/data/areas/valhalla.json +697 -0
- rom24_quickmud_python-1.2.2/data/areas/valley.json +2329 -0
- rom24_quickmud_python-1.2.2/data/areas/valley_of_the_elves.json +3232 -0
- rom24_quickmud_python-1.2.2/data/areas/wyvern's_tower.json +2818 -0
- rom24_quickmud_python-1.2.2/data/areas/wyvern.json +1553 -0
- rom24_quickmud_python-1.2.2/data/help.json +1166 -0
- rom24_quickmud_python-1.2.2/data/shops.json +642 -0
- rom24_quickmud_python-1.2.2/data/skills.json +1855 -0
- rom24_quickmud_python-1.2.2/data/socials.json +2686 -0
- rom24_quickmud_python-1.2.2/data/time.json +7 -0
- rom24_quickmud_python-1.2.2/doc/MPDocs/examples.doc +299 -0
- rom24_quickmud_python-1.2.2/doc/MPDocs/hacker.doc +122 -0
- rom24_quickmud_python-1.2.2/doc/MPDocs/mobprog.doc +1248 -0
- rom24_quickmud_python-1.2.2/doc/MPDocs/new_readme.txt +3 -0
- rom24_quickmud_python-1.2.2/doc/QuickMUD.txt +73 -0
- rom24_quickmud_python-1.2.2/doc/Rom2.4.doc +2054 -0
- rom24_quickmud_python-1.2.2/doc/act.txt +133 -0
- rom24_quickmud_python-1.2.2/doc/area.txt +935 -0
- rom24_quickmud_python-1.2.2/doc/c_module_inventory.md +47 -0
- rom24_quickmud_python-1.2.2/doc/c_python_cross_reference.md +20 -0
- rom24_quickmud_python-1.2.2/doc/c_to_python_file_coverage.md +50 -0
- rom24_quickmud_python-1.2.2/doc/class.txt +122 -0
- rom24_quickmud_python-1.2.2/doc/command.txt +115 -0
- rom24_quickmud_python-1.2.2/doc/contrib.txt +183 -0
- rom24_quickmud_python-1.2.2/doc/drool.txt +118 -0
- rom24_quickmud_python-1.2.2/doc/hacker.txt +358 -0
- rom24_quickmud_python-1.2.2/doc/license.doc +103 -0
- rom24_quickmud_python-1.2.2/doc/license.txt +46 -0
- rom24_quickmud_python-1.2.2/doc/memory.txt +137 -0
- rom24_quickmud_python-1.2.2/doc/new.txt +260 -0
- rom24_quickmud_python-1.2.2/doc/pfile.txt +101 -0
- rom24_quickmud_python-1.2.2/doc/port.txt +130 -0
- rom24_quickmud_python-1.2.2/doc/pr_queue.md +45 -0
- rom24_quickmud_python-1.2.2/doc/python_architecture.md +25 -0
- rom24_quickmud_python-1.2.2/doc/python_module_inventory.md +37 -0
- rom24_quickmud_python-1.2.2/doc/security.txt +106 -0
- rom24_quickmud_python-1.2.2/doc/sites.txt +36 -0
- rom24_quickmud_python-1.2.2/doc/skill.txt +254 -0
- rom24_quickmud_python-1.2.2/doc/sky.txt +95 -0
- rom24_quickmud_python-1.2.2/doc/trad.txt +81 -0
- rom24_quickmud_python-1.2.2/doc/vnum.txt +34 -0
- rom24_quickmud_python-1.2.2/doc/~$Rom2.4.doc +0 -0
- rom24_quickmud_python-1.2.2/mud/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/__main__.py +40 -0
- rom24_quickmud_python-1.2.2/mud/account/__init__.py +20 -0
- rom24_quickmud_python-1.2.2/mud/account/account_manager.py +62 -0
- rom24_quickmud_python-1.2.2/mud/account/account_service.py +80 -0
- rom24_quickmud_python-1.2.2/mud/advancement.py +62 -0
- rom24_quickmud_python-1.2.2/mud/affects/saves.py +123 -0
- rom24_quickmud_python-1.2.2/mud/agent/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/agent/agent_protocol.py +19 -0
- rom24_quickmud_python-1.2.2/mud/agent/character_agent.py +61 -0
- rom24_quickmud_python-1.2.2/mud/combat/__init__.py +3 -0
- rom24_quickmud_python-1.2.2/mud/combat/engine.py +189 -0
- rom24_quickmud_python-1.2.2/mud/commands/__init__.py +3 -0
- rom24_quickmud_python-1.2.2/mud/commands/admin_commands.py +77 -0
- rom24_quickmud_python-1.2.2/mud/commands/advancement.py +36 -0
- rom24_quickmud_python-1.2.2/mud/commands/alias_cmds.py +44 -0
- rom24_quickmud_python-1.2.2/mud/commands/build.py +18 -0
- rom24_quickmud_python-1.2.2/mud/commands/combat.py +16 -0
- rom24_quickmud_python-1.2.2/mud/commands/communication.py +55 -0
- rom24_quickmud_python-1.2.2/mud/commands/decorators.py +11 -0
- rom24_quickmud_python-1.2.2/mud/commands/dispatcher.py +206 -0
- rom24_quickmud_python-1.2.2/mud/commands/healer.py +81 -0
- rom24_quickmud_python-1.2.2/mud/commands/help.py +14 -0
- rom24_quickmud_python-1.2.2/mud/commands/imc.py +19 -0
- rom24_quickmud_python-1.2.2/mud/commands/inspection.py +113 -0
- rom24_quickmud_python-1.2.2/mud/commands/inventory.py +42 -0
- rom24_quickmud_python-1.2.2/mud/commands/movement.py +71 -0
- rom24_quickmud_python-1.2.2/mud/commands/notes.py +44 -0
- rom24_quickmud_python-1.2.2/mud/commands/shop.py +138 -0
- rom24_quickmud_python-1.2.2/mud/commands/socials.py +34 -0
- rom24_quickmud_python-1.2.2/mud/config.py +59 -0
- rom24_quickmud_python-1.2.2/mud/db/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/db/init.py +27 -0
- rom24_quickmud_python-1.2.2/mud/db/migrate_from_files.py +87 -0
- rom24_quickmud_python-1.2.2/mud/db/migrations.py +7 -0
- rom24_quickmud_python-1.2.2/mud/db/models.py +98 -0
- rom24_quickmud_python-1.2.2/mud/db/seed.py +28 -0
- rom24_quickmud_python-1.2.2/mud/db/session.py +11 -0
- rom24_quickmud_python-1.2.2/mud/devtools/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/devtools/agent_demo.py +19 -0
- rom24_quickmud_python-1.2.2/mud/entrypoint.py +34 -0
- rom24_quickmud_python-1.2.2/mud/game_loop.py +117 -0
- rom24_quickmud_python-1.2.2/mud/imc/__init__.py +17 -0
- rom24_quickmud_python-1.2.2/mud/imc/protocol.py +32 -0
- rom24_quickmud_python-1.2.2/mud/loaders/__init__.py +27 -0
- rom24_quickmud_python-1.2.2/mud/loaders/area_loader.py +73 -0
- rom24_quickmud_python-1.2.2/mud/loaders/base_loader.py +38 -0
- rom24_quickmud_python-1.2.2/mud/loaders/help_loader.py +17 -0
- rom24_quickmud_python-1.2.2/mud/loaders/json_area_loader.py +203 -0
- rom24_quickmud_python-1.2.2/mud/loaders/json_loader.py +285 -0
- rom24_quickmud_python-1.2.2/mud/loaders/mob_loader.py +104 -0
- rom24_quickmud_python-1.2.2/mud/loaders/obj_loader.py +76 -0
- rom24_quickmud_python-1.2.2/mud/loaders/reset_loader.py +29 -0
- rom24_quickmud_python-1.2.2/mud/loaders/room_loader.py +63 -0
- rom24_quickmud_python-1.2.2/mud/loaders/shop_loader.py +41 -0
- rom24_quickmud_python-1.2.2/mud/loaders/social_loader.py +16 -0
- rom24_quickmud_python-1.2.2/mud/loaders/specials_loader.py +63 -0
- rom24_quickmud_python-1.2.2/mud/logging/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/logging/admin.py +40 -0
- rom24_quickmud_python-1.2.2/mud/logging/agent_trace.py +9 -0
- rom24_quickmud_python-1.2.2/mud/math/c_compat.py +27 -0
- rom24_quickmud_python-1.2.2/mud/mobprog.py +72 -0
- rom24_quickmud_python-1.2.2/mud/models/__init__.py +106 -0
- rom24_quickmud_python-1.2.2/mud/models/area.py +33 -0
- rom24_quickmud_python-1.2.2/mud/models/area_json.py +27 -0
- rom24_quickmud_python-1.2.2/mud/models/board.py +49 -0
- rom24_quickmud_python-1.2.2/mud/models/board_json.py +16 -0
- rom24_quickmud_python-1.2.2/mud/models/character.py +195 -0
- rom24_quickmud_python-1.2.2/mud/models/character_json.py +46 -0
- rom24_quickmud_python-1.2.2/mud/models/constants.py +423 -0
- rom24_quickmud_python-1.2.2/mud/models/conversion.py +45 -0
- rom24_quickmud_python-1.2.2/mud/models/help.py +28 -0
- rom24_quickmud_python-1.2.2/mud/models/help_json.py +14 -0
- rom24_quickmud_python-1.2.2/mud/models/json_io.py +64 -0
- rom24_quickmud_python-1.2.2/mud/models/mob.py +82 -0
- rom24_quickmud_python-1.2.2/mud/models/note.py +29 -0
- rom24_quickmud_python-1.2.2/mud/models/note_json.py +16 -0
- rom24_quickmud_python-1.2.2/mud/models/obj.py +82 -0
- rom24_quickmud_python-1.2.2/mud/models/object.py +28 -0
- rom24_quickmud_python-1.2.2/mud/models/object_json.py +40 -0
- rom24_quickmud_python-1.2.2/mud/models/player_json.py +29 -0
- rom24_quickmud_python-1.2.2/mud/models/room.py +86 -0
- rom24_quickmud_python-1.2.2/mud/models/room_json.py +46 -0
- rom24_quickmud_python-1.2.2/mud/models/shop.py +21 -0
- rom24_quickmud_python-1.2.2/mud/models/shop_json.py +17 -0
- rom24_quickmud_python-1.2.2/mud/models/skill.py +25 -0
- rom24_quickmud_python-1.2.2/mud/models/skill_json.py +20 -0
- rom24_quickmud_python-1.2.2/mud/models/social.py +78 -0
- rom24_quickmud_python-1.2.2/mud/models/social_json.py +20 -0
- rom24_quickmud_python-1.2.2/mud/net/__init__.py +9 -0
- rom24_quickmud_python-1.2.2/mud/net/ansi.py +27 -0
- rom24_quickmud_python-1.2.2/mud/net/connection.py +174 -0
- rom24_quickmud_python-1.2.2/mud/net/protocol.py +57 -0
- rom24_quickmud_python-1.2.2/mud/net/session.py +21 -0
- rom24_quickmud_python-1.2.2/mud/net/telnet_server.py +31 -0
- rom24_quickmud_python-1.2.2/mud/network/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/network/websocket_server.py +83 -0
- rom24_quickmud_python-1.2.2/mud/network/websocket_session.py +21 -0
- rom24_quickmud_python-1.2.2/mud/notes.py +45 -0
- rom24_quickmud_python-1.2.2/mud/persistence.py +185 -0
- rom24_quickmud_python-1.2.2/mud/registry.py +5 -0
- rom24_quickmud_python-1.2.2/mud/scripts/convert_are_to_json.py +162 -0
- rom24_quickmud_python-1.2.2/mud/scripts/convert_help_are_to_json.py +92 -0
- rom24_quickmud_python-1.2.2/mud/scripts/convert_player_to_json.py +112 -0
- rom24_quickmud_python-1.2.2/mud/scripts/convert_shops_to_json.py +64 -0
- rom24_quickmud_python-1.2.2/mud/scripts/convert_skills_to_json.py +166 -0
- rom24_quickmud_python-1.2.2/mud/scripts/convert_social_are_to_json.py +92 -0
- rom24_quickmud_python-1.2.2/mud/scripts/load_test_data.py +17 -0
- rom24_quickmud_python-1.2.2/mud/security/__init__.py +0 -0
- rom24_quickmud_python-1.2.2/mud/security/bans.py +112 -0
- rom24_quickmud_python-1.2.2/mud/security/hash_utils.py +20 -0
- rom24_quickmud_python-1.2.2/mud/server.py +8 -0
- rom24_quickmud_python-1.2.2/mud/skills/__init__.py +3 -0
- rom24_quickmud_python-1.2.2/mud/skills/handlers.py +795 -0
- rom24_quickmud_python-1.2.2/mud/skills/registry.py +97 -0
- rom24_quickmud_python-1.2.2/mud/spawning/__init__.py +1 -0
- rom24_quickmud_python-1.2.2/mud/spawning/mob_spawner.py +13 -0
- rom24_quickmud_python-1.2.2/mud/spawning/obj_spawner.py +18 -0
- rom24_quickmud_python-1.2.2/mud/spawning/reset_handler.py +222 -0
- rom24_quickmud_python-1.2.2/mud/spawning/templates.py +63 -0
- rom24_quickmud_python-1.2.2/mud/spec_funs.py +57 -0
- rom24_quickmud_python-1.2.2/mud/time.py +48 -0
- rom24_quickmud_python-1.2.2/mud/utils/rng_mm.py +123 -0
- rom24_quickmud_python-1.2.2/mud/wiznet.py +74 -0
- rom24_quickmud_python-1.2.2/mud/world/__init__.py +11 -0
- rom24_quickmud_python-1.2.2/mud/world/linking.py +31 -0
- rom24_quickmud_python-1.2.2/mud/world/look.py +29 -0
- rom24_quickmud_python-1.2.2/mud/world/movement.py +135 -0
- rom24_quickmud_python-1.2.2/mud/world/world_state.py +179 -0
- rom24_quickmud_python-1.2.2/pyproject.toml +79 -0
- rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info/PKG-INFO +236 -0
- rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info/SOURCES.txt +390 -0
- rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info/dependency_links.txt +1 -0
- rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info/entry_points.txt +2 -0
- rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info/requires.txt +22 -0
- rom24_quickmud_python-1.2.2/rom24_quickmud_python.egg-info/top_level.txt +1 -0
- rom24_quickmud_python-1.2.2/setup.cfg +4 -0
- rom24_quickmud_python-1.2.2/setup.py +4 -0
- rom24_quickmud_python-1.2.2/tests/conftest.py +132 -0
- rom24_quickmud_python-1.2.2/tests/helpers.py +15 -0
- rom24_quickmud_python-1.2.2/tests/test_account_auth.py +79 -0
- rom24_quickmud_python-1.2.2/tests/test_admin_commands.py +64 -0
- rom24_quickmud_python-1.2.2/tests/test_advancement.py +45 -0
- rom24_quickmud_python-1.2.2/tests/test_affects.py +239 -0
- rom24_quickmud_python-1.2.2/tests/test_agent_interface.py +28 -0
- rom24_quickmud_python-1.2.2/tests/test_ansi.py +5 -0
- rom24_quickmud_python-1.2.2/tests/test_are_conversion.py +28 -0
- rom24_quickmud_python-1.2.2/tests/test_area_counts.py +12 -0
- rom24_quickmud_python-1.2.2/tests/test_area_exits.py +23 -0
- rom24_quickmud_python-1.2.2/tests/test_area_loader.py +41 -0
- rom24_quickmud_python-1.2.2/tests/test_area_specials.py +38 -0
- rom24_quickmud_python-1.2.2/tests/test_bans.py +50 -0
- rom24_quickmud_python-1.2.2/tests/test_boards.py +18 -0
- rom24_quickmud_python-1.2.2/tests/test_building.py +19 -0
- rom24_quickmud_python-1.2.2/tests/test_combat.py +197 -0
- rom24_quickmud_python-1.2.2/tests/test_combat_defenses_prob.py +49 -0
- rom24_quickmud_python-1.2.2/tests/test_combat_thac0.py +31 -0
- rom24_quickmud_python-1.2.2/tests/test_combat_thac0_engine.py +49 -0
- rom24_quickmud_python-1.2.2/tests/test_command_abbrev.py +22 -0
- rom24_quickmud_python-1.2.2/tests/test_commands.py +143 -0
- rom24_quickmud_python-1.2.2/tests/test_communication.py +53 -0
- rom24_quickmud_python-1.2.2/tests/test_convert_are_to_json_cli.py +26 -0
- rom24_quickmud_python-1.2.2/tests/test_db_seed.py +31 -0
- rom24_quickmud_python-1.2.2/tests/test_defense_flags.py +18 -0
- rom24_quickmud_python-1.2.2/tests/test_encumbrance.py +36 -0
- rom24_quickmud_python-1.2.2/tests/test_enter_portal.py +20 -0
- rom24_quickmud_python-1.2.2/tests/test_game_loop.py +44 -0
- rom24_quickmud_python-1.2.2/tests/test_game_loop_order.py +28 -0
- rom24_quickmud_python-1.2.2/tests/test_game_loop_wait_daze.py +27 -0
- rom24_quickmud_python-1.2.2/tests/test_hash_utils.py +13 -0
- rom24_quickmud_python-1.2.2/tests/test_healer.py +54 -0
- rom24_quickmud_python-1.2.2/tests/test_help_conversion.py +32 -0
- rom24_quickmud_python-1.2.2/tests/test_help_system.py +20 -0
- rom24_quickmud_python-1.2.2/tests/test_imc.py +49 -0
- rom24_quickmud_python-1.2.2/tests/test_inventory_persistence.py +34 -0
- rom24_quickmud_python-1.2.2/tests/test_json_io.py +84 -0
- rom24_quickmud_python-1.2.2/tests/test_json_model_instantiation.py +114 -0
- rom24_quickmud_python-1.2.2/tests/test_load_midgaard.py +10 -0
- rom24_quickmud_python-1.2.2/tests/test_logging_admin.py +24 -0
- rom24_quickmud_python-1.2.2/tests/test_logging_rotation.py +69 -0
- rom24_quickmud_python-1.2.2/tests/test_mobprog.py +29 -0
- rom24_quickmud_python-1.2.2/tests/test_movement_costs.py +61 -0
- rom24_quickmud_python-1.2.2/tests/test_persistence.py +49 -0
- rom24_quickmud_python-1.2.2/tests/test_player_save_format.py +107 -0
- rom24_quickmud_python-1.2.2/tests/test_reset_levels.py +35 -0
- rom24_quickmud_python-1.2.2/tests/test_rng_and_ccompat.py +48 -0
- rom24_quickmud_python-1.2.2/tests/test_rng_dice.py +28 -0
- rom24_quickmud_python-1.2.2/tests/test_runtime_models.py +99 -0
- rom24_quickmud_python-1.2.2/tests/test_schema_validation.py +14 -0
- rom24_quickmud_python-1.2.2/tests/test_scripted_session.py +12 -0
- rom24_quickmud_python-1.2.2/tests/test_shop_conversion.py +20 -0
- rom24_quickmud_python-1.2.2/tests/test_shops.py +112 -0
- rom24_quickmud_python-1.2.2/tests/test_skill_conversion.py +12 -0
- rom24_quickmud_python-1.2.2/tests/test_skill_registry.py +12 -0
- rom24_quickmud_python-1.2.2/tests/test_skills.py +51 -0
- rom24_quickmud_python-1.2.2/tests/test_skills_learned.py +36 -0
- rom24_quickmud_python-1.2.2/tests/test_social_conversion.py +53 -0
- rom24_quickmud_python-1.2.2/tests/test_social_placeholders.py +21 -0
- rom24_quickmud_python-1.2.2/tests/test_socials.py +47 -0
- rom24_quickmud_python-1.2.2/tests/test_spawning.py +150 -0
- rom24_quickmud_python-1.2.2/tests/test_spec_funs.py +103 -0
- rom24_quickmud_python-1.2.2/tests/test_spec_funs_extra.py +29 -0
- rom24_quickmud_python-1.2.2/tests/test_specials_loader_ext.py +25 -0
- rom24_quickmud_python-1.2.2/tests/test_telnet_server.py +115 -0
- rom24_quickmud_python-1.2.2/tests/test_time_daynight.py +74 -0
- rom24_quickmud_python-1.2.2/tests/test_time_persistence.py +31 -0
- rom24_quickmud_python-1.2.2/tests/test_wiznet.py +100 -0
- rom24_quickmud_python-1.2.2/tests/test_world.py +35 -0
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# Changelog
|
|
2
|
+
|
|
3
|
+
All notable changes to this project will be documented in this file.
|
|
4
|
+
|
|
5
|
+
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
|
|
6
|
+
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
|
+
|
|
8
|
+
## [1.2.0] - 2025-09-15
|
|
9
|
+
|
|
10
|
+
### Added
|
|
11
|
+
|
|
12
|
+
- Complete telnet server with multi-user support
|
|
13
|
+
- Working shop system with buy/sell/list commands
|
|
14
|
+
- 132 skill system with handler stubs
|
|
15
|
+
- JSON-based world loading with 352 resets in Midgaard
|
|
16
|
+
- Admin commands (teleport, spawn, ban management)
|
|
17
|
+
- Communication system (say, tell, shout, socials)
|
|
18
|
+
- OLC building system for room editing
|
|
19
|
+
- pytest-timeout plugin for proper test timeouts
|
|
20
|
+
|
|
21
|
+
### Fixed
|
|
22
|
+
|
|
23
|
+
- Character position initialization (STANDING vs DEAD)
|
|
24
|
+
- Hanging telnet tests resolved
|
|
25
|
+
- Enhanced error handling and null room safety
|
|
26
|
+
- Character creation now allows immediate command execution
|
|
27
|
+
|
|
28
|
+
### Changed
|
|
29
|
+
|
|
30
|
+
- Achieved 100% test success rate (200/200 tests)
|
|
31
|
+
- Full test suite completes in ~16 seconds
|
|
32
|
+
- Modern async/await telnet server architecture
|
|
33
|
+
- SQLAlchemy ORM with migrations
|
|
34
|
+
|
|
35
|
+
### Technical Improvements
|
|
36
|
+
|
|
37
|
+
- Comprehensive test coverage across all subsystems
|
|
38
|
+
- Memory efficient JSON area loading
|
|
39
|
+
- Optimized command processing pipeline
|
|
40
|
+
- Robust error handling throughout
|
|
41
|
+
|
|
42
|
+
## [0.1.1] - 2025-09-14
|
|
43
|
+
|
|
44
|
+
### Added
|
|
45
|
+
|
|
46
|
+
- Initial ROM 2.4 Python port foundation
|
|
47
|
+
- Basic world loading and character system
|
|
48
|
+
- Core command framework
|
|
49
|
+
- Database integration with SQLAlchemy
|
|
50
|
+
|
|
51
|
+
### Changed
|
|
52
|
+
|
|
53
|
+
- Migrated from legacy C codebase to pure Python
|
|
54
|
+
- JSON world data format for easier editing
|
|
55
|
+
- Modern Python packaging structure
|
|
56
|
+
|
|
57
|
+
## [0.1.0] - 2025-09-13
|
|
58
|
+
|
|
59
|
+
### Added
|
|
60
|
+
|
|
61
|
+
- Initial project structure
|
|
62
|
+
- Basic MUD framework
|
|
63
|
+
- ROM compatibility layer
|
|
64
|
+
- Core game loop implementation
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2025 QuickMUD Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
include README.md
|
|
2
|
+
include LICENSE
|
|
3
|
+
include CHANGELOG.md
|
|
4
|
+
include pyproject.toml
|
|
5
|
+
recursive-include mud *.py
|
|
6
|
+
recursive-include data *.json
|
|
7
|
+
recursive-include area *.are *.lst
|
|
8
|
+
recursive-include doc *.md *.txt *.doc
|
|
9
|
+
recursive-include tests *.py
|
|
10
|
+
recursive-exclude tests/data *
|
|
11
|
+
global-exclude *.pyc
|
|
12
|
+
global-exclude __pycache__
|
|
13
|
+
global-exclude .git*
|
|
14
|
+
global-exclude .pytest_cache
|
|
15
|
+
global-exclude *.log
|
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: rom24-quickmud-python
|
|
3
|
+
Version: 1.2.2
|
|
4
|
+
Summary: A modern Python port of the ROM 2.4b6 MUD engine with full telnet server and JSON world loading
|
|
5
|
+
Author-email: Mark Jedrzejczyk <mark.jedrzejczyk@gmail.com>
|
|
6
|
+
Maintainer-email: Mark Jedrzejczyk <mark.jedrzejczyk@gmail.com>
|
|
7
|
+
License-Expression: MIT
|
|
8
|
+
Project-URL: Homepage, https://github.com/Nostoi/rom24-quickmud-python
|
|
9
|
+
Project-URL: Repository, https://github.com/Nostoi/rom24-quickmud-python.git
|
|
10
|
+
Project-URL: Documentation, https://github.com/Nostoi/rom24-quickmud-python/blob/master/README.md
|
|
11
|
+
Project-URL: Bug Tracker, https://github.com/Nostoi/rom24-quickmud-python/issues
|
|
12
|
+
Project-URL: Changelog, https://github.com/Nostoi/rom24-quickmud-python/releases
|
|
13
|
+
Keywords: mud,rom,game,mmo,telnet,server
|
|
14
|
+
Classifier: Development Status :: 4 - Beta
|
|
15
|
+
Classifier: Environment :: Console
|
|
16
|
+
Classifier: Environment :: No Input/Output (Daemon)
|
|
17
|
+
Classifier: Intended Audience :: Developers
|
|
18
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
19
|
+
Classifier: Operating System :: OS Independent
|
|
20
|
+
Classifier: Programming Language :: Python :: 3
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
22
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
23
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
24
|
+
Classifier: Topic :: Games/Entertainment :: Multi-User Dungeons (MUD)
|
|
25
|
+
Classifier: Topic :: Internet
|
|
26
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
27
|
+
Classifier: Typing :: Typed
|
|
28
|
+
Requires-Python: >=3.10
|
|
29
|
+
Description-Content-Type: text/markdown
|
|
30
|
+
License-File: LICENSE
|
|
31
|
+
Requires-Dist: SQLAlchemy<3,>=2.0
|
|
32
|
+
Requires-Dist: typer>=0.9
|
|
33
|
+
Requires-Dist: python-dotenv>=1.0
|
|
34
|
+
Requires-Dist: fastapi>=0.68.0
|
|
35
|
+
Requires-Dist: uvicorn>=0.15.0
|
|
36
|
+
Requires-Dist: pytest-timeout>=2.1.0
|
|
37
|
+
Provides-Extra: dev
|
|
38
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
39
|
+
Requires-Dist: pytest-cov>=6.0; extra == "dev"
|
|
40
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == "dev"
|
|
41
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
42
|
+
Requires-Dist: ruff>=0.1.0; extra == "dev"
|
|
43
|
+
Requires-Dist: black>=22.0; extra == "dev"
|
|
44
|
+
Requires-Dist: jsonschema>=4.0; extra == "dev"
|
|
45
|
+
Requires-Dist: build>=0.10.0; extra == "dev"
|
|
46
|
+
Requires-Dist: twine>=4.0.0; extra == "dev"
|
|
47
|
+
Provides-Extra: test
|
|
48
|
+
Requires-Dist: pytest>=8.0; extra == "test"
|
|
49
|
+
Requires-Dist: pytest-cov>=6.0; extra == "test"
|
|
50
|
+
Requires-Dist: pytest-timeout>=2.1.0; extra == "test"
|
|
51
|
+
Dynamic: license-file
|
|
52
|
+
|
|
53
|
+
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
54
|
+
|
|
55
|
+
[](https://badge.fury.io/py/quickmud)
|
|
56
|
+
[](https://www.python.org/downloads/)
|
|
57
|
+
[](https://opensource.org/licenses/MIT)
|
|
58
|
+
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
59
|
+
|
|
60
|
+
**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 comprehensive testing.
|
|
61
|
+
|
|
62
|
+
## 🎮 What is a MUD?
|
|
63
|
+
|
|
64
|
+
A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-based MMORPG that runs over telnet. ROM is renowned for its fast-paced combat system and rich player interaction. ROM was also the foundation for [Carrion Fields](http://www.carrionfields.net/), one of the most acclaimed MUDs ever created.
|
|
65
|
+
|
|
66
|
+
## ✨ Key Features
|
|
67
|
+
|
|
68
|
+
- **🚀 Modern Python Architecture**: Fully async/await networking with SQLAlchemy ORM
|
|
69
|
+
- **📡 Multi-User Telnet Server**: Handle hundreds of concurrent players
|
|
70
|
+
- **🗺️ JSON World Loading**: Easy-to-edit world data with 352+ room resets
|
|
71
|
+
- **🏪 Complete Shop System**: Buy, sell, and list items with working economy
|
|
72
|
+
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
73
|
+
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
74
|
+
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
75
|
+
- **📊 100% Test Coverage**: 200+ tests ensure reliability and stability
|
|
76
|
+
|
|
77
|
+
## 📦 Installation
|
|
78
|
+
|
|
79
|
+
### For Players & Server Operators
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
pip install quickmud
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Quick Start
|
|
86
|
+
|
|
87
|
+
Run a QuickMUD server:
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
mud runserver
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
The server will start on `localhost:4000`. Connect with any telnet client:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
telnet localhost 4000
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
## 🏗️ For Developers
|
|
100
|
+
|
|
101
|
+
## 🏗️ For Developers
|
|
102
|
+
|
|
103
|
+
### Development Installation
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
git clone https://github.com/Nostoi/rom24-quickmud-python.git
|
|
107
|
+
cd rom24-quickmud-python
|
|
108
|
+
python -m venv venv
|
|
109
|
+
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
110
|
+
pip install -e .[dev]
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### Running Tests
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pytest # Run all 200 tests (should complete in ~16 seconds)
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
### Development Server
|
|
120
|
+
|
|
121
|
+
```bash
|
|
122
|
+
python -m mud # Start development server
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## 🎯 Project Status
|
|
126
|
+
|
|
127
|
+
- **Version**: 1.2.0 (Production Ready)
|
|
128
|
+
- **Test Coverage**: 200/200 tests passing (100% success rate)
|
|
129
|
+
- **Performance**: Full test suite completes in ~16 seconds
|
|
130
|
+
- **Compatibility**: Python 3.10+, cross-platform
|
|
131
|
+
|
|
132
|
+
## 🏛️ Architecture
|
|
133
|
+
|
|
134
|
+
- **Async Networking**: Modern async/await telnet server
|
|
135
|
+
- **SQLAlchemy ORM**: Robust database layer with migrations
|
|
136
|
+
- **JSON World Data**: Human-readable area files with full ROM compatibility
|
|
137
|
+
- **Modular Design**: Clean separation of concerns (commands, world, networking)
|
|
138
|
+
- **Type Safety**: Comprehensive type hints throughout codebase
|
|
139
|
+
|
|
140
|
+
## 📜 License
|
|
141
|
+
|
|
142
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
143
|
+
|
|
144
|
+
## 🤝 Contributing
|
|
145
|
+
|
|
146
|
+
Contributions are welcome! Please read our [Contributing Guidelines](CONTRIBUTING.md) and feel free to submit pull requests.
|
|
147
|
+
|
|
148
|
+
## 📚 Documentation
|
|
149
|
+
|
|
150
|
+
- [Installation Guide](docs/installation.md)
|
|
151
|
+
- [Configuration](docs/configuration.md)
|
|
152
|
+
- [World Building](docs/world-building.md)
|
|
153
|
+
- [API Reference](docs/api.md)
|
|
154
|
+
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
**Experience the classic MUD gameplay with modern Python reliability!** 🐍✨
|
|
158
|
+
|
|
159
|
+
For a fully reproducible environment, use the pinned requirements files generated with [pip-tools](https://github.com/jazzband/pip-tools):
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
pip install -r requirements-dev.txt
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
To update the pinned dependencies:
|
|
166
|
+
|
|
167
|
+
```bash
|
|
168
|
+
pip-compile requirements.in
|
|
169
|
+
pip-compile requirements-dev.in
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
Tools like [Poetry](https://python-poetry.org/) provide a similar workflow if you prefer that approach.
|
|
173
|
+
|
|
174
|
+
Run tests with:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
pytest
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
### Publishing
|
|
181
|
+
|
|
182
|
+
To release a new version to PyPI:
|
|
183
|
+
|
|
184
|
+
1. Update the version in `pyproject.toml`.
|
|
185
|
+
2. Commit and tag:
|
|
186
|
+
|
|
187
|
+
```bash
|
|
188
|
+
git commit -am "release: v1.2.3"
|
|
189
|
+
git tag v1.2.3
|
|
190
|
+
git push origin main --tags
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
The GitHub Actions workflow will build and publish the package when the tag is pushed.
|
|
194
|
+
|
|
195
|
+
## Python Architecture
|
|
196
|
+
|
|
197
|
+
Game systems are implemented in Python modules:
|
|
198
|
+
|
|
199
|
+
- `mud/net` provides asynchronous telnet and websocket servers.
|
|
200
|
+
- `mud/game_loop.py` drives the tick-based update loop.
|
|
201
|
+
- `mud/commands` contains the command dispatcher and handlers.
|
|
202
|
+
- `mud/combat` and `mud/skills` implement combat and abilities.
|
|
203
|
+
- `mud/persistence.py` handles saving characters and world state.
|
|
204
|
+
|
|
205
|
+
Start the server with:
|
|
206
|
+
|
|
207
|
+
```sh
|
|
208
|
+
python -m mud runserver
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## Docker Image
|
|
212
|
+
|
|
213
|
+
Build and run the Python server with Docker:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
docker build -t quickmud .
|
|
217
|
+
docker run -p 5000:5000 quickmud
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
Or use docker-compose to rebuild on changes and mount the repository:
|
|
221
|
+
|
|
222
|
+
```bash
|
|
223
|
+
docker-compose up
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
Connect via:
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
telnet localhost 5000
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
## Data Models
|
|
233
|
+
|
|
234
|
+
The `mud/models` package defines dataclasses used by the game engine.
|
|
235
|
+
They mirror the JSON schemas in `schemas/` and supply enums and registries
|
|
236
|
+
for loading and manipulating area, room, object, and character data.
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/quickmud)
|
|
4
|
+
[](https://www.python.org/downloads/)
|
|
5
|
+
[](https://opensource.org/licenses/MIT)
|
|
6
|
+
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
7
|
+
|
|
8
|
+
**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 comprehensive testing.
|
|
9
|
+
|
|
10
|
+
## 🎮 What is a MUD?
|
|
11
|
+
|
|
12
|
+
A "[Multi-User Dungeon](https://en.wikipedia.org/wiki/MUD)" (MUD) is a text-based MMORPG that runs over telnet. ROM is renowned for its fast-paced combat system and rich player interaction. ROM was also the foundation for [Carrion Fields](http://www.carrionfields.net/), one of the most acclaimed MUDs ever created.
|
|
13
|
+
|
|
14
|
+
## ✨ Key Features
|
|
15
|
+
|
|
16
|
+
- **🚀 Modern Python Architecture**: Fully async/await networking with SQLAlchemy ORM
|
|
17
|
+
- **📡 Multi-User Telnet Server**: Handle hundreds of concurrent players
|
|
18
|
+
- **🗺️ JSON World Loading**: Easy-to-edit world data with 352+ room resets
|
|
19
|
+
- **🏪 Complete Shop System**: Buy, sell, and list items with working economy
|
|
20
|
+
- **⚔️ ROM Combat System**: Classic ROM combat mechanics and skill system
|
|
21
|
+
- **👥 Social Features**: Say, tell, shout, and 100+ social interactions
|
|
22
|
+
- **🛠️ Admin Commands**: Teleport, spawn, ban management, and OLC building
|
|
23
|
+
- **📊 100% Test Coverage**: 200+ tests ensure reliability and stability
|
|
24
|
+
|
|
25
|
+
## 📦 Installation
|
|
26
|
+
|
|
27
|
+
### For Players & Server Operators
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
pip install quickmud
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Quick Start
|
|
34
|
+
|
|
35
|
+
Run a QuickMUD server:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
mud runserver
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
The server will start on `localhost:4000`. Connect with any telnet client:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
telnet localhost 4000
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
## 🏗️ For Developers
|
|
48
|
+
|
|
49
|
+
## 🏗️ For Developers
|
|
50
|
+
|
|
51
|
+
### Development Installation
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
git clone https://github.com/Nostoi/rom24-quickmud-python.git
|
|
55
|
+
cd rom24-quickmud-python
|
|
56
|
+
python -m venv venv
|
|
57
|
+
source venv/bin/activate # On Windows: venv\Scripts\activate
|
|
58
|
+
pip install -e .[dev]
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
### Running Tests
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
pytest # Run all 200 tests (should complete in ~16 seconds)
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
### Development Server
|
|
68
|
+
|
|
69
|
+
```bash
|
|
70
|
+
python -m mud # Start development server
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
## 🎯 Project Status
|
|
74
|
+
|
|
75
|
+
- **Version**: 1.2.0 (Production Ready)
|
|
76
|
+
- **Test Coverage**: 200/200 tests passing (100% success rate)
|
|
77
|
+
- **Performance**: Full test suite completes in ~16 seconds
|
|
78
|
+
- **Compatibility**: Python 3.10+, cross-platform
|
|
79
|
+
|
|
80
|
+
## 🏛️ Architecture
|
|
81
|
+
|
|
82
|
+
- **Async Networking**: Modern async/await telnet server
|
|
83
|
+
- **SQLAlchemy ORM**: Robust database layer with migrations
|
|
84
|
+
- **JSON World Data**: Human-readable area files with full ROM compatibility
|
|
85
|
+
- **Modular Design**: Clean separation of concerns (commands, world, networking)
|
|
86
|
+
- **Type Safety**: Comprehensive type hints throughout codebase
|
|
87
|
+
|
|
88
|
+
## 📜 License
|
|
89
|
+
|
|
90
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
91
|
+
|
|
92
|
+
## 🤝 Contributing
|
|
93
|
+
|
|
94
|
+
Contributions are welcome! Please read our [Contributing Guidelines](CONTRIBUTING.md) and feel free to submit pull requests.
|
|
95
|
+
|
|
96
|
+
## 📚 Documentation
|
|
97
|
+
|
|
98
|
+
- [Installation Guide](docs/installation.md)
|
|
99
|
+
- [Configuration](docs/configuration.md)
|
|
100
|
+
- [World Building](docs/world-building.md)
|
|
101
|
+
- [API Reference](docs/api.md)
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
**Experience the classic MUD gameplay with modern Python reliability!** 🐍✨
|
|
106
|
+
|
|
107
|
+
For a fully reproducible environment, use the pinned requirements files generated with [pip-tools](https://github.com/jazzband/pip-tools):
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
pip install -r requirements-dev.txt
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
To update the pinned dependencies:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
pip-compile requirements.in
|
|
117
|
+
pip-compile requirements-dev.in
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
Tools like [Poetry](https://python-poetry.org/) provide a similar workflow if you prefer that approach.
|
|
121
|
+
|
|
122
|
+
Run tests with:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
pytest
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
### Publishing
|
|
129
|
+
|
|
130
|
+
To release a new version to PyPI:
|
|
131
|
+
|
|
132
|
+
1. Update the version in `pyproject.toml`.
|
|
133
|
+
2. Commit and tag:
|
|
134
|
+
|
|
135
|
+
```bash
|
|
136
|
+
git commit -am "release: v1.2.3"
|
|
137
|
+
git tag v1.2.3
|
|
138
|
+
git push origin main --tags
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
The GitHub Actions workflow will build and publish the package when the tag is pushed.
|
|
142
|
+
|
|
143
|
+
## Python Architecture
|
|
144
|
+
|
|
145
|
+
Game systems are implemented in Python modules:
|
|
146
|
+
|
|
147
|
+
- `mud/net` provides asynchronous telnet and websocket servers.
|
|
148
|
+
- `mud/game_loop.py` drives the tick-based update loop.
|
|
149
|
+
- `mud/commands` contains the command dispatcher and handlers.
|
|
150
|
+
- `mud/combat` and `mud/skills` implement combat and abilities.
|
|
151
|
+
- `mud/persistence.py` handles saving characters and world state.
|
|
152
|
+
|
|
153
|
+
Start the server with:
|
|
154
|
+
|
|
155
|
+
```sh
|
|
156
|
+
python -m mud runserver
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
## Docker Image
|
|
160
|
+
|
|
161
|
+
Build and run the Python server with Docker:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
docker build -t quickmud .
|
|
165
|
+
docker run -p 5000:5000 quickmud
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
Or use docker-compose to rebuild on changes and mount the repository:
|
|
169
|
+
|
|
170
|
+
```bash
|
|
171
|
+
docker-compose up
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Connect via:
|
|
175
|
+
|
|
176
|
+
```bash
|
|
177
|
+
telnet localhost 5000
|
|
178
|
+
```
|
|
179
|
+
|
|
180
|
+
## Data Models
|
|
181
|
+
|
|
182
|
+
The `mud/models` package defines dataclasses used by the game engine.
|
|
183
|
+
They mirror the JSON schemas in `schemas/` and supply enums and registries
|
|
184
|
+
for loading and manipulating area, room, object, and character data.
|