X-Git-Url: http://git.xonotic.org/?a=blobdiff_plain;f=qcsrc%2Fserver%2Ftturrets%2Funits%2Funit_tessla.qc;h=5969938912285b4d9b9328f9550af9dc4892be6e;hb=3aed354c1125db3e6e862f552c253b06b09d5d86;hp=051446d18793081cb2d09f0b33fbf444ca8c1414;hpb=a484319f89b4267fa8bbb631b060df92e2eddbaf;p=xonotic%2Fxonotic-data.pk3dir.git diff --git a/qcsrc/server/tturrets/units/unit_tessla.qc b/qcsrc/server/tturrets/units/unit_tessla.qc index 051446d18..596993891 100644 --- a/qcsrc/server/tturrets/units/unit_tessla.qc +++ b/qcsrc/server/tturrets/units/unit_tessla.qc @@ -5,7 +5,7 @@ void turret_tesla_fire(); entity toast(entity from, float range, float damage) { entity e; - entity etarget; + entity etarget = world; float d,dd; float r; @@ -35,11 +35,9 @@ entity toast(entity from, float range, float damage) } if (etarget) - { - te_smallflash(etarget.origin); + { te_csqc_lightningarc(from.origin,etarget.origin); - dprint("DMG:",ftos(damage),"\n"); - Damage(etarget, self, self, damage, DEATH_TURRET, etarget.origin, '0 0 0'); + Damage(etarget, self, self, damage, DEATH_TURRET_TESLA, etarget.origin, '0 0 0'); etarget.railgunhit = 1; } @@ -48,26 +46,45 @@ entity toast(entity from, float range, float damage) float turret_tesla_firecheck() { - if not (turret_stdproc_firecheck()) - return 0; + // g_turrets_targetscan_maxdelay forces a target re-scan at least this often + float do_target_scan = 0; + + if((self.target_select_time + autocvar_g_turrets_targetscan_maxdelay) < time) + do_target_scan = 1; + + // Old target (if any) invalid? + if(self.target_validate_time < time) + if (turret_validate_target(self, self.enemy, self.target_validate_flags) <= 0) + { + self.enemy = world; + self.target_validate_time = time + 0.5; + do_target_scan = 1; + } - self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK; + // But never more often then g_turrets_targetscan_mindelay! + if (self.target_select_time + autocvar_g_turrets_targetscan_mindelay > time) + do_target_scan = 0; - self.enemy = turret_select_target(); + if(do_target_scan) + { + self.enemy = turret_select_target(); + self.target_select_time = time; + } + + if not (turret_stdproc_firecheck()) + return 0; if(self.enemy) return 1; return 0; - } + void turret_tesla_fire() { - entity e,t; - float d,r,i; - - //w_deathtypestring = "discoverd how a tesla coil works"; + entity e, t; + float d, r, i; d = self.shot_dmg; r = self.target_range; @@ -103,7 +120,7 @@ void turret_tesla_fire() void turret_tesla_postthink() { - if not (self.tur_active) + if not (self.active) { self.tur_head.avelocity = '0 0 0'; return;