#ifdef SVQC
-#include "../../server/autocvars.qh"
+#include <server/autocvars.qh>
// Generic aiming
vector turret_aim_generic()
prep = pre_pos + (self.enemy.velocity * (impact_time + mintime));
if(self.aim_flags & TFL_AIM_ZPREDICT)
- if(!(self.enemy.flags & FL_ONGROUND))
+ if(!IS_ONGROUND(self.enemy))
if(self.enemy.movetype == MOVETYPE_WALK || self.enemy.movetype == MOVETYPE_TOSS || self.enemy.movetype == MOVETYPE_BOUNCE)
{
float vz;
(m_score * _turret.target_select_missilebias) +
(p_score * _turret.target_select_playerbias);
- if(_turret.target_range < vlen(_turret.tur_shotorg - real_origin(_target)))
+ if(vdist((_turret.tur_shotorg - real_origin(_target)), >, _turret.target_range))
{
//dprint("Wtf?\n");
score *= 0.001;
}
}
-void turret_damage (entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce)
-{SELFPARAM();
+void turret_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce)
+{
// Enough already!
- if(self.deadflag == DEAD_DEAD)
+ if(this.deadflag == DEAD_DEAD)
return;
// Inactive turrets take no damage. (hm..)
- if(!self.active)
+ if(!this.active)
return;
- if(SAME_TEAM(self, attacker))
+ if(SAME_TEAM(this, attacker))
{
if(autocvar_g_friendlyfire)
damage = damage * autocvar_g_friendlyfire;
return;
}
- self.health -= damage;
+ this.health -= damage;
// thorw head slightly off aim when hit?
- if (self.damage_flags & TFL_DMG_HEADSHAKE)
+ if (this.damage_flags & TFL_DMG_HEADSHAKE)
{
- self.tur_head.angles_x = self.tur_head.angles_x + (-0.5 + random()) * damage;
- self.tur_head.angles_y = self.tur_head.angles_y + (-0.5 + random()) * damage;
+ this.tur_head.angles_x = this.tur_head.angles_x + (-0.5 + random()) * damage;
+ this.tur_head.angles_y = this.tur_head.angles_y + (-0.5 + random()) * damage;
- self.SendFlags |= TNSF_ANG;
+ this.SendFlags |= TNSF_ANG;
}
- if (self.turret_flags & TUR_FLAG_MOVE)
- self.velocity = self.velocity + vforce;
+ if (this.turret_flags & TUR_FLAG_MOVE)
+ this.velocity = this.velocity + vforce;
- if (self.health <= 0)
+ if (this.health <= 0)
{
- self.event_damage = func_null;
- self.tur_head.event_damage = func_null;
- self.takedamage = DAMAGE_NO;
- self.nextthink = time;
- self.think = turret_die;
+ this.event_damage = func_null;
+ this.tur_head.event_damage = func_null;
+ this.takedamage = DAMAGE_NO;
+ this.nextthink = time;
+ this.think = turret_die;
}
- self.SendFlags |= TNSF_STATUS;
+ this.SendFlags |= TNSF_STATUS;
}
void() turret_think;
return true;
}
-void load_unit_settings(entity ent, float is_reload)
+void load_unit_settings(entity ent, bool is_reload)
{SELFPARAM();
string unitname = ent.netname;
string sbase;
turret_projectile_explode();
}
-void turret_projectile_damage(entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce)
-{SELFPARAM();
- self.velocity += vforce;
- self.health -= damage;
- //self.realowner = attacker; // Dont change realowner, it does not make much sense for turrets
- if(self.health <= 0)
- W_PrepareExplosionByDamage(self.owner, turret_projectile_explode);
+void turret_projectile_damage(entity this, entity inflictor, entity attacker, float damage, int deathtype, vector hitloc, vector vforce)
+{
+ this.velocity += vforce;
+ this.health -= damage;
+ //this.realowner = attacker; // Dont change realowner, it does not make much sense for turrets
+ if(this.health <= 0)
+ WITH(entity, self, this, W_PrepareExplosionByDamage(this.owner, turret_projectile_explode));
}
entity turret_projectile(string _snd, float _size, float _health, float _death, float _proj_type, float _cull, float _cli_anim)
}
else if (e_target.health <= 0)
return -6;
- else if(e_target.frozen > 0)
+ else if(STAT(FROZEN, e_target) > 0)
return -6;
// player
if(!(validate_flags & TFL_TARGETSELECT_PLAYERS))
return -7;
- if (e_target.deadflag != DEAD_NO)
+ if (IS_DEAD(e_target))
return -8;
}
traceline(e_turret.origin + '0 0 16', v_tmp, 0, e_turret);
- if (e_turret.aim_firetolerance_dist < vlen(v_tmp - trace_endpos))
+ if(vdist(v_tmp - trace_endpos, >, e_turret.aim_firetolerance_dist))
return -19;
}
// Lack of zombies makes shooting dead things unnecessary :P
if (self.firecheck_flags & TFL_FIRECHECK_DEAD)
- if (self.enemy.deadflag != DEAD_NO)
+ if (IS_DEAD(self.enemy))
return 0;
// Own ammo?
return;
Turret info = get_turretinfo(self.m_id);
- info.tr_attack(info);
+ info.tr_attack(info, self);
self.attack_finished_single[0] = time + self.shot_refire;
self.ammo -= self.shot_dmg;
turret_fire();
Turret tur = get_turretinfo(self.m_id);
- tur.tr_think(tur);
+ tur.tr_think(tur, self);
return;
}
turret_track();
Turret tur = get_turretinfo(self.m_id);
- tur.tr_think(tur);
+ tur.tr_think(tur, self);
// And bail.
return;
}
Turret tur = get_turretinfo(self.m_id);
- tur.tr_think(tur);
+ tur.tr_think(tur, self);
}
/*
}
void turrets_manager_think()
-{SELFPARAM();
- self.nextthink = time + 1;
+{
+ SELFPARAM();
+ this.nextthink = time + 1;
- entity e;
if (autocvar_g_turrets_reloadcvars == 1)
{
- e = nextent(world);
- while (e)
- {
- if (IS_TURRET(e))
- {
- load_unit_settings(e,1);
- Turret tur = get_turretinfo(self.m_id);
- tur.tr_think(tur);
- }
-
- e = nextent(e);
- }
- cvar_set("g_turrets_reloadcvars","0");
+ FOREACH_ENTITY(IS_TURRET(it), {
+ load_unit_settings(it, true);
+ Turret tur = get_turretinfo(it.m_id);
+ tur.tr_think(tur, it);
+ });
+ cvar_set("g_turrets_reloadcvars", "0");
}
}
#ifdef TURRET_DEBUG
self.tur_debug_start = self.nextthink;
- while (vlen(self.tur_debug_rvec) < 2)
+ while(vdist(self.tur_debug_rvec, <, 2))
self.tur_debug_rvec = randomvec() * 4;
self.tur_debug_rvec_x = fabs(self.tur_debug_rvec_x);