7 spawnfunc(turret_tesla) { if (!turret_initialize(this, TUR_TESLA)) delete(this); }
9 METHOD(TeslaCoil, tr_think, void(TeslaCoil thistur, entity it))
13 it.tur_head.avelocity = '0 0 0';
17 if(it.ammo < it.shot_dmg)
19 it.tur_head.avelocity = '0 45 0' * (it.ammo / it.shot_dmg);
23 it.tur_head.avelocity = '0 180 0' * (it.ammo / it.shot_dmg);
25 if(it.attack_finished_single[0] > time)
29 f = (it.ammo / it.ammo_max);
33 te_csqc_lightningarc(it.tur_shotorg,it.tur_shotorg + (randomvec() * 350));
37 bool turret_tesla_firecheck(entity this);
38 METHOD(TeslaCoil, tr_setup, void(TeslaCoil this, entity it))
40 it.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
41 TFL_TARGETSELECT_RANGELIMITS | TFL_TARGETSELECT_TEAMCHECK;
43 it.turret_firecheckfunc = turret_tesla_firecheck;
44 it.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
45 TFL_TARGETSELECT_RANGELIMITS | TFL_TARGETSELECT_TEAMCHECK;
47 it.firecheck_flags = TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_AMMO_OWN;
48 it.shoot_flags = TFL_SHOOT_CUSTOM;
49 it.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIEVE;
50 it.aim_flags = TFL_AIM_NO;
51 it.track_flags = TFL_TRACK_NO;
54 bool turret_tesla_firecheck(entity this)
56 // g_turrets_targetscan_maxdelay forces a target re-scan at least this often
57 float do_target_scan = 0;
59 if((this.target_select_time + autocvar_g_turrets_targetscan_maxdelay) < time)
62 // Old target (if any) invalid?
63 if(this.target_validate_time < time)
64 if (turret_validate_target(this, this.enemy, this.target_validate_flags) <= 0)
67 this.target_validate_time = time + 0.5;
71 // But never more often then g_turrets_targetscan_mindelay!
72 if (this.target_select_time + autocvar_g_turrets_targetscan_mindelay > time)
77 this.enemy = turret_select_target(this);
78 this.target_select_time = time;
81 if(!turret_firecheck(this))