neelthee-mansion 1.0.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.
@@ -0,0 +1,70 @@
1
+ from utils import *
2
+ from creatures import PC
3
+
4
+ class Objective:
5
+ def __init__(self, description, is_completed=False):
6
+ self.description = description
7
+ self.is_completed = is_completed
8
+
9
+ def complete(self):
10
+ self.is_completed = True
11
+
12
+
13
+ class Quest:
14
+ def __init__(self, title, description, objectives, rewards):
15
+ self.title = title
16
+ self.description = description
17
+ self.objectives = objectives # List of objectives
18
+ self.rewards = rewards # Rewards for completing the quest
19
+ self.status = "Not Started" # Can be "Not Started", "In Progress", or "Completed"
20
+
21
+ def start(self):
22
+ self.status = "In Progress"
23
+
24
+ def complete(self, completer: PC):
25
+ if all(obj.is_completed for obj in self.objectives):
26
+ self.status = "Completed"
27
+ for reward in self.rewards:
28
+ completer.money += reward
29
+
30
+ def is_completed(self):
31
+ return self.status == "Completed" and all(obj.is_completed for obj in self.objectives)
32
+
33
+
34
+ class QuestManager:
35
+ def __init__(self):
36
+ self.quests = []
37
+
38
+ def add_quest(self, quest: Quest):
39
+ self.quests.append(quest)
40
+
41
+ def start_quest(self, quest_title):
42
+ for quest in self.quests:
43
+ if quest.title == quest_title:
44
+ quest.start()
45
+ type_text(f"%*ORANGE*%Quest '{quest.title}' started: {quest.description}%*RESET*%")
46
+ return
47
+ type_text(f"Quest '{quest_title}' not found.")
48
+
49
+ def complete_quest(self, quest_title):
50
+ for quest in self.quests:
51
+ if quest.title == quest_title and quest.is_completed():
52
+ quest.complete()
53
+ type_text(f"%*ORANGE*%Quest '{quest.title}' completed! Rewards: {quest.rewards} money%*RESET*%")
54
+ return
55
+
56
+ def show_quests(self):
57
+ for quest in self.quests:
58
+ status = quest.status
59
+ type_text(f"%*ORANGE*%Quest '{quest.title}': {status}%*RESET*%")
60
+ for obj in quest.objectives:
61
+ obj_status = "Completed" if obj.is_completed else "Not Completed"
62
+ type_text(f"%*ORANGE*% - {obj.description}: {obj_status}%*RESET*%")
63
+
64
+ def update_objective(self, objective_description):
65
+ for quest in self.quests:
66
+ for obj in quest.objectives:
67
+ if obj.description == objective_description:
68
+ obj.complete()
69
+ type_text(f"%*ORANGE*%Objective '{obj.description}' completed!%*RESET*%")
70
+ return