]> de.git.xonotic.org Git - xonotic/xonotic-data.pk3dir.git/blobdiff - qcsrc/common/turrets/sv_turrets.qc
Transifex autosync
[xonotic/xonotic-data.pk3dir.git] / qcsrc / common / turrets / sv_turrets.qc
index e2a9ab2e4131bee26615108eb55873baef2c27a1..4c7ce5ab418a7bb6567ee2b6bcaeef2da5fc5f50 100644 (file)
@@ -1,11 +1,12 @@
 #include "sv_turrets.qh"
+
 #ifdef SVQC
-#include <server/autocvars.qh>
+#include <common/mapobjects/defs.qh>
 #include <server/bot/api.qh>
 #include <server/damage.qh>
 #include <server/weapons/common.qh>
 #include <server/weapons/weaponsystem.qh>
-#include <common/mapobjects/defs.qh>
+#include <server/world.qh>
 
 // Generic aiming
 vector turret_aim_generic(entity this)
@@ -303,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
 }
 
 
@@ -692,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))
@@ -1244,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);
 }
 
@@ -1255,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;
        }
@@ -1295,7 +1299,7 @@ bool turret_initialize(entity this, Turret tur)
        }
 
        if(!(this.spawnflags & TSF_SUSPENDED))
-               droptofloor(this);
+               DropToFloor_QC_DelayedInit(this);
 
        this.netname = tur.netname;
        load_unit_settings(this, 0);