]> git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/menu/xonotic/credits.qc
Transifex autosync
[xonotic/xonotic-data.pk3dir.git] / qcsrc / menu / xonotic / credits.qc
1 #include "credits.qh"
2
3 #define CREDITS(TITLE, FUNCTION, PERSON, PERSON_, NL) \
4         TITLE(_("Core Team")) \
5                 PERSON(Rudolf "divVerent" Polzer) \
6                 PERSON(Ant "Antibody" Zucaro) \
7                 PERSON(Antonio "terencehill" Piu) \
8                 PERSON(Marvin "Mirio" Beck) \
9                 PERSON(Merlijn Hofstra) \
10                 PERSON(Ruszkai "CuBe0wL" Ákos) \
11                 PERSON(Tyler "-z-" Mulligan) \
12         NL() \
13         TITLE(_("Extended Team")) \
14                 PERSON(bones_was_here) \
15                 PERSON(David "Cloudwalk" Knapp) \
16                 PERSON(Freddy) \
17                 PERSON(Halogene) \
18                 PERSON(Jan "zykure" Behrens) \
19                 PERSON(Morosophos) \
20                 PERSON(MrBougo) \
21                 PERSON(nilyt/nyov) \
22                 PERSON(Nitroxis) \
23                 PERSON(packer) \
24                 PERSON(Severin "sev" Meyer) \
25                 PERSON(Thomas "illwieckz" Debesse) \
26                 PERSON(Victor "LegendGuard" Jaume) \
27                 PERSON(Yannick "SpiKe" Le Guen) \
28                 PERSON(z411) \
29         NL() \
30         NL() \
31         FUNCTION(_("Website")) \
32                 PERSON(Ant "Antibody" Zucaro (web)) \
33                 PERSON(Freddy) \
34                 PERSON(Merlijn Hofstra) \
35                 PERSON(Tyler "-z-" Mulligan (web / game)) \
36         NL() \
37         FUNCTION(_("Stats")) \
38                 PERSON(Ant "Antibody" Zucaro) \
39                 PERSON(Jan "zykure" Behrens) \
40         NL() \
41         FUNCTION(_("Art")) \
42                 PERSON(Severin "sev" Meyer) \
43                 PERSON(Sahil "DiaboliK" Singhal) \
44                 PERSON(Peter "Morphed" Pielak) \
45                 PERSON(Sam "LJFHutch" Hutchinson) \
46                 PERSON(Pearce "theShadow" Michal) \
47                 PERSON(KingPimpCommander) \
48         NL() \
49         FUNCTION(_("Animation")) \
50                 PERSON(Sahil "DiaboliK" Singhal) \
51                 PERSON(nifrek) \
52         NL() \
53         FUNCTION(_("Campaign")) \
54                 PERSON(Marvin "Mirio" Beck) \
55         NL() \
56         FUNCTION(_("Level Design")) \
57                 PERSON(Amadeusz "amade/proraide" Sławiński) \
58                 PERSON(Ben "MooKow" Banker) \
59                 PERSON(cityy) \
60                 PERSON(Cortez) \
61                 PERSON(Cuinn "Cuinnton" Herrick) \
62                 PERSON(Debugger) \
63                 PERSON(Hugo "Calinou" Locurcio) \
64                 PERSON(Jakob "tZork" Markström Gröhn) \
65                 PERSON(Konrad "Justin" Slawinski) \
66                 PERSON(Maddin) \
67                 PERSON(L0) \
68                 PERSON(Łukasz "kuniu the frogg" Polek) \
69                 PERSON(Maik "SavageX" Merten) \
70                 PERSON(Marvin "Mirio" Beck) \
71                 PERSON(MintOX) \
72                 PERSON(packer) \
73                 PERSON(Pearce "theShadow" Michal) \
74                 PERSON(Rasmus "FruitieX" Eskola) \
75                 PERSON(Ruszkai "CuBe0wL" Ákos) \
76                 PERSON(Severin "sev" Meyer) \
77                 PERSON(ShadoW) \
78                 PERSON(t0uYK8Ne) \
79                 PERSON(Yannick "SpiKe" Le Guen) \
80         NL() \
81         FUNCTION(_("Music / Sound FX")) \
82                 PERSON(AquaNova (Archer)) \
83                 PERSON(blkrbt) \
84                 PERSON(chooksta) \
85                 PERSON(Independent.nu) \
86                 PERSON(Lea "TheAudioMonkey" Edwards) \
87                 PERSON([master]mind) \
88                 PERSON(Merlijn Hofstra) \
89                 PERSON(Mick Rippon) \
90                 PERSON(Nick "bitbomb" Lucca) \
91                 PERSON(remaxim) \
92                 PERSON(Saulo "mand1nga" Gil) \
93                 PERSON({SC0RP} - Ian "ID" Dorrell) \
94                 PERSON(Stephan) \
95                 PERSON(unfa) \
96         NL() \
97         FUNCTION(_("Game Code")) \
98                 PERSON(Antonio "terencehill" Piu) \
99                 PERSON(bones_was_here) \
100                 PERSON(Dr. Jaska) \
101                 PERSON(Jakob "tZork" Markström Gröhn) \
102                 PERSON(martin-t) \
103                 PERSON(Mattia "Melanosuchus" Basaglia) \
104                 PERSON(Matthias "matthiaskrgr" Krüger) \
105                 PERSON(Rasmus "FruitieX" Eskola) \
106                 PERSON(Rudolf "divVerent" Polzer) \
107                 PERSON(Samual "Ares" Lenks) \
108                 PERSON(TimePath) \
109                 PERSON(Victor "LegendGuard" Jaume) \
110                 PERSON(z411) \
111                 PERSON(Zac "Mario" Jardine) \
112         NL() \
113         FUNCTION(_("Marketing / PR")) \
114                 PERSON(Tyler "-z-" Mulligan) \
115                 PERSON(Ruszkai "CuBe0wL" Ákos) \
116                 PERSON(Samual "Ares" Lenks) \
117                 PERSON(Saulo "mand1nga" Gil) \
118         NL() \
119         FUNCTION(_("Legal")) \
120                 PERSON(Rudolf "divVerent" Polzer) \
121                 PERSON(Merlijn Hofstra) \
122         NL() \
123         NL() \
124         TITLE(_("Game Engine")) \
125                 FUNCTION("DarkPlaces") \
126                         PERSON(Ashley Rose "LadyHavoc" Hale) \
127                 NL() \
128                 FUNCTION(_("Engine Additions")) \
129                         PERSON(David "Cloudwalk" Knapp) \
130                         PERSON(Rudolf "divVerent" Polzer) \
131                         PERSON(Samual "Ares" Lenks) \
132                 NL() \
133         NL() \
134         TITLE(_("Compiler")) \
135                 FUNCTION("GMQCC") \
136                         PERSON(Wolfgang "Blub\0" Bumiller) \
137                         PERSON(Dale "graphitemaster" Weiler) \
138                 NL() \
139         NL() \
140         TITLE(_("Other Active Contributors")) \
141                 PERSON(Jeff) \
142                 PERSON(Mircea "Taoki" Kitsune) \
143                 PERSON(Penguinum) \
144                 PERSON(slava) \
145         NL() \
146         NL() \
147         TITLE(_("Translators")) \
148                 NL() \
149                 FUNCTION(_("Asturian")) \
150                         PERSON(Llumex03) \
151                         PERSON(Tornes "Tornes.Llume" Ḷḷume) \
152                         PERSON(Ximielga) \
153                 NL() \
154                 FUNCTION(_("Belarusian")) \
155                         PERSON(Mihail "meequz" Varantsou) \
156                 NL() \
157                 FUNCTION(_("Bulgarian")) \
158                         PERSON(Alexander "alex4o" Bonin) \
159                         PERSON(ifohancroft) \
160                         PERSON(Krasimir "kmikov" Mikov) \
161                         PERSON(lokster) \
162                         PERSON(Nik "cozmo" Dim) \
163                         PERSON(set_killer) \
164                         PERSON(ubone) \
165                 NL() \
166                 FUNCTION(_("Chinese (China)")) \
167                         PERSON(Antonidas) \
168                         PERSON(Armcoon) \
169                         PERSON(CodingJellyfish) \
170                         PERSON(gee "Largee" Lar) \
171                         PERSON(jiegushijia) \
172                         PERSON(kalawore) \
173                         PERSON(Liang "dxkliu" Liu) \
174                         PERSON(Losier "losierb" Blackheath) \
175                         PERSON(Matthew "wjjmatthew" Wu) \
176                         PERSON(moetale) \
177                         PERSON(NaitLee) \
178                         PERSON(sapphireliu) \
179                 NL() \
180                 FUNCTION(_("Chinese (Hong Kong)")) \
181                         PERSON(Antonidas) \
182                         PERSON(CodingJellyfish) \
183                         PERSON(gee "Largee" Lar) \
184                         PERSON(jiegushijia) \
185                         PERSON(kalawore) \
186                         PERSON(Losier "losierb" Blackheath) \
187                         PERSON(Matthew "wjjmatthew" Wu) \
188                         PERSON(Liang "dxkliu" Liu) \
189                         PERSON(moetale) \
190                         PERSON(NaitLee) \
191                         PERSON(sapphireliu) \
192                 NL() \
193                 FUNCTION(_("Chinese (Taiwan)")) \
194                         PERSON(Alisha) \
195                         PERSON(Armcoon) \
196                         PERSON(Jeff "s8321414" Huang) \
197                         PERSON(msn1018927464) \
198                         PERSON(NaitLee) \
199                 NL() \
200                 FUNCTION(_("Czech")) \
201                         PERSON(Adam "Admi335" Říha) \
202                         PERSON(fasdasd " kitfildom" sdasd) \
203                         PERSON(gamingforyou875) \
204                         PERSON(Jan "kockahonza" Kocka) \
205                         PERSON(Jiří "Havro" Vrána) \
206                         PERSON(shogun assassin/woky) \
207                         PERSON(Superovoce) \
208                         PERSON(Tomáš "CZHeron" Volavka) \
209                 NL() \
210                 FUNCTION(_("Dutch")) \
211                         PERSON(Alexander "freefang" van Dam) \
212                         PERSON(Contijn "Sojiro84" Buijs) \
213                         PERSON(Joeke "Mappack" de Graaf) \
214                         PERSON(Jonathan "Jonakeys" van der Steege) \
215                         PERSON(PinkRobot) \
216                         PERSON(vegiburger) \
217                 NL() \
218                 FUNCTION(_("English (Australia)")) \
219                         PERSON(Matthew "matthewwu2003" Wu) \
220                         PERSON(Laurene "sunflowers" Albrand) \
221                         PERSON(Stuart "Cefiar" Young) \
222                         PERSON(Zac "Mario" Jardine) \
223                 NL() \
224                 FUNCTION(_("Finnish")) \
225                         PERSON(Dr. Jaska) \
226                         PERSON(Heidi Wenger) \
227                         PERSON(Henry "Exitium" Sanmark) \
228                         PERSON(Jaakko Saarikko) \
229                         PERSON(Jonas "PowaTree" Sahlberg) \
230                         PERSON(LINUX SAUNA) \
231                         PERSON(Oftox) \
232                         PERSON(Oi Suomi On!) \
233                         PERSON(Rasmus "FruitieX" Eskola) \
234                 NL() \
235                 FUNCTION(_("French")) \
236                         PERSON(Gwlanbzh) \
237                         PERSON(Hugo "Calinou" Locurcio) \
238                         PERSON(Kim "coughingmouse" Lee) \
239                         PERSON(Maxime "Taximus" Paradis) \
240                         PERSON(Nicolas "signed" Formichella) \
241                         PERSON(RedGuff) \
242                         PERSON(Thomas "illwieckz" Debesse) \
243                         PERSON(Yannick "SpiKe" Le Guen) \
244                 NL() \
245                 FUNCTION(_("German")) \
246                         PERSON(cvcxc) \
247                         PERSON(Erik "Ablu" Schilling) \
248                         PERSON(Jope "Sless" Withers) \
249                         PERSON(Larson "skps" März) \
250                         PERSON(Marvin "Mirio" Beck) \
251                         PERSON(Paul "Snapper") \
252                         PERSON(Robert "HbmMods" Katzinsky) \
253                         PERSON(Rudolf "divVerent" Polzer) \
254                         PERSON(TheTrueBrot) \
255                         PERSON(Wuzzy) \
256                         PERSON(Yepoleb) \
257                 NL() \
258                 FUNCTION(_("Greek")) \
259                         PERSON_("Γιώργος Καρδάμης") \
260                         PERSON(Hector "The_Smasher_1992" Champipis) \
261                         PERSON(Konstantinos "LDinos" Mihalenas) \
262                         PERSON(MasterWord) \
263                         PERSON(Mensious Mensious) \
264                         PERSON(Savoritias) \
265                         PERSON(Vindex) \
266                         PERSON(Yannis "Evropi" Anthymidis) \
267                 NL() \
268                 FUNCTION(_("Hungarian")) \
269                         PERSON(Ács "acszoltan111" Zoltán) \
270                         PERSON(MmAaXx500) \
271                         PERSON(Peter "fpeterhu" Ferenczy) \
272                         PERSON(Ruszkai "CuBe0wL" Ákos) \
273                         PERSON(xaN1C4n3) \
274                 NL() \
275                 FUNCTION(_("Indonesian")) \
276                         PERSON(Angeline Meilia) \
277                         PERSON(Ariesandy Hidayat) \
278                         PERSON(red koala) \
279                 NL() \
280                 FUNCTION(_("Irish")) \
281                         PERSON(Kevin "kscanne" Scannell) \
282                 NL() \
283                 FUNCTION(_("Italian")) \
284                         PERSON(Antonio "terencehill" Piu) \
285                         PERSON(Felice "MaidenBeast" Sallustio) \
286                         PERSON(Jessica Amoruso) \
287                         PERSON(stdi) \
288                         PERSON(XCostaX) \
289                 NL() \
290                 FUNCTION(_("Japanese")) \
291                         PERSON(Antoni Das) \
292                         PERSON(Lento) \
293                         PERSON(Space Ace) \
294                         PERSON(RYU "ryusho2523" N.) \
295                         PERSON(Victor "LegendGuard" Jaume) \
296                         PERSON(z411) \
297                 NL() \
298                 FUNCTION(_("Kazakh")) \
299                         PERSON(Артем "bystrov.arterm" Быстров) \
300                 NL() \
301                 FUNCTION(_("Korean")) \
302                         PERSON(BYEONGJIN "ahnkoon" AN) \
303                         PERSON(Jisoo "LimJiSoo0719" Lim) \
304                         PERSON(Kim "coughingmouse" Lee) \
305                         PERSON(Seokho Son) \
306                 NL() \
307                 FUNCTION(_("Latin")) \
308                         PERSON(oblector o) \
309                 NL() \
310                 FUNCTION(_("Polish")) \
311                         PERSON(4m) \
312                         PERSON(Alex "tiprogrammierer.alex" Progger) \
313                         PERSON(Amadeusz "amade/proraide" Sławiński) \
314                         PERSON(Artur "artur9010" Motyka) \
315                         PERSON(Cris "Kshyso" Sus) \
316                         PERSON(Jakub "_Mpcs" Niklas) \
317                         PERSON(Jakub "KubeQ11" Pędziszewski) \
318                         PERSON(John "Myran" Smith) \
319                         PERSON(Karol "kRkk" Kosek) \
320                         PERSON(Kriss "Kriss7475" Chr) \
321                         PERSON(Piotr "vipkoza" Kozica) \
322                         PERSON(qqiLMFjv1iBfT3p6TNxjUThsaTVIXhQc) \
323                         PERSON(Rafał "Okava" Szymański) \
324                         PERSON(Robert "Szkodnix" Wolniak) \
325                         PERSON(Saikuru "saikuru0" Zero) \
326                         PERSON(Sertomas) \
327                         PERSON(SFS Atlas) \
328                         PERSON(Wojciech "g_host" Sikora) \
329                 NL() \
330                 FUNCTION(_("Portuguese")) \
331                         PERSON(Ivan Paulos "greylica" Tomé) \
332                         PERSON(Jean Trindade "Muleke_Trairao" Pereira) \
333                         PERSON(lecalam) \
334                         PERSON(NotThatPrivate) \
335                         PERSON(Ricardo Manuel "hellgardia" da Cruz Coelho da Silva) \
336                         PERSON(Rui "xendez") \
337                         PERSON(xXxCHAOTICxXx) \
338                 NL() \
339                 FUNCTION(_("Portuguese (Brazil)")) \
340                         PERSON(Jean Trindade "Muleke_Trairao" Pereira) \
341                         PERSON(Rui "xendez") \
342                         PERSON(yy0zz) \
343                         PERSON(zerowhy) \
344                 NL() \
345                 FUNCTION(_("Romanian")) \
346                         PERSON(Adrian-Ciprian "adrian.tinjala" Tînjală) \
347                         PERSON(busterdbk) \
348                         PERSON(Cuzenco "andonis1616" Andrei Robert) \
349                         PERSON(Iulian "ElektroBoom" Oancea) \
350                         PERSON(Mircea "Taoki" Kitsune) \
351                         PERSON(Sorin "unic_sorin" Botirla) \
352                         PERSON(Tudor "TropiKo" Ionel) \
353                 NL() \
354                 FUNCTION(_("Russian")) \
355                         PERSON(Alex "alextalker7" Talker) \
356                         PERSON(Alexandr "zrg") \
357                         PERSON(Andrei "adem4ik" Stepanov) \
358                         PERSON(Andrey "dekrY" P.) \
359                         PERSON(Артём "Temak" Котлубай) \
360                         PERSON(Artem Vorotnikov) \
361                         PERSON(Blueberryy) \
362                         PERSON(gravicappa) \
363                         PERSON(Hot Dog) \
364                         PERSON(Lord Canistra) \
365                         PERSON(Morosophos) \
366                         PERSON(Nikoli) \
367                         PERSON(Sergej "Clearness High" Lutsyk) \
368                         PERSON(Simple88) \
369                 NL() \
370                 FUNCTION(_("Serbian")) \
371                         PERSON_("Саша \"salepetronije\" Петровић") \
372                         PERSON(Marko M. Kostić) \
373                         PERSON(Pendulla) \
374                         PERSON(Rafael "Ristovski") \
375                 NL() \
376                 FUNCTION(_("Spanish")) \
377                         PERSON_("0000simon") \
378                         PERSON(Alan "aagp" Garcia) \
379                         PERSON(Antonio "Antoniosirc" Sirera) \
380                         PERSON(Ari_tent) \
381                         PERSON(brunodeleo) \
382                         PERSON(Damian "starfire24680" Kurek) \
383                         PERSON(Excruciatus "crucesignatus" X) \
384                         PERSON(Kammy) \
385                         PERSON(roader_gentoo) \
386                         PERSON(Rodrigo Mouton Laudin) \
387                         PERSON(SouL) \
388                         PERSON(Starfire24680) \
389                         PERSON(Victor "LegendGuard" Jaume) \
390                         PERSON(Vitama Piru Leta) \
391                         PERSON(Yllelder) \
392                         PERSON(z411) \
393                 NL() \
394                 FUNCTION(_("Swedish")) \
395                         PERSON(Gustaf "Hanicef" Alhäll) \
396                         PERSON(Karl-Oskar "machine" Rikås) \
397                         PERSON(marcus256) \
398                 NL() \
399                 FUNCTION(_("Turkish")) \
400                         PERSON(Abdurrahman "akkus12345" AKKUŞ) \
401                         PERSON(Ahmet "ahmetlii") \
402                         PERSON(Çağlar "caglarturali" Turalı) \
403                         PERSON(Demiray "tulliana" Muhterem) \
404                         PERSON(Gokdeniz.Kucukali) \
405                         PERSON(ibra kap) \
406                         PERSON(Lucifer "Lucifer25x" Morningstar) \
407                         PERSON(yutyocraft) \
408                 NL() \
409                 FUNCTION(_("Ukrainian")) \
410                         PERSON(Dmitro "Gamebot" Sokhin) \
411                         PERSON(Ihor "uandreew" Andreev) \
412                         PERSON(Illia "imbirWIthSugar" Serediuk) \
413                         PERSON(Oleh "BlaXpirit" Prypin) \
414                         PERSON(Vasyl "Harmata" Melnyk) \
415                         PERSON(Yuriy "herrniemand" Ackermann) \
416                 NL() \
417         NL() \
418         TITLE(_("Past Contributors")) \
419                 PERSON(Akari) \
420                 PERSON(Alexander "naryl" Suhoverhov) \
421                 PERSON(Alexander "motorsep" Zubov) \
422                 PERSON(Amos "torus" Dudley) \
423                 PERSON(Andreas "Black" Kirsch) \
424                 PERSON(Attila "WW3" Houtkooper) \
425                 PERSON(BigMac) \
426                 PERSON(Braden "meoblast001" Walters) \
427                 PERSON(Brain Younds) \
428                 PERSON(BuddyFriendGuy) \
429                 PERSON(Chris "amethyst7" Matz) \
430                 PERSON(Christian Ice) \
431                 PERSON(Clinton "Kaziganthe" Freeman) \
432                 PERSON(Dan "Digger" Korostelev) \
433                 PERSON(Dan "Wazat" Hale) \
434                 PERSON(Diomedes) \
435                 PERSON(Dokujisan) \
436                 PERSON(Donkey) \
437                 PERSON(dstrek) \
438                 PERSON(Dustin Geeraert) \
439                 PERSON(Edgenetwork) \
440                 PERSON(Edward "Ed" Holness) \
441                 PERSON(Eric "Munyul Verminard" Sambach) \
442                 PERSON(Erik "Ablu" Schilling) \
443                 PERSON(Fabien "H. Reaper" Tschirhart) \
444                 PERSON(Florian Paul "lda17h" Schmidt) \
445                 PERSON(FrikaC) \
446                 PERSON(Garth "Zombie" Hendy) \
447                 PERSON(GATTS) \
448                 PERSON(Gerd "Elysis" Raudenbusch) \
449                 PERSON(Gottfried "Toddd" Hofmann) \
450                 PERSON(Henning "Tymo" Janssen) \
451                 PERSON(Innovati) \
452                 PERSON(JH0nny) \
453                 PERSON(Jitspoe) \
454                 PERSON(Jody Gallagher) \
455                 PERSON(Jope "Sless" Withers) \
456                 PERSON(Jubilant) \
457                 PERSON(Juergen "LowDragon" Timm) \
458                 PERSON(KadaverJack) \
459                 PERSON(Kevin "Tyrann" Shanahan) \
460                 PERSON(Kristian "morfar" Johansson) \
461                 PERSON(Kurt Dereli) \
462                 PERSON(lcatlnx) \
463                 PERSON(Lee David Ash) \
464                 PERSON(Lee Vermeulen) \
465                 PERSON(leileilol) \
466                 PERSON(Lyberta) \
467                 PERSON(magorian) \
468                 PERSON(Marius "GreEn`mArine" Shekow) \
469                 PERSON(Marko "Urre" Permanto) \
470                 PERSON(Mathieu "Elric" Olivier) \
471                 PERSON(Mattrew "Tronyn" Rye) \
472                 PERSON(MauveBib) \
473                 PERSON(Mephisto) \
474                 PERSON(michaelb) \
475                 PERSON(Michael "Tenshihan" Quinn) \
476                 PERSON(Mepper) \
477                 PERSON(Munyul) \
478                 PERSON(Netzwerg) \
479                 PERSON(NoelCower) \
480                 PERSON(Parapraxis) \
481                 PERSON(parasti) \
482                 PERSON(Paul "Strahlemann" Evers) \
483                 PERSON(Paul Scott) \
484                 PERSON(Petithomme) \
485                 PERSON(PlasmaSheep) \
486                 PERSON(Przemysław "atheros" Grzywacz) \
487                 PERSON(Q1 Retexturing Project) \
488                 PERSON(Qantourisc) \
489                 PERSON(Oleh "BlaXpirit" Prypin) \
490                 PERSON(Rick "Rat" Kelley) \
491                 PERSON(Robert "ai" Kuroto) \
492                 PERSON(Ronan) \
493                 PERSON(Sajt) \
494                 PERSON(Samual "Ares" Lenks) \
495                 PERSON(Saulo "mand1nga" Gil) \
496                 PERSON(Shaggy) \
497                 PERSON(Shank) \
498                 PERSON(s1lence) \
499                 PERSON(Simon O’Callaghan) \
500                 PERSON(Soelen) \
501                 PERSON(SomeGuy) \
502                 PERSON(SoulKeeper_p) \
503                 PERSON(Spike) \
504                 PERSON(Spirit) \
505                 PERSON(Stephan "esteel" Stahl) \
506                 PERSON(Steve Vermeulen) \
507                 PERSON(Supajoe) \
508                 PERSON(Sydes) \
509                 PERSON(Tei) \
510                 PERSON(The player with the unnecessarily long name) \
511                 PERSON(Tomaz) \
512                 PERSON(Ulrich Galbraith) \
513                 PERSON(Vortex) \
514                 PERSON(William Libert) \
515                 PERSON(William "Willis" Weilep) \
516                 PERSON(Yves "EviLair" Allaire) \
517                 PERSON(Zac "Mario" Jardine) \
518                 PERSON(Zenex) \
519                 PERSON(... and a goat) \
520                 /**/
521
522
523 int CREDITS_TYPE_TITLE = 2;
524 int CREDITS_TYPE_FUNCTION = 1;
525 int CREDITS_TYPE_PERSON = 0;
526 int CREDITS_TYPE_NL = -1;
527 void credits_add_line(int fh, int n, int type, string line)
528 {
529         if (type == CREDITS_TYPE_TITLE)
530                 line = strcat("**", line);
531         else if (type == CREDITS_TYPE_FUNCTION)
532                 line = strcat("*", line);
533
534         if (fh >= 0)
535                 fputs(fh, strcat(line, "\n"));
536         if (n >= 0)
537                 bufstr_add(n, line, 0);
538 }
539
540 void credits_build(int fh, int n)
541 {
542         #define CREDITS_TITLE(t) credits_add_line(fh, n, CREDITS_TYPE_TITLE, t);
543         #define CREDITS_FUNCTION(f) credits_add_line(fh, n, CREDITS_TYPE_FUNCTION, f);
544         #define CREDITS_PERSON(p) credits_add_line(fh, n, CREDITS_TYPE_PERSON, p);
545         #define _CREDITS_PERSON(p) CREDITS_PERSON(#p)
546         #define CREDITS_NL() credits_add_line(fh, n, CREDITS_TYPE_NL, "");
547         CREDITS(CREDITS_TITLE, CREDITS_FUNCTION, _CREDITS_PERSON, CREDITS_PERSON, CREDITS_NL)
548         #undef CREDITS_TITLE
549         #undef CREDITS_FUNCTION
550         #undef CREDITS_PERSON
551         #undef _CREDITS_PERSON
552         #undef CREDITS_NL
553 }
554
555 int credits_get()
556 {
557         int n = buf_create();
558         credits_build(-1, n);
559         return n;
560 }
561
562 void credits_export()
563 {
564         int fh = fopen("credits.txt", FILE_WRITE);
565         if(fh < 0)
566                 return;
567         credits_build(fh, -1);
568 }
569
570 #undef CREDITS
571
572 entity makeXonoticCreditsList()
573 {
574         entity me;
575         me = NEW(XonoticCreditsList);
576         me.configureXonoticCreditsList(me);
577         return me;
578 }
579 void XonoticCreditsList_configureXonoticCreditsList(entity me)
580 {
581         me.configureXonoticListBox(me);
582         me.bufferIndex = credits_get();
583         me.nItems = buf_getsize(me.bufferIndex);
584         if (cvar("_menu_credits_export")) // set by the menu_credits_export alias
585         {
586                 credits_export();
587                 cvar_set("_menu_credits_export", "0");
588         }
589 }
590 void XonoticCreditsList_destroy(entity me)
591 {
592         buf_del(me.bufferIndex);
593 }
594 void XonoticCreditsList_draw(entity me)
595 {
596         if(me.scrolling)
597         {
598                 me.scrollPos = bound(0, (time - me.scrolling) * me.itemHeight, me.nItems * me.itemHeight - 1);
599                 me.scrollPosTarget = me.scrollPos;
600         }
601         SUPER(XonoticCreditsList).draw(me);
602 }
603 void XonoticCreditsList_resizeNotify(entity me, vector relOrigin, vector relSize, vector absOrigin, vector absSize)
604 {
605         SUPER(XonoticCreditsList).resizeNotify(me, relOrigin, relSize, absOrigin, absSize);
606
607         me.realFontSize_y = me.fontSize / (absSize.y * me.itemHeight);
608         me.realFontSize_x = me.fontSize / (absSize.x * (1 - me.controlWidth));
609         me.realUpperMargin = 0.5 * (1 - me.realFontSize.y);
610 }
611 void XonoticCreditsList_drawListBoxItem(entity me, int i, vector absSize, bool isSelected, bool isFocused)
612 {
613         string s;
614         float theAlpha;
615         vector theColor;
616
617         s = bufstr_get(me.bufferIndex, i);
618
619         if(substring(s, 0, 2) == "**")
620         {
621                 s = substring(s, 2, strlen(s) - 2);
622                 theColor = SKINCOLOR_CREDITS_TITLE;
623                 theAlpha = SKINALPHA_CREDITS_TITLE;
624         }
625         else if(substring(s, 0, 1) == "*")
626         {
627                 s = substring(s, 1, strlen(s) - 1);
628                 theColor = SKINCOLOR_CREDITS_FUNCTION;
629                 theAlpha = SKINALPHA_CREDITS_FUNCTION;
630         }
631         else
632         {
633                 theColor = SKINCOLOR_CREDITS_PERSON;
634                 theAlpha = SKINALPHA_CREDITS_PERSON;
635         }
636
637         draw_CenterText(me.realUpperMargin * eY + 0.5 * eX, s, me.realFontSize, theColor, theAlpha, 0);
638 }
639
640 float XonoticCreditsList_keyDown(entity me, float key, float ascii, float shift)
641 {
642         me.scrolling = 0;
643         return SUPER(XonoticCreditsList).keyDown(me, key, ascii, shift);
644 }