Camais03 commited on
Commit
8c37d0d
·
verified ·
1 Parent(s): 31144c0

Update game/game_constants.py

Browse files
Files changed (1) hide show
  1. game/game_constants.py +204 -204
game/game_constants.py CHANGED
@@ -1,205 +1,205 @@
1
- #!/usr/bin/env python3
2
- """
3
- Game Constants for Tag Collector Game - Updated with new tag rarity names
4
- This file contains shared constants used by both the main game and the library system.
5
- """
6
-
7
- # Game currency names
8
- TAG_CURRENCY_NAME = "TagCoins"
9
- ENKEPHALIN_CURRENCY_NAME = "Enkephalin"
10
- ENKEPHALIN_ICON = "💧"
11
-
12
- STARTING_THRESHOLD = 0.55
13
- MIN_THRESHOLD = 0.1
14
-
15
- # Tag animations and theme settings
16
- TAG_ANIMATIONS = {
17
- "Star of the City": {
18
- "css_class": "star-of-city",
19
- "animation": """
20
- @keyframes glowing {
21
- 0% { box-shadow: 0 0 5px #FFD700; }
22
- 50% { box-shadow: 0 0 20px #FFD700; }
23
- 100% { box-shadow: 0 0 5px #FFD700; }
24
- }
25
- .star-of-city {
26
- background-color: rgba(255, 215, 0, 0.2);
27
- padding: 8px;
28
- border-radius: 5px;
29
- border: 2px solid gold;
30
- animation: glowing 2s infinite;
31
- }
32
- """
33
- },
34
- "Impuritas Civitas": {
35
- "css_class": "impuritas-civitas",
36
- "animation": """
37
- @keyframes rainbow-border {
38
- 0% { border-color: red; }
39
- 14% { border-color: orange; }
40
- 28% { border-color: yellow; }
41
- 42% { border-color: green; }
42
- 57% { border-color: blue; }
43
- 71% { border-color: indigo; }
44
- 85% { border-color: violet; }
45
- 100% { border-color: red; }
46
- }
47
-
48
- @keyframes rainbow-text {
49
- 0% { color: red; }
50
- 14% { color: orange; }
51
- 28% { color: yellow; }
52
- 42% { color: green; }
53
- 57% { color: blue; }
54
- 71% { color: indigo; }
55
- 85% { color: violet; }
56
- 100% { color: red; }
57
- }
58
-
59
- @keyframes rainbow-bg {
60
- 0% { background-color: rgba(255,0,0,0.1); }
61
- 14% { background-color: rgba(255,165,0,0.1); }
62
- 28% { background-color: rgba(255,255,0,0.1); }
63
- 42% { background-color: rgba(0,128,0,0.1); }
64
- 57% { background-color: rgba(0,0,255,0.1); }
65
- 71% { background-color: rgba(75,0,130,0.1); }
66
- 85% { background-color: rgba(238,130,238,0.1); }
67
- 100% { background-color: rgba(255,0,0,0.1); }
68
- }
69
-
70
- .impuritas-civitas {
71
- background-color: rgba(0, 0, 0, 0.1);
72
- padding: 10px;
73
- border-radius: 5px;
74
- border: 3px solid red;
75
- animation: rainbow-border 4s linear infinite, rainbow-bg 4s linear infinite;
76
- }
77
-
78
- .impuritas-text {
79
- font-weight: bold;
80
- animation: rainbow-text 4s linear infinite;
81
- }
82
- """
83
- }
84
- }
85
-
86
- # Rarity levels with appropriate colors (updated to match new rarity tiers)
87
- RARITY_LEVELS = {
88
- "Canard": {"color": "#AAAAAA", "value": 1}, # Gray
89
- "Urban Myth": {"color": "#5D9C59", "value": 5}, # Green
90
- "Urban Legend": {"color": "#2196F3", "value": 10}, # Blue
91
- "Urban Plague": {"color": "#9C27B0", "value": 25}, # Purple
92
- "Urban Nightmare": {"color": "#FF9800", "value": 50}, # Orange
93
- "Star of the City": {"color": "#FFEB3B", "value": 250}, # Yellow/Gold
94
- "Impuritas Civitas": {"color": "#F44336", "value": 1000} # Red
95
- }
96
-
97
- # Essence generation costs in enkephalin
98
- ESSENCE_COSTS = {
99
- "Canard": 10, # Common tags
100
- "Urban Myth": 30, # Uncommon tags
101
- "Urban Legend": 75, # Rare tags
102
- "Urban Plague": 150, # Very rare tags
103
- "Urban Nightmare": 300, # Extremely rare tags
104
- "Star of the City": 600, # Nearly mythical tags
105
- "Impuritas Civitas": 1200 # Legendary tags
106
- }
107
-
108
- # Tag power system
109
- TAG_POWER_BONUSES = {
110
- "Canard": {"coin_multiplier": 0, "enkephalin_reward": 0},
111
- "Urban Myth": {"coin_multiplier": 0, "enkephalin_reward": 0},
112
- "Urban Legend": {"coin_multiplier": 0, "enkephalin_reward": 1},
113
- "Urban Plague": {"coin_multiplier": 0.001, "enkephalin_reward": 3},
114
- "Urban Nightmare": {"coin_multiplier": 0.0025, "enkephalin_reward": 5},
115
- "Star of the City": {"coin_multiplier": 0.005, "enkephalin_reward": 10},
116
- "Impuritas Civitas": {"coin_multiplier": 0.01, "enkephalin_reward": 25}
117
- }
118
-
119
- THRESHOLD_UPGRADES = [
120
- {
121
- "name": "Pattern Recognition Module",
122
- "threshold_setting": 0.48367345, # High precision threshold
123
- "cost": 300,
124
- "description": "Basic algorithm focused on high-precision identification. Reduces false positives but may miss some tags."
125
- },
126
- {
127
- "name": "Neural Network Enhancement",
128
- "threshold_setting": 0.40000000,
129
- "cost": 500,
130
- "description": "Improved tag detection using multi-layer perceptrons. Offers good precision with moderate recall."
131
- },
132
- {
133
- "name": "Deep Learning Framework",
134
- "threshold_setting": 0.35000000,
135
- "cost": 1000,
136
- "description": "Advanced algorithms that learn from previous scans. Provides better balance between precision and recall."
137
- },
138
- {
139
- "name": "Quantum Probability Engine",
140
- "threshold_setting": 0.32857141, # Balanced optimal F1 score threshold
141
- "cost": 2500,
142
- "description": "Leverages quantum uncertainty for optimal detection balance. Perfect calibration point for F1 score."
143
- },
144
- {
145
- "name": "Recursive Self-Improvement",
146
- "threshold_setting": 0.31224489, # Weighted F1 threshold
147
- "cost": 7500,
148
- "description": "Scanner enhances its own detection capabilities. Optimized for weighted tag discovery."
149
- },
150
- {
151
- "name": "Consciousness Emulation",
152
- "threshold_setting": 0.25000000,
153
- "cost": 15000,
154
- "description": "Scanner develops intuition-like abilities. Favors higher recall while maintaining reasonable precision."
155
- },
156
- {
157
- "name": "Technological Singularity",
158
- "threshold_setting": 0.20612246, # High recall threshold
159
- "cost": 50000,
160
- "description": "The scanner transcends conventional limitations. Maximizes tag discovery at the cost of some precision."
161
- }
162
- ]
163
-
164
- # Achievements
165
- ACHIEVEMENTS = {
166
- # Collection achievements
167
- "tag_collector_beginner": {"name": "Novice Archivist", "requirement": 50, "description": "Collect 50 different tags", "reward": {"coin_bonus": 0.01}},
168
- "tag_collector_expert": {"name": "Senior Cataloger", "requirement": 250, "description": "Collect 250 different tags", "reward": {"coin_bonus": 0.01}},
169
- "tag_collector_master": {"name": "Master Librarian", "requirement": 500, "description": "Collect 500 different tags", "reward": {"coin_bonus": 0.01}},
170
- "tag_master": {"name": "Grand Archivist", "requirement": 1000, "description": "Collect 1000 different tags", "reward": {"coin_bonus": 0.01}},
171
-
172
- # Rarity achievements
173
- "legendary_hunter": {"name": "Impuritas Seeker", "requirement": 1, "description": "Find your first Impuritas Civitas tag", "reward": {"coin_bonus": 0.01, "enkephalin": 50}},
174
- "multi_legendary": {"name": "Forbidden Collection", "requirement": 5, "description": "Collect 5 Impuritas Civitas tags", "reward": {"coin_bonus": 0.01, "enkephalin": 100}},
175
- "canard_collector": {"name": "Canard Chronicler", "requirement": 30, "description": "Collect 30 Canard tags", "reward": {"coin_bonus": 0.01}},
176
- "urban_myth_collector": {"name": "Myth Curator", "requirement": 15, "description": "Collect 15 Urban Myth tags", "reward": {"coin_bonus": 0.01}},
177
- "urban_legend_collector": {"name": "Legend Preserver", "requirement": 10, "description": "Collect 10 Urban Legend tags", "reward": {"coin_bonus": 0.01}},
178
- "urban_plague_collector": {"name": "Plague Archivist", "requirement": 5, "description": "Collect 5 Urban Plague tags", "reward": {"coin_bonus": 0.01}},
179
- "urban_nightmare_collector": {"name": "Nightmare Keeper", "requirement": 5, "description": "Collect 5 Urban Nightmare tags", "reward": {"coin_bonus": 0.01}},
180
- "star_collector": {"name": "Star Collector", "requirement": 3, "description": "Collect 3 Star of the City tags", "reward": {"coin_bonus": 0.01, "enkephalin": 30}},
181
- "impuritas_collector": {"name": "Impuritas Scholar", "requirement": 3, "description": "Collect 3 Impuritas Civitas tags", "reward": {"coin_bonus": 0.01, "enkephalin": 75}},
182
-
183
- # Progress achievements
184
- "perfect_scanner": {"name": "Omniscient Observer", "description": "Reach the minimum threshold", "reward": {"coin_bonus": 0.01}},
185
- "optimal_threshold": {"name": "Perfect Calibration", "description": "Reach the optimal F1 score threshold of 0.328", "reward": {"coin_bonus": 0.01}},
186
- "collection_milestone_100": {"name": "Century Collector", "requirement": 100, "description": "Collect 100 different tags", "reward": {"tagcoins": 100, "coin_bonus": 0.01}},
187
- "collection_milestone_1000": {"name": "Millennium Collector", "requirement": 1000, "description": "Collect 1000 different tags", "reward": {"tagcoins": 1000, "coin_bonus": 0.01}},
188
- "collection_milestone_5000": {"name": "Epic Collector", "requirement": 5000, "description": "Collect 5000 different tags", "reward": {"tagcoins": 5000, "coin_bonus": 0.01}},
189
-
190
- # Essence & library achievements
191
- "essence_creator": {"name": "Essence Creator", "requirement": 5, "description": "Generate 5 tag essences", "reward": {"essence_cost_reduction": 0.2, "coin_bonus": 0.01}},
192
- "tag_explorer": {"name": "Tag Explorer", "requirement": 20, "description": "Explore all library tiers", "reward": {"library_cost_reduction": 0.15, "coin_bonus": 0.01}},
193
- "enkephalin_master": {"name": "Enkephalin Master", "requirement": 5000, "description": "Generate 5000 Enkephalin", "reward": {"essence_cost_reduction": 0.25, "coin_bonus": 0.01}},
194
- "sacrifice_devotee": {"name": "Sacrifice Devotee", "requirement": 100, "description": "Sacrifice 100 tags", "reward": {"enkephalin_bonus": 0.2, "coin_bonus": 0.01}},
195
-
196
- # New achievements
197
- "category_explorer": {"name": "Category Explorer", "requirement": 10, "description": "Collect tags from 10 different categories", "reward": {"coin_bonus": 0.01}},
198
- "series_collector": {"name": "Series Collector", "requirement": 3, "description": "Complete 3 series mosaics", "reward": {"coin_bonus": 0.01, "enkephalin": 25}},
199
- "rapid_tagger": {"name": "Rapid Tagger", "requirement": 100, "description": "Scan 100 images", "reward": {"coin_bonus": 0.01}},
200
- "enkephalin_harvester": {"name": "Enkephalin Harvester", "requirement": 1000, "description": "Generate 1000 Enkephalin", "reward": {"enkephalin_bonus": 0.1, "coin_bonus": 0.01}},
201
- "library_scholar": {"name": "Library Scholar", "requirement": 50, "description": "Extract 50 tags from the library", "reward": {"library_cost_reduction": 0.1, "coin_bonus": 0.01}},
202
- "rarity_hunter": {"name": "Rarity Hunter", "description": "Find tags of all rarity levels", "reward": {"coin_bonus": 0.02}},
203
- "essence_master": {"name": "Essence Master", "requirement": 25, "description": "Generate 25 tag essences", "reward": {"essence_cost_reduction": 0.15, "coin_bonus": 0.01}},
204
- "legendary_librarian": {"name": "Legendary Librarian", "description": "Extract an Impuritas Civitas tag from the library", "reward": {"library_cost_reduction": 0.2, "coin_bonus": 0.01, "enkephalin": 100}}
205
  }
 
1
+ #!/usr/bin/env python3
2
+ """
3
+ Game Constants for Tag Collector Game - Updated with new tag rarity names
4
+ This file contains shared constants used by both the main game and the library system.
5
+ """
6
+
7
+ # Game currency names
8
+ TAG_CURRENCY_NAME = "TagCoins"
9
+ ENKEPHALIN_CURRENCY_NAME = "Enkephalin"
10
+ ENKEPHALIN_ICON = "💧"
11
+
12
+ STARTING_THRESHOLD = 0.9
13
+ MIN_THRESHOLD = 0.1
14
+
15
+ # Tag animations and theme settings
16
+ TAG_ANIMATIONS = {
17
+ "Star of the City": {
18
+ "css_class": "star-of-city",
19
+ "animation": """
20
+ @keyframes glowing {
21
+ 0% { box-shadow: 0 0 5px #FFD700; }
22
+ 50% { box-shadow: 0 0 20px #FFD700; }
23
+ 100% { box-shadow: 0 0 5px #FFD700; }
24
+ }
25
+ .star-of-city {
26
+ background-color: rgba(255, 215, 0, 0.2);
27
+ padding: 8px;
28
+ border-radius: 5px;
29
+ border: 2px solid gold;
30
+ animation: glowing 2s infinite;
31
+ }
32
+ """
33
+ },
34
+ "Impuritas Civitas": {
35
+ "css_class": "impuritas-civitas",
36
+ "animation": """
37
+ @keyframes rainbow-border {
38
+ 0% { border-color: red; }
39
+ 14% { border-color: orange; }
40
+ 28% { border-color: yellow; }
41
+ 42% { border-color: green; }
42
+ 57% { border-color: blue; }
43
+ 71% { border-color: indigo; }
44
+ 85% { border-color: violet; }
45
+ 100% { border-color: red; }
46
+ }
47
+
48
+ @keyframes rainbow-text {
49
+ 0% { color: red; }
50
+ 14% { color: orange; }
51
+ 28% { color: yellow; }
52
+ 42% { color: green; }
53
+ 57% { color: blue; }
54
+ 71% { color: indigo; }
55
+ 85% { color: violet; }
56
+ 100% { color: red; }
57
+ }
58
+
59
+ @keyframes rainbow-bg {
60
+ 0% { background-color: rgba(255,0,0,0.1); }
61
+ 14% { background-color: rgba(255,165,0,0.1); }
62
+ 28% { background-color: rgba(255,255,0,0.1); }
63
+ 42% { background-color: rgba(0,128,0,0.1); }
64
+ 57% { background-color: rgba(0,0,255,0.1); }
65
+ 71% { background-color: rgba(75,0,130,0.1); }
66
+ 85% { background-color: rgba(238,130,238,0.1); }
67
+ 100% { background-color: rgba(255,0,0,0.1); }
68
+ }
69
+
70
+ .impuritas-civitas {
71
+ background-color: rgba(0, 0, 0, 0.1);
72
+ padding: 10px;
73
+ border-radius: 5px;
74
+ border: 3px solid red;
75
+ animation: rainbow-border 4s linear infinite, rainbow-bg 4s linear infinite;
76
+ }
77
+
78
+ .impuritas-text {
79
+ font-weight: bold;
80
+ animation: rainbow-text 4s linear infinite;
81
+ }
82
+ """
83
+ }
84
+ }
85
+
86
+ # Rarity levels with appropriate colors (updated to match new rarity tiers)
87
+ RARITY_LEVELS = {
88
+ "Canard": {"color": "#AAAAAA", "value": 1}, # Gray
89
+ "Urban Myth": {"color": "#5D9C59", "value": 5}, # Green
90
+ "Urban Legend": {"color": "#2196F3", "value": 10}, # Blue
91
+ "Urban Plague": {"color": "#9C27B0", "value": 25}, # Purple
92
+ "Urban Nightmare": {"color": "#FF9800", "value": 50}, # Orange
93
+ "Star of the City": {"color": "#FFEB3B", "value": 250}, # Yellow/Gold
94
+ "Impuritas Civitas": {"color": "#F44336", "value": 1000} # Red
95
+ }
96
+
97
+ # Essence generation costs in enkephalin
98
+ ESSENCE_COSTS = {
99
+ "Canard": 10, # Common tags
100
+ "Urban Myth": 30, # Uncommon tags
101
+ "Urban Legend": 75, # Rare tags
102
+ "Urban Plague": 150, # Very rare tags
103
+ "Urban Nightmare": 300, # Extremely rare tags
104
+ "Star of the City": 600, # Nearly mythical tags
105
+ "Impuritas Civitas": 1200 # Legendary tags
106
+ }
107
+
108
+ # Tag power system
109
+ TAG_POWER_BONUSES = {
110
+ "Canard": {"coin_multiplier": 0, "enkephalin_reward": 0},
111
+ "Urban Myth": {"coin_multiplier": 0, "enkephalin_reward": 0},
112
+ "Urban Legend": {"coin_multiplier": 0, "enkephalin_reward": 1},
113
+ "Urban Plague": {"coin_multiplier": 0.001, "enkephalin_reward": 3},
114
+ "Urban Nightmare": {"coin_multiplier": 0.0025, "enkephalin_reward": 5},
115
+ "Star of the City": {"coin_multiplier": 0.005, "enkephalin_reward": 10},
116
+ "Impuritas Civitas": {"coin_multiplier": 0.01, "enkephalin_reward": 25}
117
+ }
118
+
119
+ THRESHOLD_UPGRADES = [
120
+ {
121
+ "name": "Pattern Recognition Module",
122
+ "threshold_setting": 0.85,
123
+ "cost": 300,
124
+ "description": "Basic algorithm focused on high-precision identification. Reduces false positives but may miss some tags."
125
+ },
126
+ {
127
+ "name": "Neural Network Enhancement",
128
+ "threshold_setting": 0.75,
129
+ "cost": 500,
130
+ "description": "Improved tag detection using multi-layer perceptrons. Offers good precision with moderate recall."
131
+ },
132
+ {
133
+ "name": "Deep Learning Framework",
134
+ "threshold_setting": 0.61,
135
+ "cost": 1000,
136
+ "description": "Advanced algorithms that learn from previous scans. Provides better balance between precision and recall."
137
+ },
138
+ {
139
+ "name": "Quantum Probability Engine",
140
+ "threshold_setting": 0.55,
141
+ "cost": 2500,
142
+ "description": "Leverages quantum uncertainty for optimal detection balance. Perfect calibration point for F1 score."
143
+ },
144
+ {
145
+ "name": "Recursive Self-Improvement",
146
+ "threshold_setting": 0.45,
147
+ "cost": 7500,
148
+ "description": "Scanner enhances its own detection capabilities. Optimized for weighted tag discovery."
149
+ },
150
+ {
151
+ "name": "Consciousness Emulation",
152
+ "threshold_setting": 0.41,
153
+ "cost": 15000,
154
+ "description": "Scanner develops intuition-like abilities. Favors higher recall while maintaining reasonable precision."
155
+ },
156
+ {
157
+ "name": "Technological Singularity",
158
+ "threshold_setting": 0.35,
159
+ "cost": 50000,
160
+ "description": "The scanner transcends conventional limitations. Maximizes tag discovery at the cost of some precision."
161
+ }
162
+ ]
163
+
164
+ # Achievements
165
+ ACHIEVEMENTS = {
166
+ # Collection achievements
167
+ "tag_collector_beginner": {"name": "Novice Archivist", "requirement": 50, "description": "Collect 50 different tags", "reward": {"coin_bonus": 0.01}},
168
+ "tag_collector_expert": {"name": "Senior Cataloger", "requirement": 250, "description": "Collect 250 different tags", "reward": {"coin_bonus": 0.01}},
169
+ "tag_collector_master": {"name": "Master Librarian", "requirement": 500, "description": "Collect 500 different tags", "reward": {"coin_bonus": 0.01}},
170
+ "tag_master": {"name": "Grand Archivist", "requirement": 1000, "description": "Collect 1000 different tags", "reward": {"coin_bonus": 0.01}},
171
+
172
+ # Rarity achievements
173
+ "legendary_hunter": {"name": "Impuritas Seeker", "requirement": 1, "description": "Find your first Impuritas Civitas tag", "reward": {"coin_bonus": 0.01, "enkephalin": 50}},
174
+ "multi_legendary": {"name": "Forbidden Collection", "requirement": 5, "description": "Collect 5 Impuritas Civitas tags", "reward": {"coin_bonus": 0.01, "enkephalin": 100}},
175
+ "canard_collector": {"name": "Canard Chronicler", "requirement": 30, "description": "Collect 30 Canard tags", "reward": {"coin_bonus": 0.01}},
176
+ "urban_myth_collector": {"name": "Myth Curator", "requirement": 15, "description": "Collect 15 Urban Myth tags", "reward": {"coin_bonus": 0.01}},
177
+ "urban_legend_collector": {"name": "Legend Preserver", "requirement": 10, "description": "Collect 10 Urban Legend tags", "reward": {"coin_bonus": 0.01}},
178
+ "urban_plague_collector": {"name": "Plague Archivist", "requirement": 5, "description": "Collect 5 Urban Plague tags", "reward": {"coin_bonus": 0.01}},
179
+ "urban_nightmare_collector": {"name": "Nightmare Keeper", "requirement": 5, "description": "Collect 5 Urban Nightmare tags", "reward": {"coin_bonus": 0.01}},
180
+ "star_collector": {"name": "Star Collector", "requirement": 3, "description": "Collect 3 Star of the City tags", "reward": {"coin_bonus": 0.01, "enkephalin": 30}},
181
+ "impuritas_collector": {"name": "Impuritas Scholar", "requirement": 3, "description": "Collect 3 Impuritas Civitas tags", "reward": {"coin_bonus": 0.01, "enkephalin": 75}},
182
+
183
+ # Progress achievements
184
+ "perfect_scanner": {"name": "Omniscient Observer", "description": "Reach the minimum threshold", "reward": {"coin_bonus": 0.01}},
185
+ "optimal_threshold": {"name": "Perfect Calibration", "description": "Reach the optimal F1 score threshold of 0.328", "reward": {"coin_bonus": 0.01}},
186
+ "collection_milestone_100": {"name": "Century Collector", "requirement": 100, "description": "Collect 100 different tags", "reward": {"tagcoins": 100, "coin_bonus": 0.01}},
187
+ "collection_milestone_1000": {"name": "Millennium Collector", "requirement": 1000, "description": "Collect 1000 different tags", "reward": {"tagcoins": 1000, "coin_bonus": 0.01}},
188
+ "collection_milestone_5000": {"name": "Epic Collector", "requirement": 5000, "description": "Collect 5000 different tags", "reward": {"tagcoins": 5000, "coin_bonus": 0.01}},
189
+
190
+ # Essence & library achievements
191
+ "essence_creator": {"name": "Essence Creator", "requirement": 5, "description": "Generate 5 tag essences", "reward": {"essence_cost_reduction": 0.2, "coin_bonus": 0.01}},
192
+ "tag_explorer": {"name": "Tag Explorer", "requirement": 20, "description": "Explore all library tiers", "reward": {"library_cost_reduction": 0.15, "coin_bonus": 0.01}},
193
+ "enkephalin_master": {"name": "Enkephalin Master", "requirement": 5000, "description": "Generate 5000 Enkephalin", "reward": {"essence_cost_reduction": 0.25, "coin_bonus": 0.01}},
194
+ "sacrifice_devotee": {"name": "Sacrifice Devotee", "requirement": 100, "description": "Sacrifice 100 tags", "reward": {"enkephalin_bonus": 0.2, "coin_bonus": 0.01}},
195
+
196
+ # New achievements
197
+ "category_explorer": {"name": "Category Explorer", "requirement": 10, "description": "Collect tags from 10 different categories", "reward": {"coin_bonus": 0.01}},
198
+ "series_collector": {"name": "Series Collector", "requirement": 3, "description": "Complete 3 series mosaics", "reward": {"coin_bonus": 0.01, "enkephalin": 25}},
199
+ "rapid_tagger": {"name": "Rapid Tagger", "requirement": 100, "description": "Scan 100 images", "reward": {"coin_bonus": 0.01}},
200
+ "enkephalin_harvester": {"name": "Enkephalin Harvester", "requirement": 1000, "description": "Generate 1000 Enkephalin", "reward": {"enkephalin_bonus": 0.1, "coin_bonus": 0.01}},
201
+ "library_scholar": {"name": "Library Scholar", "requirement": 50, "description": "Extract 50 tags from the library", "reward": {"library_cost_reduction": 0.1, "coin_bonus": 0.01}},
202
+ "rarity_hunter": {"name": "Rarity Hunter", "description": "Find tags of all rarity levels", "reward": {"coin_bonus": 0.02}},
203
+ "essence_master": {"name": "Essence Master", "requirement": 25, "description": "Generate 25 tag essences", "reward": {"essence_cost_reduction": 0.15, "coin_bonus": 0.01}},
204
+ "legendary_librarian": {"name": "Legendary Librarian", "description": "Extract an Impuritas Civitas tag from the library", "reward": {"library_cost_reduction": 0.2, "coin_bonus": 0.01, "enkephalin": 100}}
205
  }