Xonotic
turret.qh
Go to the documentation of this file.
1 #pragma once
2 
3 #include <common/weapons/_all.qh>
4 
6  ATTRIB(Turret, m_id, int, 0);
7 
9  ATTRIB(Turret, netname, string);
11  ATTRIB(Turret, turret_name, string, _("Turret"));
13  ATTRIB(Turret, mdl, string);
15  ATTRIB(Turret, model, string);
17  ATTRIB(Turret, head_model, string);
18 
19  ATTRIB(Turret, spawnflags, int, 0);
21  ATTRIB(Turret, m_mins, vector, '-0 -0 -0');
23  ATTRIB(Turret, m_maxs, vector, '0 0 0');
24 
25  METHOD(Turret, display, void(Turret this, void(string name, string icon) returns)) {
26  returns(this.turret_name, string_null);
27  }
29  METHOD(Turret, tr_setup, void(Turret this, entity it)) {
30 
31  }
33  METHOD(Turret, tr_think, void(Turret this, entity it)) {
34 
35  }
37  METHOD(Turret, tr_death, void(Turret this, entity it)) {
38 
39  }
41  METHOD(Turret, tr_precache, void(Turret this)) {
42 
43  }
44  ATTRIB(Turret, m_weapon, Weapon);
45 #ifdef SVQC
46 
47  METHOD(Turret, tr_attack, void(Turret this, entity it)) {
48  Weapon w = this.m_weapon;
49  .entity weaponentity = weaponentities[0];
50  w.wr_think(w, it, weaponentity, 1);
51  }
52 #endif
53 
54  METHOD(Turret, tr_config, void(Turret this)) { }
56 
57 // fields:
58 .entity tur_head;
59 
60 // target selection flags
63 const int TFL_TARGETSELECT_NO = BIT(1); // don't automatically find targets
64 const int TFL_TARGETSELECT_LOS = BIT(2); // require line of sight to find targets
65 const int TFL_TARGETSELECT_PLAYERS = BIT(3); // target players
66 const int TFL_TARGETSELECT_MISSILES = BIT(4); // target projectiles
67 const int TFL_TARGETSELECT_TRIGGERTARGET = BIT(5); // respond to turret_trigger_target events
68 const int TFL_TARGETSELECT_ANGLELIMITS = BIT(6); // apply extra angular limits to target selection
69 const int TFL_TARGETSELECT_RANGELIMITS = BIT(7); // limit target selection range
70 const int TFL_TARGETSELECT_TEAMCHECK = BIT(8); // don't attack teammates
71 const int TFL_TARGETSELECT_NOBUILTIN = BIT(9); // only attack targets when triggered
72 const int TFL_TARGETSELECT_OWNTEAM = BIT(10); // only attack teammates
73 const int TFL_TARGETSELECT_NOTURRETS = BIT(11); // don't attack other turrets
74 const int TFL_TARGETSELECT_FOV = BIT(12); // extra limits to attack range
75 const int TFL_TARGETSELECT_MISSILESONLY = BIT(13); // only attack missiles
76 const int TFL_TARGETSELECT_VEHICLES = BIT(14); // target manned vehicles
77 
78 // aim flags
79 .int aim_flags;
80 const int TFL_AIM_NO = 1; // no aiming
81 const int TFL_AIM_SPLASH = 2; // aim for ground around the target's feet
82 const int TFL_AIM_LEAD = 4; // try to predict target movement
83 const int TFL_AIM_SHOTTIMECOMPENSATE = 8; // compensate for shot traveltime when leading
84 const int TFL_AIM_ZPREDICT = 16; // predict target's z position at impact
85 const int TFL_AIM_SIMPLE = 32; // aim at player's current location
86 
87 // tracking flags
89 const int TFL_TRACK_NO = 2; // don't move head
90 const int TFL_TRACK_PITCH = 4; // pitch head
91 const int TFL_TRACK_ROTATE = 8; // rotate head
92 
93 // prefire checks
95 const int TFL_FIRECHECK_DEAD = 4; // don't attack dead targets (zombies?)
96 const int TFL_FIRECHECK_DISTANCES = 8; // another range check
97 const int TFL_FIRECHECK_LOS = 16; // line of sight
98 const int TFL_FIRECHECK_AIMDIST = 32; // consider distance impactpoint<->aimspot
99 const int TFL_FIRECHECK_REALDIST = 64; // consider enemy origin<->impactpoint
100 const int TFL_FIRECHECK_ANGLEDIST = 128; // consider angular diff head<->aimspot
101 const int TFL_FIRECHECK_TEAMCHECK = 256; // don't attack teammates
102 const int TFL_FIRECHECK_AFF = 512; // try to avoid any friendly fire
103 const int TFL_FIRECHECK_AMMO_OWN = 1024; // own ammo needs to be larger than damage dealt
104 const int TFL_FIRECHECK_AMMO_OTHER = 2048; // target's ammo needs to be less than max
105 const int TFL_FIRECHECK_REFIRE = 4096; // check single attack finished delays
106 const int TFL_FIRECHECK_NO = 16384; // no prefire checks
107 
108 // attack flags
110 const int TFL_SHOOT_NO = 64; // no attacking
111 const int TFL_SHOOT_VOLLY = 2; // fire in vollies
112 const int TFL_SHOOT_VOLLYALWAYS = 4; // always do a full volly, even if target is lost
113 const int TFL_SHOOT_HITALLVALID = 8; // loop through all valid targets
114 const int TFL_SHOOT_CLEARTARGET = 16; // lose target after attack (after volly is done if in volly mode)
115 const int TFL_SHOOT_CUSTOM = 32; // custom attacking
116 
117 // turret capabilities
119 const int TUR_FLAG_NONE = 0; // no abilities
120 const int TUR_FLAG_SNIPER = 2; // sniping turret
121 const int TUR_FLAG_SPLASH = 4; // can deal splash damage
122 const int TUR_FLAG_HITSCAN = 8; // hit scan
123 const int TUR_FLAG_MULTIGUN = 16; // multiple guns
124 const int TUR_FLAG_GUIDED = 32; // laser guided projectiles
125 const int TUR_FLAG_SLOWPROJ = 64; // turret fires slow projectiles
126 const int TUR_FLAG_MEDPROJ = 128; // turret fires medium projectiles
127 const int TUR_FLAG_FASTPROJ = 256; // turret fires fast projectiles
128 const int TUR_FLAG_PLAYER = 512; // can damage players
129 const int TUR_FLAG_MISSILE = 1024; // can damage missiles
130 const int TUR_FLAG_SUPPORT = 2048; // supports other units
131 const int TUR_FLAG_AMMOSOURCE = 4096; // can provide ammunition
132 const int TUR_FLAG_RECIEVETARGETS = 8192; // can recieve targets from external sources
133 const int TUR_FLAG_MOVE = 16384; // can move
134 const int TUR_FLAG_ROAM = 32768; // roams around if not attacking
135 const int TUR_FLAG_ISTURRET = 65536; // identifies this unit as a turret
136 
137 // ammo types
138 #define ammo_flags currentammo
139 const int TFL_AMMO_NONE = 64; // doesn't use ammo
140 const int TFL_AMMO_ENERGY = 2; // uses power
141 const int TFL_AMMO_BULLETS = 4; // uses bullets
142 const int TFL_AMMO_ROCKETS = 8; // uses explosives
143 const int TFL_AMMO_RECHARGE = 16; // regenerates ammo
144 const int TFL_AMMO_RECIEVE = 32; // can recieve ammo from support units
145 
146 // damage flags
148 const int TFL_DMG_NO = 256; // doesn't take damage
149 const int TFL_DMG_YES = 2; // can be damaged
150 const int TFL_DMG_TEAM = 4; // can be damaged by teammates
151 const int TFL_DMG_RETALIATE = 8; // target attackers
152 const int TFL_DMG_RETALIATE_TEAM = 16; // target attackers, even if on same team
153 const int TFL_DMG_TARGETLOSS = 32; // loses target when damaged
154 const int TFL_DMG_AIMSHAKE = 64; // damage throws off aim
155 const int TFL_DMG_HEADSHAKE = 128; // damage shakes head
156 const int TFL_DMG_DEATH_NORESPAWN = 256; // no re-spawning
157 
158 // spawn flags
159 const int TSF_SUSPENDED = 1;
160 const int TSF_TERRAINBASE = 2; // currently unused
161 const int TSF_NO_AMMO_REGEN = 4; // disable builtin ammo regeneration
162 const int TSF_NO_PATHBREAK = 8; // don't break path to chase enemies, will still fire at them if possible
163 const int TSL_NO_RESPAWN = 16; // don't re-spawn
164 const int TSL_ROAM = 32; // roam while idle
165 
166 // send flags
167 const int TNSF_UPDATE = 2;
168 const int TNSF_STATUS = 4;
169 const int TNSF_SETUP = 8;
170 const int TNSF_ANG = 16;
171 const int TNSF_AVEL = 32;
172 const int TNSF_MOVE = 64;
174 const int TNSF_ANIM = 128;
175 
176 const int TNSF_FULL_UPDATE = 16777215;
const int TFL_TARGETSELECT_NOBUILTIN
Definition: turret.qh:71
const int TFL_TARGETSELECT_ANGLELIMITS
Definition: turret.qh:68
const int TFL_DMG_HEADSHAKE
Definition: turret.qh:155
string string_null
Definition: nil.qh:9
const int TFL_AMMO_NONE
Definition: turret.qh:139
const int TFL_TARGETSELECT_NOTURRETS
Definition: turret.qh:73
const int TUR_FLAG_SPLASH
Definition: turret.qh:121
const int TFL_FIRECHECK_AFF
Definition: turret.qh:102
CLASS(Object) Object
Definition: oo.qh:318
const int TFL_AMMO_ROCKETS
Definition: turret.qh:142
const int TNSF_STATUS
Definition: turret.qh:168
const int TSF_SUSPENDED
Definition: turret.qh:159
const int TUR_FLAG_MISSILE
Definition: turret.qh:129
const int TNSF_ANIM
Definition: turret.qh:174
const int TFL_AIM_ZPREDICT
Definition: turret.qh:84
entity() spawn
int target_validate_flags
Definition: turret.qh:62
const int TSL_NO_RESPAWN
Definition: turret.qh:163
const int TFL_FIRECHECK_AMMO_OWN
Definition: turret.qh:103
const int TFL_FIRECHECK_REALDIST
Definition: turret.qh:99
const int TUR_FLAG_SUPPORT
Definition: turret.qh:130
string netname
Definition: powerups.qc:20
const int TFL_TRACK_ROTATE
Definition: turret.qh:91
const int TUR_FLAG_GUIDED
Definition: turret.qh:124
const int TUR_FLAG_PLAYER
Definition: turret.qh:128
const int TFL_TARGETSELECT_FOV
Definition: turret.qh:74
const int TFL_SHOOT_VOLLYALWAYS
Definition: turret.qh:112
int target_select_flags
Definition: turret.qh:61
#define METHOD(cname, name, prototype)
Definition: oo.qh:257
float spawnflags
Definition: progsdefs.qc:191
const int TNSF_AVEL
Definition: turret.qh:171
string model
Definition: csprogsdefs.qc:108
const int TFL_AMMO_RECHARGE
Definition: turret.qh:143
const int TFL_DMG_TARGETLOSS
Definition: turret.qh:153
#define ATTRIB(...)
Definition: oo.qh:136
const int TFL_TARGETSELECT_PLAYERS
Definition: turret.qh:65
const int TFL_TARGETSELECT_LOS
Definition: turret.qh:64
const int TFL_DMG_DEATH_NORESPAWN
Definition: turret.qh:156
const int TUR_FLAG_MEDPROJ
Definition: turret.qh:126
const int TFL_DMG_YES
Definition: turret.qh:149
const int TFL_DMG_RETALIATE_TEAM
Definition: turret.qh:152
entity tur_head
Definition: turret.qh:58
int m_id
Definition: effect.qh:19
#define BIT(n)
Only ever assign into the first 24 bits in QC (so max is BIT(23)).
Definition: bits.qh:8
const int TFL_SHOOT_NO
Definition: turret.qh:110
int damage_flags
Definition: turret.qh:147
const int TFL_TARGETSELECT_OWNTEAM
Definition: turret.qh:72
const int TFL_FIRECHECK_NO
Definition: turret.qh:106
const int TFL_FIRECHECK_AMMO_OTHER
Definition: turret.qh:104
int firecheck_flags
Definition: turret.qh:94
const int TFL_FIRECHECK_REFIRE
Definition: turret.qh:105
const int TFL_AMMO_BULLETS
Definition: turret.qh:141
const int TFL_FIRECHECK_DISTANCES
Definition: turret.qh:96
const int TUR_FLAG_AMMOSOURCE
Definition: turret.qh:131
const int TFL_AIM_LEAD
Definition: turret.qh:82
int shoot_flags
Definition: turret.qh:109
const int TFL_SHOOT_CUSTOM
Definition: turret.qh:115
float anim_start_time
Definition: turret.qh:173
const int TFL_SHOOT_VOLLY
Definition: turret.qh:111
const int TNSF_SETUP
Definition: turret.qh:169
const int TFL_SHOOT_HITALLVALID
Definition: turret.qh:113
const int TFL_TRACK_PITCH
Definition: turret.qh:90
const int TFL_FIRECHECK_ANGLEDIST
Definition: turret.qh:100
const int TFL_AMMO_RECIEVE
Definition: turret.qh:144
const int TSF_NO_PATHBREAK
Definition: turret.qh:162
const int TFL_FIRECHECK_AIMDIST
Definition: turret.qh:98
const int TFL_AIM_NO
Definition: turret.qh:80
entity this
Definition: self.qh:83
const int TSL_ROAM
Definition: turret.qh:164
const int TFL_DMG_TEAM
Definition: turret.qh:150
const int TUR_FLAG_SLOWPROJ
Definition: turret.qh:125
vector(float skel, float bonenum) _skel_get_boneabs_hidden
const int TSF_NO_AMMO_REGEN
Definition: turret.qh:161
const int TUR_FLAG_NONE
Definition: turret.qh:119
const int TUR_FLAG_RECIEVETARGETS
Definition: turret.qh:132
const int TFL_TARGETSELECT_TEAMCHECK
Definition: turret.qh:70
const int TFL_TARGETSELECT_NO
Definition: turret.qh:63
const int TFL_AIM_SPLASH
Definition: turret.qh:81
const int TNSF_UPDATE
Definition: turret.qh:167
const int TFL_FIRECHECK_DEAD
Definition: turret.qh:95
const int TFL_DMG_AIMSHAKE
Definition: turret.qh:154
const int TUR_FLAG_MOVE
Definition: turret.qh:133
const int TFL_AMMO_ENERGY
Definition: turret.qh:140
#define ENDCLASS(cname)
Definition: oo.qh:269
const int TFL_TARGETSELECT_VEHICLES
Definition: turret.qh:76
const int TUR_FLAG_ROAM
Definition: turret.qh:134
const int TFL_TRACK_NO
Definition: turret.qh:89
const int TNSF_ANG
Definition: turret.qh:170
const int TFL_TARGETSELECT_MISSILES
Definition: turret.qh:66
entity weaponentities[MAX_WEAPONSLOTS]
Definition: weapon.qh:14
const int TUR_FLAG_MULTIGUN
Definition: turret.qh:123
int turret_flags
Definition: turret.qh:118
const int TFL_FIRECHECK_TEAMCHECK
Definition: turret.qh:101
const int TUR_FLAG_ISTURRET
Definition: turret.qh:135
const int TSF_TERRAINBASE
Definition: turret.qh:160
const int TFL_DMG_NO
Definition: turret.qh:148
const int TFL_FIRECHECK_LOS
Definition: turret.qh:97
int track_flags
Definition: turret.qh:88
fields which are explicitly/manually set are marked with "M", fields set automatically are marked wit...
Definition: weapon.qh:41
const int TFL_AIM_SHOTTIMECOMPENSATE
Definition: turret.qh:83
const int TNSF_MOVE
Definition: turret.qh:172
const int TFL_AIM_SIMPLE
Definition: turret.qh:85
const int TUR_FLAG_SNIPER
Definition: turret.qh:120
int aim_flags
Definition: turret.qh:79
const int TNSF_FULL_UPDATE
Definition: turret.qh:176
const int TUR_FLAG_HITSCAN
Definition: turret.qh:122
const int TFL_TARGETSELECT_RANGELIMITS
Definition: turret.qh:69
const int TFL_DMG_RETALIATE
Definition: turret.qh:151
const int TFL_SHOOT_CLEARTARGET
Definition: turret.qh:114
const int TUR_FLAG_FASTPROJ
Definition: turret.qh:127
Definition: turret.qh:5
const int TFL_TARGETSELECT_MISSILESONLY
Definition: turret.qh:75
const int TFL_TARGETSELECT_TRIGGERTARGET
Definition: turret.qh:67