4 #define Q3COMPAT_ARENA BIT(0)
5 #define Q3COMPAT_DEFI BIT(1)
7 bool DoesQ3ARemoveThisEntity(entity this);
8 int GetAmmoConsumptionQ3(string netname);
12 /* We tell the ammo spawnfunc which weapon will use the ammo so it can
13 * calculate the amount required for the number of shots in the count field,
14 * and so the type can be looked up rather than specified in quake3.qc
16 // Ammo only, unconditional
17 #define SPAWNFUNC_Q3AMMO(ammo_classname, xonwep) \
18 spawnfunc(ammo_classname) \
20 if(this.count && xonwep.ammo_type) \
21 SetResource(this, xonwep.ammo_type, this.count * GetAmmoConsumptionQ3(xonwep.netname)); \
22 SPAWNFUNC_BODY(GetAmmoItem(xonwep.ammo_type)) \
25 // Ammo only, conditional
26 #define SPAWNFUNC_Q3AMMO_COND(ammo_classname, cond, xonwep1, xonwep0) \
27 SPAWNFUNC_Q3AMMO(ammo_classname, (cond ? xonwep1 : xonwep0))
29 // Weapon & ammo, unconditional
30 #define SPAWNFUNC_Q3(weapon_classname, ammo_classname, xonwep) \
31 SPAWNFUNC_WEAPON(weapon_classname, xonwep) \
32 SPAWNFUNC_Q3AMMO(ammo_classname, xonwep)
34 // Weapon & ammo, conditional
35 #define SPAWNFUNC_Q3_COND(weapon_classname, ammo_classname, cond, xonwep1, xonwep0) \
36 SPAWNFUNC_WEAPON_COND(weapon_classname, cond, xonwep1, xonwep0) \
37 SPAWNFUNC_Q3AMMO_COND(ammo_classname, cond, xonwep1, xonwep0)