X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fmutators%2Fmutator%2Fbuffs%2Fbuffs.qh;h=f4fad84de7fa7f96404a8611cd93c51b67f13a58;hb=350dd64390082f01f29e0d4e4ef70390ba700219;hp=81a638ea7c300f07edffdeadfadd3dd980388d68;hpb=5fb2f3c4e123910e6291d6337fadd61f5199f5a5;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 81a638ea7..f4fad84de 100644 --- a/qcsrc/common/mutators/mutator/buffs/buffs.qh +++ b/qcsrc/common/mutators/mutator/buffs/buffs.qh @@ -4,29 +4,32 @@ #include #ifdef GAMEQC -REGISTER_WAYPOINT(Buff, _("Buff"), '1 0.5 0', 1); -REGISTER_RADARICON(Buff, 1); +#include +#include #endif -REGISTRY(Buffs, BITS(5)) -#define Buffs_from(i) _Buffs_from(i, BUFF_Null) -REGISTER_REGISTRY(Buffs) -REGISTRY_CHECK(Buffs) +#ifdef GAMEQC +REGISTER_WAYPOINT(Buff, _("Buff"), "", '1 0.5 0', 1); +REGISTER_RADARICON(Buff, 1); +#endif -#define REGISTER_BUFF(id) \ - REGISTER(Buffs, BUFF_##id, m_id, NEW(Buff)) +#define REGISTER_BUFF(id, inst) \ + REGISTER(StatusEffect, BUFF_##id, m_id, inst) -#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,20 +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 - // .int buffs = _STAT(BUFFS); + .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) { \ - this.buffs = b.m_itemid; \ - this.team = t; \ + this.buffdef = b; \ + if(teamplay) \ + this.team_forced = t; \ buff_Init(this); \ } #define BUFF_SPAWNFUNCS(e, b) \ @@ -57,16 +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); -REGISTER_BUFF(Null); -BUFF_SPAWNFUNCS(random, BUFF_Null) +BUFF_SPAWNFUNCS(random, NULL) #include "all.inc"