rom24-quickmud-python 2.9.18__py3-none-any.whl → 2.9.20__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/commands/group_commands.py +75 -8
- {rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/METADATA +1 -1
- {rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/RECORD +7 -7
- {rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/WHEEL +0 -0
- {rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/entry_points.txt +0 -0
- {rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/licenses/LICENSE +0 -0
- {rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/top_level.txt +0 -0
mud/commands/group_commands.py
CHANGED
|
@@ -11,11 +11,23 @@ from mud.models.constants import AffectFlag, PlayerFlag, Position
|
|
|
11
11
|
from mud.world.char_find import get_char_room
|
|
12
12
|
|
|
13
13
|
|
|
14
|
+
def _display_name(character: Character | None) -> str:
|
|
15
|
+
if character is None:
|
|
16
|
+
return "Someone"
|
|
17
|
+
name = getattr(character, "name", None)
|
|
18
|
+
if isinstance(name, str) and name:
|
|
19
|
+
return name
|
|
20
|
+
short_descr = getattr(character, "short_descr", None)
|
|
21
|
+
if isinstance(short_descr, str) and short_descr:
|
|
22
|
+
return short_descr
|
|
23
|
+
return "Someone"
|
|
24
|
+
|
|
25
|
+
|
|
14
26
|
def add_follower(char: Character, master: Character) -> None:
|
|
15
27
|
"""
|
|
16
28
|
Add char as a follower of master.
|
|
17
29
|
|
|
18
|
-
ROM Reference: src/act_comm.c add_follower (lines
|
|
30
|
+
ROM Reference: src/act_comm.c add_follower (lines 1591-1607)
|
|
19
31
|
"""
|
|
20
32
|
if char.master is not None:
|
|
21
33
|
return # Already following someone
|
|
@@ -28,6 +40,19 @@ def add_follower(char: Character, master: Character) -> None:
|
|
|
28
40
|
if char not in master.followers:
|
|
29
41
|
master.followers.append(char)
|
|
30
42
|
|
|
43
|
+
# ROM lines 1602-1605: act("$n now follows you.", ch, NULL, master, TO_VICT)
|
|
44
|
+
# gated on can_see(master, ch); act("You now follow $N.", ch, NULL, master, TO_CHAR).
|
|
45
|
+
from mud.world.vision import can_see_character
|
|
46
|
+
|
|
47
|
+
if can_see_character(master, char):
|
|
48
|
+
master_messages = getattr(master, "messages", None)
|
|
49
|
+
if isinstance(master_messages, list):
|
|
50
|
+
master_messages.append(f"{_display_name(char)} now follows you.")
|
|
51
|
+
|
|
52
|
+
char_messages = getattr(char, "messages", None)
|
|
53
|
+
if isinstance(char_messages, list):
|
|
54
|
+
char_messages.append(f"You now follow {_display_name(master)}.")
|
|
55
|
+
|
|
31
56
|
|
|
32
57
|
def stop_follower(char: Character) -> None:
|
|
33
58
|
"""
|
|
@@ -48,6 +73,19 @@ def stop_follower(char: Character) -> None:
|
|
|
48
73
|
if hasattr(master, "followers") and char in master.followers:
|
|
49
74
|
master.followers.remove(char)
|
|
50
75
|
|
|
76
|
+
# ROM lines 1626-1630: act("$n stops following you.", ch, NULL, ch->master, TO_VICT);
|
|
77
|
+
# act("You stop following $N.", ch, NULL, ch->master, TO_CHAR); gated on
|
|
78
|
+
# can_see(ch->master, ch) && ch->in_room != NULL.
|
|
79
|
+
from mud.world.vision import can_see_character
|
|
80
|
+
|
|
81
|
+
if can_see_character(master, char) and getattr(char, "room", None) is not None:
|
|
82
|
+
master_messages = getattr(master, "messages", None)
|
|
83
|
+
if isinstance(master_messages, list):
|
|
84
|
+
master_messages.append(f"{_display_name(char)} stops following you.")
|
|
85
|
+
char_messages = getattr(char, "messages", None)
|
|
86
|
+
if isinstance(char_messages, list):
|
|
87
|
+
char_messages.append(f"You stop following {_display_name(master)}.")
|
|
88
|
+
|
|
51
89
|
char.master = None
|
|
52
90
|
char.leader = None
|
|
53
91
|
|
|
@@ -221,16 +259,45 @@ def do_group(char: Character, args: str) -> str:
|
|
|
221
259
|
if char_affected & AffectFlag.CHARM:
|
|
222
260
|
return "You like your master too much to leave!"
|
|
223
261
|
|
|
224
|
-
|
|
262
|
+
leader_name = _display_name(char)
|
|
263
|
+
victim_name_str = _display_name(victim)
|
|
264
|
+
|
|
265
|
+
# Already in group - remove (ROM src/act_comm.c:1838-1847)
|
|
225
266
|
if is_same_group(victim, char) and char is not victim:
|
|
226
267
|
victim.leader = None
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
268
|
+
# TO_VICT: "$n removes you from $s group."
|
|
269
|
+
victim_messages = getattr(victim, "messages", None)
|
|
270
|
+
if isinstance(victim_messages, list):
|
|
271
|
+
victim_messages.append(f"{leader_name} removes you from {leader_name}'s group.")
|
|
272
|
+
# TO_NOTVICT: "$n removes $N from $s group."
|
|
273
|
+
room = getattr(char, "room", None)
|
|
274
|
+
if room is not None:
|
|
275
|
+
notvict_msg = f"{leader_name} removes {victim_name_str} from {leader_name}'s group."
|
|
276
|
+
for occupant in list(getattr(room, "people", []) or []):
|
|
277
|
+
if occupant is char or occupant is victim:
|
|
278
|
+
continue
|
|
279
|
+
occ_messages = getattr(occupant, "messages", None)
|
|
280
|
+
if isinstance(occ_messages, list):
|
|
281
|
+
occ_messages.append(notvict_msg)
|
|
282
|
+
return f"You remove {victim_name_str} from your group."
|
|
283
|
+
|
|
284
|
+
# Add to group (ROM src/act_comm.c:1850-1854)
|
|
231
285
|
victim.leader = char
|
|
232
|
-
|
|
233
|
-
|
|
286
|
+
# TO_VICT: "You join $n's group."
|
|
287
|
+
victim_messages = getattr(victim, "messages", None)
|
|
288
|
+
if isinstance(victim_messages, list):
|
|
289
|
+
victim_messages.append(f"You join {leader_name}'s group.")
|
|
290
|
+
# TO_NOTVICT: "$N joins $n's group."
|
|
291
|
+
room = getattr(char, "room", None)
|
|
292
|
+
if room is not None:
|
|
293
|
+
notvict_msg = f"{victim_name_str} joins {leader_name}'s group."
|
|
294
|
+
for occupant in list(getattr(room, "people", []) or []):
|
|
295
|
+
if occupant is char or occupant is victim:
|
|
296
|
+
continue
|
|
297
|
+
occ_messages = getattr(occupant, "messages", None)
|
|
298
|
+
if isinstance(occ_messages, list):
|
|
299
|
+
occ_messages.append(notvict_msg)
|
|
300
|
+
return f"{victim_name_str} joins your group."
|
|
234
301
|
|
|
235
302
|
|
|
236
303
|
def do_gtell(char: Character, args: str) -> str:
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.20
|
|
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>
|
|
@@ -59,7 +59,7 @@ mud/commands/doors.py,sha256=KWMQPVJHs8-xPFE08kStOOU9x5ugN5sEFuo7nlQL2Z8,19777
|
|
|
59
59
|
mud/commands/equipment.py,sha256=BXUJhe_volohdgUKpugV8Wfcn-pHXG6ooaKeF6LmcI4,22882
|
|
60
60
|
mud/commands/feedback.py,sha256=qEmUlVy1KC6ludpAREdqvf8gpa8jmgN4AMLor0EoO7E,2472
|
|
61
61
|
mud/commands/give.py,sha256=BcZjqFm1WqhoRi9qZJ8G9zRu_buXptwg9Y7_oSNnFVE,8787
|
|
62
|
-
mud/commands/group_commands.py,sha256=
|
|
62
|
+
mud/commands/group_commands.py,sha256=Cz3LNTCccR4ghpyE5QORDlZBwpzkli93uueF3zZBoHk,20077
|
|
63
63
|
mud/commands/healer.py,sha256=noZ3t97C_0j1GEJd8nUNYYv4clHxuD4dvFSR3c1gfUA,7576
|
|
64
64
|
mud/commands/help.py,sha256=GfQWy6MyFtDc-mW1dM7pPN1SFVsWtIGno8uR4dRQYjg,11124
|
|
65
65
|
mud/commands/imc.py,sha256=v1lPP2xDjQjkk7negwjCXJtcRPQkBEIGWmpPKf1XPzU,12204
|
|
@@ -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.
|
|
220
|
-
rom24_quickmud_python-2.9.
|
|
221
|
-
rom24_quickmud_python-2.9.
|
|
222
|
-
rom24_quickmud_python-2.9.
|
|
223
|
-
rom24_quickmud_python-2.9.
|
|
224
|
-
rom24_quickmud_python-2.9.
|
|
219
|
+
rom24_quickmud_python-2.9.20.dist-info/licenses/LICENSE,sha256=anQ2j9As6sIC8tZgQCXbo0-09JDH9vPiqhA9djnOvkY,1078
|
|
220
|
+
rom24_quickmud_python-2.9.20.dist-info/METADATA,sha256=2ZdXr4J9qst8o-JpVWVsZJFT2F2Gpnf9vkYZ1_GA7xE,15671
|
|
221
|
+
rom24_quickmud_python-2.9.20.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
222
|
+
rom24_quickmud_python-2.9.20.dist-info/entry_points.txt,sha256=VFru08UQTXZA_CkK-NBjJmWHyEX5a3864fQHjhaojbw,41
|
|
223
|
+
rom24_quickmud_python-2.9.20.dist-info/top_level.txt,sha256=Fk1WPmabIIjp7_iZXLYpbAVqiq7lG7TeAHt30AsOKtQ,4
|
|
224
|
+
rom24_quickmud_python-2.9.20.dist-info/RECORD,,
|
|
File without changes
|
{rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{rom24_quickmud_python-2.9.18.dist-info → rom24_quickmud_python-2.9.20.dist-info}/top_level.txt
RENAMED
|
File without changes
|