]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blob - qcsrc/common/buffs.qh
Merge branch 'terencehill/menu_remove_tab_title' of git://de.git.xonotic.org/xonotic...
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / buffs.qh
1 #ifndef BUFFS_H
2 #define BUFFS_H
3
4 #include "teams.qh"
5 #include "util.qh"
6
7 entity Buff_Type_first;
8 entity Buff_Type_last;
9 .entity enemy; // internal next pointer
10
11 int BUFF_LAST = 1;
12
13 .int items; // buff ID
14 .string netname; // buff name
15 .string message; // human readable name
16 .vector colormod; // buff color
17 .string model2; // buff sprite
18 .int skin; // buff skin
19
20 #define REGISTER_BUFF(hname,sname,NAME,bskin,bcolor) \
21         int BUFF_##NAME; \
22         entity Buff_Type##sname; \
23         void RegisterBuffs_##sname() \
24         { \
25                 BUFF_##NAME = BUFF_LAST * 2; \
26                 BUFF_LAST = BUFF_##NAME; \
27                 Buff_Type##sname = spawn(); \
28                 Buff_Type##sname.items = BUFF_##NAME; \
29                 Buff_Type##sname.netname = #sname; \
30                 Buff_Type##sname.message = hname; \
31                 Buff_Type##sname.skin = bskin; \
32                 Buff_Type##sname.colormod = bcolor; \
33                 Buff_Type##sname.model2 = strzone(strcat("buff-", #sname)); \
34                 if(!Buff_Type_first) \
35                         Buff_Type_first = Buff_Type##sname; \
36                 if(Buff_Type_last) \
37                         Buff_Type_last.enemy = Buff_Type##sname; \
38                 Buff_Type_last = Buff_Type##sname; \
39         } \
40         ACCUMULATE_FUNCTION(RegisterBuffs, RegisterBuffs_##sname)
41
42 REGISTER_BUFF(_("Ammo"),ammo,AMMO,3,'0.2 1 0.2');
43 REGISTER_BUFF(_("Resistance"),resistance,RESISTANCE,0,'0.3 0.2 1');
44 REGISTER_BUFF(_("Speed"),speed,SPEED,9,'1 1 0.2');
45 REGISTER_BUFF(_("Medic"),medic,MEDIC,1,'1 0.3 1');
46 REGISTER_BUFF(_("Bash"),bash,BASH,5,'1 0.4 0');
47 REGISTER_BUFF(_("Vampire"),vampire,VAMPIRE,2,'1 0.15 0');
48 REGISTER_BUFF(_("Disability"),disability,DISABILITY,7,'0.66 0.66 0.73');
49 REGISTER_BUFF(_("Vengeance"),vengeance,VENGEANCE,15,'0.55 0.5 1');
50 REGISTER_BUFF(_("Jump"),jump,JUMP,10,'0.7 0.2 1');
51 REGISTER_BUFF(_("Flight"),flight,FLIGHT,11,'1 0.2 0.5');
52 REGISTER_BUFF(_("Invisible"),invisible,INVISIBLE,12,'0.9 0.9 0.9');
53 #undef REGISTER_BUFF
54
55 #ifdef SVQC
56 .int buffs;
57 void buff_Init(entity ent);
58 void buff_Init_Compat(entity ent, int replacement);
59
60 #define BUFF_SPAWNFUNC(e,b,t) void spawnfunc_item_buff_##e() { self.buffs = b; self.team = t; buff_Init(self); }
61 #define BUFF_SPAWNFUNC_Q3TA_COMPAT(o,r) void spawnfunc_item_##o() { buff_Init_Compat(self,r); }
62 #define BUFF_SPAWNFUNCS(e,b)                         \
63         BUFF_SPAWNFUNC(e,           b,  0)           \
64         BUFF_SPAWNFUNC(e##_team1,   b,  NUM_TEAM_1) \
65         BUFF_SPAWNFUNC(e##_team2,   b,  NUM_TEAM_2) \
66         BUFF_SPAWNFUNC(e##_team3,   b,  NUM_TEAM_3) \
67         BUFF_SPAWNFUNC(e##_team4,   b,  NUM_TEAM_4)
68
69 BUFF_SPAWNFUNCS(resistance,             BUFF_RESISTANCE)
70 BUFF_SPAWNFUNCS(ammo,                   BUFF_AMMO)
71 BUFF_SPAWNFUNCS(speed,                  BUFF_SPEED)
72 BUFF_SPAWNFUNCS(medic,                  BUFF_MEDIC)
73 BUFF_SPAWNFUNCS(bash,                   BUFF_BASH)
74 BUFF_SPAWNFUNCS(vampire,                BUFF_VAMPIRE)
75 BUFF_SPAWNFUNCS(disability,             BUFF_DISABILITY)
76 BUFF_SPAWNFUNCS(vengeance,              BUFF_VENGEANCE)
77 BUFF_SPAWNFUNCS(jump,                   BUFF_JUMP)
78 BUFF_SPAWNFUNCS(flight,                 BUFF_FLIGHT)
79 BUFF_SPAWNFUNCS(invisible,              BUFF_INVISIBLE)
80 BUFF_SPAWNFUNCS(random,                 0)
81
82 BUFF_SPAWNFUNC_Q3TA_COMPAT(doubler,    BUFF_MEDIC)
83 BUFF_SPAWNFUNC_Q3TA_COMPAT(resistance,  BUFF_RESISTANCE)
84 BUFF_SPAWNFUNC_Q3TA_COMPAT(scout,      BUFF_SPEED)
85 BUFF_SPAWNFUNC_Q3TA_COMPAT(ammoregen,  BUFF_AMMO)
86
87 // actually Q3
88 BUFF_SPAWNFUNC_Q3TA_COMPAT(haste,       BUFF_SPEED)
89 BUFF_SPAWNFUNC_Q3TA_COMPAT(invis,       BUFF_INVISIBLE)
90 BUFF_SPAWNFUNC_Q3TA_COMPAT(medic,       BUFF_MEDIC)
91 #endif
92
93 vector Buff_Color(int buff_id);
94 string Buff_PrettyName(int buff_id);
95 string Buff_Name(int buff_id);
96 int Buff_Type_FromName(string buff_name);
97 int Buff_Type_FromSprite(string buff_sprite);
98 int Buff_Skin(int buff_id);
99 string Buff_Sprite(int buff_id);
100 #endif