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
21 traceline(from.origin,e.origin,0,from);
\r
22 if(trace_fraction > 0.9)
\r
24 d = vlen(e.origin - from.origin);
\r
37 te_smallflash(etarget.origin);
\r
38 te_lightning1(world,from.origin,etarget.origin);
\r
39 Damage(etarget,self,self,damage,DEATH_TURRET,etarget.origin,'0 0 0');
\r
40 etarget.toasted = 1;
\r
46 void turret_tesla_fire()
\r
51 if(cvar("g_turrets_nofire") != 0)
\r
54 if(self.attack_finished > time) return;
\r
57 r = self.target_range;
\r
59 setorigin(e,self.origin + self.tur_shotorg);
\r
62 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
63 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
\r
68 if(t == world) return;
\r
70 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
71 TFL_TARGETSELECT_TEAMCHECK;
\r
73 self.attack_finished = time + self.shot_refire;
\r
74 self.ammo = self.ammo - self.shot_dmg;
\r
75 for(i = 0;i < 10;i++)
\r
77 d *= 0.5; r *= 0.75;
\r
79 if(t == world) break;
\r
82 e = findchainfloat(toasted, 1);
\r
90 void turret_tesla_postthink()
\r
92 turret_tesla_fire();
\r
94 self.tur_head.frame = self.tur_head.frame + 1;
\r
96 if(self.tur_head.frame >= 11)
\r
97 self.tur_head.frame = 0;
\r
99 if(self.tur_head.avelocity == '0 0 0')
\r
100 self.tur_head.avelocity = '0 35 0';
\r
104 void turret_tesla_dinit()
\r
106 if (self.netname == "") self.netname = "Tesla Coil";
\r
108 self.turrcaps_flags = TFL_TURRCAPS_HITSCAN | TFL_TURRCAPS_PLAYERKILL | TFL_TURRCAPS_MISSILEKILL;
\r
109 self.target_select_flags = TFL_TARGETSELECT_NO;
\r
110 self.firecheck_flags = TFL_FIRECHECK_REFIRE;
\r
111 self.shoot_flags = TFL_SHOOT_CUSTOM;
\r
112 self.ammo_flags = TFL_AMMO_ENERGY | TFL_AMMO_RECHARGE | TFL_AMMO_RECIVE;
\r
113 self.aim_flags = TFL_AIM_NO;
\r
114 self.track_flags = TFL_TRACK_NO;
\r
116 precache_model ("models/turrets/tesla_head.md3");
\r
117 precache_model ("models/turrets/tesla_base.md3");
\r
119 if (turret_stdproc_init("tesla_std") == 0)
\r
125 self.target_validate_flags = TFL_TARGETSELECT_PLAYERS | TFL_TARGETSELECT_MISSILES |
\r
126 TFL_TARGETSELECT_RANGELIMTS | TFL_TARGETSELECT_TEAMCHECK;
\r
129 setmodel(self,"models/turrets/tesla_base.md3");
\r
130 setmodel(self.tur_head,"models/turrets/tesla_head.md3");
\r
132 if(!turret_tag_setup(0))
\r
133 dprint("Warning: Turret ",self.classname, " faild to initialize md3 tags\n");
\r
135 self.turret_firefunc = turret_stdproc_nothing;
\r
136 self.turret_postthink = turret_tesla_postthink;
\r
139 /*QUAKED turret_tesla (0 .5 .8) ?
\r
141 void spawnfunc_turret_tesla()
\r
144 self.think = turret_tesla_dinit;
\r
145 self.nextthink = time + 0.5;
\r