1 void spawnfunc_turret_tesla();
\r
2 void turret_tesla_dinit();
\r
3 void turret_tesla_fire();
\r
6 entity toast(entity from, float range, float damage)
\r
14 e = findradius(from.origin,range);
\r
17 if ((e.toasted != 1) && (e != from))
\r
18 if (turret_validate_target(self,e,self.target_validate_flags) > 0)
\r
20 traceline(from.origin,e.origin,MOVE_WORLDONLY,from);
\r
21 if (trace_fraction == 1.0)
\r
23 d = vlen(e.origin - from.origin);
\r
36 te_smallflash(etarget.origin);
\r
37 te_csqc_lightningarc(from.origin,etarget.origin);
\r
38 Damage(etarget,self,self,damage,DEATH_TURRET,etarget.origin,'0 0 0');
\r
39 etarget.toasted = 1;
\r
45 float turret_tesla_firecheck()
\r
47 if not (turret_stdproc_firecheck())
\r
50 self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
51 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
\r
53 self.enemy = turret_select_target();
\r
62 void turret_tesla_fire()
\r
67 //w_deathtypestring = "discoverd how a tesla coil works";
\r
70 r = self.target_range;
\r
72 setorigin(e,self.tur_shotorg);
\r
75 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
76 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
\r
81 if (t == world) return;
\r
83 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
84 TFL_TARGETSELECT_TEAMCHECK;
\r
86 self.attack_finished_single = time + self.shot_refire;
\r
87 for (i = 0; i < 10; ++i)
\r
92 if (t == world) break;
\r
95 e = findchainfloat(toasted, 1);
\r
103 void turret_tesla_postthink()
\r
105 if not (self.tur_active)
\r
107 self.tur_head.avelocity = '0 0 0';
\r
111 if(self.ammo < self.shot_dmg)
\r
113 self.tur_head.avelocity = '0 9 0' * (self.ammo / self.shot_dmg);
\r
117 self.tur_head.avelocity = '0 90 0' * (self.ammo / self.shot_dmg);
\r
119 if(self.attack_finished_single > time)
\r
123 f = (self.ammo / self.ammo_max);
\r
127 te_csqc_lightningarc(self.tur_shotorg,self.tur_shotorg + (randomvec() * 350));
\r
132 void turret_tesla_dinit()
\r
134 if (self.netname == "") self.netname = "Tesla Coil";
\r
136 self.turrcaps_flags = TFL_TURRCAPS_HITSCAN | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
\r
138 self.target_select_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
139 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
\r
141 self.firecheck_flags = TFL_FIRECHECK_REFIRE | TFL_FIRECHECK_OWM_AMMO;
\r
142 self.shoot_flags = TFL_SHOOT_CUSTOM;
\r
143 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
\r
144 self.aim_flags = TFL_AIM_NO;
\r
145 self.track_flags = TFL_TRACK_NO;
\r
147 if (turret_stdproc_init("tesla_std",0) == 0)
\r
153 setmodel(self,"models/turrets/tesla_base.md3");
\r
154 setmodel(self.tur_head,"models/turrets/tesla_head.md3");
\r
156 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
157 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
\r
159 if (!turret_tag_setup())
\r
160 dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
\r
162 self.turret_firefunc = turret_tesla_fire;
\r
163 self.turret_postthink = turret_tesla_postthink;
\r
164 self.turret_firecheckfunc = turret_tesla_firecheck;
\r
167 /*QUAKED turret_tesla (0 .5 .8) ?
\r
169 void spawnfunc_turret_tesla()
\r
171 precache_model ("models/turrets/tesla_head.md3");
\r
172 precache_model ("models/turrets/tesla_base.md3");
\r
175 self.think = turret_tesla_dinit;
\r
176 self.nextthink = time + 0.5;
\r