1 void spawnfunc_turret_tesla();
2 void turret_tesla_dinit();
3 void turret_tesla_fire();
5 entity toast(entity from, float range, float damage)
14 e = findradius(from.origin,range);
17 if ((e.railgunhit != 1) && (e != from))
19 r = turret_validate_target(self,e,self.target_validate_flags);
22 traceline(from.origin,0.5 * (e.absmin + e.absmax),MOVE_WORLDONLY,from);
23 if (trace_fraction == 1.0)
25 d = vlen(e.origin - from.origin);
39 te_smallflash(etarget.origin);
40 te_csqc_lightningarc(from.origin,etarget.origin);
41 dprint("DMG:",ftos(damage),"\n");
42 Damage(etarget, self, self, damage, DEATH_TURRET, etarget.origin, '0 0 0');
43 etarget.railgunhit = 1;
49 float turret_tesla_firecheck()
51 if not (turret_stdproc_firecheck())
54 self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
56 self.enemy = turret_select_target();
65 void turret_tesla_fire()
70 //w_deathtypestring = "discoverd how a tesla coil works";
73 r = self.target_range;
75 setorigin(e,self.tur_shotorg);
77 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES | TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
82 if (t == world) return;
84 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES | TFL_TARGETSELECT_TEAMCHECK;
86 self.attack_finished_single = time + self.shot_refire;
87 for (i = 0; i < 10; ++i)
92 if (t == world) break;
96 e = findchainfloat(railgunhit, 1);
104 void turret_tesla_postthink()
106 if not (self.tur_active)
108 self.tur_head.avelocity = '0 0 0';
112 if(self.ammo < self.shot_dmg)
114 self.tur_head.avelocity = '0 45 0' * (self.ammo / self.shot_dmg);
118 self.tur_head.avelocity = '0 180 0' * (self.ammo / self.shot_dmg);
120 if(self.attack_finished_single > time)
124 f = (self.ammo / self.ammo_max);
128 te_csqc_lightningarc(self.tur_shotorg,self.tur_shotorg + (randomvec() * 350));
133 void turret_tesla_dinit()
135 if (self.netname == "") self.netname = "Tesla Coil";
137 self.turrcaps_flags = TFL_TURRCAPS_HITSCAN | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
139 self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
140 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
142 self.firecheck_flags = TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_OWM_AMMO;
143 self.shoot_flags = TFL_SHOOT_CUSTOM;
144 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
145 self.aim_flags = TFL_AIM_NO;
146 self.track_flags = TFL_TRACK_NO;
148 if (turret_stdproc_init("tesla_std",0,"models/turrets/tesla_base.md3","models/turrets/tesla_head.md3") == 0)
153 setsize(self,'-60 -60 0','60 60 128');
155 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
156 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
158 if (!turret_tag_fire_update())
159 dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
161 self.turret_firefunc = turret_tesla_fire;
162 self.turret_postthink = turret_tesla_postthink;
163 self.turret_firecheckfunc = turret_tesla_firecheck;
166 /*QUAKED turret_tesla (0 .5 .8) ?
168 void spawnfunc_turret_tesla()
170 precache_model ("models/turrets/tesla_head.md3");
171 precache_model ("models/turrets/tesla_base.md3");
174 self.think = turret_tesla_dinit;
175 self.nextthink = time + 0.5;