X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmutators%2Fmutator%2Fbuffs%2Fbuffs.qh;h=f4fad84de7fa7f96404a8611cd93c51b67f13a58;hb=350dd64390082f01f29e0d4e4ef70390ba700219;hp=35005e7a8fea65285d869afd82a8f247da833f78;hpb=50d6cb6a02a959a7303b5b687631b664a807b26f;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/mutators/mutator/buffs/buffs.qh b/qcsrc/common/mutators/mutator/buffs/buffs.qh index 35005e7a8..f4fad84de 100644 --- a/qcsrc/common/mutators/mutator/buffs/buffs.qh +++ b/qcsrc/common/mutators/mutator/buffs/buffs.qh @@ -3,30 +3,33 @@ #include #include +#ifdef GAMEQC +#include +#include +#endif + #ifdef GAMEQC REGISTER_WAYPOINT(Buff, _("Buff"), "", '1 0.5 0', 1); REGISTER_RADARICON(Buff, 1); #endif -REGISTRY(Buffs, BITS(5)) -#define Buffs_from(i) _Buffs_from(i, BUFF_Null) -REGISTER_REGISTRY(Buffs) -REGISTRY_CHECK(Buffs) +#define REGISTER_BUFF(id, inst) \ + REGISTER(StatusEffect, BUFF_##id, m_id, inst) -#define REGISTER_BUFF(id) \ - REGISTER(Buffs, BUFF_##id, m_id, NEW(Buff)) - -#include -CLASS(Buff, Pickup) - /** bit index */ - ATTRIB(Buff, m_itemid, int, 0); - ATTRIB(Buff, m_name, string, "buff"); +#include +CLASS(Buff, StatusEffects) +#ifdef GAMEQC + ATTRIB(Buff, m_itemid, int, IT_BUFF); +#endif + ATTRIB(Buff, netname, string, "buff"); + ATTRIB(Buff, m_icon, string, "buff"); ATTRIB(Buff, m_color, vector, '1 1 1'); - ATTRIB(Buff, m_prettyName, string, "Buff"); + ATTRIB(Buff, m_name, string, "Buff"); ATTRIB(Buff, m_skin, int, 0); + ATTRIB(Buff, m_lifetime, float, 60); ATTRIB(Buff, m_sprite, string, ""); METHOD(Buff, display, void(entity this, void(string name, string icon) returns)) { - returns(this.m_prettyName, sprintf("/gfx/hud/%s/buff_%s", cvar_string("menu_skin"), this.m_name)); + returns(this.m_name, sprintf("/gfx/hud/%s/%s", cvar_string("menu_skin"), this.m_icon)); } #ifdef SVQC METHOD(Buff, m_time, float(Buff this)) @@ -35,19 +38,20 @@ CLASS(Buff, Pickup) ENDCLASS(Buff) STATIC_INIT(REGISTER_BUFFS) { - FOREACH(Buffs, true, { - it.netname = it.m_name; \ - it.m_itemid = BIT(it.m_id - 1); \ - it.m_sprite = strzone(strcat("buff-", it.m_name)); \ - }); + FOREACH(StatusEffect, it.instanceOfBuff, { + it.m_sprite = strzone(strcat("buff-", it.netname)); + }); } #ifdef SVQC + .entity buffdef; + .int team_forced; void buff_Init(entity ent); void buff_Init_Compat(entity ent, entity replacement); #define BUFF_SPAWNFUNC(e, b, t) spawnfunc(item_buff_##e) { \ - STAT(BUFFS, this) = b.m_itemid; \ - this.team = t; \ + this.buffdef = b; \ + if(teamplay) \ + this.team_forced = t; \ buff_Init(this); \ } #define BUFF_SPAWNFUNCS(e, b) \ @@ -56,17 +60,15 @@ STATIC_INIT(REGISTER_BUFFS) { BUFF_SPAWNFUNC(e##_team2, b, NUM_TEAM_2) \ BUFF_SPAWNFUNC(e##_team3, b, NUM_TEAM_3) \ BUFF_SPAWNFUNC(e##_team4, b, NUM_TEAM_4) - #define BUFF_SPAWNFUNC_Q3TA_COMPAT(o, r) spawnfunc(item_##o) { buff_Init_Compat(this, r); } + #define BUFF_SPAWNFUNC_Q3COMPAT(o, r) spawnfunc(o) { buff_Init_Compat(this, r); } #else #define BUFF_SPAWNFUNC(e, b, t) #define BUFF_SPAWNFUNCS(e, b) - #define BUFF_SPAWNFUNC_Q3TA_COMPAT(o, r) + #define BUFF_SPAWNFUNC_Q3COMPAT(o, r) #endif string Buff_UndeprecateName(string buffname); -entity buff_FirstFromFlags(int _buffs); -REGISTER_BUFF(Null); -BUFF_SPAWNFUNCS(random, BUFF_Null) +BUFF_SPAWNFUNCS(random, NULL) #include "all.inc"