Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
nades.qh
Go to the documentation of this file.
1#pragma once
2
3#include <common/teams.qh>
4#ifndef SVQC
5#include <common/util.qh> // for icon_path_from_HUDskin
6#endif
7
8REGISTRY(Nades, BITS(4))
10REGISTRY_CHECK(Nades)
11
12#define REGISTER_NADE(id, inst) REGISTER(Nades, NADE_TYPE, id, m_id, inst)
13
15 ATTRIB(Nade, m_id, int, 0);
17 ATTRIB(Nade, m_name, string, _("Grenade"));
18#ifdef GAMEQC
19 ATTRIB(Nade, m_alpha, float, 1);
20#endif
21 ATTRIB(Nade, netname, string, "random");
22#ifdef SVQC
23 ATTRIB(Nade, impulse, int, 0); // XONRELEASE TODO v0.9 post-release: legacy number for selection, do not add to new nade types, remove these
24#endif
25#ifdef MENUQC
26 METHOD(Nade, describe, string(Nade this))
27 {
28 TC(Nade, this);
29 return SUPER(Nade).describe(this);
30 }
31#endif
32#ifndef SVQC
33 ATTRIB(Nade, m_icon, string, "nade_normal");
34 METHOD(Nade, display, void(Nade this, void(string name, string icon) returns))
35 {
36 TC(Nade, this);
37 returns(this.m_name, icon_path_from_HUDskin(this.m_icon));
38 }
39#endif
40#ifdef GAMEQC
43#endif
45
49REGISTER(Nades, NADE_TYPE, Null, m_id, NEW(NullNade));
50REGISTRY_DEFINE_GET(Nades, NADE_TYPE_Null)
51
52#ifdef GAMEQC
53// use slots 70-100
54const int PROJECTILE_NADE = 71;
55const int PROJECTILE_NADE_BURN = 72;
56// the rest of these are defined in their individual files like nade/napalm.qh
57
58#include "effects.inc"
59
60#define NADE_PROJECTILE(i, projectile, trail) MACRO_BEGIN \
61 this.m_projectile[i] = projectile; \
62 this.m_trail[i] = trail; \
63MACRO_END
64
66{
67 FOREACH(Nades, it.m_projectile[0] == proj || it.m_projectile[1] == proj, return it);
68 return NADE_TYPE_Null;
69}
70#endif // GAMEQC
71
72#include "all.inc"
73
74#ifdef GAMEQC
77#endif
78
79#ifdef MENUQC
81
85
87#endif
#define REGISTER_MUTATOR(...)
Definition base.qh:295
#define BITS(n)
Definition bits.qh:9
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
string message
Definition nades.qh:83
ATTRIB(Mutator, message, string)
Definition nades.qh:14
string netname
Definition nades.qh:21
float m_alpha
Definition nades.qh:19
entity m_trail[2]
Definition nades.qh:42
vector m_color
Definition nades.qh:16
int m_id
Definition nades.qh:15
int m_projectile[2]
Definition nades.qh:41
virtual void describe()
Definition nades.qh:26
int impulse
Definition nades.qh:23
string m_name
Definition nades.qh:17
bool m_hidden
Definition nades.qh:47
#define true
Definition csprogsdefs.qh:5
int m_id
Definition effect.qh:19
#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
Nade Nade_FromProjectile(int proj)
Definition nades.qh:65
const int PROJECTILE_NADE_BURN
Definition nades.qh:55
const int PROJECTILE_NADE
Definition nades.qh:54
#define NEW(cname,...)
Definition oo.qh:117
#define ATTRIBARRAY(cname, name, type, cnt)
Definition oo.qh:266
#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 REGISTER(...)
Register a new entity with a registry.
Definition registry.qh:87
#define REGISTER_REGISTRY(id)
Definition registry.qh:229
#define REGISTRY(id, max)
Declare a new registry.
Definition registry.qh:26
#define REGISTRY_CHECK(id)
Definition registry.qh:175
#define REGISTRY_DEFINE_GET(id, null)
Definition registry.qh:40
vector
Definition self.qh:92
string cvar_cl_pokenade_type
Definition sv_nades.qh:51
string cvar_cl_nade_type
Definition sv_nades.qh:50