neelthee-mansion 3.1.3__py3-none-any.whl → 3.2.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/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.effect}"
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.inventory.append(self.item)
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 = None):
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 = None
155
+ self.contents = []
156
+
157
+ def Unlock(self, key: Key, player):
158
+ return self.lock.unlock(key, player)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: neelthee-mansion
3
- Version: 3.1.3
3
+ Version: 3.2.0
4
4
  Summary: A text-based adventure game set in Neel-thee’s mansion.
5
5
  Home-page: https://github.com/Flameblade375/neelthee_mansion
6
6
  Author: Alexander.E.F
@@ -1,14 +1,14 @@
1
- neelthee_mansion/Mansion_of_Amnesia.py,sha256=HdX9n8nqK_aHKw8HKeOTKPXQpLSb5kKc3qlDyRsf7cQ,42661
1
+ neelthee_mansion/Mansion_of_Amnesia.py,sha256=cB9Ql3o6dPbYWAVNbGoO7Dw7OBYqPWb4getkzVJlKLg,45661
2
2
  neelthee_mansion/Quests.py,sha256=q6VzR3mt9AYe29ACWZuf-suz4yOKrL946aJ493eQRS0,2611
3
- neelthee_mansion/Rooms.py,sha256=G4UBk2QEpr17PoUBnMLTCffDgKPFE1S2GyKB5f11KNI,82780
3
+ neelthee_mansion/Rooms.py,sha256=CWha-UQOxWvaJWJeh1HDzfBqKvw8g_HFXeYVZDsGuCg,86124
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=uzZ9fq6_YK3oQ2lkAsyidWwM6trasVsjdQi2V0JTPfw,2097
8
+ neelthee_mansion/items.py,sha256=T5Y_oTuWv4SlDHG1Q3Z_wdddQJgtjMfdTdDU489yjCw,5027
9
9
  neelthee_mansion/utils.py,sha256=PhFBDQXQoSNHpBUd0NKhP0KcclXK5Mho0qGnrpKAbe0,12187
10
- neelthee_mansion-3.1.3.dist-info/METADATA,sha256=O7xmoSa72uiv7IeLFHBeJ0B4KLd1ikV3d0iIiUr3QqI,1991
11
- neelthee_mansion-3.1.3.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
12
- neelthee_mansion-3.1.3.dist-info/entry_points.txt,sha256=j5ScTTyIidFhmT3F6hcX9pnlom4cJdDmfe26BmM6Igo,56
13
- neelthee_mansion-3.1.3.dist-info/top_level.txt,sha256=woQImQewylhly5Rb24HwPEGMxPY6do_PaUwGd5BNLOM,17
14
- neelthee_mansion-3.1.3.dist-info/RECORD,,
10
+ neelthee_mansion-3.2.0.dist-info/METADATA,sha256=EC_4oexL3YVwh-U4hj0HBpVmWYDNDKe-BbcrLa8YTkg,1991
11
+ neelthee_mansion-3.2.0.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
12
+ neelthee_mansion-3.2.0.dist-info/entry_points.txt,sha256=j5ScTTyIidFhmT3F6hcX9pnlom4cJdDmfe26BmM6Igo,56
13
+ neelthee_mansion-3.2.0.dist-info/top_level.txt,sha256=woQImQewylhly5Rb24HwPEGMxPY6do_PaUwGd5BNLOM,17
14
+ neelthee_mansion-3.2.0.dist-info/RECORD,,