neelthee-mansion 3.1.3__py3-none-any.whl → 3.3.0__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.
- neelthee_mansion/Mansion_of_Amnesia.py +104 -40
- neelthee_mansion/Rooms.py +454 -405
- neelthee_mansion/items.py +89 -5
- {neelthee_mansion-3.1.3.dist-info → neelthee_mansion-3.3.0.dist-info}/METADATA +1 -1
- {neelthee_mansion-3.1.3.dist-info → neelthee_mansion-3.3.0.dist-info}/RECORD +8 -8
- {neelthee_mansion-3.1.3.dist-info → neelthee_mansion-3.3.0.dist-info}/WHEEL +0 -0
- {neelthee_mansion-3.1.3.dist-info → neelthee_mansion-3.3.0.dist-info}/entry_points.txt +0 -0
- {neelthee_mansion-3.1.3.dist-info → neelthee_mansion-3.3.0.dist-info}/top_level.txt +0 -0
neelthee_mansion/items.py
CHANGED
@@ -17,13 +17,80 @@ class item:
|
|
17
17
|
def IsUsable(self) -> bool:
|
18
18
|
return self.usable
|
19
19
|
|
20
|
+
class Lock:
|
21
|
+
def __init__(self, key_code: str = None):
|
22
|
+
self.key_code = key_code if key_code else get_random_string(10)
|
23
|
+
self.is_locked = True
|
24
|
+
|
25
|
+
def unlock(self, key, player):
|
26
|
+
if not self.is_locked:
|
27
|
+
do_lock = loop_til_valid_input(
|
28
|
+
"The lock is not locked, do you want to lock it again? Y/N",
|
29
|
+
"You didn't entor Y or N",
|
30
|
+
Y_N
|
31
|
+
).value
|
32
|
+
if do_lock:
|
33
|
+
type_text("You relock the lock")
|
34
|
+
return False
|
35
|
+
|
36
|
+
elif key.GetKeyCode() == self.key_code:
|
37
|
+
type_text("The lock clicks open!")
|
38
|
+
self.is_locked = False
|
39
|
+
if key.KeyDels:
|
40
|
+
player.inventory.remove(key)
|
41
|
+
type_text(f"The {key.name} was used and has been removed from your inventory.")
|
42
|
+
return True
|
43
|
+
|
44
|
+
else:
|
45
|
+
type_text("The lock holds fast!")
|
46
|
+
return False
|
47
|
+
|
48
|
+
def __str__(self) -> str:
|
49
|
+
return self.key_code
|
50
|
+
|
51
|
+
class Key(item):
|
52
|
+
def __init__(self, name: str = '', KeyCode: str = None, KeyDels: bool = False):
|
53
|
+
super().__init__(name, 'key', KeyCode if KeyCode else get_random_string(10))
|
54
|
+
self.KeyDels = KeyDels
|
55
|
+
self.RevealCount = 0
|
56
|
+
self.CurentRevealStr = "-" * len(self.value)
|
57
|
+
|
58
|
+
def GetKeyCode(self):
|
59
|
+
return self.value
|
60
|
+
|
61
|
+
class KeyRevealer:
|
62
|
+
def __init__(self, max_reveals=2):
|
63
|
+
self.max_reveals = max_reveals
|
64
|
+
|
65
|
+
def reveal_key_code(self, obj: Key, mask_char="-"):
|
66
|
+
if obj.reveal_count >= self.max_reveals:
|
67
|
+
type_text(f"You can only reveal a Key Code twice.")
|
68
|
+
type_text(f"Here is what you already know about this lock: {obj.CurentRevealStr}")
|
69
|
+
return
|
70
|
+
|
71
|
+
if not hasattr(obj, 'lock'):
|
72
|
+
key_code = obj.value
|
73
|
+
else:
|
74
|
+
key_code = obj.lock.key_code
|
75
|
+
one_third_length = len(key_code) // 3
|
76
|
+
selected_indices = random.sample(range(len(key_code)), one_third_length)
|
77
|
+
|
78
|
+
result = [
|
79
|
+
key_code[i] if i in selected_indices else mask_char
|
80
|
+
for i in range(len(key_code))
|
81
|
+
]
|
82
|
+
|
83
|
+
obj.reveal_count += 1
|
84
|
+
obj.CurentRevealStr = ''.join(result)
|
85
|
+
return ''.join(result)
|
86
|
+
|
20
87
|
class ShopItem:
|
21
88
|
def __init__(self, item: item, price: int):
|
22
89
|
self.item = item
|
23
90
|
self.price = price
|
24
91
|
|
25
92
|
def display(self):
|
26
|
-
return f"{self.item.name} - {self.price} gold: {self.item.
|
93
|
+
return f"{self.item.name} - {self.price} gold: {self.item.value}"
|
27
94
|
|
28
95
|
def can_buy(self, player) -> bool:
|
29
96
|
return player.money >= self.price
|
@@ -31,7 +98,7 @@ class ShopItem:
|
|
31
98
|
def buy(self, player) -> bool:
|
32
99
|
if self.can_buy(player):
|
33
100
|
player.money -= self.price
|
34
|
-
player.
|
101
|
+
player.inventory_add(self.item)
|
35
102
|
return True
|
36
103
|
else:
|
37
104
|
return False
|
@@ -60,15 +127,32 @@ class inv(list):
|
|
60
127
|
del self[self.index(value.name)]
|
61
128
|
return
|
62
129
|
del self[self.index(value)]
|
130
|
+
|
131
|
+
def keys(self) -> list[Key]:
|
132
|
+
keys = []
|
133
|
+
for key in self:
|
134
|
+
if isinstance(key, Key):
|
135
|
+
keys += key
|
136
|
+
return keys
|
63
137
|
|
64
138
|
class container:
|
65
|
-
def __init__(self, contents: list[item], secret: bool = False) -> None:
|
139
|
+
def __init__(self, contents: list[item], secret: bool = False, KeyCode=None) -> None:
|
66
140
|
self.contents = contents
|
67
141
|
self.secret = secret
|
142
|
+
self.lock = Lock(KeyCode) if KeyCode else None
|
143
|
+
self.RevealCount = 0
|
144
|
+
self.CurentRevealStr = "-" * len(self.value)
|
68
145
|
|
69
|
-
def take_contents(self, geter
|
146
|
+
def take_contents(self, geter=None):
|
147
|
+
if isinstance(self.lock, Lock) and self.lock.is_locked:
|
148
|
+
type_text("The container is locked and won't budge.")
|
149
|
+
return None
|
150
|
+
|
70
151
|
try:
|
71
152
|
for Item in self.contents:
|
72
153
|
geter.inventory_add(Item)
|
73
154
|
finally:
|
74
|
-
self.contents =
|
155
|
+
self.contents = []
|
156
|
+
|
157
|
+
def Unlock(self, key: Key, player):
|
158
|
+
return self.lock.unlock(key, player)
|
@@ -1,14 +1,14 @@
|
|
1
|
-
neelthee_mansion/Mansion_of_Amnesia.py,sha256=
|
1
|
+
neelthee_mansion/Mansion_of_Amnesia.py,sha256=Axk6vciGx8BZnQRK5PjLspBIzSQIhuTDvpgjVVzZXUM,45787
|
2
2
|
neelthee_mansion/Quests.py,sha256=q6VzR3mt9AYe29ACWZuf-suz4yOKrL946aJ493eQRS0,2611
|
3
|
-
neelthee_mansion/Rooms.py,sha256=
|
3
|
+
neelthee_mansion/Rooms.py,sha256=gKGSSfRd2tjU0tL-pyQ8VvPHYepR2WHF03OSA5AMbIo,86889
|
4
4
|
neelthee_mansion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
5
5
|
neelthee_mansion/__main__.py,sha256=OIAWZ04le70DyjtR4hlmK9csHej7EHxeUrMoNnM-Vjc,95
|
6
6
|
neelthee_mansion/all_game_utils.py,sha256=Xfty9uXiYAfmA6iVzJurq852ZBPn7a4gQUcUcaV9yEU,341
|
7
7
|
neelthee_mansion/creatures.py,sha256=kSfzQSE5UmFiDV0eDsTXCk-LQwZIyY5Rwsyh5Uhropw,14826
|
8
|
-
neelthee_mansion/items.py,sha256=
|
8
|
+
neelthee_mansion/items.py,sha256=T5Y_oTuWv4SlDHG1Q3Z_wdddQJgtjMfdTdDU489yjCw,5027
|
9
9
|
neelthee_mansion/utils.py,sha256=PhFBDQXQoSNHpBUd0NKhP0KcclXK5Mho0qGnrpKAbe0,12187
|
10
|
-
neelthee_mansion-3.
|
11
|
-
neelthee_mansion-3.
|
12
|
-
neelthee_mansion-3.
|
13
|
-
neelthee_mansion-3.
|
14
|
-
neelthee_mansion-3.
|
10
|
+
neelthee_mansion-3.3.0.dist-info/METADATA,sha256=nCqgf_RZPW_aI1iWL5Xd_yA0B8gjib2_uE01dfDtBl8,1991
|
11
|
+
neelthee_mansion-3.3.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
|
12
|
+
neelthee_mansion-3.3.0.dist-info/entry_points.txt,sha256=j5ScTTyIidFhmT3F6hcX9pnlom4cJdDmfe26BmM6Igo,56
|
13
|
+
neelthee_mansion-3.3.0.dist-info/top_level.txt,sha256=woQImQewylhly5Rb24HwPEGMxPY6do_PaUwGd5BNLOM,17
|
14
|
+
neelthee_mansion-3.3.0.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|