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, it.m_sprite = strzone(strcat("buff-", it.netname)));
55}
56
57#ifdef SVQC
58 .entity buffdef;
60 void buff_Init(entity ent);
61 void buff_Init_Compat(entity ent, entity replacement);
62 #define BUFF_SPAWNFUNC(e, b, t) \
63 spawnfunc(item_buff_##e) \
64 { \
65 this.buffdef = b; \
66 if (teamplay) \
67 this.team_forced = t; \
68 buff_Init(this); \
69 }
70 #define BUFF_SPAWNFUNCS(e, b) \
71 BUFF_SPAWNFUNC(e, b, 0) \
72 BUFF_SPAWNFUNC(e##_team1, b, NUM_TEAM_1) \
73 BUFF_SPAWNFUNC(e##_team2, b, NUM_TEAM_2) \
74 BUFF_SPAWNFUNC(e##_team3, b, NUM_TEAM_3) \
75 BUFF_SPAWNFUNC(e##_team4, b, NUM_TEAM_4)
76 #define BUFF_SPAWNFUNC_Q3COMPAT(o, r) \
77 spawnfunc(o) \
78 { \
79 buff_Init_Compat(this, r); \
80 }
81#else
82 #define BUFF_SPAWNFUNC(e, b, t)
83 #define BUFF_SPAWNFUNCS(e, b)
84 #define BUFF_SPAWNFUNC_Q3COMPAT(o, r)
85#endif
86
87#ifdef SVQC
88string Buff_CompatName(string buffname);
89#endif
90
92
93#ifdef GAMEQC
94REPLICATE_INIT(bool, cvar_cl_buffs_autoreplace);
95#endif
void buff_Init(entity ent)
Definition sv_buffs.qc:427
int team_forced
Definition buffs.qh:59
void buff_Init_Compat(entity ent, entity replacement)
Definition sv_buffs.qc:491
entity buffdef
Definition buffs.qh:58
#define BUFF_SPAWNFUNCS(e, b)
Definition buffs.qh:70
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)
string strzone(string s)
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