-
-
Notifications
You must be signed in to change notification settings - Fork 444
/
Copy pathachievements.dm
309 lines (258 loc) · 8.68 KB
/
achievements.dm
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
//OFFSETS - Used so that each general like "group" of achievements can be added to w/o fucking up the whole incremental pattern we got going on.
//DO NOT MAKE OFFSET VALUES THAT ARE GREATER THAN 2^15 OR LESS THAN 128.
//TO BE HONEST THIS OFFSET DOESN'T EVEN NEED TO BE POWER OF TWO, THOUGH.
#define GREENTEXT 256 // An offset for new greentext-related achievements, to keep the incremental pattern.
#define REDTEXT 512 // Offset for redtexts.
#define ENGIEDEPT 768 // Offset for engineering-related achievements.
#define CARGODEPT 1028 // Offset for Cargo-related achievements
/**
* Achievement datums
*
* Each achievement datum represents an achievement the user can get. To add a new achievement, simply add a new typepath
* with a unique ID, the name and description *can* match others' but they probably shouldn't.
* Then use [/datum/controller/subsystem/achievements/proc/has_achievement] and [/datum/controller/subsystem/achievements/proc/unlock_achievement].
*/
/datum/achievement
/// Name of the achievement. Make it a reference or a joke or something
var/name = "achievement"
/// Description of the achievement. Should probably be how to get it.
var/desc = "Please make an issue on github, including this achievement's name and how you got it."
/// ID of the achievement. Should be unique, since this is what we use to keep track of them
var/id = 0
/// Whether or not we hide the achievement's description in the in-game viewer
var/hidden = FALSE
/datum/achievement/bubblegum
name = "Kick Ass and Chew Bubblegum"
desc = "Kill Bubblegum, the king of slaughter demons."
id = 1
/datum/achievement/roboborg
name = "I Live Again"
desc = "As a roboticist, create a cyborg"
id = 2
/datum/achievement/defib
name = "Lifesaver"
desc = "Successfully defibrillate someone"
id = 3
/datum/achievement/engineering/pa_emag
name = "Catastrophe"
desc = "Emag a particle accelerator"
id = 4
hidden = TRUE
/datum/achievement/flukeops
name = "Reverse Card"
desc = "As a member of the crew, deal a humiliating defeat to the nuclear team"
id = 5
/datum/achievement/greentext/nukewin
name = "Delta Alert"
desc = "As a nuclear operative, score a major or minor victory"
id = 6
/datum/achievement/honorarynukie
name = "Honorary Nukie"
desc = "Kill yourself using the nuclear authentication disk"
id = 7
hidden = TRUE
/datum/achievement/badass
name = "Badass Syndie"
desc = "As a traitor, complete your objectives without buying any items"
id = 8
/datum/achievement/jones
name = "Lead Lined"
desc = "Survive an explosion while inside of a freezer"
id = 9
hidden = TRUE
/datum/achievement/greentext/wizwin
name = "Scholars of the Arcane"
desc = "As a wizard, complete your objectives"
id = 10
/datum/achievement/cpr
name = "Breath of Life"
desc = "Perform CPR on someone..."
id = 11
/datum/achievement/anticpr
name = "Breath of Death"
desc = "... with incompatible lungs"
id = 12
hidden = TRUE
/datum/achievement/greentext/changelingwin
name = "The Thing"
desc = "As a changeling, complete your objectives"
id = 13
/datum/achievement/greentext/darkspawn
name = "The Dark Shadow"
desc = "As a darkspawn, ascend successfully"
id = 14
/datum/achievement/death
name = "Flatlined"
desc = "You died"
id = 15
/datum/achievement/cremated
name = "Back to Carbon"
desc = "Get cremated"
id = 16
/datum/achievement/cremated_alive
name = "Burn in Hell"
desc = "Get cremated... alive"
id = 17
hidden = TRUE
/datum/achievement/engineering/Poly_silent
name = "Silence Bird!"
desc = "As a network admin, create a script that mutes poly"
id = 18
hidden = TRUE
/datum/achievement/engineering/Poly_loud
name = "Embrace the Bird!"
desc = "As a network admin, create a script that makes poly LOUD"
id = 19
hidden = TRUE
/datum/achievement/cargoking
name = "King of Credits"
desc = "As the QM, beat the current record of cargo credits: " //theoretically, if someone manages to get to an amount that's larger than 1992 digits, this'd break DB things
id = 20
var/amount = 0
/datum/achievement/cargoking/New()
.=..()
var/datum/DBQuery/Q = SSdbcore.NewQuery("SELECT `value` FROM [format_table_name("misc")] WHERE `key` = 'cargorecord'")
Q.Execute()
if(Q.NextRow())
amount = Q.item[1]
qdel(Q)
desc += "[amount]"
/datum/achievement/likearecord
name = "You Spin Me Round"
desc = "Use a surgical drill to spin right round like a record baby"
id = 21
hidden = TRUE
/datum/achievement/ducatduke
name = "Duke of Ducats"
desc = "As the QM, have a million cargo credits by the end of the round" //Cargoking-junior
id = 22
/datum/achievement/keycard_auth
name = "On my authority"
desc = "Trigger a keycard authentication device event, by yourself."
id = 23
/datum/achievement/dab
name = "Brain Damage"
desc = "Dab."
id = 24
hidden = TRUE
// The achievements that are basically just "greentext as this sort of antag"
/datum/achievement/greentext
name = "Green Text"
desc = "As an antagonist, achieve your first green text"
id = GREENTEXT + 1
/datum/achievement/greentext/ratvar
name = "Clocking In"
desc = "As a servant of Ratvar, summon Ratvar"
id = GREENTEXT + 2
/datum/achievement/greentext/ratvar/eminence
name = "Ratvar's Hand"
desc = "As the Eminence, summon Ratvar"
id = GREENTEXT + 3
/datum/achievement/greentext/narsie
name = "Blood Rites"
desc = "As a member of blood cult, summon Nar'sie"
id = GREENTEXT + 4
/datum/achievement/greentext/narsie/master
name = "Master of Blood"
desc = "As a cult master, summon Nar'sie"
id = GREENTEXT + 5
/datum/achievement/greentext/revolution
name = "Down with Nanotrasen"
desc = "As a revolutionary, complete your objectives"
id = GREENTEXT + 6
/datum/achievement/greentext/revolution/head
name = "Viva la Revolution!"
desc = "As a head revolutionary, complete your objectives"
id = GREENTEXT + 7
/datum/achievement/greentext/gang
name = "Turf War"
desc = "As a gang member, take over the station"
id = GREENTEXT + 8
/datum/achievement/greentext/gangleader
name = "\"I have built my organization upon fear.\""
desc = "As a gang leader, take over the station"
id = GREENTEXT + 9
/datum/achievement/greentext/blob
name = "Grey Goo"
desc = "As a blob, complete your objectives"
id = GREENTEXT + 10
/datum/achievement/greentext/clownop
name = "\"You wouldn't get it\""
desc = "As a clown operative, score a major or minor victory"
id = GREENTEXT + 11
/datum/achievement/greentext/internal
name = "Triple Cross"
desc = "As an internal affairs agent, complete your objectives"
id = GREENTEXT + 12
/datum/achievement/greentext/external
name = "Quadruple Cross"
desc = "As an external affairs agent, complete your objectives"
id = GREENTEXT + 13
/datum/achievement/greentext/disease
name = "Space Aids"
desc = "As a sentient disease, survive and complete your objectives"
id = GREENTEXT + 14
/datum/achievement/greentext/pirate
name = "Yaaaahr!"
desc = "As member of the pirate crew, collect sufficient bounty from the crew"
id = GREENTEXT + 15
/datum/achievement/greentext/vampire
name = "Count de Ville"
desc = "As a vampire, complete your objectives"
id = GREENTEXT + 16
/datum/achievement/greentext/revenant
name = "From The Shadows"
desc = "As a revenant, complete your objectives"
id = GREENTEXT + 17
//end-greentext
//start-redtext
/datum/achievement/redtext
name = "Mission Failed, We'll Get'em Next Time"
desc = "As an antagonist, fail your objectives."
id = REDTEXT + 1
/datum/achievement/redtext/winlost
name = "Arcane Failure"
desc = "As a wizard, fail your objectives."
id = REDTEXT + 2
hidden = TRUE
//end-redtext
//start-engineering
/datum/achievement/engineering
name = "Isaac Clarke"
desc = "Survive a full round as part of the Engineering team."
id = ENGIEDEPT + 1
/datum/achievement/engineering/solar
name = "Honest Work"
desc = "Set up one of the solar arrays as part of the Engineering team."
id = ENGIEDEPT + 2
/datum/achievement/engineering/scotty
name = "\"I'm givin' it all she's got, Captain!\""
desc = "As Chief Engineer, produce more than three megawatts of power."
id = ENGIEDEPT + 3
/datum/achievement/engineering/toasty
name = "Nice and Toasty"
desc = "Get set on fire in a fire-resistant suit."
id = ENGIEDEPT + 4
//end-engineering
//start-cargo
/datum/achievement/cargo
name = "Glory to Cargonia"
desc = "Survive a full round as part of the Supply department."
id = CARGODEPT + 1
/datum/achievement/cargo/bourgeois
name = "Top 1%"
desc = "Have one million credits on your ID."
id = CARGODEPT + 2
/datum/achievement/cargo/bounties
name = "Five Year Plan"
desc = "As a member of the Supply department, complete ten bounties."
id = CARGODEPT + 3
/datum/achievement/cargo/bsa
name = "\"Glass them.\""
desc = "Fire the Bluespace artillery."
id = CARGODEPT + 4
//end-cargo
#undef GREENTEXT
#undef REDTEXT
#undef ENGIEDEPT
#undef CARGODEPT