1 void spawnfunc_turret_tesla();
2 void turret_tesla_dinit();
3 void turret_tesla_fire();
6 entity toast(entity from, float range, float damage)
15 e = findradius(from.origin,range);
18 if ((e.toasted != 1) && (e != from))
20 r = turret_validate_target(self,e,self.target_validate_flags);
23 traceline(from.origin,0.5 * (e.absmin + e.absmax),MOVE_WORLDONLY,from);
24 if (trace_fraction == 1.0)
26 d = vlen(e.origin - from.origin);
41 te_smallflash(etarget.origin);
42 te_csqc_lightningarc(from.origin,etarget.origin);
43 Damage(etarget,self,self,damage,DEATH_TURRET,etarget.origin,'0 0 0');
50 float turret_tesla_firecheck()
52 if not (turret_stdproc_firecheck())
55 self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
56 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
58 self.enemy = turret_select_target();
67 void turret_tesla_fire()
72 //w_deathtypestring = "discoverd how a tesla coil works";
75 r = self.target_range;
77 setorigin(e,self.tur_shotorg);
80 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
81 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
86 if (t == world) return;
88 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
89 TFL_TARGETSELECT_TEAMCHECK;
93 self.attack_finished_single = time + self.shot_refire;
94 for (i = 0; i < 10; ++i)
99 if (t == world) break;
102 e = findchainfloat(toasted, 1);
110 void turret_tesla_postthink()
112 if not (self.tur_active)
114 self.tur_head.avelocity = '0 0 0';
118 if(self.ammo < self.shot_dmg)
120 self.tur_head.avelocity = '0 9 0' * (self.ammo / self.shot_dmg);
124 self.tur_head.avelocity = '0 90 0' * (self.ammo / self.shot_dmg);
126 if(self.attack_finished_single > time)
130 f = (self.ammo / self.ammo_max);
134 te_csqc_lightningarc(self.tur_shotorg,self.tur_shotorg + (randomvec() * 350));
139 void turret_tesla_dinit()
141 if (self.netname == "") self.netname = "Tesla Coil";
143 self.turrcaps_flags = TFL_TURRCAPS_HITSCAN | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
145 self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
146 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
148 self.firecheck_flags = TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_OWM_AMMO;
149 self.shoot_flags = TFL_SHOOT_CUSTOM;
150 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
151 self.aim_flags = TFL_AIM_NO;
152 self.track_flags = TFL_TRACK_NO;
154 if (turret_stdproc_init("tesla_std",0,"models/turrets/tesla_base.md3","models/turrets/tesla_head.md3") == 0)
159 setsize(self,'-48 -48 0','48 48 96');
161 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
162 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
164 if (!turret_tag_setup())
165 dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
167 self.turret_firefunc = turret_tesla_fire;
168 self.turret_postthink = turret_tesla_postthink;
169 self.turret_firecheckfunc = turret_tesla_firecheck;
172 /*QUAKED turret_tesla (0 .5 .8) ?
174 void spawnfunc_turret_tesla()
176 precache_model ("models/turrets/tesla_head.md3");
177 precache_model ("models/turrets/tesla_base.md3");
180 self.think = turret_tesla_dinit;
181 self.nextthink = time + 0.5;