]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/buffs.qh
Add the new minigames
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / buffs.qh
index b61d5307de0745f40505ccc6d0fdd444b16fa09a..f3437326365b87fe22d91b1250a90d7019e59498 100644 (file)
@@ -1,18 +1,25 @@
+#ifndef BUFFS_H
+#define BUFFS_H
+
+#include "teams.qh"
+#include "util.qh"
+
 entity Buff_Type_first;
 entity Buff_Type_last;
 .entity enemy; // internal next pointer
 
-var float BUFF_LAST = 1;
+int BUFF_LAST = 1;
 
-.float items; // buff ID
+.int items; // buff ID
 .string netname; // buff name
 .string message; // human readable name
 .vector colormod; // buff color
-.float skin; // buff skin
+.string model2; // buff sprite
+.int skin; // buff skin
 
 #define REGISTER_BUFF(hname,sname,NAME,bskin,bcolor) \
-       var float BUFF_##NAME; \
-       var entity Buff_Type##sname; \
+       int BUFF_##NAME; \
+       entity Buff_Type##sname; \
        void RegisterBuffs_##sname() \
        { \
                BUFF_##NAME = BUFF_LAST * 2; \
@@ -23,6 +30,7 @@ var float BUFF_LAST = 1;
                Buff_Type##sname.message = hname; \
                Buff_Type##sname.skin = bskin; \
                Buff_Type##sname.colormod = bcolor; \
+               Buff_Type##sname.model2 = strzone(strcat("buff-", #sname)); \
                if(!Buff_Type_first) \
                        Buff_Type_first = Buff_Type##sname; \
                if(Buff_Type_last) \
@@ -42,20 +50,21 @@ REGISTER_BUFF(_("Vengeance"),vengeance,VENGEANCE,15,'0.55 0.5 1');
 REGISTER_BUFF(_("Jump"),jump,JUMP,10,'0.7 0.2 1');
 REGISTER_BUFF(_("Flight"),flight,FLIGHT,11,'1 0.2 0.5');
 REGISTER_BUFF(_("Invisible"),invisible,INVISIBLE,12,'0.9 0.9 0.9');
+#undef REGISTER_BUFF
 
 #ifdef SVQC
-.float buffs;
+.int buffs;
 void buff_Init(entity ent);
-void buff_Init_Compat(entity ent, float replacement);
+void buff_Init_Compat(entity ent, int replacement);
 
 #define BUFF_SPAWNFUNC(e,b,t) void spawnfunc_item_buff_##e() { self.buffs = b; self.team = t; buff_Init(self); }
-#define BUFF_SPAWNFUNC_Q3TA_COMPAT(o,r) void spawnfunc_##o() { buff_Init_Compat(self,r); }
+#define BUFF_SPAWNFUNC_Q3TA_COMPAT(o,r) void spawnfunc_item_##o() { buff_Init_Compat(self,r); }
 #define BUFF_SPAWNFUNCS(e,b)                         \
         BUFF_SPAWNFUNC(e,           b,  0)           \
         BUFF_SPAWNFUNC(e##_team1,   b,  NUM_TEAM_1) \
         BUFF_SPAWNFUNC(e##_team2,   b,  NUM_TEAM_2) \
         BUFF_SPAWNFUNC(e##_team3,   b,  NUM_TEAM_3) \
-        BUFF_SPAWNFUNC(e##_team4,   b,  NUM_TEAM_4) 
+        BUFF_SPAWNFUNC(e##_team4,   b,  NUM_TEAM_4)
 
 BUFF_SPAWNFUNCS(resistance,            BUFF_RESISTANCE)
 BUFF_SPAWNFUNCS(ammo,                  BUFF_AMMO)
@@ -70,14 +79,22 @@ BUFF_SPAWNFUNCS(flight,                     BUFF_FLIGHT)
 BUFF_SPAWNFUNCS(invisible,             BUFF_INVISIBLE)
 BUFF_SPAWNFUNCS(random,                        0)
 
-BUFF_SPAWNFUNC_Q3TA_COMPAT(item_doubler,    BUFF_MEDIC)
-BUFF_SPAWNFUNC_Q3TA_COMPAT(item_resistance,    BUFF_RESISTANCE)
-BUFF_SPAWNFUNC_Q3TA_COMPAT(item_scout,      BUFF_SPEED)
-BUFF_SPAWNFUNC_Q3TA_COMPAT(item_ammoregen,  BUFF_AMMO)
+BUFF_SPAWNFUNC_Q3TA_COMPAT(doubler,    BUFF_MEDIC)
+BUFF_SPAWNFUNC_Q3TA_COMPAT(resistance, BUFF_RESISTANCE)
+BUFF_SPAWNFUNC_Q3TA_COMPAT(scout,      BUFF_SPEED)
+BUFF_SPAWNFUNC_Q3TA_COMPAT(ammoregen,  BUFF_AMMO)
+
+// actually Q3
+BUFF_SPAWNFUNC_Q3TA_COMPAT(haste,      BUFF_SPEED)
+BUFF_SPAWNFUNC_Q3TA_COMPAT(invis,      BUFF_INVISIBLE)
+BUFF_SPAWNFUNC_Q3TA_COMPAT(medic,      BUFF_MEDIC)
 #endif
 
-vector Buff_Color(float buff_id);
-string Buff_PrettyName(float buff_id);
-string Buff_Name(float buff_id);
-float Buff_Type_FromName(string buff_name);
-float Buff_Skin(float buff_id);
+vector Buff_Color(int buff_id);
+string Buff_PrettyName(int buff_id);
+string Buff_Name(int buff_id);
+int Buff_Type_FromName(string buff_name);
+int Buff_Type_FromSprite(string buff_sprite);
+int Buff_Skin(int buff_id);
+string Buff_Sprite(int buff_id);
+#endif