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 ATTRIB(Nade, m_icon, string, "nade_normal");
19 ATTRIB(Nade, m_alpha, float, 1);
20 ATTRIB(Nade, netname, string, "random");
21 ATTRIB(Nade, impulse, int, 0); // legacy number for selection, do not add to new nade types
24#ifdef MENUQC
25 METHOD(Nade, describe, string(Nade this))
26 {
27 TC(Nade, this);
28 return SUPER(Nade).describe(this);
29 }
30#endif
31#ifndef SVQC
32 METHOD(Nade, display, void(Nade this, void(string name, string icon) returns))
33 {
34 TC(Nade, this);
35 returns(this.m_name, icon_path_from_HUDskin(this.m_icon));
36 }
37#endif
39
43REGISTER(Nades, NADE_TYPE, Null, m_id, NEW(NullNade));
44REGISTRY_DEFINE_GET(Nades, NADE_TYPE_Null)
45
46// use slots 70-100
47const int PROJECTILE_NADE = 71;
48const int PROJECTILE_NADE_BURN = 72;
49// the rest of these are defined in their individual files like nade/napalm.qh
50
51#ifdef GAMEQC
52#include "effects.inc"
53
54#define NADE_PROJECTILE(i, projectile, trail) MACRO_BEGIN \
55 this.m_projectile[i] = projectile; \
56 this.m_trail[i] = trail; \
57MACRO_END
58#endif // GAMEQC
59
61{
62 FOREACH(Nades, true, {
63 if (it.m_projectile[0] == proj || it.m_projectile[1] == proj) return it;
64 });
65 return NADE_TYPE_Null;
66}
67
68#include "all.inc"
69
72
73#ifdef GAMEQC
76#endif
77
78#ifdef MENUQC
80
84
86#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:82
ATTRIB(Mutator, message, string)
Definition nades.qh:14
string m_icon
Definition nades.qh:18
string netname
Definition nades.qh:20
float m_alpha
Definition nades.qh:19
entity m_trail[2]
Definition nades.qh:23
vector m_color
Definition nades.qh:16
int m_id
Definition nades.qh:15
int m_projectile[2]
Definition nades.qh:22
virtual void describe()
Definition nades.qh:25
int impulse
Definition nades.qh:21
string m_name
Definition nades.qh:17
bool m_hidden
Definition nades.qh:41
#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
float orb_radius
Definition nades.qh:71
float orb_lifetime
Definition nades.qh:70
Nade Nade_FromProjectile(int proj)
Definition nades.qh:60
const int PROJECTILE_NADE_BURN
Definition nades.qh:48
const int PROJECTILE_NADE
Definition nades.qh:47
#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