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 "net.qh"
4#include <common/teams.qh>
5#ifndef SVQC
6 #include <common/util.qh> // for icon_path_from_HUDskin
7#endif
8
9REGISTRY(Nades, BITS(4))
11REGISTRY_CHECK(Nades)
12
13#define REGISTER_NADE(id, inst) REGISTER(Nades, NADE_TYPE, id, m_id, inst)
14
16 ATTRIB(Nade, m_id, int, 0);
18 ATTRIB(Nade, m_name, string, _("Grenade"));
19#ifdef GAMEQC
20 ATTRIB(Nade, m_alpha, float, 1);
21#endif
22 ATTRIB(Nade, netname, string, "random");
23#ifdef SVQC
24 ATTRIB(Nade, impulse, int, 0); // XONRELEASE TODO v0.9 post-release: legacy number for selection, do not add to new nade types, remove these
25#endif
26#ifdef MENUQC
27 METHOD(Nade, describe, string(Nade this))
28 {
29 TC(Nade, this);
30 return SUPER(Nade).describe(this);
31 }
32#endif
33#ifndef SVQC
34 ATTRIB(Nade, m_icon, string, "nade_normal");
35 METHOD(Nade, display, void(Nade this, void(string name, string icon) returns))
36 {
37 TC(Nade, this);
38 returns(this.m_name, icon_path_from_HUDskin(this.m_icon));
39 }
40#endif
41#ifdef GAMEQC
44#endif
46
50REGISTER(Nades, NADE_TYPE, Null, m_id, NEW(NullNade));
51REGISTRY_DEFINE_GET(Nades, NADE_TYPE_Null)
52
53#ifdef GAMEQC
54// use slots 70-100
55const int PROJECTILE_NADE = 71;
56const int PROJECTILE_NADE_BURN = 72;
57// the rest of these are defined in their individual files like nade/napalm.qh
58
59#include "effects.inc"
60
61#define NADE_PROJECTILE(i, projectile, trail) MACRO_BEGIN \
62 this.m_projectile[i] = projectile; \
63 this.m_trail[i] = trail; \
64MACRO_END
65
67{
68 FOREACH(Nades, it.m_projectile[0] == proj || it.m_projectile[1] == proj, return it);
69 return NADE_TYPE_Null;
70}
71#endif // GAMEQC
72
73#include "all.inc"
74
75#ifdef GAMEQC
78#endif
79
80#ifdef MENUQC
82
86
88#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:84
ATTRIB(Mutator, message, string)
Definition nades.qh:15
string netname
Definition nades.qh:22
float m_alpha
Definition nades.qh:20
entity m_trail[2]
Definition nades.qh:43
vector m_color
Definition nades.qh:17
int m_id
Definition nades.qh:16
int m_projectile[2]
Definition nades.qh:42
virtual void describe()
Definition nades.qh:27
int impulse
Definition nades.qh:24
string m_name
Definition nades.qh:18
bool m_hidden
Definition nades.qh:48
#define true
Definition csprogsdefs.qh:5
int m_id
Definition effect.qh:18
#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:66
const int PROJECTILE_NADE_BURN
Definition nades.qh:56
const int PROJECTILE_NADE
Definition nades.qh:55
#define NEW(cname,...)
Definition oo.qh:120
#define ATTRIBARRAY(cname, name, type, cnt)
Definition oo.qh:271
#define SUPER(cname)
Definition oo.qh:236
#define CLASS(...)
Definition oo.qh:149
#define ENDCLASS(cname)
Definition oo.qh:286
#define METHOD(cname, name, prototype)
Definition oo.qh:274
#define ATTRIB(...)
Definition oo.qh:152
#define REGISTER(...)
Register a new entity with a registry.
Definition registry.qh:121
#define REGISTER_REGISTRY(id)
Definition registry.qh:270
#define REGISTRY(id, max)
Declares a new registry.
Definition registry.qh:23
#define REGISTRY_CHECK(id)
Definition registry.qh:213
#define REGISTRY_DEFINE_GET(id, null)
Definition registry.qh:50
vector
Definition self.qh:96
string cvar_cl_pokenade_type
Definition sv_nades.qh:51
string cvar_cl_nade_type
Definition sv_nades.qh:50