rom24-quickmud-python 2.2.1__py3-none-any.whl → 2.3.1__py3-none-any.whl
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.
- mud/combat/death.py +4 -1
- mud/combat/engine.py +5 -0
- mud/commands/communication.py +1 -0
- mud/commands/dispatcher.py +11 -1
- mud/commands/give.py +6 -2
- mud/commands/remaining_rom.py +19 -0
- {rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/METADATA +5 -5
- {rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/RECORD +12 -12
- {rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/WHEEL +0 -0
- {rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/entry_points.txt +0 -0
- {rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/licenses/LICENSE +0 -0
- {rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/top_level.txt +0 -0
mud/combat/death.py
CHANGED
|
@@ -557,7 +557,10 @@ def raw_kill(victim: Character) -> Object | None:
|
|
|
557
557
|
"""Handle character death by creating a corpse and removing the victim."""
|
|
558
558
|
|
|
559
559
|
from mud.combat.engine import stop_fighting as _stop_fighting
|
|
560
|
-
|
|
560
|
+
|
|
561
|
+
# Trigger death mobprog handled in apply_damage before raw_kill
|
|
562
|
+
# ROM Reference: src/fight.c:1136-1180 (mp_death_trigger called before raw_kill)
|
|
563
|
+
|
|
561
564
|
_stop_fighting(victim, True)
|
|
562
565
|
death_cry(victim)
|
|
563
566
|
corpse = make_corpse(victim)
|
mud/combat/engine.py
CHANGED
|
@@ -535,6 +535,11 @@ def apply_damage(
|
|
|
535
535
|
old_pos = victim.position
|
|
536
536
|
victim.hit -= damage
|
|
537
537
|
|
|
538
|
+
# Trigger HP percent mobprog (ROM Reference: src/fight.c:1094-1136)
|
|
539
|
+
victim_is_npc = getattr(victim, "is_npc", False)
|
|
540
|
+
if victim_is_npc and victim.hit > 0:
|
|
541
|
+
mobprog.mp_hprct_trigger(victim, attacker)
|
|
542
|
+
|
|
538
543
|
# Immortals don't die (ROM IS_IMMORTAL check)
|
|
539
544
|
if not victim.is_npc and victim.is_immortal() and victim.hit < 1:
|
|
540
545
|
victim.hit = 1
|
mud/commands/communication.py
CHANGED
|
@@ -9,6 +9,7 @@ from mud.characters import is_clan_member, is_same_clan
|
|
|
9
9
|
from mud.models.character import Character, character_registry
|
|
10
10
|
from mud.models.constants import CommFlag, Position
|
|
11
11
|
from mud.net.protocol import broadcast_global, broadcast_room, send_to_char
|
|
12
|
+
from mud.mobprog import mp_speech_trigger
|
|
12
13
|
|
|
13
14
|
if TYPE_CHECKING:
|
|
14
15
|
from mud.net.session import Session
|
mud/commands/dispatcher.py
CHANGED
|
@@ -118,7 +118,7 @@ from .typo_guards import do_qui, do_murde, do_reboo, do_shutdow, do_alia, do_col
|
|
|
118
118
|
from .misc_player import do_afk, do_replay, do_config, do_permit, do_peek, do_unread
|
|
119
119
|
from .remaining_rom import (
|
|
120
120
|
do_wimpy, do_deaf, do_quiet, do_envenom, do_gain, do_groups, do_guild,
|
|
121
|
-
do_flag, do_mob, do_bs, do_go, do_junk, do_tap, do_teleport
|
|
121
|
+
do_flag, do_mob, do_bs, do_go, do_junk, do_tap, do_teleport, do_qmread
|
|
122
122
|
)
|
|
123
123
|
from .healer import do_heal
|
|
124
124
|
from .help import do_help, do_wizlist
|
|
@@ -243,6 +243,7 @@ COMMANDS: list[Command] = [
|
|
|
243
243
|
Command("answer", do_answer, min_position=Position.RESTING),
|
|
244
244
|
Command("music", do_music, min_position=Position.RESTING),
|
|
245
245
|
Command("clan", do_clantalk, min_position=Position.SLEEPING),
|
|
246
|
+
Command("clantalk", do_clantalk, min_position=Position.SLEEPING), # ROM alias
|
|
246
247
|
Command(
|
|
247
248
|
"immtalk",
|
|
248
249
|
do_immtalk,
|
|
@@ -395,6 +396,8 @@ COMMANDS: list[Command] = [
|
|
|
395
396
|
Command("incognito", do_incognito, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
396
397
|
Command("poofin", do_poofin, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
397
398
|
Command("poofout", do_poofout, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
399
|
+
Command("bamfin", do_poofin, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL), # ROM alias
|
|
400
|
+
Command("bamfout", do_poofout, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL), # ROM alias
|
|
398
401
|
Command("echo", do_echo, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
399
402
|
Command("recho", do_recho, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
400
403
|
Command("zecho", do_zecho, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
@@ -439,6 +442,7 @@ COMMANDS: list[Command] = [
|
|
|
439
442
|
Command("resets", do_resets, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
440
443
|
Command("alist", do_alist, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
441
444
|
Command("edit", do_edit, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
445
|
+
Command("olc", do_edit, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL), # ROM alias for edit
|
|
442
446
|
Command("mpedit", do_mpedit, min_position=Position.DEAD, min_trust=LEVEL_IMMORTAL),
|
|
443
447
|
# Miscellaneous Player Commands
|
|
444
448
|
Command("afk", do_afk, min_position=Position.SLEEPING),
|
|
@@ -535,6 +539,12 @@ COMMANDS: list[Command] = [
|
|
|
535
539
|
log_level=LogLevel.ALWAYS,
|
|
536
540
|
min_trust=LEVEL_HERO,
|
|
537
541
|
),
|
|
542
|
+
Command(
|
|
543
|
+
"qmread",
|
|
544
|
+
do_qmread,
|
|
545
|
+
admin_only=True,
|
|
546
|
+
min_trust=MAX_LEVEL,
|
|
547
|
+
),
|
|
538
548
|
# OLC Commands - ROM style (no @ prefix)
|
|
539
549
|
Command("redit", cmd_redit, admin_only=True, min_trust=LEVEL_HERO),
|
|
540
550
|
Command("aedit", cmd_aedit, admin_only=True, min_trust=LEVEL_HERO),
|
mud/commands/give.py
CHANGED
|
@@ -133,8 +133,12 @@ def do_give(char: Character, args: str) -> str:
|
|
|
133
133
|
obj_name = getattr(obj, "short_descr", None) or getattr(obj, "name", "something")
|
|
134
134
|
victim_name = getattr(victim, "short_descr", None) or getattr(victim, "name", "them")
|
|
135
135
|
|
|
136
|
-
# Trigger
|
|
137
|
-
#
|
|
136
|
+
# Trigger give mobprog if NPC and has trigger
|
|
137
|
+
# ROM Reference: src/act_obj.c:841-842
|
|
138
|
+
victim_is_npc = getattr(victim, "is_npc", False)
|
|
139
|
+
if victim_is_npc:
|
|
140
|
+
from mud.mobprog import mp_give_trigger
|
|
141
|
+
mp_give_trigger(victim, char, obj)
|
|
138
142
|
|
|
139
143
|
return f"You give {obj_name} to {victim_name}."
|
|
140
144
|
|
mud/commands/remaining_rom.py
CHANGED
|
@@ -550,3 +550,22 @@ def _send_to_char(char: Character, message: str) -> None:
|
|
|
550
550
|
if not hasattr(char, "output_buffer"):
|
|
551
551
|
char.output_buffer = []
|
|
552
552
|
char.output_buffer.append(message)
|
|
553
|
+
|
|
554
|
+
|
|
555
|
+
def do_qmread(char: Character, args: str) -> str:
|
|
556
|
+
"""
|
|
557
|
+
QuickMUD config file read command.
|
|
558
|
+
|
|
559
|
+
ROM Reference: src/interp.h declares do_qmread but never implements it.
|
|
560
|
+
This is a stub for ROM command parity.
|
|
561
|
+
|
|
562
|
+
Usage: qmread
|
|
563
|
+
|
|
564
|
+
Note: In ROM QuickMUD, this was planned to read qmconfig.rc but was
|
|
565
|
+
never fully implemented. The qmconfig command handles config reading.
|
|
566
|
+
"""
|
|
567
|
+
trust = get_trust(char)
|
|
568
|
+
if trust < MAX_LEVEL:
|
|
569
|
+
return "Huh?"
|
|
570
|
+
|
|
571
|
+
return "QMConfig settings can be viewed with 'qmconfig' command."
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
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>
|
|
@@ -53,11 +53,11 @@ Dynamic: license-file
|
|
|
53
53
|
|
|
54
54
|
# QuickMUD - A Modern ROM 2.4 Python Port
|
|
55
55
|
|
|
56
|
-
[](https://github.com/avinson/rom24-quickmud)
|
|
57
57
|
[](https://www.python.org/downloads/)
|
|
58
58
|
[](https://opensource.org/licenses/MIT)
|
|
59
|
-
[](ROM_PARITY_FEATURE_TRACKER.md)
|
|
59
|
+
[](https://github.com/Nostoi/rom24-quickmud-python)
|
|
60
|
+
[](docs/parity/ROM_PARITY_FEATURE_TRACKER.md)
|
|
61
61
|
[](FUNCTION_MAPPING.md)
|
|
62
62
|
|
|
63
63
|
**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**.
|
|
@@ -312,7 +312,7 @@ For developers interested in extending QuickMUD beyond ROM 2.4b:
|
|
|
312
312
|
|
|
313
313
|
### 📚 For Contributors
|
|
314
314
|
|
|
315
|
-
See [ROM_PARITY_FEATURE_TRACKER.md](ROM_PARITY_FEATURE_TRACKER.md) for detailed feature status and [AGENTS.md](AGENTS.md) for AI-assisted development workflows.
|
|
315
|
+
See [ROM_PARITY_FEATURE_TRACKER.md](docs/parity/ROM_PARITY_FEATURE_TRACKER.md) for detailed feature status and [AGENTS.md](AGENTS.md) for AI-assisted development workflows.
|
|
316
316
|
|
|
317
317
|
**Development Guidelines**:
|
|
318
318
|
|
|
@@ -33,8 +33,8 @@ mud/characters/__init__.py,sha256=BTnH4-W4m7WtjqvOgiLK2BbgzBA0nPLKb71kaa1BnB4,16
|
|
|
33
33
|
mud/characters/conditions.py,sha256=h7anKi7gy-WqBjP15N761SqEehlAsj6tTp4qdd62W6w,1523
|
|
34
34
|
mud/characters/follow.py,sha256=FRLfR-Lm-navW_gpSQxTuTZp84C0AczHVx5BEaewR5w,2286
|
|
35
35
|
mud/combat/__init__.py,sha256=7_DhedX3e2-cpBcQa3zgUH7F83MDpLpDAdSZhtc84LM,166
|
|
36
|
-
mud/combat/death.py,sha256=
|
|
37
|
-
mud/combat/engine.py,sha256=
|
|
36
|
+
mud/combat/death.py,sha256=9lznnkjeOp6GlDuzHNqq50QujcVKM7IF0wI91HNABUI,19167
|
|
37
|
+
mud/combat/engine.py,sha256=rm5dJBOZ5zaGhv_ayVMC7xp0gVZhW3xvcGZDcU2p-K0,51998
|
|
38
38
|
mud/combat/kill_table.py,sha256=oR77me5GJLGXi3q5ZnQAdp3S5lsfJNhiCmaXOMQrNgA,1040
|
|
39
39
|
mud/combat/messages.py,sha256=qxi7fkyW1V2mVZeXAtgdSehLhv7CmcPwe1SCyelCkHU,6262
|
|
40
40
|
mud/combat/safety.py,sha256=EcQdUbE_vUFEhKv5ZG86ba4mNd6VG1Bw1ZWQW2sGYTc,3019
|
|
@@ -48,16 +48,16 @@ mud/commands/build.py,sha256=uJaJYtmFHrwAoUl0RDWPAWVHduVNZrxtPsAnH-M5j_w,85938
|
|
|
48
48
|
mud/commands/channels.py,sha256=1PewUVrMk1Uh7dUj7ZZgUyL9xkQbSN7BY9KtBkL4GAc,1584
|
|
49
49
|
mud/commands/character.py,sha256=xM41dx3lZBcrNRWAcMBjt5PiFi9q077oVkmmuiIFGf4,4223
|
|
50
50
|
mud/commands/combat.py,sha256=DByqMIgUFdg31J5v3OX3bEPTTwwYXPmQ1hWFFjBeiEc,32867
|
|
51
|
-
mud/commands/communication.py,sha256=
|
|
51
|
+
mud/commands/communication.py,sha256=H3OjaI41Y6dbwje7RDSn2SHoqXtqlv2pjZhxSR52HnQ,19359
|
|
52
52
|
mud/commands/compare.py,sha256=AmGl2OJy5KS_0U2zqv0EwSwpgfFee70oaDZC6xZ7Tzw,5176
|
|
53
53
|
mud/commands/consider.py,sha256=rQwLTZq28nfdpnBmEgpV72FSvJJE5JPuPMhtMouN-hE,2230
|
|
54
54
|
mud/commands/consumption.py,sha256=oKhXIS0mPRr-qq8HRxEHrrsSaHY_rgfjqjd8xC46_Eg,8009
|
|
55
55
|
mud/commands/decorators.py,sha256=n_ezcovFkycAZOVxg0UNtMZLtiSlF0Yj8yqYt4YVY1U,345
|
|
56
|
-
mud/commands/dispatcher.py,sha256=
|
|
56
|
+
mud/commands/dispatcher.py,sha256=cWfQaUG8KH3KAwZKFb5UC9Ti-8KGJO4dsCIZ4heKd2w,38406
|
|
57
57
|
mud/commands/doors.py,sha256=M3TUHyD2PULh5H4Dsj1k6Jgn8qvAIWW687d2tyTVdyM,16058
|
|
58
58
|
mud/commands/equipment.py,sha256=RknjKfCLeR1djSHF3jvB3LHcTjFpuuRJJNSgdtnn17A,9075
|
|
59
59
|
mud/commands/feedback.py,sha256=qEmUlVy1KC6ludpAREdqvf8gpa8jmgN4AMLor0EoO7E,2472
|
|
60
|
-
mud/commands/give.py,sha256=
|
|
60
|
+
mud/commands/give.py,sha256=njzoCLD6m2ZKzvi8yjBwzJbR-hrN7JtBCKDxXsvn1zc,6760
|
|
61
61
|
mud/commands/group_commands.py,sha256=wmJj07pSImQLzGQ7QrGZPpmRGlhMQoEK4tj_cWMTLlg,12413
|
|
62
62
|
mud/commands/healer.py,sha256=1ahakNX2AW36zvbgqYnT6upvfvoXL-FX3TS7zK21RVs,2296
|
|
63
63
|
mud/commands/help.py,sha256=GfQWy6MyFtDc-mW1dM7pPN1SFVsWtIGno8uR4dRQYjg,11124
|
|
@@ -88,7 +88,7 @@ mud/commands/obj_manipulation.py,sha256=g4ZTIUrt6mdq7jqfMR7KymeLETEWF2sNZZVGEbTV
|
|
|
88
88
|
mud/commands/player_config.py,sha256=1J7v-viVe40slfLfzDC42ZLLMwF0vixdWkWFlMIvc0I,6082
|
|
89
89
|
mud/commands/player_info.py,sha256=rZBb3s4saq9kVyjP5Xg7K6udPiZTyptp9O0Ynpe8Etw,4811
|
|
90
90
|
mud/commands/position.py,sha256=hK-VBeiKjvngAbGlhzXk_GRwIaZu4bXb3FMHuH8L-6U,2418
|
|
91
|
-
mud/commands/remaining_rom.py,sha256=
|
|
91
|
+
mud/commands/remaining_rom.py,sha256=OWSQXJ56-9ENPINZ6-S-UK4yvhxef0EBKKdGCtfVwEU,17441
|
|
92
92
|
mud/commands/session.py,sha256=2_ANNkF_sbOhgbAaU8gRbzzDhjrDM43yLqYP0USyG5Q,8292
|
|
93
93
|
mud/commands/shop.py,sha256=rP21ukn2HrvyxFxhLfUjO12WAcCu2fVuSMR_NZBU9-c,35269
|
|
94
94
|
mud/commands/socials.py,sha256=f-nXb5i2G6-GK42Uq0o5IEvy-tf0OTDm73p3q4SgU5E,1553
|
|
@@ -200,9 +200,9 @@ mud/world/movement.py,sha256=Y7it7pXrPORgKyy2tRB8br_kb4-s9UK-gj0N-E2U9oM,18695
|
|
|
200
200
|
mud/world/obj_find.py,sha256=7QjVAhA-XEqAEm0CoanNtBuYj6rKijNSu8Vu1JcueMY,4304
|
|
201
201
|
mud/world/vision.py,sha256=q8VjzSzm0cbNrHX6-o0j1UG-jlcM3Z9bzUxK6T-Bsi8,9862
|
|
202
202
|
mud/world/world_state.py,sha256=W9ABMADlY5H-ZmywACsryFKZp34OufjzMRD6WT331qg,7917
|
|
203
|
-
rom24_quickmud_python-2.
|
|
204
|
-
rom24_quickmud_python-2.
|
|
205
|
-
rom24_quickmud_python-2.
|
|
206
|
-
rom24_quickmud_python-2.
|
|
207
|
-
rom24_quickmud_python-2.
|
|
208
|
-
rom24_quickmud_python-2.
|
|
203
|
+
rom24_quickmud_python-2.3.1.dist-info/licenses/LICENSE,sha256=anQ2j9As6sIC8tZgQCXbo0-09JDH9vPiqhA9djnOvkY,1078
|
|
204
|
+
rom24_quickmud_python-2.3.1.dist-info/METADATA,sha256=CnA8AuQvIrXaL0bO8ad6Kb8B799L9h_r655igYMHVD0,11748
|
|
205
|
+
rom24_quickmud_python-2.3.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
|
|
206
|
+
rom24_quickmud_python-2.3.1.dist-info/entry_points.txt,sha256=VFru08UQTXZA_CkK-NBjJmWHyEX5a3864fQHjhaojbw,41
|
|
207
|
+
rom24_quickmud_python-2.3.1.dist-info/top_level.txt,sha256=Fk1WPmabIIjp7_iZXLYpbAVqiq7lG7TeAHt30AsOKtQ,4
|
|
208
|
+
rom24_quickmud_python-2.3.1.dist-info/RECORD,,
|
|
File without changes
|
{rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{rom24_quickmud_python-2.2.1.dist-info → rom24_quickmud_python-2.3.1.dist-info}/top_level.txt
RENAMED
|
File without changes
|