Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
weaponsystem.qh
Go to the documentation of this file.
1#pragma once
2
4
9
10#define INDEPENDENT_ATTACK_FINISHED 1
11
12// there is 2 weapon tics that can run in one server frame
13const int W_TICSPERFRAME = 2;
14
15// VorteX: standalone think for weapons, so normal think on weaponentity can be reserved by weaponflashes (which needs update even player dies)
17.void(Weapon thiswep, entity actor, .entity weaponentity, int fire) weapon_think;
18
21
22// reset to 0 on weapon switch
23// may be useful to all weapons
25
27
29.int ammo_none; // used by the reloading system, must always be 0
33
36#if INDEPENDENT_ATTACK_FINISHED
37#define ATTACK_FINISHED_FOR(ent, w, slot) ((ent).(attack_finished_for[((w) - WEP_FIRST) * MAX_WEAPONSLOTS + (slot)]))
38#else
39#define ATTACK_FINISHED_FOR(ent, w, slot) ((ent).attack_finished_single[slot])
40#endif
41#define ATTACK_FINISHED(ent, w) ATTACK_FINISHED_FOR(ent, ent.(w).m_weapon.m_id, weaponslot(w))
42
43void CL_SpawnWeaponentity(entity e, .entity weaponentity);
44
45void w_clear(Weapon thiswep, entity actor, .entity weaponentity, int fire);
46
47void w_ready(Weapon thiswep, entity actor, .entity weaponentity, int fire);
48
50
51bool weaponUseForbidden(entity player);
52bool weaponLocked(entity player);
53
54void W_AttachToShotorg(entity actor, .entity weaponentity, entity flash, vector offset);
55
56void W_DecreaseAmmo(Weapon wep, entity actor, float ammo_use, .entity weaponentity);
57
58void W_DropEvent(.void(Weapon, entity actor, .entity) event, entity player, int weapon_type, entity weapon_item, .entity weaponentity);
59
60void W_Reload(entity actor, .entity weaponentity, float sent_ammo_min, Sound sent_sound);
61
62void W_ResetGunAlign(entity player, int preferred_alignment);
63
64void W_WeaponFrame(Player actor, .entity weaponentity);
65
66float W_WeaponRateFactor(entity this);
67
68float W_WeaponSpeedFactor(entity this);
69
70bool weapon_prepareattack(Weapon thiswep, entity actor, .entity weaponentity, bool secondary, float attacktime);
71
72bool weapon_prepareattack_check(Weapon thiswep, entity actor, .entity weaponentity, bool secondary, float attacktime);
73
74void weapon_prepareattack_do(entity actor, .entity weaponentity, bool secondary, float attacktime);
75
76void weapon_thinkf(entity actor, .entity weaponentity, WFRAME fr, float t, void(Weapon thiswep, entity actor, .entity weaponentity, int fire) func);
77
78//REPLICATE_APPLYCHANGE("cl_gunalign", { W_ResetGunAlign(this, store.cvar_cl_gunalign); });
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
Definition weapon.qh:44
Weapons
Definition guide.qh:113
#define REGISTRY_MAX(id)
Definition registry.qh:17
int ammo_none
Definition resources.qh:14
vector
Definition self.qh:92
float weapon_nextthink
Definition view.qc:288
const int MAX_WEAPONSLOTS
Definition weapon.qh:16
void W_DecreaseAmmo(Weapon wep, entity actor, float ammo_use,.entity weaponentity)
float W_WeaponSpeedFactor(entity this)
void W_Reload(entity actor,.entity weaponentity, float sent_ammo_min, Sound sent_sound)
void weapon_thinkf(entity actor,.entity weaponentity, WFRAME fr, float t, void(Weapon thiswep, entity actor,.entity weaponentity, int fire) func)
entity weapon_dropevent_item
float autocvar_g_weaponspeedfactor
bool weapon_prepareattack(Weapon thiswep, entity actor,.entity weaponentity, bool secondary, float attacktime)
float internalteam
bool weaponUseForbidden(entity player)
vector CL_Weapon_GetShotOrg(int wpn)
void w_ready(Weapon thiswep, entity actor,.entity weaponentity, int fire)
float attack_finished_for[REGISTRY_MAX(Weapons) *MAX_WEAPONSLOTS]
void w_clear(Weapon thiswep, entity actor,.entity weaponentity, int fire)
void W_AttachToShotorg(entity actor,.entity weaponentity, entity flash, vector offset)
void weapon_prepareattack_do(entity actor,.entity weaponentity, bool secondary, float attacktime)
int old_clip_load
void W_DropEvent(.void(Weapon, entity actor,.entity) event, entity player, int weapon_type, entity weapon_item,.entity weaponentity)
void W_WeaponFrame(Player actor,.entity weaponentity)
void CL_SpawnWeaponentity(entity e,.entity weaponentity)
float bulletcounter
float W_WeaponRateFactor(entity this)
float autocvar_g_weaponforcefactor
bool weapon_prepareattack_check(Weapon thiswep, entity actor,.entity weaponentity, bool secondary, float attacktime)
entity weaponentity_fld
float autocvar_g_weapondamagefactor
const int W_TICSPERFRAME
bool weaponLocked(entity player)
float attack_finished_single[MAX_WEAPONSLOTS]
void W_ResetGunAlign(entity player, int preferred_alignment)
float autocvar_g_weaponratefactor
float weapon_load[REGISTRY_MAX(Weapons)]
int clip_load
Definition wepent.qh:14
int clip_size
Definition wepent.qh:15