neelthee-mansion 3.23.4__py3-none-any.whl → 3.23.6__py3-none-any.whl
Sign up to get free protection for your applications and to get access to all the features.
- neelthee_mansion/Mansion_of_Amnesia.py +110 -110
- neelthee_mansion/Rooms.py +371 -371
- neelthee_mansion/creatures.py +32 -81
- neelthee_mansion/items.py +3 -3
- neelthee_mansion/utils.py +1 -1
- {neelthee_mansion-3.23.4.dist-info → neelthee_mansion-3.23.6.dist-info}/METADATA +1 -1
- neelthee_mansion-3.23.6.dist-info/RECORD +16 -0
- neelthee_mansion-3.23.4.dist-info/RECORD +0 -16
- {neelthee_mansion-3.23.4.dist-info → neelthee_mansion-3.23.6.dist-info}/LICENSE.md +0 -0
- {neelthee_mansion-3.23.4.dist-info → neelthee_mansion-3.23.6.dist-info}/WHEEL +0 -0
- {neelthee_mansion-3.23.4.dist-info → neelthee_mansion-3.23.6.dist-info}/entry_points.txt +0 -0
- {neelthee_mansion-3.23.4.dist-info → neelthee_mansion-3.23.6.dist-info}/top_level.txt +0 -0
neelthee_mansion/creatures.py
CHANGED
@@ -35,7 +35,7 @@ class base_character:
|
|
35
35
|
Represents a base character in the game, including both players and creatures.
|
36
36
|
"""
|
37
37
|
|
38
|
-
def take_damage(self, damage_taken: int = 5):
|
38
|
+
def take_damage(self, damage_taken: int = 5, text_area=None):
|
39
39
|
"""
|
40
40
|
Reduces the character's hit points by the specified amount of damage.
|
41
41
|
|
@@ -45,14 +45,14 @@ class base_character:
|
|
45
45
|
Returns:
|
46
46
|
None
|
47
47
|
"""
|
48
|
-
string_beginning = "
|
48
|
+
string_beginning = ""
|
49
49
|
if type(self) == creature:
|
50
|
-
string_beginning = "The
|
50
|
+
string_beginning = "The "
|
51
51
|
self.hp = self.hp - damage_taken
|
52
52
|
if self.hp < 0:
|
53
53
|
self.hp = 0
|
54
|
-
|
55
|
-
f"{string_beginning}{self.name}
|
54
|
+
add_text_to_textbox(text_area,
|
55
|
+
f"{string_beginning}{self.name} takes {damage_taken} damage and has {self.hp} HP left!"
|
56
56
|
)
|
57
57
|
|
58
58
|
|
@@ -142,35 +142,35 @@ class creature(base_character):
|
|
142
142
|
self.dropped_items = dropped_items
|
143
143
|
self.xp = rounding(self.difficulty * 2 + len(self.dropped_items))
|
144
144
|
self.description = (
|
145
|
-
description if description else f"A
|
145
|
+
description if description else f"A {self.name}."
|
146
146
|
)
|
147
147
|
self.flavor_text = (
|
148
|
-
flavor_text if flavor_text else f"You see a
|
148
|
+
flavor_text if flavor_text else f"You see a {self.name}!"
|
149
149
|
)
|
150
150
|
self.type = type
|
151
151
|
self.crit_chance = crit_chance
|
152
152
|
self.frendly = False
|
153
153
|
self.frendly_text = frendly_text
|
154
154
|
|
155
|
-
def
|
155
|
+
def add_text_flavor_text(self, text_area):
|
156
156
|
"""
|
157
157
|
Prints the flavor text associated with encountering the creature.
|
158
158
|
"""
|
159
|
-
|
159
|
+
add_text_to_textbox(text_area, self.flavor_text)
|
160
160
|
|
161
|
-
def
|
161
|
+
def add_text_description(self, text_area):
|
162
162
|
"""
|
163
163
|
Prints the description of the creature.
|
164
164
|
"""
|
165
|
-
|
165
|
+
add_text_to_textbox(text_area, self.description)
|
166
166
|
curent_holiday = get_holiday()
|
167
167
|
if curent_holiday == "christmas":
|
168
|
-
|
168
|
+
add_text_to_textbox(text_area, f"The {self.name} also has a santa hat.")
|
169
169
|
elif curent_holiday == "easter":
|
170
|
-
|
170
|
+
add_text_to_textbox(text_area, f"The {self.name} also has bunny ears.")
|
171
171
|
elif curent_holiday == "halloween":
|
172
|
-
if random < 0.2:
|
173
|
-
|
172
|
+
if random() < 0.2:
|
173
|
+
add_text_to_textbox(text_area, f"The {self.name} also has a pumkin on it's head.")
|
174
174
|
|
175
175
|
|
176
176
|
class Guard(creature):
|
@@ -252,7 +252,7 @@ class Guard(creature):
|
|
252
252
|
self.current_room = room.GetRoom(self.current_room)
|
253
253
|
return
|
254
254
|
|
255
|
-
def check_detection(self, player_room):
|
255
|
+
def check_detection(self, player_room, text_area):
|
256
256
|
"""
|
257
257
|
Checks if the guard has detected the player.
|
258
258
|
|
@@ -263,13 +263,13 @@ class Guard(creature):
|
|
263
263
|
bool: True if the player is detected, False otherwise.
|
264
264
|
"""
|
265
265
|
if self.current_room == player_room and not self.frendly:
|
266
|
-
|
266
|
+
add_text_to_textbox(text_area,
|
267
267
|
f"You have been caught by {self.name} in the {self.current_room}!"
|
268
268
|
)
|
269
269
|
return True
|
270
270
|
elif self.current_room == player_room and self.frendly:
|
271
271
|
if random() <= 0.015:
|
272
|
-
|
272
|
+
add_text_to_textbox(text_area, self.frendly_text)
|
273
273
|
return False
|
274
274
|
|
275
275
|
|
@@ -280,18 +280,18 @@ class base_ability:
|
|
280
280
|
self.cooldown_time = cooldown_time
|
281
281
|
self.current_cooldown = 0
|
282
282
|
|
283
|
-
def activate(self, target: creature, damage: int = 5):
|
283
|
+
def activate(self, target: creature, damage: int = 5, text_area=None):
|
284
284
|
self.ready = False
|
285
285
|
self.current_cooldown = 0
|
286
|
-
|
286
|
+
add_text_to_textbox(f"Ability {self.name} will be ready after {self.cooldown_time} commands.")
|
287
287
|
|
288
|
-
def Tick(self):
|
288
|
+
def Tick(self, text_area):
|
289
289
|
self.current_cooldown += 1
|
290
|
-
self.check_cooldown()
|
290
|
+
self.check_cooldown(text_area)
|
291
291
|
|
292
|
-
def check_cooldown(self):
|
292
|
+
def check_cooldown(self, text_area):
|
293
293
|
if self.current_cooldown >= self.cooldown_time and not self.ready:
|
294
|
-
|
294
|
+
add_text_to_textbox(text_area, f"\nAbility {self.name} is ready to use again. ")
|
295
295
|
self.ready = True
|
296
296
|
|
297
297
|
|
@@ -375,7 +375,7 @@ class PC(base_character):
|
|
375
375
|
self.xp += xp_added
|
376
376
|
self.check_xp()
|
377
377
|
|
378
|
-
def inventory_add(self, added: list[item]):
|
378
|
+
def inventory_add(self, added: list[item], text_area):
|
379
379
|
try:
|
380
380
|
if not isinstance(added, list):
|
381
381
|
added = [added]
|
@@ -389,64 +389,15 @@ class PC(base_character):
|
|
389
389
|
self.get_change_weapon(item_to_add.value)
|
390
390
|
else:
|
391
391
|
# Print an error message if the item is not an instance of Item class
|
392
|
-
|
392
|
+
add_text_to_textbox(text_area, f"Error: {item_to_add} is not an instance of Item class")
|
393
393
|
except Exception as e:
|
394
394
|
# Print the full traceback if an exception occurs
|
395
|
-
|
395
|
+
add_text_to_textbox(text_area, f"Error: {e}")
|
396
396
|
|
397
397
|
def heal(self, value):
|
398
398
|
self.hp = clamp(value, 0, self.maxhp)
|
399
399
|
|
400
400
|
|
401
|
-
class NPC(PC):
|
402
|
-
def __init__(
|
403
|
-
self,
|
404
|
-
Name: str,
|
405
|
-
Age: int,
|
406
|
-
Class: str,
|
407
|
-
Level: int,
|
408
|
-
Background: str,
|
409
|
-
Height: Height,
|
410
|
-
Weight: int,
|
411
|
-
Notes: list = [],
|
412
|
-
special_ability: base_ability = supercrit_ability(),
|
413
|
-
NOTES: list = [],
|
414
|
-
xp: int = None,
|
415
|
-
inventory: inv = None,
|
416
|
-
money: int = 0,
|
417
|
-
weapons_atpws: list = [],
|
418
|
-
npc_role: str = "generic", # New attribute for NPC role (e.g., merchant, enemy, etc.)
|
419
|
-
aggressive: bool = False, # New attribute to determine if NPC is aggressive
|
420
|
-
):
|
421
|
-
super().__init__(
|
422
|
-
Name=Name,
|
423
|
-
Age=Age,
|
424
|
-
Class=Class,
|
425
|
-
Level=Level,
|
426
|
-
Background=Background,
|
427
|
-
Height=Height,
|
428
|
-
Weight=Weight,
|
429
|
-
Notes=Notes,
|
430
|
-
special_ability=special_ability,
|
431
|
-
NOTES=NOTES,
|
432
|
-
xp=xp,
|
433
|
-
inventory=inventory,
|
434
|
-
money=money,
|
435
|
-
weapons_atpws=weapons_atpws,
|
436
|
-
)
|
437
|
-
self.npc_role = npc_role
|
438
|
-
self.aggressive = aggressive
|
439
|
-
|
440
|
-
def interact(self):
|
441
|
-
if self.aggressive:
|
442
|
-
return f"{self.name} looks hostile and prepares for a fight!"
|
443
|
-
else:
|
444
|
-
return f"{self.name} has nothing to say to you."
|
445
|
-
|
446
|
-
def npc_info(self):
|
447
|
-
return f"Name: {self.name}, Age: {self.Age}, Class: {self.Class}, Level: {self.Level}, Role: {self.npc_role}, Aggressive: {self.aggressive}"
|
448
|
-
|
449
|
-
|
450
401
|
class PC_action:
|
451
402
|
def __init__(self, value) -> None:
|
452
403
|
if not value in ValidActions:
|
@@ -508,10 +459,10 @@ class NPC(Guard):
|
|
508
459
|
self.asked_about = set()
|
509
460
|
self.generic_response = generic_response
|
510
461
|
|
511
|
-
def talk(self):
|
462
|
+
def talk(self, text_area):
|
512
463
|
while True:
|
513
464
|
player_input = loop_til_valid_input(
|
514
|
-
f"What do you want to say to
|
465
|
+
f"What do you want to say to {self.name}?",
|
515
466
|
"",
|
516
467
|
str,
|
517
468
|
)
|
@@ -521,18 +472,18 @@ class NPC(Guard):
|
|
521
472
|
|
522
473
|
# Exit the loop if the player says "goodbye"
|
523
474
|
if player_input == "goodbye":
|
524
|
-
|
475
|
+
add_text_to_textbox(text_area, f"Goodbye then. Don't get lost!")
|
525
476
|
break
|
526
477
|
|
527
478
|
# Check for keywords and map to corresponding response
|
528
479
|
for topic, variations in self.keyword_variations.items():
|
529
480
|
if any(variation in player_input for variation in variations):
|
530
481
|
self.asked_about.add(topic)
|
531
|
-
|
482
|
+
add_text_to_textbox(text_area, self._get_response(topic))
|
532
483
|
break # Stop further keyword checks and wait for the next input
|
533
484
|
else:
|
534
485
|
# If no keywords found, return a generic response
|
535
|
-
|
486
|
+
add_text_to_textbox(text_area, self._generic_response())
|
536
487
|
|
537
488
|
def _get_response(self, topic):
|
538
489
|
"""Return a response from the NPC based on the topic asked."""
|
neelthee_mansion/items.py
CHANGED
@@ -118,10 +118,10 @@ class ShopItem:
|
|
118
118
|
def can_buy(self, player) -> bool:
|
119
119
|
return player.money >= self.price
|
120
120
|
|
121
|
-
def buy(self, player) -> bool:
|
121
|
+
def buy(self, player, text_area) -> bool:
|
122
122
|
if self.can_buy(player):
|
123
123
|
player.money -= self.price
|
124
|
-
player.inventory_add(self.item)
|
124
|
+
player.inventory_add(self.item, text_area)
|
125
125
|
return True
|
126
126
|
else:
|
127
127
|
return False
|
@@ -181,7 +181,7 @@ class container:
|
|
181
181
|
|
182
182
|
try:
|
183
183
|
for Item in self.contents:
|
184
|
-
geter.inventory_add(Item)
|
184
|
+
geter.inventory_add(Item, text_area)
|
185
185
|
except:
|
186
186
|
pass
|
187
187
|
finally:
|
neelthee_mansion/utils.py
CHANGED
@@ -51,7 +51,7 @@ These utilities aim to simplify development processes, promote code reuse, and i
|
|
51
51
|
def add_text_to_textbox(text_area: scrolledtext.ScrolledText, text, newline=True):
|
52
52
|
# Enable the text box to insert text
|
53
53
|
text_area.config(state=tk.NORMAL)
|
54
|
-
text_area.insert(tk.END, text +
|
54
|
+
text_area.insert(tk.END, text + "\n" if newline else "")
|
55
55
|
text_area.see(tk.END)
|
56
56
|
text_area.update_idletasks()
|
57
57
|
# Set the text box back to read-only
|
@@ -0,0 +1,16 @@
|
|
1
|
+
neelthee_mansion/Books.py,sha256=Zs6GOi12vrikne-E37LdrLNRb6CyUogOCDApDGFj6Ls,26168
|
2
|
+
neelthee_mansion/Mansion_of_Amnesia.py,sha256=lBSuZZvAUK31gMoLnERP_UTK-feq-fYGarnhSRlD7Rk,53950
|
3
|
+
neelthee_mansion/Quests.py,sha256=pUlru2RugP57MACQORZaF_X9lsbefTdPYTSO474phgo,2791
|
4
|
+
neelthee_mansion/Rooms.py,sha256=AOhD5EDmmid5vfow_EBT8qB4jLtvsdBG5OXHAFQ-YJA,79220
|
5
|
+
neelthee_mansion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
+
neelthee_mansion/__main__.py,sha256=OIAWZ04le70DyjtR4hlmK9csHej7EHxeUrMoNnM-Vjc,95
|
7
|
+
neelthee_mansion/all_game_utils.py,sha256=AasunTkFmgAqt9ZIoYmymi4R7leBe4ubW-C1ts0Qclo,351
|
8
|
+
neelthee_mansion/creatures.py,sha256=XdRM5DJSnjAKXn4QskXKBf_YGvov26fX3XU1E2ww0zg,19722
|
9
|
+
neelthee_mansion/items.py,sha256=aGEkNUROf4WuLdsmoFYD-0BbJ984SODt73-8-_F1Z9Y,6672
|
10
|
+
neelthee_mansion/utils.py,sha256=uTBmCWz1TRLpKSwAJHlcN_pJZDMvYdLVyUfkTV0gFdw,14225
|
11
|
+
neelthee_mansion-3.23.6.dist-info/LICENSE.md,sha256=CV8XGZaCyyAMdbkYFQUjb8AjBq9vkoyqdZCq1_hetms,1105
|
12
|
+
neelthee_mansion-3.23.6.dist-info/METADATA,sha256=f5x-IgiR-mSSrWhWbymISI7fX_h9hDysA9mUsDMIWY8,1756
|
13
|
+
neelthee_mansion-3.23.6.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
14
|
+
neelthee_mansion-3.23.6.dist-info/entry_points.txt,sha256=j5ScTTyIidFhmT3F6hcX9pnlom4cJdDmfe26BmM6Igo,56
|
15
|
+
neelthee_mansion-3.23.6.dist-info/top_level.txt,sha256=woQImQewylhly5Rb24HwPEGMxPY6do_PaUwGd5BNLOM,17
|
16
|
+
neelthee_mansion-3.23.6.dist-info/RECORD,,
|
@@ -1,16 +0,0 @@
|
|
1
|
-
neelthee_mansion/Books.py,sha256=Zs6GOi12vrikne-E37LdrLNRb6CyUogOCDApDGFj6Ls,26168
|
2
|
-
neelthee_mansion/Mansion_of_Amnesia.py,sha256=UtbOcolEfvop-vomM2DCj87rSRwlqGrIPEbWy1yY7Ng,52815
|
3
|
-
neelthee_mansion/Quests.py,sha256=pUlru2RugP57MACQORZaF_X9lsbefTdPYTSO474phgo,2791
|
4
|
-
neelthee_mansion/Rooms.py,sha256=CgenMX9ssTCWbDFopX6GHhNDnRYF5MpaDufWvt5fPwU,86025
|
5
|
-
neelthee_mansion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
6
|
-
neelthee_mansion/__main__.py,sha256=OIAWZ04le70DyjtR4hlmK9csHej7EHxeUrMoNnM-Vjc,95
|
7
|
-
neelthee_mansion/all_game_utils.py,sha256=AasunTkFmgAqt9ZIoYmymi4R7leBe4ubW-C1ts0Qclo,351
|
8
|
-
neelthee_mansion/creatures.py,sha256=vUR8PmdiftCFBCGJbHkCT4AMUPvqwouDGQ4ye2fiPCw,20910
|
9
|
-
neelthee_mansion/items.py,sha256=tSWWRzTIJja6I_BOz4hNz58MxVLRw9SKsdnavHWQPZs,6639
|
10
|
-
neelthee_mansion/utils.py,sha256=nVWzqARScBkbUEyt2yZRsxxFVGquP6gs2O2wQSbreKc,14225
|
11
|
-
neelthee_mansion-3.23.4.dist-info/LICENSE.md,sha256=CV8XGZaCyyAMdbkYFQUjb8AjBq9vkoyqdZCq1_hetms,1105
|
12
|
-
neelthee_mansion-3.23.4.dist-info/METADATA,sha256=rd_8kIXVcHF0KDhlX1U1tzqvRLmISH-lgIcE7o58j4Q,1756
|
13
|
-
neelthee_mansion-3.23.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
14
|
-
neelthee_mansion-3.23.4.dist-info/entry_points.txt,sha256=j5ScTTyIidFhmT3F6hcX9pnlom4cJdDmfe26BmM6Igo,56
|
15
|
-
neelthee_mansion-3.23.4.dist-info/top_level.txt,sha256=woQImQewylhly5Rb24HwPEGMxPY6do_PaUwGd5BNLOM,17
|
16
|
-
neelthee_mansion-3.23.4.dist-info/RECORD,,
|
File without changes
|
File without changes
|
File without changes
|
File without changes
|