rom24-quickmud-python 2.9.16__py3-none-any.whl → 2.9.17__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.
@@ -165,13 +165,18 @@ def do_say(char: Character, args: str) -> str:
165
165
  asyncio.create_task(send_to_char(listener, per_message))
166
166
  if hasattr(listener, "messages"):
167
167
  listener.messages.append(per_message)
168
- for mob in list(char.room.people):
169
- if mob is char or not getattr(mob, "is_npc", False):
170
- continue
171
- default_pos = getattr(mob, "default_pos", getattr(mob, "position", Position.STANDING))
172
- if getattr(mob, "position", default_pos) != default_pos:
173
- continue
174
- mobprog.mp_speech_trigger(args, mob, char)
168
+ # mirroring ROM src/act_comm.c:779 — `if (!IS_NPC (ch))` gate.
169
+ # Only PC speakers enter the SPEECH listener loop; this prevents
170
+ # mob-to-mob speech-trigger cascades (mob A says "X" → mob B's
171
+ # SPEECH trigger fires triggers another say → infinite loop).
172
+ if not getattr(char, "is_npc", False):
173
+ for mob in list(char.room.people):
174
+ if mob is char or not getattr(mob, "is_npc", False):
175
+ continue
176
+ default_pos = getattr(mob, "default_pos", getattr(mob, "position", Position.STANDING))
177
+ if getattr(mob, "position", default_pos) != default_pos:
178
+ continue
179
+ mobprog.mp_speech_trigger(args, mob, char)
175
180
  return f"{{6You say '{{7{args}{{6'{{x"
176
181
 
177
182
 
@@ -215,7 +220,10 @@ def do_tell(char: Character, args: str) -> str:
215
220
  if buffered_response:
216
221
  return buffered_response
217
222
 
218
- if getattr(target, "is_npc", False):
223
+ # mirroring ROM src/act_comm.c:946 — `if (!IS_NPC (ch) && IS_NPC (victim)
224
+ # && HAS_TRIGGER (victim, TRIG_SPEECH))`. NPC tellers do not fire SPEECH
225
+ # triggers on NPC targets; same anti-cascade gate as do_say.
226
+ if not getattr(char, "is_npc", False) and getattr(target, "is_npc", False):
219
227
  default_pos = getattr(target, "default_pos", getattr(target, "position", Position.STANDING))
220
228
  if getattr(target, "position", default_pos) == default_pos:
221
229
  mobprog.mp_speech_trigger(message, target, char)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: rom24-quickmud-python
3
- Version: 2.9.16
3
+ Version: 2.9.17
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>
@@ -49,7 +49,7 @@ mud/commands/build.py,sha256=jro60oQm_q1RPWKrz-5QsdchYxItUDHcaZ_9Tm06qJU,152434
49
49
  mud/commands/channels.py,sha256=1PewUVrMk1Uh7dUj7ZZgUyL9xkQbSN7BY9KtBkL4GAc,1584
50
50
  mud/commands/character.py,sha256=my8wNr6Z0RA9lSwfv8HkExOw7VKfFVgQe_PQ70dps8M,6539
51
51
  mud/commands/combat.py,sha256=T22a3xYviTEsK71zYdAnaHk3CPxpYyV05crunpDBr24,34017
52
- mud/commands/communication.py,sha256=p90xizUUsirp8yziNp6qb3N8IA-JxsIDW79MaMPgk28,26173
52
+ mud/commands/communication.py,sha256=oOCZIq5YoI4gSAvf7FzyT-QxhDO0EYlo3EroChNuQPA,26804
53
53
  mud/commands/compare.py,sha256=o6kalHONN15J6lvFzrE7-bcYvVhIY2KCHXlCvFH3T-0,4168
54
54
  mud/commands/consider.py,sha256=rQwLTZq28nfdpnBmEgpV72FSvJJE5JPuPMhtMouN-hE,2230
55
55
  mud/commands/consumption.py,sha256=SW6ikVuAAY1C9jMv3v4kgApPOV324TkABBtFQ6pjSlE,14241
@@ -216,9 +216,9 @@ mud/world/obj_find.py,sha256=tgnUkbFjnCl586Lzl6yRzCmllZSNEfQpQlrxCMVcUGU,5295
216
216
  mud/world/time_persistence.py,sha256=K4uhRpu08IDHY5uReBYTvw4BHuqsSxWvbv-h1VsPvf8,1663
217
217
  mud/world/vision.py,sha256=NRk3cvrGyyldU4W98qAVlYZp9wL-IUE1dTgk6DpM-NA,11609
218
218
  mud/world/world_state.py,sha256=3KpiDP6v24sZDn9-g44UypXpegzgRShHo1XvektJzdU,8810
219
- rom24_quickmud_python-2.9.16.dist-info/licenses/LICENSE,sha256=anQ2j9As6sIC8tZgQCXbo0-09JDH9vPiqhA9djnOvkY,1078
220
- rom24_quickmud_python-2.9.16.dist-info/METADATA,sha256=JYhD8-U8QBqngzzhnI1YnOb61Sb2XW0dxwheGeWjnDU,15671
221
- rom24_quickmud_python-2.9.16.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
222
- rom24_quickmud_python-2.9.16.dist-info/entry_points.txt,sha256=VFru08UQTXZA_CkK-NBjJmWHyEX5a3864fQHjhaojbw,41
223
- rom24_quickmud_python-2.9.16.dist-info/top_level.txt,sha256=Fk1WPmabIIjp7_iZXLYpbAVqiq7lG7TeAHt30AsOKtQ,4
224
- rom24_quickmud_python-2.9.16.dist-info/RECORD,,
219
+ rom24_quickmud_python-2.9.17.dist-info/licenses/LICENSE,sha256=anQ2j9As6sIC8tZgQCXbo0-09JDH9vPiqhA9djnOvkY,1078
220
+ rom24_quickmud_python-2.9.17.dist-info/METADATA,sha256=_5VyC4CcMMzAJvnPioIc3xC6cWIwyXaFcSMP07LlCnY,15671
221
+ rom24_quickmud_python-2.9.17.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
222
+ rom24_quickmud_python-2.9.17.dist-info/entry_points.txt,sha256=VFru08UQTXZA_CkK-NBjJmWHyEX5a3864fQHjhaojbw,41
223
+ rom24_quickmud_python-2.9.17.dist-info/top_level.txt,sha256=Fk1WPmabIIjp7_iZXLYpbAVqiq7lG7TeAHt30AsOKtQ,4
224
+ rom24_quickmud_python-2.9.17.dist-info/RECORD,,