88 lines
1.8 KiB
C++
88 lines
1.8 KiB
C++
|
void() tesla_think =
|
||
|
{
|
||
|
local entity e;
|
||
|
local vector org;
|
||
|
|
||
|
self.nextthink = time + 0.1;
|
||
|
self.frame = self.frame + 1;
|
||
|
|
||
|
if (!self.aflag)
|
||
|
{
|
||
|
if (!self.enemy || self.enemy.health <= 0)
|
||
|
{
|
||
|
e = findradius(self.origin, 800);
|
||
|
while (e != world)
|
||
|
{
|
||
|
if (e.health > 0)
|
||
|
{
|
||
|
if (e.team != self.team)
|
||
|
{
|
||
|
if (e.solid)
|
||
|
{
|
||
|
if (e.takedamage)
|
||
|
{
|
||
|
traceline (self.origin, e.origin, FALSE, self);
|
||
|
if (trace_ent == e)
|
||
|
{
|
||
|
break;
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
e = e.chain;
|
||
|
}
|
||
|
self.enemy = e;
|
||
|
if (e != world)
|
||
|
sound (self, CHAN_AUTO, "weapons/lstart.wav", 1, ATTN_NORM);
|
||
|
}
|
||
|
if (self.enemy)
|
||
|
{
|
||
|
if (self.frame < 7)
|
||
|
self.frame = 7;
|
||
|
|
||
|
org = self.origin + '0 0 32';
|
||
|
|
||
|
traceline (org, self.enemy.origin, FALSE, self);
|
||
|
|
||
|
if (self.t_width < time)
|
||
|
{
|
||
|
sound (self, CHAN_WEAPON, "weapons/lhit.wav", 1, ATTN_NORM);
|
||
|
self.t_width = time + 0.6;
|
||
|
}
|
||
|
|
||
|
//mwa ha ha!!
|
||
|
WriteByte (MSG_MULTICAST, SVC_TEMPENTITY);
|
||
|
WriteByte (MSG_MULTICAST, TE_LIGHTNING2);
|
||
|
WriteEntity (MSG_MULTICAST, self);
|
||
|
WriteCoord (MSG_MULTICAST, org_x);
|
||
|
WriteCoord (MSG_MULTICAST, org_y);
|
||
|
WriteCoord (MSG_MULTICAST, org_z);
|
||
|
WriteCoord (MSG_MULTICAST, trace_endpos_x);
|
||
|
WriteCoord (MSG_MULTICAST, trace_endpos_y);
|
||
|
WriteCoord (MSG_MULTICAST, trace_endpos_z);
|
||
|
multicast (org, MULTICAST_PHS);
|
||
|
|
||
|
if (trace_ent != self.enemy)
|
||
|
self.enemy = world;
|
||
|
trace_endpos = normalize(trace_endpos - org)*8 + trace_endpos;
|
||
|
LightningDamage (self.origin, trace_endpos, self, 10);
|
||
|
|
||
|
if (self.frame > 12)
|
||
|
self.frame = 0;
|
||
|
return;
|
||
|
}
|
||
|
}
|
||
|
if (self.frame >= 7)
|
||
|
self.frame = 0;
|
||
|
};
|
||
|
|
||
|
void() FinishTesla =
|
||
|
{
|
||
|
self.netname = "tesla turret";
|
||
|
self.think = tesla_think;
|
||
|
setmodel (self, "progs/coil.mdl");
|
||
|
setsize (self, '-16 -16 -24', '16 16 32');
|
||
|
self.nextthink = time + 0.1;
|
||
|
};
|