Xonotic QuakeC
The free, fast arena FPS with crisp movement and a wide array of weapons
common.qh File Reference
Include dependency graph for common.qh:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Macros

#define PROJECTILE_MAKETRIGGER(e)
#define PROJECTILE_TOUCH(e, t)

Functions

void adaptor_think2use_hittype_splash (entity this)
 STATIC_INIT (g_projectiles)
float W_CheckProjectileDamage (entity inflictor, entity projowner, int deathtype, float exception)
void W_DamageOverTime_Think (entity this, float duration, float duration_power, float damage, float edgedamage, float rad, float force, entity cantbe, float think_delay)
 Applies damage over time, called within a think function.
bool W_DualWielding (entity player)
void W_GiveWeapon (entity e, float wep)
void W_LaserPlay (entity this, float rad, float damage, float edgedamage, float burntime, WarpZone_FindRadius_cond_callback_t cb)
 Randomly chooses a player within the radius to shoot a laser towards.
void W_PlayStrengthSound (entity player)
void W_PrepareExplosionByDamage (entity this, entity attacker, void(entity this) explode)
float W_SeekOutEnemy (entity this, float speed_decel, float speed_accel, float speed_max, float turn_rate, bool smart, float smart_mindist, float smart_trace_min, float smart_trace_max)
 Automatically guides a projectile towards its enemy.
bool WarpZone_Projectile_Touch_ImpactFilter_Callback (entity this, entity toucher)

Variables

int autocvar_g_projectiles_damage
int autocvar_g_projectiles_interact
bool autocvar_g_projectiles_keep_owner
float autocvar_sv_strengthsound_antispam_refire_threshold
float autocvar_sv_strengthsound_antispam_time
vector dest
float dmg_last
float dmg_radius
float fade_rate
float fade_time
IntrusiveList g_projectiles
const int MIF_ARC = BIT(2)
const int MIF_GUIDED_AI = BIT(7)
const int MIF_GUIDED_ALL = MIF_GUIDED_MANUAL | MIF_GUIDED_HEAT | MIF_GUIDED_LASER | MIF_GUIDED_AI | MIF_GUIDED_TAG
const int MIF_GUIDED_CONFUSABLE = MIF_GUIDED_HEAT | MIF_GUIDED_AI
const int MIF_GUIDED_HEAT = BIT(5)
const int MIF_GUIDED_LASER = BIT(6)
const int MIF_GUIDED_MANUAL = BIT(4)
const int MIF_GUIDED_TAG = BIT(7)
const int MIF_GUIDED_TRACKING = MIF_GUIDED_HEAT | MIF_GUIDED_LASER | MIF_GUIDED_AI | MIF_GUIDED_TAG
const int MIF_PROXY = BIT(3)
const int MIF_SPLASH = BIT(1)
float misc_bulletcounter
int missile_flags
int projectiledeathtype
entity realowner
float teleport_time

Macro Definition Documentation

◆ PROJECTILE_MAKETRIGGER

#define PROJECTILE_MAKETRIGGER ( e)
Value:
(e).clipgroup = 1; \
string classname
float DPCONTENTS_SOLID
float DPCONTENTS_CORPSE
float clipgroup
const float SOLID_CORPSE
float DPCONTENTS_BODY
float solid
float dphitcontentsmask
#define MACRO_END
Definition macro.qh:7
#define MACRO_BEGIN
Definition macro.qh:6
int autocvar_g_projectiles_interact
Definition common.qh:6

Definition at line 46 of file common.qh.

46#define PROJECTILE_MAKETRIGGER(e) \
47MACRO_BEGIN \
48 (e).solid = SOLID_CORPSE; \
49 (e).dphitcontentsmask = DPCONTENTS_SOLID | DPCONTENTS_BODY | DPCONTENTS_CORPSE; \
50 if (!autocvar_g_projectiles_interact || (autocvar_g_projectiles_interact == 1 && (e).classname != "blasterbolt")) \
51 (e).clipgroup = 1; \
52MACRO_END

Referenced by FireGrapplingHook(), M_Golem_Attack_Lightning(), M_Spider_Attack_Web(), nade_napalm_ball(), raptor_bomb_burst(), raptor_bombdrop(), toss_nade(), turret_projectile(), UnsetMovetypeFollow(), vehicles_projectile(), W_Arc_Attack_Bolt(), W_Blaster_Attack(), W_Crylink_Attack(), W_Crylink_Attack2(), W_Devastator_Attack(), W_Electro_Attack_Bolt(), W_Electro_Attack_Orb(), W_Electro_Orb_Follow_Think(), W_Electro_Orb_Stick(), W_Fireball_Attack1(), W_Fireball_Attack2(), W_Hagar_Attack(), W_Hagar_Attack2(), W_Hagar_Attack2_Load_Release(), W_HLAC_Attack(), W_HLAC_Attack2(), W_Hook_Attack2(), W_MineLayer_Attack(), W_MineLayer_Stick(), W_Mortar_Attack(), W_Mortar_Attack2(), W_Nexball_Attack2(), W_OverkillRocketPropelledChainsaw_Attack(), W_Porto_Attack(), W_RocketMinsta_Attack(), W_Seeker_Fire_Flac(), W_Seeker_Fire_Missile(), and W_Seeker_Fire_Tag().

◆ PROJECTILE_TOUCH

Function Documentation

◆ adaptor_think2use_hittype_splash()

void adaptor_think2use_hittype_splash ( entity this)

Definition at line 106 of file common.qc.

107{
108 if (!(IS_ONGROUND(this))) // if onground, we ARE touching something, but HITTYPE_SPLASH is to be networked if the damage causing projectile is not touching ANYTHING
110 adaptor_think2use(this);
111}
const int HITTYPE_SPLASH
automatically set by RadiusDamage
Definition all.qh:32
#define IS_ONGROUND(s)
Definition movetypes.qh:16
int projectiledeathtype
Definition common.qh:33

References entity(), HITTYPE_SPLASH, IS_ONGROUND, and projectiledeathtype.

Referenced by M_Spider_Attack_Web(), W_Arc_Attack_Bolt(), W_Electro_Attack_Orb(), W_Electro_Orb_Follow_Think(), W_Electro_Orb_Stick(), W_Hagar_Attack(), W_Hagar_Attack2(), W_Hagar_Attack2_Load_Release(), W_Hook_Attack2(), W_Mortar_Attack2(), W_RocketMinsta_Attack(), and W_Seeker_Fire_Flac().

◆ STATIC_INIT()

STATIC_INIT ( g_projectiles )

Definition at line 71 of file common.qh.

71{ g_projectiles = IL_NEW(); }
#define IL_NEW()
IntrusiveList g_projectiles
Definition common.qh:70

References g_projectiles, and IL_NEW.

◆ W_CheckProjectileDamage()

float W_CheckProjectileDamage ( entity inflictor,
entity projowner,
int deathtype,
float exception )

Definition at line 45 of file common.qc.

46{
47 bool is_from_contents = (deathtype == DEATH_SLIME.m_id || deathtype == DEATH_LAVA.m_id);
48 bool is_from_owner = (inflictor == projowner);
49 bool is_from_exception = (exception != -1);
50
51 //dprint(strcat("W_CheckProjectileDamage: from_contents ", ftos(is_from_contents), " : from_owner ", ftos(is_from_owner), " : exception ", strcat(ftos(is_from_exception), " (", ftos(exception), "). \n")));
52
54 {
55 return false; // no damage to projectiles at all, not even with the exceptions
56 }
57 else if (autocvar_g_projectiles_damage == -1)
58 {
59 if (is_from_exception)
60 return exception; // if exception is detected, allow it to override
61 else
62 return false; // otherwise, no other damage is allowed
63 }
65 {
66 if (is_from_exception)
67 return exception; // if exception is detected, allow it to override
68 else if (!is_from_contents)
69 return false; // otherwise, only allow damage from contents
70 }
72 {
73 if (is_from_exception)
74 return exception; // if exception is detected, allow it to override
75 else if (!(is_from_contents || is_from_owner))
76 return false; // otherwise, only allow self damage and damage from contents
77 }
78 else if (autocvar_g_projectiles_damage == 2) // allow any damage, but override for exceptions
79 {
80 if (is_from_exception)
81 return exception; // if exception is detected, allow it to override
82 }
83
84 return true; // if none of these return, then allow damage anyway.
85}
int autocvar_g_projectiles_damage
Definition common.qh:5

References autocvar_g_projectiles_damage, and entity().

Referenced by GrapplingHook_Damage(), M_Golem_Attack_Lightning_Damage(), W_Arc_Bolt_Damage(), W_Devastator_Damage(), W_Electro_Orb_Damage(), W_Fireball_Damage(), W_Hagar_Damage(), W_Hook_Damage(), W_MineLayer_Damage(), W_Mortar_Grenade_Damage(), W_OverkillRocketPropelledChainsaw_Damage(), and W_Seeker_Missile_Damage().

◆ W_DamageOverTime_Think()

void W_DamageOverTime_Think ( entity this,
float duration,
float duration_power,
float damage,
float edgedamage,
float rad,
float force,
entity cantbe,
float think_delay )

Applies damage over time, called within a think function.

Definition at line 285 of file common.qc.

289{
290 float dt = time - this.teleport_time;
291 float dmg_remaining_next = bound(0, 1 - dt / duration, 1) ** duration_power;
292
293 float f = this.dmg_last - dmg_remaining_next;
294 this.dmg_last = dmg_remaining_next;
295
296 RadiusDamage(this, this.realowner,
297 f * damage,
298 f * edgedamage,
299 rad,
300 cantbe,
301 NULL,
302 f * force,
304 this.weaponentity_fld,
305 NULL
306 );
307 this.projectiledeathtype |= HITTYPE_SPAM; // ensure it doesn't spam its effect
308
309 if (dt < duration)
310 this.nextthink = time + think_delay;
311 else
312 delete(this);
313}
float teleport_time
Definition player.qh:218
float time
float nextthink
float RadiusDamage(entity inflictor, entity attacker, float coredamage, float edgedamage, float rad, entity cantbe, entity mustbe, float forceintensity, int deathtype,.entity weaponentity, entity directhitentity)
Definition damage.qc:937
const int HITTYPE_SPAM
set manually after first RadiusDamage, stops effect spam
Definition all.qh:36
float bound(float min, float value, float max)
#define NULL
Definition post.qh:14
float dmg_last
Definition common.qh:27
entity realowner
entity weaponentity_fld

References bound(), dmg_last, entity(), HITTYPE_SPAM, nextthink, NULL, projectiledeathtype, RadiusDamage(), realowner, teleport_time, time, and weaponentity_fld.

Referenced by W_Electro_ExplodeComboThink(), and W_Hook_ExplodeThink().

◆ W_DualWielding()

bool W_DualWielding ( entity player)

Definition at line 20 of file common.qc.

21{
22 int held_weapons = 0;
23 for (int slot = 0; slot < MAX_WEAPONSLOTS; ++slot)
24 {
25 .entity weaponentity = weaponentities[slot];
26 if (player.(weaponentity) && player.(weaponentity).m_switchweapon != WEP_Null)
27 ++held_weapons;
28 }
29
30 return held_weapons > 1;
31}
const int MAX_WEAPONSLOTS
Definition weapon.qh:16
entity weaponentities[MAX_WEAPONSLOTS]
Definition weapon.qh:17

References entity(), MAX_WEAPONSLOTS, and weaponentities.

Referenced by IMPULSE(), PlayerThink(), W_Devastator_Think(), W_ResetGunAlign(), W_SetupShot_Dir_ProjectileSize_Range(), and weapon_prepareattack_do().

◆ W_GiveWeapon()

void W_GiveWeapon ( entity e,
float wep )

References entity(), and toucher.

◆ W_LaserPlay()

void W_LaserPlay ( entity this,
float rad,
float damage,
float edgedamage,
float burntime,
WarpZone_FindRadius_cond_callback_t cb )

Randomly chooses a player within the radius to shoot a laser towards.

Definition at line 191 of file common.qc.

192{
193 if (damage <= 0 && edgedamage <= 0)
194 return;
195
197 entity last = NULL;
198 float rad2 = rad * rad;
200 for (entity e = WarpZone_SearchInRadius(this.origin, rad, MOVE_NOMONSTERS, cb); e; e = e.chain)
201 {
202 // adjust the hit location to be a random position inside the entity's bbox
203 vector p = e.origin + e.mins;
204 p.x += random() * (e.maxs.x - e.mins.x);
205 p.y += random() * (e.maxs.y - e.mins.y);
206 p.z += random() * (e.maxs.z - e.mins.z);
207 float dist2 = vlen2(this.origin - WarpZone_UnTransformOrigin(e, p));
208 if (dist2 <= rad2) // there's a chance this is false, so we optimize by only calling sqrt if true
209 {
210 e.dest = p;
211 e.dmg_radius = sqrt(dist2);
212 last = e;
213 RandomSelection_AddEnt(e, 1 / (1 + e.dmg_radius), !StatusEffects_active(STATUSEFFECT_Burning, e));
214 }
215 }
217 {
218 float dist = damage + (edgedamage - damage) * (RandomSelection_chosen_ent.dmg_radius / rad);
220
221 // WarpZone_TraceLine_ThroughZone with callback to draw the line-effect through zones on the way to the end,
222 // but then for the final segment draw towards .dest instead of the trace's end (.WarpZone_findradius_nearest).
223 // This is probably the best we can do
225 if (RandomSelection_chosen_ent.warpzone_transform != '0 0 0' || RandomSelection_chosen_ent.warpzone_shift != '0 0 0')
226 {
227 W_LaserPlay_end_org = RandomSelection_chosen_ent.WarpZone_findradius_nearest;
230 }
232 //trailparticles(this, particleeffectnum(EFFECT_FIREBALL_LASER), this.origin, RandomSelection_chosen_ent.dest);
233 }
234}
var entity(vector mins, vector maxs,.entity tofield) findbox_tofield_OrFallback
const float MOVE_NOMONSTERS
vector origin
float Fire_AddDamage(entity e, entity o, float d, float t, float dt)
Definition damage.qc:968
const int HITTYPE_BOUNCE
set manually after projectile has bounced
Definition all.qh:33
void Send_Effect(entity eff, vector eff_loc, vector eff_vel, int eff_cnt)
Definition all.qc:155
entity WarpZone_SearchInRadius(vector org, float rad, float nomonsters, WarpZone_FindRadius_cond_callback_t cb)
Modified findradius aware of warpzones, that only includes entities that meet the "cb" criteria.
Definition common.qc:680
vector WarpZone_UnTransformOrigin(entity wz, vector org)
Transforms origin org backwards through warpzone wz, as the inverse of WarpZone_TransformOrigin.
Definition common.qc:526
noref entity WarpZone_SearchInRadius_otherent
Free to use in the callback.
Definition common.qh:71
#define WarpZone_TraceLine_ThroughZone(org, end, nomonsters, forent, zone, cb)
Definition common.qh:47
#define MOVE_NOTHING
Definition common.qh:35
float random(void)
float sqrt(float f)
ERASEABLE void RandomSelection_Init()
Definition random.qc:4
#define RandomSelection_AddEnt(e, weight, priority)
Definition random.qh:14
entity RandomSelection_chosen_ent
Definition random.qh:5
vector
Definition self.qh:96
void W_LaserPlay_trace_callback(vector start, vector hit, vector end)
Definition common.qc:182
vector W_LaserPlay_end_org
Definition common.qc:181
vector W_LaserPlay_last_hit_org
Definition common.qc:180
bool StatusEffects_active(StatusEffect this, entity actor)
#define vlen2(v)
Definition vector.qh:4

References entity(), Fire_AddDamage(), HITTYPE_BOUNCE, MOVE_NOMONSTERS, MOVE_NOTHING, NULL, origin, projectiledeathtype, random(), RandomSelection_AddEnt, RandomSelection_chosen_ent, RandomSelection_Init(), realowner, Send_Effect(), sqrt(), StatusEffects_active(), vector, vlen2, W_LaserPlay_end_org, W_LaserPlay_last_hit_org, W_LaserPlay_trace_callback(), WarpZone_SearchInRadius(), WarpZone_SearchInRadius_otherent, WarpZone_TraceLine_ThroughZone, and WarpZone_UnTransformOrigin().

Referenced by napalm_ball_think(), napalm_fountain_think(), W_Fireball_Firemine_Think(), and W_Fireball_Think().

◆ W_PlayStrengthSound()

void W_PlayStrengthSound ( entity player)

Definition at line 40 of file common.qc.

41{
43}
#define MUTATOR_CALLHOOK(id,...)
Definition base.qh:143
void W_PlayStrengthSound(entity player)
Definition common.qc:40

References entity(), MUTATOR_CALLHOOK, and W_PlayStrengthSound().

Referenced by MUTATOR_HOOKABLE(), MUTATOR_HOOKFUNCTION(), W_PlayStrengthSound(), W_SetupShot_Dir_ProjectileSize_Range(), and W_Shotgun_Melee_Think().

◆ W_PrepareExplosionByDamage()

void W_PrepareExplosionByDamage ( entity this,
entity attacker,
void(entity this) explode )

Definition at line 87 of file common.qc.

88{
89 this.takedamage = DAMAGE_NO;
90 this.event_damage = func_null;
91
92 MUTATOR_CALLHOOK(PrepareExplosionByDamage, this, attacker);
93
95 {
96 this.owner = attacker;
97 this.realowner = attacker;
98 }
99
100 // do not explode NOW but in the NEXT FRAME!
101 // because recursive calls to RadiusDamage are not allowed
102 this.nextthink = time;
103 setthink(this, explode);
104}
entity owner
Definition main.qh:87
#define IS_CLIENT(s)
Definition player.qh:241
var void func_null()
#define setthink(e, f)
bool autocvar_g_projectiles_keep_owner
Definition common.qh:7
const int DAMAGE_NO
Definition subs.qh:79
float takedamage
Definition subs.qh:78

References autocvar_g_projectiles_keep_owner, DAMAGE_NO, entity(), func_null(), IS_CLIENT, MUTATOR_CALLHOOK, nextthink, owner, realowner, setthink, takedamage, and time.

Referenced by M_Golem_Attack_Lightning_Damage(), nade_damage(), nade_translocate_DestroyDamage(), turret_projectile_damage(), W_Arc_Bolt_Damage(), W_Devastator_Damage(), W_Fireball_Damage(), W_Hagar_Damage(), W_Hook_Damage(), W_MineLayer_Damage(), W_Mortar_Grenade_Damage(), W_OverkillRocketPropelledChainsaw_Damage(), W_Seeker_Missile_Damage(), and walker_rocket_damage().

◆ W_SeekOutEnemy()

float W_SeekOutEnemy ( entity this,
float speed_decel,
float speed_accel,
float speed_max,
float turn_rate,
bool smart,
float smart_mindist,
float smart_trace_min,
float smart_trace_max )

Automatically guides a projectile towards its enemy.

RefSys must be setup

Definition at line 239 of file common.qc.

242{
243 if (this.enemy != NULL
244 && this.enemy.takedamage != DAMAGE_AIM || IS_DEAD(this.enemy))
245 this.enemy = NULL;
246 if (!this.enemy)
247 return 0;
248
249 float spd = vlen(this.velocity);
250 spd = bound(
251 spd - speed_decel * frametime,
252 speed_max,
253 spd + speed_accel * frametime);
254
255 vector eorg = WarpZone_RefSys_TransformOrigin(this.enemy, this, 0.5 * (this.enemy.absmin + this.enemy.absmax));
256 float dist = vlen(eorg - this.origin);
257 vector desireddir = (eorg - this.origin) * 1 / dist;
258 vector olddir = this.velocity * 1 / spd; // get my current direction
259
260 // Do evasive maneuvers for world objects? ( this should be a cpu hog. :P )
261 if (smart && dist > smart_mindist)
262 {
263 // Is it a better idea (shorter distance) to trace to the target itself?
264 if (vdist(this.origin + olddir * this.wait, <, dist))
265 WarpZone_TraceLine(this.origin, this.origin + olddir * this.wait, false, this);
266 else
267 WarpZone_TraceLine(this.origin, eorg, false, this);
268
269 // Setup adaptive tracelength
270 this.wait = bound(
271 smart_trace_min,
273 smart_trace_max);
274
275 // Calc how important it is that we turn and add this to the desired (enemy) dir
276 desireddir = normalize((trace_plane_normal * (1 - trace_fraction)) + (desireddir * trace_fraction));
277 }
278
279 vector newdir = normalize(olddir + desireddir * turn_rate); // take the average of the 2 directions; not the best method but simple & easy
280 this.velocity = newdir * spd; // make me fly in the new direction at my flight speed
281 return dist;
282}
float wait
Definition items.qc:17
#define IS_DEAD(s)
Definition player.qh:244
float frametime
vector velocity
vector trace_endpos
float trace_fraction
vector trace_plane_normal
vector WarpZone_RefSys_TransformOrigin(entity from, entity to, vector org)
Transform origin org in from's reference into to's reference.
Definition common.qc:787
#define WarpZone_TraceLine(org, end, nomonsters, forent)
Definition common.qh:51
entity WarpZone_trace_transform
Transform accumulator during a trace.
Definition common.qh:40
float vlen(vector v)
vector normalize(vector v)
const int DAMAGE_AIM
Definition subs.qh:81
entity enemy
Definition sv_ctf.qh:152
#define vdist(v, cmp, f)
Vector distance comparison, avoids sqrt().
Definition vector.qh:8

References bound(), DAMAGE_AIM, enemy, entity(), frametime, IS_DEAD, normalize(), NULL, origin, trace_endpos, trace_fraction, trace_plane_normal, vdist, vector, velocity, vlen(), wait, WarpZone_RefSys_TransformOrigin(), WarpZone_trace_transform, WarpZone_TraceLine, and WarpZone_UnTransformOrigin().

Referenced by M_Mage_Attack_Spike_Think(), and W_Seeker_Missile_Think().

◆ WarpZone_Projectile_Touch_ImpactFilter_Callback()

bool WarpZone_Projectile_Touch_ImpactFilter_Callback ( entity this,
entity toucher )

Definition at line 150 of file common.qc.

151{
152 if (toucher && toucher == this.owner)
153 return true;
154
155 if (autocvar_g_projectiles_interact == 1 && toucher.classname == "blasterbolt")
156 {
158 // We'll bounce off it due to limitations so let it deflect us
159 // to hide the problem, see PROJECTILE_MAKETRIGGER.
160 gettouch(toucher)(toucher, this);
161 return true;
162 }
163
164 if (SUB_NoImpactCheck(this, toucher))
165 {
166 if (this.classname == "nade")
167 return false; // no checks here
168 else if (this.classname == "grapplinghook")
169 RemoveHook(this);
170 else
171 delete(this);
172 return true;
173 }
174 if (trace_ent && trace_ent.solid > SOLID_TRIGGER)
176 return false;
177}
float movetype
entity trace_ent
const float SOLID_TRIGGER
void UpdateCSQCProjectile(entity e)
const int MOVETYPE_BOUNCEMISSILE
Definition movetypes.qh:144
const int MOVETYPE_BOUNCE
Definition movetypes.qh:143
#define gettouch(e)
Definition self.qh:78
entity entity toucher
Definition self.qh:76
void RemoveHook(entity this)
Definition hook.qc:48
bool SUB_NoImpactCheck(entity this, entity toucher)
Definition common.qc:113

Variable Documentation

◆ autocvar_g_projectiles_damage

int autocvar_g_projectiles_damage

Definition at line 5 of file common.qh.

Referenced by W_CheckProjectileDamage().

◆ autocvar_g_projectiles_interact

int autocvar_g_projectiles_interact

Definition at line 6 of file common.qh.

Referenced by W_Blaster_Touch(), and WarpZone_Projectile_Touch_ImpactFilter_Callback().

◆ autocvar_g_projectiles_keep_owner

bool autocvar_g_projectiles_keep_owner

Definition at line 7 of file common.qh.

Referenced by W_PrepareExplosionByDamage().

◆ autocvar_sv_strengthsound_antispam_refire_threshold

float autocvar_sv_strengthsound_antispam_refire_threshold

Definition at line 8 of file common.qh.

Referenced by MUTATOR_HOOKFUNCTION().

◆ autocvar_sv_strengthsound_antispam_time

float autocvar_sv_strengthsound_antispam_time

Definition at line 9 of file common.qh.

Referenced by MUTATOR_HOOKFUNCTION().

◆ dest

vector dest

Definition at line 22 of file common.qh.

◆ dmg_last

float dmg_last

Definition at line 27 of file common.qh.

Referenced by W_DamageOverTime_Think(), and W_Hook_Explode2().

◆ dmg_radius

float dmg_radius

Definition at line 21 of file common.qh.

◆ fade_rate

float fade_rate

Definition at line 36 of file common.qh.

◆ fade_time

◆ g_projectiles

◆ MIF_ARC

◆ MIF_GUIDED_AI

const int MIF_GUIDED_AI = BIT(7)

Definition at line 64 of file common.qh.

◆ MIF_GUIDED_ALL

Definition at line 66 of file common.qh.

◆ MIF_GUIDED_CONFUSABLE

const int MIF_GUIDED_CONFUSABLE = MIF_GUIDED_HEAT | MIF_GUIDED_AI

Definition at line 68 of file common.qh.

◆ MIF_GUIDED_HEAT

const int MIF_GUIDED_HEAT = BIT(5)

Definition at line 62 of file common.qh.

Referenced by walker_fire_rocket().

◆ MIF_GUIDED_LASER

const int MIF_GUIDED_LASER = BIT(6)

Definition at line 63 of file common.qh.

◆ MIF_GUIDED_MANUAL

const int MIF_GUIDED_MANUAL = BIT(4)

Definition at line 61 of file common.qh.

◆ MIF_GUIDED_TAG

const int MIF_GUIDED_TAG = BIT(7)

Definition at line 65 of file common.qh.

Referenced by W_Seeker_Fire_Missile().

◆ MIF_GUIDED_TRACKING

Definition at line 67 of file common.qh.

◆ MIF_PROXY

const int MIF_PROXY = BIT(3)

◆ MIF_SPLASH

◆ misc_bulletcounter

◆ missile_flags

int missile_flags

Definition at line 57 of file common.qh.

◆ projectiledeathtype

◆ realowner

entity realowner

Definition at line 38 of file common.qh.

◆ teleport_time

float teleport_time

Definition at line 28 of file common.qh.