Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
buffs.qh
Go to the documentation of this file.
1#pragma once
2
3#include <common/teams.qh>
4#include <common/util.qh>
5
6#ifdef GAMEQC
9#endif
10#ifndef SVQC
11#include <common/util.qh> // for icon_path_from_HUDskin
12#endif
13
14#define REGISTER_BUFF(id, inst) REGISTER(StatusEffects, BUFF_##id, m_id, inst)
15
18#ifdef GAMEQC
20#endif
21 ATTRIB(Buff, netname, string, "buff");
23 ATTRIB(Buff, m_name, string, _("Buff"));
24#ifdef GAMEQC
25 ATTRIB(Buff, m_skin, int, 0);
26#endif
27 ATTRIB(Buff, m_sprite, string, "");
28#ifdef MENUQC
29 METHOD(Buff, describe, string(Buff this))
30 {
31 TC(Buff, this);
32 return SUPER(Buff).describe(this);
33 }
34#endif
35#ifndef SVQC
36 ATTRIB(Buff, m_icon, string, "buff");
37 METHOD(Buff, display, void(Buff this, void(string name, string icon) returns))
38 {
39 TC(Buff, this);
40 returns(this.m_name, icon_path_from_HUDskin(this.m_icon));
41 }
42#endif
43#ifdef SVQC
44 ATTRIB(Buff, m_lifetime, float, 60);
45 METHOD(Buff, m_time, float(Buff this))
46 {
47 return cvar(strcat("g_buffs_", this.netname, "_time"));
48 }
49#endif
51
52STATIC_INIT(REGISTER_BUFFS)
53{
54 FOREACH(StatusEffects, it.instanceOfBuff, {
55 it.m_sprite = strzone(strcat("buff-", it.netname));
56 });
57}
58
59#ifdef SVQC
60 .entity buffdef;
62 void buff_Init(entity ent);
63 void buff_Init_Compat(entity ent, entity replacement);
64 #define BUFF_SPAWNFUNC(e, b, t) \
65 spawnfunc(item_buff_##e) \
66 { \
67 this.buffdef = b; \
68 if (teamplay) \
69 this.team_forced = t; \
70 buff_Init(this); \
71 }
72 #define BUFF_SPAWNFUNCS(e, b) \
73 BUFF_SPAWNFUNC(e, b, 0) \
74 BUFF_SPAWNFUNC(e##_team1, b, NUM_TEAM_1) \
75 BUFF_SPAWNFUNC(e##_team2, b, NUM_TEAM_2) \
76 BUFF_SPAWNFUNC(e##_team3, b, NUM_TEAM_3) \
77 BUFF_SPAWNFUNC(e##_team4, b, NUM_TEAM_4)
78 #define BUFF_SPAWNFUNC_Q3COMPAT(o, r) \
79 spawnfunc(o) \
80 { \
81 buff_Init_Compat(this, r); \
82 }
83#else
84 #define BUFF_SPAWNFUNC(e, b, t)
85 #define BUFF_SPAWNFUNCS(e, b)
86 #define BUFF_SPAWNFUNC_Q3COMPAT(o, r)
87#endif
88
89#ifdef SVQC
90string Buff_CompatName(string buffname);
91#endif
92
94
95#ifdef GAMEQC
96REPLICATE_INIT(bool, cvar_cl_buffs_autoreplace);
97#endif
void buff_Init(entity ent)
Definition sv_buffs.qc:427
int team_forced
Definition buffs.qh:61
void buff_Init_Compat(entity ent, entity replacement)
Definition sv_buffs.qc:492
entity buffdef
Definition buffs.qh:60
#define BUFF_SPAWNFUNCS(e, b)
Definition buffs.qh:72
string Buff_CompatName(string buffname)
Definition buffs.qc:10
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
Definition buffs.qh:17
string m_name
Definition buffs.qh:23
virtual void m_time()
Definition buffs.qh:45
int m_itemid
Definition buffs.qh:19
int m_skin
Definition buffs.qh:25
string m_sprite
Definition buffs.qh:27
virtual void describe()
Definition buffs.qh:29
string netname
Definition buffs.qh:21
vector m_color
Definition buffs.qh:22
float m_lifetime
Definition buffs.qh:44
const int IT_BUFF
Definition item.qh:35
string m_name
Definition scores.qh:142
#define FOREACH(list, cond, body)
Definition iter.qh:19
#define TC(T, sym)
Definition _all.inc:82
#define REPLICATE_INIT(type, name)
Definition replicate.qh:7
string name
Definition menu.qh:30
float cvar(string name)
float random(void)
strcat(_("^F4Countdown stopped!"), "\n^BG", _("Teams are too unbalanced."))
#define SUPER(cname)
Definition oo.qh:231
#define CLASS(...)
Definition oo.qh:145
#define ENDCLASS(cname)
Definition oo.qh:281
#define METHOD(cname, name, prototype)
Definition oo.qh:269
#define ATTRIB(...)
Definition oo.qh:148
#define NULL
Definition post.qh:14
vector
Definition self.qh:92
#define STATIC_INIT(func)
during worldspawn
Definition static.qh:32