X-Git-Url: https://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fcommon%2Fturrets%2Fsv_turrets.qc;h=a42005f32a2a0af5fca32a41a671a0873e17844b;hb=90ac5f4f1f4aa420546283c58953f387b82e33ba;hp=e72b625590622f5fe9f5d538966e4ea034d183e0;hpb=0b9df86c9a55dd9ed9031b21e430fc3094fac709;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/common/turrets/sv_turrets.qc b/qcsrc/common/turrets/sv_turrets.qc index e72b62559..a42005f32 100644 --- a/qcsrc/common/turrets/sv_turrets.qc +++ b/qcsrc/common/turrets/sv_turrets.qc @@ -1,9 +1,12 @@ #include "sv_turrets.qh" + #ifdef SVQC -#include -#include -#include #include +#include +#include +#include +#include +#include // Generic aiming vector turret_aim_generic(entity this) @@ -301,6 +304,8 @@ void turret_respawn(entity this) Turret tur = get_turretinfo(this.m_id); tur.tr_setup(tur, this); + + setorigin(this, this.origin); // make sure it's linked to the area grid } @@ -690,7 +695,8 @@ float turret_validate_target(entity e_turret, entity e_target, float validate_fl if(!e_target) return -2; - if(e_target.owner == e_turret) + // Don't attack against owner + if(e_target.owner == e_turret || e_target == e_turret.realowner) return -0.5; if(!checkpvs(e_target.origin, e_turret)) @@ -1242,9 +1248,9 @@ void turret_initparams(entity tur) #undef TRY } -bool turret_closetotarget(entity this, vector targ) +bool turret_closetotarget(entity this, vector targ, float range) { - vector path_extra_size = '64 64 64'; + vector path_extra_size = '1 1 1' * range; return boxesoverlap(targ - path_extra_size, targ + path_extra_size, this.absmin - path_extra_size, this.absmax + path_extra_size); } @@ -1253,7 +1259,7 @@ void turret_findtarget(entity this) entity e = find(NULL, classname, "turret_manager"); if(!e) { - e = new(turret_manager); + e = new_pure(turret_manager); setthink(e, turrets_manager_think); e.nextthink = time + 2; }