rom24-quickmud-python 2.9.2__py3-none-any.whl → 2.9.3__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 +3 -3
- mud/commands/shop.py +2 -2
- mud/handler.py +2 -2
- mud/models/conversion.py +2 -2
- mud/models/object.py +20 -0
- mud/rom_api.py +2 -2
- mud/skills/handlers.py +38 -2
- {rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/METADATA +1 -1
- {rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/RECORD +13 -13
- {rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/WHEEL +0 -0
- {rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/entry_points.txt +0 -0
- {rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/licenses/LICENSE +0 -0
- {rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/top_level.txt +0 -0
mud/combat/death.py
CHANGED
|
@@ -29,7 +29,7 @@ from mud.characters.follow import stop_follower
|
|
|
29
29
|
from mud.models.clans import get_clan_hall_vnum
|
|
30
30
|
from mud.models.races import get_race_by_index
|
|
31
31
|
from mud.models.obj import ObjIndex
|
|
32
|
-
from mud.models.object import Object
|
|
32
|
+
from mud.models.object import Object, create_object
|
|
33
33
|
from mud.models.social import expand_placeholders
|
|
34
34
|
from mud.spawning.obj_spawner import spawn_object
|
|
35
35
|
from mud.utils import rng_mm
|
|
@@ -74,7 +74,7 @@ def _fallback_gore(
|
|
|
74
74
|
description=description_template,
|
|
75
75
|
)
|
|
76
76
|
proto.item_type = int(item_type)
|
|
77
|
-
obj =
|
|
77
|
+
obj = create_object(proto)
|
|
78
78
|
obj.item_type = int(item_type)
|
|
79
79
|
return obj
|
|
80
80
|
|
|
@@ -341,7 +341,7 @@ def _fallback_corpse(vnum: int, *, item_type: ItemType) -> Object:
|
|
|
341
341
|
|
|
342
342
|
proto = ObjIndex(vnum=vnum, short_descr="the corpse of %s", description="The corpse of %s is lying here.")
|
|
343
343
|
proto.item_type = int(item_type)
|
|
344
|
-
corpse =
|
|
344
|
+
corpse = create_object(proto)
|
|
345
345
|
corpse.item_type = int(item_type)
|
|
346
346
|
return corpse
|
|
347
347
|
|
mud/commands/shop.py
CHANGED
|
@@ -20,7 +20,7 @@ from mud.models.constants import (
|
|
|
20
20
|
ITEM_SELL_EXTRACT,
|
|
21
21
|
ITEM_VIS_DEATH,
|
|
22
22
|
)
|
|
23
|
-
from mud.models.object import Object
|
|
23
|
+
from mud.models.object import Object, create_object
|
|
24
24
|
from mud.registry import room_registry, shop_registry
|
|
25
25
|
from mud.skills import check_improve
|
|
26
26
|
from mud.spawning.obj_spawner import spawn_object
|
|
@@ -354,7 +354,7 @@ def _clone_inventory_object(template: Object) -> Object | None:
|
|
|
354
354
|
|
|
355
355
|
clone = spawn_object(getattr(proto, "vnum", 0))
|
|
356
356
|
if clone is None:
|
|
357
|
-
clone =
|
|
357
|
+
clone = create_object(proto)
|
|
358
358
|
|
|
359
359
|
# Mirror runtime overrides from the template copy so shop customisations persist.
|
|
360
360
|
clone.value = list(getattr(template, "value", clone.value))
|
mud/handler.py
CHANGED
|
@@ -892,7 +892,7 @@ def create_money(gold: int, silver: int) -> Object:
|
|
|
892
892
|
ItemType,
|
|
893
893
|
)
|
|
894
894
|
from mud.models.obj import ObjIndex
|
|
895
|
-
from mud.models.object import Object
|
|
895
|
+
from mud.models.object import Object, create_object
|
|
896
896
|
|
|
897
897
|
# ROM C handler.c:2432-2437 (validate input)
|
|
898
898
|
if gold < 0 or silver < 0 or (gold == 0 and silver == 0):
|
|
@@ -957,7 +957,7 @@ def create_money(gold: int, silver: int) -> Object:
|
|
|
957
957
|
wear_flags=int(WearFlag.TAKE),
|
|
958
958
|
weight=weight,
|
|
959
959
|
)
|
|
960
|
-
obj =
|
|
960
|
+
obj = create_object(proto)
|
|
961
961
|
obj.item_type = int(ItemType.MONEY)
|
|
962
962
|
obj.short_descr = short_descr
|
|
963
963
|
obj.cost = cost
|
mud/models/conversion.py
CHANGED
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from mud.db.models import Character as DBCharacter
|
|
4
4
|
from mud.db.models import ObjectInstance as DBObjectInstance
|
|
5
|
-
from mud.models.object import Object
|
|
5
|
+
from mud.models.object import Object, create_object
|
|
6
6
|
from mud.registry import obj_registry
|
|
7
7
|
|
|
8
8
|
|
|
@@ -14,7 +14,7 @@ def load_objects_for_character(db_char: DBCharacter) -> tuple[list[Object], dict
|
|
|
14
14
|
proto = obj_registry.get(inst.prototype_vnum)
|
|
15
15
|
if not proto:
|
|
16
16
|
continue
|
|
17
|
-
obj =
|
|
17
|
+
obj = create_object(proto, instance_id=inst.id)
|
|
18
18
|
if inst.location and inst.location.startswith("equipment:"):
|
|
19
19
|
slot = inst.location.split(":", 1)[1]
|
|
20
20
|
equipment[slot] = obj
|
mud/models/object.py
CHANGED
|
@@ -146,3 +146,23 @@ class Object:
|
|
|
146
146
|
self.in_room = value # type: ignore[assignment]
|
|
147
147
|
self.carried_by = None
|
|
148
148
|
self.in_obj = None
|
|
149
|
+
|
|
150
|
+
|
|
151
|
+
def create_object(prototype: ObjIndex, *, instance_id: int | None = None) -> Object:
|
|
152
|
+
"""Build a new ``Object`` and register it on ``object_registry``.
|
|
153
|
+
|
|
154
|
+
INV-014 OBJECT-REGISTRY-MEMBERSHIP: ROM ``src/db.c:create_object``
|
|
155
|
+
appends every freshly built ``OBJ_DATA`` to the global
|
|
156
|
+
``object_list``. ``mud.models.obj.object_registry`` is the canonical
|
|
157
|
+
Python equivalent; world-scan consumers (``spell_locate_object`` and
|
|
158
|
+
any future iteration over every live object) rely on it being
|
|
159
|
+
complete. Every Python ``Object(...)`` construction site that does
|
|
160
|
+
not already go through ``mud.spawning.obj_spawner.spawn_object``
|
|
161
|
+
must call this helper.
|
|
162
|
+
"""
|
|
163
|
+
|
|
164
|
+
from mud.models.obj import object_registry
|
|
165
|
+
|
|
166
|
+
obj = Object(instance_id=instance_id, prototype=prototype)
|
|
167
|
+
object_registry.append(obj)
|
|
168
|
+
return obj
|
mud/rom_api.py
CHANGED
|
@@ -658,7 +658,7 @@ def recursive_clone(obj: Object, clone_to: Object | None = None) -> Object:
|
|
|
658
658
|
Cloned object with all contents
|
|
659
659
|
"""
|
|
660
660
|
from mud.models.obj import ObjIndex
|
|
661
|
-
from mud.models.object import Object
|
|
661
|
+
from mud.models.object import Object, create_object
|
|
662
662
|
|
|
663
663
|
if not obj.prototype:
|
|
664
664
|
proto = ObjIndex(
|
|
@@ -678,7 +678,7 @@ def recursive_clone(obj: Object, clone_to: Object | None = None) -> Object:
|
|
|
678
678
|
else:
|
|
679
679
|
proto = obj.prototype
|
|
680
680
|
|
|
681
|
-
new_obj =
|
|
681
|
+
new_obj = create_object(proto)
|
|
682
682
|
|
|
683
683
|
for content in obj.contained_items:
|
|
684
684
|
recursive_clone(content, new_obj)
|
mud/skills/handlers.py
CHANGED
|
@@ -857,16 +857,52 @@ def _object_name_matches(obj: Object, search: str) -> bool:
|
|
|
857
857
|
|
|
858
858
|
|
|
859
859
|
def _iterate_world_objects():
|
|
860
|
-
"""Yield (object, holder) pairs mirroring ROM ``object_list
|
|
860
|
+
"""Yield ``(object, holder)`` pairs mirroring ROM ``object_list``.
|
|
861
|
+
|
|
862
|
+
INV-014 OBJECT-REGISTRY-MEMBERSHIP: ``object_registry`` is the
|
|
863
|
+
canonical Python equivalent of ROM ``object_list``. The primary
|
|
864
|
+
iteration walks it directly so that registered-but-unplaced objects
|
|
865
|
+
(e.g. transiently between ``extract`` and re-placement, or freshly
|
|
866
|
+
spawned before being put in a room) are surfaced exactly as ROM
|
|
867
|
+
``spell_locate_object`` (src/magic.c:3737) sees them.
|
|
868
|
+
|
|
869
|
+
For each registered obj the holder is computed per ROM
|
|
870
|
+
src/magic.c:3747: walk the ``in_obj`` chain to the outermost
|
|
871
|
+
container, then prefer ``carried_by`` over ``in_room`` (``None``
|
|
872
|
+
if neither is set, rendered as "somewhere").
|
|
873
|
+
|
|
874
|
+
A secondary walk of ``room_registry`` / ``character_registry``
|
|
875
|
+
backstops legacy unit tests that build ``Object`` instances directly
|
|
876
|
+
without going through ``create_object`` / ``spawn_object``; the seen
|
|
877
|
+
set dedupes by identity so registered objects are not yielded twice.
|
|
878
|
+
"""
|
|
879
|
+
|
|
880
|
+
from mud.models.obj import object_registry
|
|
861
881
|
|
|
862
882
|
seen: set[int] = set()
|
|
863
883
|
|
|
864
|
-
def
|
|
884
|
+
def _yield(obj: Object, holder: object):
|
|
865
885
|
ident = id(obj)
|
|
866
886
|
if ident in seen:
|
|
867
887
|
return
|
|
868
888
|
seen.add(ident)
|
|
869
889
|
yield obj, holder
|
|
890
|
+
|
|
891
|
+
for obj in list(object_registry):
|
|
892
|
+
outer = obj
|
|
893
|
+
while getattr(outer, "in_obj", None) is not None:
|
|
894
|
+
outer = outer.in_obj
|
|
895
|
+
carried_by = getattr(outer, "carried_by", None)
|
|
896
|
+
if carried_by is not None:
|
|
897
|
+
yield from _yield(obj, carried_by)
|
|
898
|
+
continue
|
|
899
|
+
in_room = getattr(outer, "in_room", None)
|
|
900
|
+
yield from _yield(obj, in_room)
|
|
901
|
+
|
|
902
|
+
def _walk(obj: Object, holder: object):
|
|
903
|
+
if id(obj) in seen:
|
|
904
|
+
return
|
|
905
|
+
yield from _yield(obj, holder)
|
|
870
906
|
children: list[Object] = []
|
|
871
907
|
contained = getattr(obj, "contained_items", None)
|
|
872
908
|
if isinstance(contained, list):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: rom24-quickmud-python
|
|
3
|
-
Version: 2.9.
|
|
3
|
+
Version: 2.9.3
|
|
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>
|
|
@@ -5,13 +5,13 @@ mud/config.py,sha256=FmuhwTeR5798i_dHBJvZ_EQ4d_eNO8oMa8ni8fxiHhs,7057
|
|
|
5
5
|
mud/entrypoint.py,sha256=WxBW3GfbKCOtSD5rx2ccSAC7lA3YRFi7DJ_EZvi1rmo,854
|
|
6
6
|
mud/game_loop.py,sha256=nzGos1soW6oN3LCdl_XYlmB-k2QRI0mnpGn5JofbFXM,52109
|
|
7
7
|
mud/game_tick_scheduler.py,sha256=7ybo2ekDQQPGN82u6fhcrrg7tZ-JMtGy4UUrZv9_Umo,1539
|
|
8
|
-
mud/handler.py,sha256=
|
|
8
|
+
mud/handler.py,sha256=UDX7lxaOUFvHBgIJrkxfgVjm0n7B_vD-9xCvvN2CdLM,51995
|
|
9
9
|
mud/logging.py,sha256=DoKcplYwEePAmXKE2CI_wNk4pF-pc_aouoxa5C6tXlc,582
|
|
10
10
|
mud/mob_cmds.py,sha256=Qd2A7YEkLJsKsRcnIR5a-f0EkdX1akSPiq3OsAkvnWg,45825
|
|
11
11
|
mud/mobprog.py,sha256=TZiv4ZErFAlcO1TWaJryzZ5kwTZFe5DSqKVlo6qJcTc,59173
|
|
12
12
|
mud/notes.py,sha256=mJM_f1lQ-Y1us7MHzHkgfozYKQCBm84FKRjmKpgoiOE,11501
|
|
13
13
|
mud/registry.py,sha256=s8tGVKLZUU6-5c7HtBqhHQWLVxzFM4A9bpJ8avGt_0I,306
|
|
14
|
-
mud/rom_api.py,sha256=
|
|
14
|
+
mud/rom_api.py,sha256=4XIQZvWt6oNLiUBGr-NShCQ3Ev9nSEMGNh01VPowagA,17256
|
|
15
15
|
mud/server.py,sha256=fv6mprd4h9CejTt8kOFkt6RA-NdzTwOd24d_3p9aOKY,219
|
|
16
16
|
mud/spec_funs.py,sha256=D4x9el8po1FYDY8ZbPwDkJ4ujtIq7fEW1lCvJW8POdk,47536
|
|
17
17
|
mud/time.py,sha256=eVMXzVoi9w7gGE7bN1FVYjCwSwBydSpkkVtptV4qTtw,1324
|
|
@@ -34,7 +34,7 @@ mud/characters/conditions.py,sha256=h7anKi7gy-WqBjP15N761SqEehlAsj6tTp4qdd62W6w,
|
|
|
34
34
|
mud/characters/follow.py,sha256=yP2cJ8WvqpWWebzOUfK5wauIQfdT5BL-ukuyax_Tni4,2751
|
|
35
35
|
mud/combat/__init__.py,sha256=YUphU7bKkxT3Qw0Gj2TcMmDoDyCYyRTQbHPCqKLjugE,215
|
|
36
36
|
mud/combat/assist.py,sha256=_GDeuK0rfrXoELLNgTxBR1S8XdYIqcmPbTh8AinY9s8,7777
|
|
37
|
-
mud/combat/death.py,sha256=
|
|
37
|
+
mud/combat/death.py,sha256=FQlnvIBXMtnnhfP9M55RxtiOBheXuGuBZX-IimudGsY,19152
|
|
38
38
|
mud/combat/engine.py,sha256=GIt7Earo2kgE0fqZKOvA8CkEWON0UqvQpqnHNEPilMo,61663
|
|
39
39
|
mud/combat/kill_table.py,sha256=oR77me5GJLGXi3q5ZnQAdp3S5lsfJNhiCmaXOMQrNgA,1040
|
|
40
40
|
mud/combat/messages.py,sha256=PVOYcOCHh4wW0P33ykbr6iYtFN8mottJ8W4S72E5pBM,7726
|
|
@@ -91,7 +91,7 @@ mud/commands/player_info.py,sha256=VqEHgETh7u1BMVWJDIMhvBgF2Pm5LGNtNpLRTbXt3mI,7
|
|
|
91
91
|
mud/commands/position.py,sha256=uwphiwxN_sEGi2wlAD5oE2pmlPCe1y9f50g_HrARg58,16339
|
|
92
92
|
mud/commands/remaining_rom.py,sha256=nIDH2XiMyxm-vR45QX6BLwdIdaS4V0kNEhm5mFY79hU,18780
|
|
93
93
|
mud/commands/session.py,sha256=hrx-HY94JkEed64FPSe6TbfcVITXlsfzQ9DLDQ9ZYjY,14865
|
|
94
|
-
mud/commands/shop.py,sha256=
|
|
94
|
+
mud/commands/shop.py,sha256=QXISJ0PsevuNWrP3Nn0K4KYxq4e9mvIBJmgVk4yUROw,40129
|
|
95
95
|
mud/commands/socials.py,sha256=IKSo1n-9aCtMDJFEq9KVBQIeabbijeMOZDXZUGoT_us,4401
|
|
96
96
|
mud/commands/thief_skills.py,sha256=OJ2rT1Z56Pm1zHeaN5NvWCa4g2xT_k7epJNQR7JpYMM,15161
|
|
97
97
|
mud/commands/typo_guards.py,sha256=NDL-6n1KwUduJNKpx_vRv3qGVrA1TvYelBwcla_RU9g,1434
|
|
@@ -139,7 +139,7 @@ mud/models/character_json.py,sha256=7rdI92S-JT38xb2iUyXTAJpLmFOIRy2pb6v1Yen8VQY,
|
|
|
139
139
|
mud/models/clans.py,sha256=vMeVpK4VbYBtGYxRFdg2lUmkrjkCvqEM_jCOTNiuG3g,2227
|
|
140
140
|
mud/models/classes.py,sha256=Fv0KjS339EBWqz5OBZu5TYSIDSRYpoalLTBJOf-6ThI,2602
|
|
141
141
|
mud/models/constants.py,sha256=ltr2MeoyD69x1aSbGlZ1fgcBc9ykPPMIHUoIzLciPUQ,28617
|
|
142
|
-
mud/models/conversion.py,sha256=
|
|
142
|
+
mud/models/conversion.py,sha256=uTR4Fnj13-v_D9c3_OyToJbLIabUI7Nh5KYnwVZIIYU,1439
|
|
143
143
|
mud/models/help.py,sha256=MgAkueRQt5FUBRmvCjDNicaPH53ckBKzZSzjDDwnbWk,1034
|
|
144
144
|
mud/models/help_json.py,sha256=sUlFUV5V31VANHSNHaRqMWS7EB1Qz87BY1oJsAWXMaw,268
|
|
145
145
|
mud/models/json_io.py,sha256=q_gWOXgmSCS0B-w8xbbfs2DFh0uqpQgywzIJzLPpo_o,2146
|
|
@@ -147,7 +147,7 @@ mud/models/mob.py,sha256=d2JGyNh74c-FQYmFQPXN9M9sb3valppaDRLUe49cMcc,3830
|
|
|
147
147
|
mud/models/note.py,sha256=stKuDsBJ5UQHngPVRbgDH4me_6RtUgjRczC2X3jbhgI,653
|
|
148
148
|
mud/models/note_json.py,sha256=BuYWIGyZFevoObHGknfMOxjpL0laP7G070wNPZLccXU,320
|
|
149
149
|
mud/models/obj.py,sha256=VNVKGLR9uUFOlGnLeFjRaeH4sAXE_gtyJV43lz4UVuY,2141
|
|
150
|
-
mud/models/object.py,sha256=
|
|
150
|
+
mud/models/object.py,sha256=0dtGzbErRPBARyR0IHtlyVMttUAkTzOU5EzGcbLzSQ0,6540
|
|
151
151
|
mud/models/object_json.py,sha256=v1_FnQnvkGBM1lnXPWQARfDQrs20C5mZDhCaLYgNiZs,960
|
|
152
152
|
mud/models/player_json.py,sha256=YQerAs3vxyAo7wr3orCXCC-pM_QWiwbz3aQ9RMzWW-Q,1249
|
|
153
153
|
mud/models/races.py,sha256=U-77PyNogpyLEhdHrwA8Yll3ekBBTYKYfj-l26Catm4,17138
|
|
@@ -188,7 +188,7 @@ mud/security/bans.py,sha256=_nM9wEJbxxdLXoe0I31u8dTYgWP0wxMqMVB9mxxfhlk,9174
|
|
|
188
188
|
mud/security/hash_utils.py,sha256=GNd2W-TFLSIOk1WMQRuvJo8l4CueBYzPI0EhQuydxUg,656
|
|
189
189
|
mud/skills/__init__.py,sha256=zzIr-ejbrlrQF1CSepODWhpxQZv8rO2pgaqIi3vpMg0,241
|
|
190
190
|
mud/skills/groups.py,sha256=_80fJkXfrPUmTcZ9JsCJHIAhRdmmGhayMJgn1pSFcQY,8127
|
|
191
|
-
mud/skills/handlers.py,sha256=
|
|
191
|
+
mud/skills/handlers.py,sha256=Q2DPf6SqUAPoFS1FwSaiJ7IS0b4MhEmRBhk5XkKejJs,268106
|
|
192
192
|
mud/skills/metadata.py,sha256=xNpiH3EmCMWY_DtO_Pjrhs2U7bYOBxyrsTL0wC_RJes,15413
|
|
193
193
|
mud/skills/registry.py,sha256=60vHbukciV5f-o0nurt2Nwwjz3EBpQpRjwWOIh-viHE,13838
|
|
194
194
|
mud/skills/say_spell.py,sha256=4voaTUbpYKsF0Plv9m-Eh0FK6lp1-Cz15rQBRq_XLNo,3909
|
|
@@ -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.3.dist-info/licenses/LICENSE,sha256=anQ2j9As6sIC8tZgQCXbo0-09JDH9vPiqhA9djnOvkY,1078
|
|
220
|
+
rom24_quickmud_python-2.9.3.dist-info/METADATA,sha256=-IVsyn-ZbspIdmqhnJlnm1kfANB7ghvHxgy7pWIQlCE,15670
|
|
221
|
+
rom24_quickmud_python-2.9.3.dist-info/WHEEL,sha256=aeYiig01lYGDzBgS8HxWXOg3uV61G9ijOsup-k9o1sk,91
|
|
222
|
+
rom24_quickmud_python-2.9.3.dist-info/entry_points.txt,sha256=VFru08UQTXZA_CkK-NBjJmWHyEX5a3864fQHjhaojbw,41
|
|
223
|
+
rom24_quickmud_python-2.9.3.dist-info/top_level.txt,sha256=Fk1WPmabIIjp7_iZXLYpbAVqiq7lG7TeAHt30AsOKtQ,4
|
|
224
|
+
rom24_quickmud_python-2.9.3.dist-info/RECORD,,
|
|
File without changes
|
{rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/entry_points.txt
RENAMED
|
File without changes
|
{rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/licenses/LICENSE
RENAMED
|
File without changes
|
{rom24_quickmud_python-2.9.2.dist-info → rom24_quickmud_python-2.9.3.dist-info}/top_level.txt
RENAMED
|
File without changes
|